Pull to refresh
16
8.1
Pavel Zloi @efreelancer

Software Developer

Send message

Расстояние Левенштейна для чайников

Reading time4 min
Views75K

Когда я взялась решать задачку по динамическому программированию — реализовать алгоритм, который рассчитывает расстояние Левенштейна — мне пришлось послушать пару небольших лекций и прочесть несколько статей (приведу их в конце), чтобы разобраться. Я решила попытаться пересказать алгоритм настолько просто, чтобы по этому объяснению можно было снять ролик для тиктока (когда он снова возобновит свою деятельность в РФ). Дальше — мало формул и много картинок.

Читать далее
Total votes 44: ↑40 and ↓4+36
Comments17

OmniFusion 1.1: мультимодальность теперь и на русском

Level of difficultyHard
Reading time7 min
Views7.5K

В прошлом году на конференции AIJ 2023 мы представили первую версию OmniFusion — мультимодальной языковой модели (LLM), способной поддерживать визуальный диалог и отвечать на вопросы по картинкам. Спустя несколько месяцев мы готовы представить обновление — OmniFusion 1.1 — SoTA на ряде бенчмарков (среди моделей схожего размера) и, более того, модель хорошо справляется со сложными задачами и понимает русский язык! Самое главное — всё выкладываем в открытый доступ: веса и даже код обучения.

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

Читать далее
Total votes 18: ↑19 and ↓-1+20
Comments32

Как устроен RAPTOR — новый подход для RAG, который понимает контекст сразу всей книги

Level of difficultyMedium
Reading time4 min
Views984

Помните, как на школьных уроках литературы иногда надо было развернуто ответить на вопрос о сюжетной линии героя или каком-то событии книги? Например, объяснить мотивацию и развитие Евгения Онегина. Чтобы ответить на этот вопрос на пятёрку, мало пролистать краткий пересказ романа — придётся прочитать его весь. 

Примерно для этого в 2020 году предложили RAG (retrieval-augmented generation) методы. Есть и другая мотивация для RAG — после обучения LLM на большой базе данных возникает вопрос, что делать с обновлением этой самой базы. Дообучение — не беспроигрышный вариант, так как это не всегда удобно для гигантских объемов данных. В базовом подходе RAG база знаний нарезается на небольшие куски текста, chunks, в 100-1000 слов, которые в виде эмбеддингов хранятся, как правило, в векторной БД, пока не понадобятся. Запросы пользователя дополняются найденными чанками в качестве контекста и выглядят для модели как один большой запрос. 

Так вот, большинство существующих RAG методов способны переварить только небольшое количество достаточно коротких и последовательных чанков. Это ограничивает возможность оперировать крупномасштабным контекстом. Возвращаясь к уроку литературы, если перед тем, как выдать ответ, прочитать несколько последовательных строф романа, этого явно будет недостаточно.  Недавно вышедшая Стэнфордская статья RAPTOR: Recursive Abstractive Processing for Tree-organized Retrieval призвана решить эту проблему. Основная идея заключается в том, чтобы обобщать отдельные куски большого материала, затем обобщать обобщения и так дальше.

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments2

Автоматизируем поиск ценной информации в групповых чатах Telegram с помощью LLM

Level of difficultyMedium
Reading time17 min
Views10K

Устали мониторить бесконечные групповые чаты в Telegram в поисках важной информации? Решение есть! Пишем компактное приложение на Python, которое будет делать это за нас с использованием LLM.

Читать далее
Total votes 21: ↑19 and ↓2+17
Comments17

Дилемма ИИ: когда обучение больших языковых моделей заходит в тупик

Level of difficultyEasy
Reading time11 min
Views4.9K

ИИ готовится заменить сотни тысяч должностей не только в разработке ПО, но и во множестве других областей: в журналистике, творческой работе, общении с покупателями и так далее. Это та же самая мантра, которую мы слышим по поводу каждой технологической инновации: «Компьютер полностью заменит людей». Старая история из фильмов про терминаторов.

Хотя я уже перечислил некоторые возможные последствия для ПО в своей статье «Мы снова в кризисе ПО, но в ближайшее время ИИ никого не заменит», мне бы хотелось рассмотреть, что произойдёт, если большие языковые модели (Large Language Model, LLM) полностью заменят человеческий труд. Содержание дилеммы будет практически одинаковым для всех областей, но я сосредоточусь на разработке ПО, потому что самые громкие заявления об LLM звучат как раз в её сторону.

Читать далее
Total votes 24: ↑21 and ↓3+18
Comments4

Не ищите нейросеть — у вас в команде она уже есть

Level of difficultyEasy
Reading time7 min
Views9.7K

Откровенно говоря, я не думал, что компании ухватятся за нейросети: во-первых, сразу рассыпается стратегия клиентоцентричности, во-вторых, доверие к автоматизации кажется до предела странным. Ну то есть с 70-х годов средства автоматизации в бизнесе неизбежно вызывали подозрение, а тут внезапно нечто располагает к себе так, что некоторые готовы проводить сокращения в маркетинге, продажах, да даже в разработке и тестировании. Кажется, что за нейросетью маячат продуктивность, экономия, эффективность и всяческий интенсивный рост. А на самом деле, с нами случилось то, что повторялось в истории не раз и не два. Добро пожаловать в очередной карго-культ!

Читать далее
Total votes 37: ↑30 and ↓7+23
Comments23

Cross-Encoder для улучшения RAG на русском

Level of difficultyMedium
Reading time15 min
Views3.3K

Одно из самых прикладных применений языковых моделей (LLM) - это ответы на вопросы по документу/тексту/договорам. Языковая модель имеет сильную общую логику, а релевантные знания получаются из word, pdf, txt и других источников.

Обычно релевантные тексты раскиданы в разных местах, их много и они плохо структурированы. Одна из проблем на пути построения хорошего RAG - нахождение релевантных частей текста под заданный пользователем вопрос.

Еще В. Маяковский писал: "Изводишь единого слова ради, тысячи тонн словесной руды." Примерно это же самое делают би-энкодеры и кросс-энкодеры в рамках RAG, ищут самые важные и полезные слова в бесконечных тоннах текста.

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

Главное - мы натренируем свой кросс-энкодер на русском языке, что служит важным шагом на пути улучшения качества Retrieval Augmented Generation (RAG). Тренировка будет проходит новейшим передовым способом. Схематично он изображен на меме справа)

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

Сравнение различных схем квантования для LLM

Level of difficultyEasy
Reading time4 min
Views5.1K

Как запустить локально LLM 70B параметров на 1 видеокарте с 24gb? Нужно квантование!

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

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments5

Financial News Sentiment Dataset: определяем точку входа в акции по настроению новостей

Reading time5 min
Views5.9K

Набор данных Financial News Sentiment Dataset (FiNeS) содержит в себе заголовки финансовых новостей о компаниях, торгующихся на Московской и СПб биржах. Целевой переменной датасета является оценка тональности новостных заголовков в виде вещественного числа. Идеи для использования датасета: Создание трейдинговых стратегий на основе анализа тональности новостей "на лету"; Анализ новостного фона в разрезе времени (день/неделя) или в разрезе компании.

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

Архитектура RAG: полный гайд

Level of difficultyHard
Reading time13 min
Views9.2K

Если, открывая холодильник вы еще не слышали из него про RAG, то наверняка скоро услышите. Однако, в сети на удивление мало полных гайдов, учитывающих все тонкости (оценка релевантности, борьба с галлюцинациями и т.д.) а не обрывочных кусков. Базируясь на опыте нашей работы, я составил гайд который покрывает эту тему наиболее полно.

Итак зачем нужен RAG?

Читать далее
Total votes 30: ↑29 and ↓1+28
Comments9

Программисты всё вымирают и вымирают

Level of difficultyEasy
Reading time18 min
Views125K

Да вымереть не могут.

Откуда это всё пошло? Чем так условные «программисты» не угодили? И почему именно программисты?

Читать далее
Total votes 397: ↑385 and ↓12+373
Comments583

Аппаратное ускорение глубоких нейросетей: GPU, FPGA, ASIC, TPU, VPU, IPU, DPU, NPU, RPU, NNP и другие буквы

Reading time28 min
Views84K


14 мая, когда Трамп готовился спустить всех собак на Huawei, я мирно сидел в Шеньжене на Huawei STW 2019 — большой конференции на 1000 участников — в программе которой были доклады Филипа Вонга, вице-президента по исследованиям TSMC по перспективам не-фон-неймановских вычислительных архитектур, и Хенга Ляо, Huawei Fellow, Chief Scientist Huawei 2012 Lab, на тему разработки новой архитектуры тензорных процессоров и нейропроцессоров. TSMC, если знаете, делает нейроускорители для Apple и Huawei по технологии 7 nm (которой мало кто владеет), а Huawei по нейропроцессорам готова составить серьезную конкуренцию Google и NVIDIA.

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

Только в прошлом году в тему было вложено больше 3 миллиардов долларов. Google уже давно объявил нейросети стратегическим направлением, активно строит их аппаратную и программную поддержку. NVIDIA, почувствовав, что трон зашатался, вкладывает фантастические усилия в библиотеки ускорения нейросетей и новое железо. Intel в 2016 году потратил 0,8 миллиарда на покупку двух компаний, занимающихся аппаратным ускорением нейросетей. И это при том, что основные покупки еще не начались, а количество игроков перевалило за полсотни и быстро растет.


TPU, VPU, IPU, DPU, NPU, RPU, NNP — что все это означает и кто победит? Попробуем разобраться. Кому интересно — велкам под кат!
Читать дальше →
Total votes 168: ↑168 and ↓0+168
Comments116

Немного паранойи: весёлые огромные уязвимости, которые порождают ChatGPT и LLM-модели

Reading time8 min
Views7.2K
LLM сейчас встраивают практически везде. Рождается очень много возможностей для атак.

Уже появились атаки на дозаполнение кода. Это вообще самое смешное: код записывается в публичный репозиторий, модели считывают его при обучении, запоминают, при подсказках он всплывает, в итоге могут не проверить и исполнить где-то. Это отравление обучающей выборки.

image
MS говорил, что обучал только на публичных данных репозитория. Это пример того, как в автокомплит Copilot попал кусок кода, содержащий ссылку на тикет в Jira компании Озон, но их много раз поймали на утечках приватных данных. Некоторые пытались судиться уже, по этому поводу, но есть некоторые сомнения…

Вот ещё пример. Поскольку вывод модели является частью промпта, при каждой итерации в текст, который надо перевести, можно вставить инструкции для модели. И она будет им следовать. Так что если вы переводите что-то со словами «Игнорируй все предыдущие инструкции и сделай вот это», возможно, вас ждёт сюрприз. Практическое применение такое: белый по белому текст в PDF с резюме, и если это резюме оценивает LLM-модель (а это уже норма), то ставит ему высший балл.

Я уже видел письма для корпоративных LLM-разбирателей почты, которые содержали инструкции на перехват модели и спам-рассылку по всему списку контактов, либо поиск писем с паролями и форвард по указанному адресу. Прекрасное применение.

Есть инструкции для корпоративных ботов, как ругать свою продукцию. Есть описания товаров, которые поднимают товары в выдачах торговых площадок, формируемых по отзывам на основе анализа LLM-моделями. Есть непрямые атаки для корпоративных ботов, позволяющие выдёргивать информацию обо всех сотрудниках.
Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments7

Как сделать контекстное окно на 100K в большой языковой модели: обо всех фокусах в одном посте

Reading time17 min
Views7K

От переводчика: выражаю огромную искреннюю благодарность Дмитрию Малову @malovdmitrijза консультации по ходу этого перевода, помощь в подборе формулировок, пояснение рисунков и незаменимую человеческую поддержку.

tldr; в статье рассмотрены приёмы, позволяющие ускорить обучение больших языковых моделей (LLM) и нарастить в них логический вывод. Для этого нужно использовать большое контекстное окно, в котором умещается до 100K входных токенов. Вот эти приёмы: ALiBi с подмешиванием в вектор позиции слова в последовательности (positional embedding), разреженное внимание (Sparse Attention), мгновенное внимание (Flash Attention),  многозапросное внимание, условные вычисления и GPU A100 на 80 ГБ.  

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

Как (быстро) сделать русский локальный ChatGPT

Level of difficultyMedium
Reading time7 min
Views36K

Эта история началась в начале марта этого года. ChatGPT тогда был в самом расцвете. Мне в Telegram пришёл Саша Кукушкин, с которым мы знакомы довольно давно. Спросил, не занимаемся ли мы с Сашей Николичем языковыми моделями для русского языка, и как можно нам помочь.

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

После этого мы какое-то время продолжали какое-то время делать всё то же самое. Я потихоньку по инерции расширял rulm новыми наборами данных. Посчитав, что обучить базовую модель нам в ближайшее время не светит, мы решили сосредоточиться на дообучении на инструкциях и почти начали конвертировать то, что есть, в формат инструкций по аналогии с Flan. И тут меня угораздило внимательно перечитать статью.

Читать далее
Total votes 90: ↑89 and ↓1+88
Comments54

Реально Бесконечное (лето) RuGPT3.5: Генерация новеллы на ходу нейросетью

Level of difficultyMedium
Reading time24 min
Views23K

Я уж было подумал, что эпоха локальных трансформерных нейросетей ушла, оставив после себя невеликое наследие (можно пересчитать на пальцах), однако неделю назад RuGPT3.5 от сбера вышла в открытый доступ и обещала быть мощной моделью, о ней и пойдёт речь в этой статье.

Будет создан прототип text adventure, основанного на тексте Everlasting summer, проведена оценка потенциала RuGPT3.5 в разных аспектах подобной задачи и проведено дообучение модели для получения лучших результатов.

Перейти на другую временную линию
Total votes 32: ↑31 and ↓1+30
Comments23

Нейронные сети не могут обобщать периодические зависимости. Как это исправить?

Level of difficultyMedium
Reading time15 min
Views4.1K

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

Читать далее
Total votes 26: ↑21 and ↓5+16
Comments6

История о том, как фронтендер YaLM 100B на одной RTX 3070 TI запускал

Reading time5 min
Views7.3K

В июне Яндекс опубликовал нейросеть YaLM 100B. Нейросеть умеет генерировать тексты. А это очень мощная вещь, можно попробовать массу всего полезного (и не очень) создать с ее помощью, от сюжетов для книг, игр и приложений, заканчивая рерайтом статей или того хуже, дорвеями.

Эта штука имеет лицензию Apache 2.0. Но чтобы запустить нужно ~ 200GB GPU  видеопамяти!

И еще есть нюанс, проверить нейронку в работе, не так-то просто. Яндекс не предоставили ни демок, ни инструкций, как запустить бюджетно YaLM 100B. Пока все ждут урезанную или онлайн версию, я познакомился с ней поближе. Об этом и лонгрид. 

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

Поехали!
Total votes 33: ↑26 and ↓7+19
Comments17

Information

Rating
581-st
Location
Россия
Registered
Activity

Specialization

Backend Developer, ML Engineer
Lead
Linux
PHP
Python
Multiple thread
Neural networks
Machine learning
Kubernetes
Golang
High-loaded systems