Pull to refresh
7
0
Андрей Чебукин @XperiAndri

User

Send message

Как мы сделали переводчик точнее и дешевле Google и Yandex

Level of difficultyEasy
Reading time9 min
Views12K

Всем привет! Меня зовут Никита, я Data Scientist из Raft. Сегодня я расскажу вам о том, как мы решили задачу перевода каталога товаров большого интернет-магазина с русского на арабский язык с применением искусственного интеллекта. Мы рассмотрим различные подходы и идеи, возникавшие в процессе погружения в эту задачу. Также я объясню, почему мы отказались от готовых решений и выбрали Large Language Models (LLM) в качестве основного инструмента. Как вы, возможно, уже догадались из названия, основным преимуществом нашего финального решения стала значительная оптимизация расходов: нам удалось сократить использование API OpenAI в 4 раза, при этом сохранив высокое качество перевода.

Читать далее
Total votes 24: ↑23 and ↓1+23
Comments9

Что в промптах работает, а что нет

Reading time15 min
Views8K
image

Удивительно, но при всём хайпе, творящемся сейчас вокруг языковых моделей (LLM), мало кто понимает, как они работают. И ещё меньше понимают, как работать с ними. Появилась даже профессия промпт-инженера, человека, способного составить ТЗ для модели.

Например, очень важно понимать, в ответ на какие запросы подключится математический модуль, а в ответ на какие LLM будет считать, ну знаете, как LLM.

Часто при сортировке объектов или ещё какой-то операции, которая требует точности, можно сделать следующее: попросить написать скрипт, исполнить его по входящим данным (если модель позволяет), а затем уже вывести результат, а не сразу спросить результат.

Альтернатива — попросить сделать пошаговое решение, где каждый шаг исполняется отдельно.

Очень полезно в сам промпт включать вручную подготовленные примеры, то есть делать мини-обучение внутри запроса. Да, промпт получится огромный, но это нормально, точность очень сильно вырастет.

В общем, давайте обсудим подробнее.
Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments1

ООП в F#

Level of difficultyEasy
Reading time5 min
Views3.5K

Привет, Хабр!

Объектно-ориентированное программирование представляет собой подход к разработке, где основой являются объекты — экземпляры классов, объединяющие в себе и данные, и поведение. В F#, который вырос на функциональных концепциях, ООП представлен как дополнение к уже существующему функционалу. F# позволяет использовать классы, наследование и интерфейсы, при этом так, что ООП элементы просто идеально вписываются в функциональный контекст, не создавая ощущения чужеродности.

Читать далее
Total votes 13: ↑10 and ↓3+9
Comments11

Midjourney — нейросеть генерирующая картинки по текстовому описанию

Reading time3 min
Views549K

В наше время нейросетью уже мало кого удивишь, эти штуки умеют обрабатывать видео, вести диалог с человеком, выполнять поиск материалов в интернете, писать музыку, распознавать объекты на фото, помогают обрабатывать фото и многое другое. Сегодня я хочу рассказать о сетке рисующей картинки — Midjourney.

Миджорни умеет распознавать текст и интерпретировать его в картинки. Для этого необходимо на английском языке описать сюжет, направить его на обработку сетке и дождаться результата. После полученный результат можно немного модернизировать, увеличить его качество и скачать.

Получаются вот такие картинки.

Читать далее
Total votes 22: ↑18 and ↓4+19
Comments24

Грокаем аппликативные функторы

Reading time8 min
Views4.7K

Аппликативный функтор, возможно, наименее известный брат монады, но он столь же важен и решает похожую проблему. В этом посте мы постараемся разобраться, что он из себя представляет.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments2

Как я подружил Unity3D и F#

Reading time30 min
Views20K

В последнее время я стал все больше и больше интересоваться функциональным программированием, и при выборе языка предо мною пал выбор среди двух очень понравившихся мне языков — Haskell и F#.
В F# меня соблазнило то, что его можно компилировать в MSIL сборки, что обеспечивает возможность использования библиотек классов F# в других языках Microsoft .Net, а также то, что он и сам может их использовать. Ко всему прочему, я ещё и начинающий разработчик Unity3D, и мне в голову пришла мысль: если компилируется в MSIL, то может можно использовать F# скрипты в Unity? Гугление дало ответ: по-человечески нельзя. Можно создать библиотеку классов, поставить в проекте ссылки на библиотеку UnityEngine.dll, компилировать и импортировать как ассет, после чего добавлять компоненты Mono-behaviour напрямую из библиотеки, но это не слишком удобно, согласитесь. Однако, пройдя гугл, Reflection и справку по Unity, мне все таки удалось приблизить(но не повторить в точности) работу с F# скриптами внутри редактора к тому виду, в котором производится работа со скриптами на встроенных языках. Подробности — под хабракатом.


Показать подробно
Total votes 55: ↑45 and ↓10+35
Comments6

Отладка как процесс

Reading time14 min
Views17K
Существует мнение, что разработка занимает около 10% времени, а отладка — 90%. Возможно, это утверждение утрировано, но любой разработчик согласится с тем, что отладка — крайне затратный по ресурсам процесс, особенно в больших многопоточных системах.

Таким образом, оптимизация и систематизация процесса debugging'а может приносить весомые плоды в виде сэкономленных человеко-часов, повышения скорости решения проблем и, в конце концов, увеличения лояльности ваших пользователей.



Сергей Щегрикович (dotmailer) на конференции DotNext 2018 Piter предложил взглянуть на отладку как на процесс, который может быть описан и оптимизирован. Если вы до сих пор не имеете четкого плана поиска багов — под катом видео и текстовая расшифровка доклада Сергея.

(А еще в конце поста мы добавили обращение Джона Скита ко всем дотнетчикам, обязательно посмотрите)
Total votes 52: ↑50 and ↓2+48
Comments3

YOLOv4 – самая точная real-time нейронная сеть на датасете Microsoft COCO

Reading time9 min
Views80K
Darknet YOLOv4 быстрее и точнее, чем real-time нейронные сети Google TensorFlow EfficientDet и FaceBook Pytorch/Detectron RetinaNet/MaskRCNN.

Эта же статья на medium: medium
Код: github.com/AlexeyAB/darknet
Статья: arxiv.org/abs/2004.10934
Обсуждение YOLOv4-tiny 1770 FPS: www.reddit.com/r/MachineLearning/comments/hu7lyt/p_yolov4tiny_speed_1770_fps_tensorrtbatch4
Обсуждение: www.reddit.com/r/MachineLearning/comments/gydxzd/p_yolov4_the_most_accurate_realtime_neural


Мы покажем некоторые нюансы сравнения и использования нейронных сетей для обнаружения объектов.

Нашей целью было разработать алгоритм обнаружения объектов для использования в реальных продуктах, а не только двигать науку вперед. Точность нейросети YOLOv4 (608x608) – 43.5% AP / 65.7% AP50 Microsoft-COCO-testdev.

62 FPS – YOLOv4 (608x608 batch=1) on Tesla V100 – by using Darknet-framework
400 FPS – YOLOv4 (320x320 batch=4) on RTX 2080 Ti – by using TensorRT+tkDNN
32 FPS – YOLOv4 (416x416 batch=1) on Jetson AGX Xavier – by using TensorRT+tkDNN


Читать дальше →
Total votes 22: ↑21 and ↓1+27
Comments37

Очень типобезопасно! Концепт продвинутой расширяемой системы единиц измерения с generic math для .NET

Reading time3 min
Views5K

Что может быть лучше десятка пары часов проведенных с дженериками и compile time safety в C#?

В этом очерке о единицах измерения, а точнее о том, как можно сделать потенциально очень крутую систему с полной проверкой на этапе компиляции, автоматической конверсией единиц измерения, кастомизированностью и расширяемостью во все стороны! Да, и еще неплохой производительностью. И вообще!

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments15

System.Threading.Channels — высокопроизводительный производитель-потребитель и асинхронность без аллокаций и стэк дайва

Reading time18 min
Views38K
И снова здравствуй. Какое-то время назад я писал о другом малоизвестном инструменте для любителей высокой производительности — System.IO.Pipelines. По своей сути, рассматриваемый System.Threading.Channels (в дальнейшем «каналы») построен по похожим принципам, что и Пайплайны, решает ту же задачу — Производитель-Потребитель. Однако имеет в разы более простое апи, которое изящно вольется в любого рода enterprise-код. При этом использует асинхронность без аллокаций и без stack-dive даже в асинхронном случае! (Не всегда, но часто).


Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments7

System.IO.Pipelines — малоизвестный инструмент для любителей высокой производительности

Reading time14 min
Views27K
Здравствуй, читатель. Прошло уже достаточно много времени с момента выхода .NET Core 2.1. И такие крутые нововведения, как Span и Memory, уже рассмотрены весьма широко, про них можно достаточно много прочитать, посмотреть и услышать. Однако, к сожалению, библиотека под названием System.IO.Pipelines не удостоилась такого же внимания. Почти все, что есть по этой теме — единственный пост, который многие перевели и разместили у себя. Информации должно быть однозначно больше, чтобы интересующиеся могли взглянуть на технологию с разных углов.


Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments9

Azure Search

Reading time9 min
Views3.8K


Если какой-то из ваших проектов использует данные хранящиеся в Ажуровской базе, то вполне возможно, что у вас есть возможность задействовать поиск по данным с помощью Azure search. Совершать поиск можно не только по базам (Azure Cosmos DB, Azure SQL Database, SQL Server hosted in an Azure VM), но и по Blob (Azure Blob Storage, Azure Table Storage).


У Search имеется бесплатный тариф, который позволяет создать до трех индексов общим размером до 50 Mb. Бесплатный тариф не обладает возможностями балансировки нагрузки, но вполне себе пригоден для использования.

Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments2

[Что не так с GraphQL]… И как с этим бороться

Reading time4 min
Views12K

В прошлом материале, мы рассмотрели неудобные моменты в системе типов GraphQL.
А теперь мы попробуем победить некоторые из них. Всех заинтересованных, прошу под кат.

Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments23

Что не так с GraphQL

Reading time6 min
Views54K

В последнее время GraphQL набирает всё большую популярность. Изящный синтаксис запросов, типизация и подписки.


Кажется: "вот оно — мы нашли идеальный язык обмена данными!"...


Я разрабатываю с использованием этого языка уже больше года, и скажу вам: всё далеко не так гладко. В GraphQL есть как просто неудобные моменты, так и действительно фундаментальные проблемы в самом дизайне языка.


С другой стороны, большая часть таких "дизайнерских ходов" была сделана не просто так — это было обусловлено теми или иными соображениями. По факту, GraphQL — не всем подойдет, и может оказаться совсем не тем инструментом, который вам нужен. Но обо всём по порядку.

Читать дальше →
Total votes 91: ↑88 and ↓3+85
Comments132

Как я использую AirDrop вместо Тиндера

Reading time10 min
Views170K


В устройствах Apple есть прекрасная функция Airdrop — она сделана для пересылки данных между устройствами. При этом никакой настройки и предварительного сопряжения устройств не требуется, все работает из коробки в два клика. Для передачи данных используется надстройка над Wi-Fi, и поэтому данные передаются с огромными скоростями. При этом используя некоторые трюки, можно не просто пересылать файлы, но и узнать телефонный номер человека, находящегося с тобой в одном вагоне метро.

Последний год я использую эту функцию для интересных знакомств по пути на работу, в общественном транспорте, в общепитах. В среднем за день у меня получается заводить несколько новых знакомств, и иногда я выхожу из метро в компании нового человека.

Под катом я расскажу за всю хурму.
Компания RUVDS.COM не несёт ответственности за повторение действий описанных в данном материале.
Читать дальше →
Total votes 232: ↑218 and ↓14+280
Comments174

Книга “Разработка мобильных приложений на C# для iOS и Android”

Reading time4 min
Views19K
Уважаемые читатели, рады представить вам книгу “Разработка мобильных приложений на C# для iOS и Android” от уже хорошо известного вам автора и эксперта в Xamarin, Вячеслава Черникова из компании Binwell. Без долгих прелюдий передаю слово автору.



Добрый день, уважаемый хабрачитатель. За последние несколько лет я написал довольно много статей и руководств по разработке мобильных приложений с помощью C# и фреймворка Xamarin, однако изначально все эти руководства и часть статей задумывались как главы моей первой книги, которая, наконец, увидела свет. Будучи собраны в одно целое (и там очень много того, что ранее не публиковалось!), материалы книги позволят вывести процесс разработки мобильных приложений на качественно новый уровень – начиная с выбора инструмента и подготовки документации, а заканчивая автоматизацией процесса разработки и решением частых задач. Данная книга задумывалась как гармоничное дополнение к тем материалам по Xamarin, которые уже есть на русском и английском языках, раскрывая такие вопросы, как проектирование, архитектура, создание скелета (каркаса) проекта, все то, что обычно остается за кадром большинства книг и учебных курсов.

В книге подробно и с большим количеством примеров кода раскрываются следующие темы: сравнение нативных и кроссплатформенных инструментов на примере Xamarin, ReactNative, PhoneGap, Qt и Flutter; проектирование и техническая документация для кода; архитектура и структура проекта, раскладываем все по местам; Mobile DevOps и автоматизация сборки, тестирования, поставки и мониторинга; практические советы на каждый день.

Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments10

Как я чуть не выкинул 150к на ветер или история установки приточной вентиляции в квартире

Reading time19 min
Views644K

Как я пришел к покупке приточной вентиляции для квартиры с готовым ремонтом. Как купил ее за 150к и чуть не потратил деньги зря. Статья будет полезна тем, кто планирует купить очиститель воздуха, бризер или приточку.


Читать дальше →
Total votes 285: ↑280 and ↓5+365
Comments595

ConfigureAwait, кто виноват и что делать?

Reading time8 min
Views33K

В своей практике я часто встречаю, в различном окружении, код вроде того, что приведен ниже:


[1] var x = FooWithResultAsync(/*...*/).Result;

//или
[2] FooAsync(/*...*/).Wait();

//или
[3] FooAsync(/*...*/).GetAwaiter().GetResult();

//или
[4] FooAsync(/*...*/)
    .ConfigureAwait(false)
    .GetAwaiter()
    .GetResult();

//или
[5] await FooAsync(/*...*/).ConfigureAwait(false)

//или просто
[6] await FooAsync(/*...*/)

Из общения с авторами таких строк, стало ясно, что все они делятся на три группы:


  • Первая группа, это те, кому ничего не известно о возможных проблемах с вызовом Result/Wait/GetResult. Примеры (1-3) и, иногда, (6), типичны для программистов из этой группы;
  • Ко второй группе относятся программисты, которым известно о возможных проблемах, но они не знают причин их возникновения. Разработчики из этой группы, с одной стороны, стараются избегать строк вроде (1-3 и 6), но, с другой, злоупотребляют кодом вроде (4-5);
  • Третья группа, по моему опыту самая малочисленная, это те программисты, которые знают о том, как код (1-6) работает, и, поэтому, могут сделать осознанный выбор.

Возможен ли риск, и на сколько он велик, при использовании кода, как в приведенных выше примерах, зависит, как я отмечал ранее, от окружения.


Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments27

Нужно ли чистить строки в JavaScript?

Reading time6 min
Views79K
Что? Строки могут быть «грязными»?

Да, могут.

//.....Какой-то код
console.log(typeof str); // string
console.log(str.length); // 15
console.log(str); // "ччччччччччччччч"

Вы думаете, в этом примере строка занимает 30 байт?

А вот и нет! Она занимает 30 мегабайт!
Читать дальше →
Total votes 220: ↑219 and ↓1+218
Comments224

Зачем изучать непопулярные языки. Пример сообщества F#

Reading time8 min
Views30K


Бывают культовые фильмы, игры, книги или музыка — их страшно любит сплоченное сообщество, профессионалы и критики. Но коммерческого успеха и широкой популярности нет. Мне в таких ситуациях обычно до боли обидно.

В разработке хорошие технологии тоже не всегда становятся массовыми. Например, F#. Все что я о нем знаю — это дико крутой, но совершенно непопулярный язык, после которого разработчики уже не могут просто так возвращаться к своим привычным языкам.

Я попытался узнать, в чем причина. И вообще — кто те люди, которые на нем пишут, и зачем они это делают, если язык не нужен бизнесу? Для этого я постучался поговорить в русскоязычное сообщество F# в «Телеграме». Здесь — наш круглый стол.
Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments164

Information

Rating
Does not participate
Location
Херсон, Херсонская обл., Украина
Registered
Activity