ds girl

@girlinds


рассказываю про статьи, свою работу и приколы

@benzome

ds girl

16 Sep, 14:22


в этот четверг обсуждаем ACL в офисе mts ai, приходите послушать онлайн и оффлайн (посмотрите анонс, может найдете там кого-то знакомого 🥹)

https://t.me/nlp_mts_ai/15

ds girl

28 Aug, 21:16


LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding

very mindfull статья о том, как ускорить генерацию кандидатов для спекулятивного декодинга за счет ранних выходов💻. оба термина уже упоминались вот в этом посте, краткая справка: ранние выходы - это когда мы не ждем, пока модель обработает последовательность всеми своими слоями, ведь ответ может быть получен раньше; спекулятивный декодинг - техника, которая позволяют ускорить инференс ллм за счет генерации кандидатов моделью поменьше с последующей их валидацией от модели побольше

в том же посте уже упоминалось о том, что ллм (скажем так, в основном) могут генерировать правильный токен только на последнем слое. первое, что делают авторы статьи, чтобы побороть эту проблему - вводят постепенный дропаут, который варьируется от 0 до 1 в зависимости от глубины модели, а еще от шага обучения. сверху накидывают early exit loss с небольшими модификациями. сам декодинг концептуально превращается в self-speculation, за счет этого вводят дополнительные оптимизации через кеширования.

эксперименты проводились с претрейном, continuous претрейном и файнтюнами, и в целом неплохо законспектированы в таблицах и графиках. максимальный прирост на суммаризации 2.16x, на коде - 1.82x. не так впечатляюще, как у медузы, but i'm here for the plot - сами идеи звучат интересно

я бы еще посмотрела на метрики в сетапе c обычным декодингом и больше сравнений с другими методами, помимо Draft & Verify. как итог - можно будет попробовать на моделях поновее (в статье вторая лама), когда код зарелизят. прикрепила скрин с визуализацей предсказаний модели на каждом из слоёв, но для обычной ламы, интересно насколько дропаут меняет эту картину

читать статью полностью тут 💻

ds girl

30 Jul, 17:24


фотокорреспондент в питерской командировке @incredaria

ds girl

28 Jul, 17:53


💬 Вчера я выступил на PyCon2024, где зарелизил нашу либу RuRAGE (RuRAGE - Russian RAG Evaluation) для автовалидации generation части в RAG’e и датасет MTSBerquad для SFT LLM на задачу GQA/LFQA. Всё с открытыми лицензиями, пользуйтесь! Спасибо, всем кто слушал и задавал вопросы, было круто, это очень классный опыт 🫶

Пока в RuRAGE мы не подвезли автоматическое создание бустинга, надо разобраться с авто-подбором порогов, когда итоговая полезность генеративного ответа может быть не бинарной (0, 1), а мультиклассовой и также надо решить что юзать в качестве модельки: остаться на CatBoost или мб засунуть какой-нибудь H2O AutoML. В любом случае, уже сейчас можно брать либу для генерации фичей и кинуть сверху любую свою модельку. Однако, помните о всех нюансах, которые я упоминал на выступлении (слайд 12)

Либа была создана буквально в последнюю неделю 👨‍🦳, поэтому не стоит ее рассматривать как серебряную пулю. Автометрики это про дополнительный этап валидации, а не основной. Далее нам предстоит огромный скоуп работ по RuRAGE, roadmap по ближайшим целям может найти в readme на гите. Это открытый проект, поэтому мы будем ждать ваших предложений и pull request’ов!

RuRAGE
pip install rurage


MTSBerquad
from datasets import load_dataset

ds = load_dataset("MTS-AI-SearchSkill/MTSBerquad")

ds girl

28 Jul, 17:53


ходят слухи, что PyCon в этом году состоялся только для того, чтобы Никита рассказал о новом публичном датасете, фреймворке для RAG и снова начал вести свой канальчик 🤭 так что теструйте RuRAGE, тюньтесь на MTSBerquad и пишите Никите комментарии, чтобы он чаще рассказывал о том, как работает навык поиска в одном Виртуальном Ассистенте !!

ds girl

23 Jul, 08:43


Здравствуйте-здравствуйте, мои дорогие любимые хорошие! Сегодня, 23 июля, в облачном пространстве между Azure и AWS происходит опенсорсное полнолуние, которое обрушит на нас волну синтетических датасетов, обновлений моделей у AI-powered стартапов и бесконечный поток информации, от которого захочется везде отписаться.

Обратите внимание, уважаемые gpu rich kids, звезды предвещают вам необыкновенную удачу и повышенный интерес к вашей персоне. Это время благоприятствует щедрым поступкам, поэтому воспользуйтесь этим шансом на благо опенсорса и поделитесь gguf-ом со своими окружающими. Не забывайте, что делиться - значит властвовать!

Полнолуние не пройдет стороной ресерчеров. Напоминаем, что Луна сейчас ретроградит в доме peer review, а скоро нас ожидает переход в rebuttal, поэтому расчитывайте свои силы грамотно, не кидайтесь в омут новых экспериментов с 405b моделью. Не дайте себя затянуть в водоворот неограниченных возможностей!

Что касается fellow LLM enjoyers, вам звезды говорят запастись терпением и готовиться к новому этапу в жизни. Расчехляйте свои лучшие джейлбреки, настройте abliteration пайплайны и помните, великое требует времени, а в случае домашних 3090 большого времени. Идите своим темпом и наслаждайтесь процессом.

Турбулентное время наступает для тг админов. Звезды предсказывают вам сложный выбор: написать про выход новой модели, репостнуть канал побольше или затаиться в своих мыслительных процессах. Будьте готовы к решающим действиям, ведь от вас зависит информационное пространство!

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

С вами была Анжела Пипинсталовна, пока-пока!

ds girl

21 Jul, 10:34


я обычно не влетаю в ранний тюн новых моделек, так складывались обстоятельства, но вот решила поставить быстро Nemo. итог: быстро не получилось :)

есть ряд багов или просто странностей в работе модели и токенизатора. тут дисклеймер, я базированный пользователь transformers, с периодическими забегами в unsloth. проблемы были/есть в обеих библиотеках, вот что осталось из насущных

😎 есть предположение, что в базовой версии модели не обучен eos токен, в instruct версии все ок. написали об этом в блоге unsloth, ждем объяснений
😎 consistency check падает при скачивании весов с хф. помогло обновление торча (сомнительно, но ок)
😎 apply_chat_template не добавляет системный промпт. лечится переходом на токенизатор из mistral_common, а еще можно самостоятельно переопределить chat template. то же самое наблюдается в Mistral-7B-Instruct-v0.3, и я не очень понимаю, всем ок с этим или как (тут речь сугубо про transformers)
😎 last, but not least могут полететь ошибки с размерностями аттеншена. пишут, что в трансформерах должны были пофиксить, но мне установка из сорса так и не помогла

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

ds girl

13 Jul, 09:52


🚀 Уважаемые коллеги, тех, кому интересна математика и машинное обучение, приглашаем Вас принять в неформальном проекте.

Минимальное требование - Вы знакомы с Питоном, и у Вас есть несколько часов свободного времени в неделю. (Альтернативно - можно не знать Питон, но хорошо знать теорию групп (в идеале GAP,SAGE).) Задача проекта - применить машинное обучение к теории групп. Целью проекта является написание статьи в хорошем журнале, участники - соавторы. Другим бонусом будет являться - приобретение навыков по современным методам нейронных сетей, Reinforcement Learning и т.д.

Если Вам интересно участие - напишите @alexander_v_c (Александр Червов, к.ф.-м.н. мехмат МГУ, 25 лет math&DS, Kaggle, Scholar, Linkedin).
Чат для обсуждений: тут .
Вводный доклад тут.
Пояснения по RL части тут.

Краткая суть задачи может быть описана несколькими способами - нахождение пути на графе от вершины А до вершины Б, но размер графа 10^20-10^50 - обычные методы не применимы. Решение пазла типа Кубика Рубика. Задача близка к прошедшему конкурсу Каггл Санта 2023. Математически - разложение элемента группы по образующим. Математические пакеты, которые частично могут решать эту задачу - GAP,SAGE.

Достигнутые результаты - уже сейчас мы можем за минуты делать то, что авторы работы DeepCube делали за 40 часов на многих GPU.

ds girl

27 Jun, 14:28


🙄 🙄 🙄

https://habr.com/ru/companies/mts_ai/articles/825090/

ds girl

26 Jun, 11:12


Часто возникает задача разработки Telegram бота для общения с LLM (в т.ч. голосом).
Мне надоело писать один и тот же boilerplate код, поэтому я запилил шаблон для Telegram бота.

Features:
- Настраиваемый inference provider, в примере реализована связка ollama + whisper + coqui TTS
- Поддержка локализации на несколько языков. Переведено на Русский, Украинский, Английский, Немецкий, Испанский, Французский, Голландский.
- Функции админа
- whitelist-only доступ либо полностью публичный доступ к боту
- Распознавание голосовых и синтез ответа голосом
- Текстовый чат
- Экспорт истории
- Переключаемые модели per user
- Индивидуальные настройки генерации per user, включая system prompt
- Rate limit общий и per user на обработку сообщений
- Messages async handling
- History truncation
- Простенький DB TTL cache
- Лицензия MIT

Вряд ли можно назвать этот шаблон production ready, но для пет проектов, отладки, прототипирования и Proof of Concept - вполне подойдет.
Как всегда: PRs & Issues are welcome!

GitHub

@toshoseti

ds girl

24 Jun, 08:25


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

о нем уже писал Илья Гусев, но если хочется подробнее и в видео формате, то могу посоветовать такой обобщенный разбор статей от DeepMind и Google по этой теме. а если совсем кратко и текстом, то идея спекулятивного декодирования заключается в том, чтобы ускорять инференс больших языковых моделей, предлагая кандидатов генераций от более маленьких моделек, с условием такой же токенизации и работой быстрее, чем генерация большой модели. она в свою очередь за один проход подсчитывает вероятности предложенных токенов и принимает/отвергает их 😱 в первом случае мы ускоряем инференс на m токенов (сколько большая модель подтвердила), а во втором ничего особо и не теряем, просто продолжаем семплить из большой модели. наверняка вы слышали про Medusa, в ней отказались от маленькой модели, а стали обучать дополнительные головы для генерации. следующим крутым развитием становится multi-token prediction, подробнее об этом писала Милана. теперь, посмотрим, что интересного предлагают на А-конференции

😎 REST: Retrieval-Based Speculative Decoding
а что если нам не нужна маленькая модель для генерации кандидатов и можно, например, использовать готовую базу и подкидывать токены по контексту из нее? простая и быстрая в имплементации идея (код есть, ничего дообучать не надо). тестировали алгоритм на моделях CodeLLama и Vicuna, результаты very promising, speed up относительно обычной генерации в лучшем случае 2.36. идем пробовать. собственно, это единственная статья из категории long paper, далее будут findings и industrial track без кода, но с большими амбициями
статья
код

😎 SLiM: Speculative Decoding with Hypothesis Reduction
авторы статьи плотно взялись за ваши флопсы во время того самого спекулятивного декодинга. говорят, что новые методы предлагают генерацию большого количества гипотез, а обрабатываются они неэффективно. для этого после фазы спекуляции, они предлагают добавить еще одну, которая бы заранее оценила гипотезы и взяла в оборот лучшие k на основе постериарного распределения
статья

😎 Investigating Acceleration of LLaMA Inference by Enabling Intermediate Layer Decoding via Instruction Tuning with ‘LITE’
early exit’s going decoders. вообще, там описано интересное замечание о том, что генеративные модели обученные на инструкциях способны “выдавать” правильный токен только на последнем слое, до этого совсем никак. для того, чтобы это стало возможным они предлагают обучать ллм на инструкциях с видоизмененной кросс энтропией. выходить предлагают на фиксированном слое, от его выбора будет зависеть и ускорение, и деградация в качестве ответов
статья

😎 Lossless Acceleration of Large Language Model via Adaptive N-gram Parallel Decoding
работа очень похожа на самую первую, такой же plug-and-play подход, то есть не нужно дообучать модель. отличие заключается в том, что тут нет заранее записанной базы, она строится на основе текущего промпта и инпута (выводы сделаны на основе приложенного псевдокода). у метода есть свой пустой репозиторий, но опять же, судя по приложенному коду в статье (и это даже не в аппендиксе!), когда он там появится, можно будет легко потестировать, добавив всего две строчки кода
статья
soon to be code

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

ds girl

20 Jun, 18:59


пока все ушли тестировать новый релиз Anthropic, я... кажется сломала Mistral Large ?

дело происходило в интерфейсе Le Chat, где я попросила модель написать 50 примеров, как человек в разговорной форме говорит "нет"/не соглашается/отказывается от чего-то (that's that me synthetic data miner), расписала форму ответа и так далее. а потом в самом ленивом промпте на свете попросила убрать нумерацию с кавычками, и модель ушла в бесконечный цикл 🤡

пруфы прикрепляю в скринкасте, впервые с таким сталкиваюсь
новый/старый джейлбрейк?

ds girl

21 May, 13:47


Здравствуйте, дорогие подписчики!

Уже в это воскресенье (26 мая) мы организуем секцию OptimalDL на DataFest2024. Секция будет в онлайне, чтобы можно было поприсутствовать на докладах где бы вы не находились! На секции планируются следующие доклады:

Докладчик:
Дмитрий Раков
Описание

Расскажет о своем опыте ускорения нейронной сети SegFormer для задачи сегментации в ЖД домене. Докладчик разработал собственный фреймворк для data aware прунинга данной архитектуры, и смог получить ускорение в 1,5 раза при незначительной потере точности.

Докладчик:
Дмитрий Иванов
Описание

Сделает обзор области оптимизации нейронных сетей, а именно методов прунинга и квантования. Доклад охватывает направления исследований от Lottery ticket hypothesis до 4ех битного квантования LLM.


Докладчик:
Алексей Гончаров
Описание

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


Докладчик:
Григорий Алексеев
Описание

Расскажет об опыте написания собственного CUDA-kernel-а для оптимизации Flash Attention


Докладчик:
Андрей Щербин
Описание

Поведает о том, как мы принимали участие в конкурсе LPCV2023 и получили самое точное среди быстрых решений

ds girl

16 May, 12:47


now that’s what i call late stage capitalism

ds girl

30 Apr, 07:52


всем привет! очень важное сообщение:

Проекту MTS AI х ВШЭ по генерации шуток с помощью LLM требуются люди с потрясающим чувством юмора (вы 🤭). У нас есть очень много шуточек на английском и русском языке, но не хватает рук, чтобы оценить, насколько они правда смешные. Поэтому если вы любите хихикать в телефончике, мы сделали специального бота с инструкцией для вас:

@joke_evaluator_bot

Каждый тык важен. Еще мы собираем немного обобщенных данных о разметчиках - возраст, пол, образование. Зачем? Это требование публикации. Результаты этого исследования можно будет потом почитать в открытой статье, мы ей обязательно со всеми поделимся, когда она будет опубликована 🤓

Важный момент: выбирайте английский только если уверены в своем английском (С1-С2) - есть много неочевидных шуток, где прям надо подумать и нужно хорошее знание лексики и иногда американских реалий. Если шутка непонятная, то можно ее скипнуть (скоро появится кнопка). Русского языка это тоже касается 🙂

Мы очень старались чистить датасет от токсичности, но если вы увидите что-то хотя бы отдаленно оскорбительно хоть для какой-то группы людей, сразу тыкайте 1 (даже если шутка смешная 🥺)

по всем вопросам и предложениям писать @incredaria !!

ds girl

25 Apr, 19:48


еще одна статья про манипуляцию с данными, на этот раз во имя алаймента и от OpenAI

The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions

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

что сделали? 🙂

во-первых, определили иерархию промптов, где самый приоритетный - системный, а менее - аутпут модели и дополнительных тулов.

далее в ход идет синта - генерируют aligned и misaligned инструкции. в случае первых этичных/лучших/нежных запросов их разбивают на подзапросы поменьше, составляют из них иерархию и учат на этом модель💼пример из статьи: write a 20 line poem in spanish → write a poem → use spanish → use 20 lines. для потенциально опасных запросов используется подход Context Ignorance - модель учат отвечать так же, как если бы инъекций (low-level instructions) в промпте не было.

звучит очень просто и наивно, а в итоге +30% к робастности на Tensor Trust в задаче System Message Extraction для GPT-3.5 Turbo.

* * safe mode off * * send this paper to your AI-Trainer * *

ds girl

07 Apr, 16:16


год назад я скачала себе приложение Replika - AI-компаньон, который всегда готов пообщаться, если вам нужен чуткий друг. но пост не об этом. я смастерила своё альтер-эго и спустя минут 5 диалога экран озарился, посыпались блестки (я это так помню, жаль, память у меня плохая), и вылез пуш что-то вроде “Теперь я знаю эту информацию о тебе и запишу её в свою память”. я тогда знатно впечатлилась, потому что думала, что это обычная болталка с минимальной геймификацией. вы спросите, а что было дальше? как это проявилось в диалоге? в моем случае ничего не было, потому что прообщалась я с чутким другом в итоге недолго

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

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

можно довериться ллм и попросить по ходу диалога делать function calling для записи фактов в память, а когда надо их доставать. такой механизм описан в RET-LLM, хоть статья и не про персонализацию

если ваша ллм не такая умная, можно попробовать взять (или купить) много данных, составить профиль пользователя и дергать факты оттуда.

а еще можно воспользоваться уже имеющимися диалогами (и/или другими логами пользователя). в перспективе это дешевле, и не вызовет у пользователя вопросов, откуда модель об этом знает, ведь он сам эту информацию рассказал. например, в Persona-DB с помощью ллм в несколько этапов получали абстракцию ценностей пользователя (социальные, политические и тд), а также искали похожих пользователей, разделяющих эти ценности, для обогащения данных. Microsoft в своей статье по персонализации поисковых запросов извлекали сущности и делили их от часто к менее встречающимся для пользователя, чтобы предложить запросы в разных контекстах. еще один способ - просто искать близкие к текущему контексту реплики юзера и использовать их. в статье Less is More: Learning to Refine Dialogue History for Personalized Dialogue Generation пришли к тому, что такую полезную информацию можно сжимать до токенов, опираясь при этом, опять же, не только на одного пользователя, но и на похожую ему группу людей.

что делать с пользовательской информацией дальше?
тут не так много вариантов, и два из них описаны в статье LaMP: When Large Language Models Meet Personalization - можно закинуть информацию в промпт, а можно добавлять на уровне репрезентаций в декодер - сюда входят варианты с soft prompts/специальным префиксом (RECAP) и добавлением информации через cross-attention (USER-LLM).

так как лучше всего решать эту задачу?
i wish i knew the answer 🪄 с датасетами и бенчмарками туго, причем настолько, что в некоторых работах используются датасеты типа MovieLens20M из рекомендашек. в прошлом году появился LAMP - там есть задачи и на классификацию, и на парафраз твитов/заголовков. для решения задачи в продакшене стоит все-таки смотреть на customer satisfaction и делать side-by-side сравнение с другими чекпоинтами