Душный NLP
5.31K subscribers
154 photos
2 videos
85 links
Разборы свежих статей от NLP-специалистов Яндекса. Подробно, полезно, с душ(нот)ой.

Вопросы и предложения > @yandex_ml_brand
加入频道
Channel created
Привет! На связи NLP-команда Яндекса. Коллективный разум создал этот канал, чтобы делиться разборами научных статей со всеми, кто жаждет знаний. Не стесняйтесь общаться в комментариях! Мы за обмен опытом и увлекательные дискуссии. Кстати, форточку открывать не собираемся — здесь душно, потому что так нужно.
🔥12😁5
⚗️ Что такое дистилляция и как она применяется в LLM

Чем больше модель, тем сложнее ее инферить и дороже обучать. Решить проблему призвана, в том числе, дистилляция — передача знаний от тяжёлой модели («учителя») более лёгкой («ученика»). Расскажем, какие типы дистилляции существуют и как их используют.

Классический способ предложил Джеффри Хинтон в статье 2015 года. Учёный выдвигает гипотезу, что распределение классов, которые модель предлагает в качестве ответа, само по себе содержит немало знаний. Поэтому имеет смысл тренировать «ученика» не на ответах, а на распределении классов «учителя», используя Softmax с температурой. В качестве лосса использовали кросс-энтропию между двумя распределениями — ответами учителя и ученика.

Одна из первых моделей, которую дистиллировали на претрейне, — DistilBERT. Результат получился впечатляющим: language understanding удалось сохранить на 97%, а скорость по заявлению авторов выросла на 60%. Интересно, что дистиллировали веса, а в архитектуре модели изначально было вдвое меньше энкодер-блоков, чем у базовой BERT — 6 против 12. В основе обучения — перекрестная энтропия ответов «учителя» и «ученика», MLM и L cos — косинусная близость между эмбеддингами на скрытых слоях. Идеи DistilBERT позднее применяли, например, в DistilGPT.

Самый простой из современных методов — имитация модели. Его суть — добиться, чтобы небольшая модель копировала поведение крупной. Для этого «учителя» просят генерировать ответы на разные запросы, а потом на них обучают «ученика».

Маленькие модели отлично подражают большим, но не развивают собственные навыки. Поэтому «ученики» не получают новые знания, зато неплохо справляются с тем, чтобы извлекать имеющиеся. Этот метод подходит, когда нужно натренировать модель под конкретные задачи, например, для суммаризации или разметки данных.

Для дистилляции знаний в «младшую» модель можно использовать метод Chain-of-Thought Prompting. Суть: просить LLM давать не только ответ, но и описывать цепочку рассуждений, которые к нему привели. Как показывают исследования, такой подход существенно увеличивает качество ответов на некоторых датасетах.

К примеру, авторы статьи Distilling Step-by-Step! попросили «ученика» предсказывать не только ответы «учителя», но и обоснования, чередуя запросы. Так маленькая модель тренируется думать как большая LLM, а не просто копирует ответы и поведение — на некоторых датасетах этот подход даёт отличный результат.

Кроме того, можно использовать датасет, составленный по reward-модели. В этом случае «ученик» будет тренироваться не на всех ответах «учителя», а только на тех, которые reward-модель считает хорошими, что тоже может улучшить результаты.

Наконец, можно расширить датасет, на котором учится младшая модель, с помощью генерации с разными параметрами вроде температуры или seed. Набор данных по одному промту получится более разнообразным, а поведение «ученика» в теории должно больше походить на поведение «учителя».

На этом всё. Спасибо, что прочитали! Делитесь опытом и впечатлениями от поста в комментариях! А во второй части текста мы разберём другие методы дистилляции и, конечно, затронем MiniLLM. Оставайтесь на связи!

Разбор помог подготовить Сергей Воробьев

@stuffyNLP
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥177👍3😱1
LIMA

Почти все знания и способности модель получает из претрейна, а алаймент лишь определяет, какое подраспределение форматов использовать для общения с пользователем. Эта гипотеза лежит в основе статьи о LIMA — 65B LLaMa-модели, файнтюненной на 1350 примерах. Авторы заверяют: модель показывает отличные результаты благодаря разнообразным и качественным данным на алайменте. Разберемся, как инженеры к этому пришли.

Тексты в датасете должны быть единообразными (как для ИИ-ассистента), но из разных источников. За данными обращались к Stack Exchange, wikiHow и Reddit, а какую-то часть написали сами. Всё отобрали вручную — с Reddit взяли только ответы с сабреддитов AskReddit и WritingPrompts.

На этапе обучения добавили токен End of Turn для распознавания спикеров, а также residual dropout для роста дропаута от слоя к слою. В оценке использовали pairwise-замеры: брали ответы на один промт от двух моделей, предлагая оценщику выбрать лучший по определённым критериям. Оценщиков заменили на GPT-4 без сильной потери качества — решения LLM и людей совпадали на 78-79%.

По результатам pairwise вышло, что LIMA побеждала Alpaca и DaVinci-003 (рис. 1). При проверке GPT-4 показатели LIMA были выше, чем при проверке человеком (рис. 2).

Авторы статьи обучили LLaMa 7B таким же способом. Но вместо 2 принимали по 5 ответов на промт, а датасет для алаймента расширили до 2000 примеров. Тестирование снова доверили ChatGPT — она оценивала ответы двух 7B-моделей, обученных на «грязных» и «отфильтрованных» данных со Stack Exchange. В первом случае результат оказался 3,3 из 6, во втором — 3,83. Для сравнения, обучение на премодерируемом контенте с wikiHow дало оценку 3,49 (рис. 3). Эти результаты кажутся не совсем валидным — слишком уж мало примеров.

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

Спасибо, что прочитали! Расскажите, что думаете о LIMA, в комментариях.

Разбор подготовил Роман Горб

@stuffyNLP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥94👍3🤔1
Слияние моделей — часть I

Как можно догадаться из названия, слияние моделей — или мёржинг — это процесс совмещения двух или более LLM в одну. Самый базовый тип методов — усреднение весов. Например, exponential moving average, предполагающий смешивание веса одной модели на нескольких последних итерациях. Но есть и другие способы — о них и расскажем в этом посте.

SLERP (Spherical Linear Interpolation) предполагает, что мы рассматриваем веса модели не как набор чисел, а как вектора. Схему этого метода вы можете увидеть на картинке выше.

Усреднение происходит за счёт изменения угла между векторами в модели — то есть поворотом весов одной модели в сторону другой. Метод схож с усреднением весов потому что это тоже линейное комбинирование.

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

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

Следующий метод — TIES. Здесь сперва нужно посчитать таск-вектора моделей и в тех параметрах, где вектора меньше некоего порога, занулить их. Далее следует «разрешить конфликты» между таск-векторами двух LLM: то есть избавиться от противоположных векторов и создать единый. Если изменение направлено в одну сторону, то делать ничего не надо, а если в разные — занулить наименьшее. Наконец, происходит сам мёрж любым способом. TIES так же подходит только для слияния двух моделей.

На этом на сегодня всё. А в следующей части мы расскажем ещё о паре классических методов и о самом популярном сейчас способе мержинга. Оставайтесь на связи и делитесь своим опытом в комментариях!

Душный NLP
🔥9👍75
Слияние моделей — часть II

В прошлый раз мы рассмотрели несколько классических методов мёржинга: усреднение весов, SLERP и TIES. В этом посте завершим обзор ещё двумя не менее интересным способами.

Итак, метод DARE схож с TIES, но избавляются здесь не от слишком маленьких, а от случайных изменений. Можно выкинуть до 90% значений без ущерба для качества. Дальше нужно действовать как в методе SLERP, о котором мы рассказывали в прошлом посте, а затем необходимо скалирование весов, чтобы сохранить их среднюю магнитуду.

К классическим (но извращённым) методам слияния также относится Passthrough. Модели, созданные с его помощью, ещё называют «Франкенштейнами» — и это неудивительно. Passthrough предполагает простую замену слоёв одной модели слоями другой.

Самый популярный метод сейчас — это MoE (Mixture of Experts). Суть его заключается в замене FFN-слоев на «смесь экспертов». В таком случае каждый токен отправляется «эксперту», которому больше всего подходит. Распределением занимается роутер. Его можно инициализировать случайно и дообучить. Схему можно увидеть выше.

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

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

Душный NLP
8👍5🔥5
Channel photo updated
Редактирование знаний внутри LLM

В постоянно изменяющихся условиях важно поддерживать актуальность информации, которой обладают LLM. Остро встаёт вопрос редактирования знаний модели — его и рассматривают авторы сегодняшней статьи.

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

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

Второй тип — внедрение знаний. Это добавление новых параметров, которые позволяют выстроить связи между старыми и новыми знаниями. Суть заключается в создании нового feed forward-слоя, который будет меньше первого. Веса на втором определяются файнтюнингом по текстам с изменёнными знаниями.

Третий вид — собственно, редактирование. Новые параметры при этом не добавляются, но меняются данные, которыми модель уже обладает. Существует два способа сделать это:
+ Meta Learning предполагает обучение гиперсетки, предсказывающей изменения параметров, которые необходимо сделать. Исходя из этого мы обновляем веса и минимизируем loss на новых данных.
+ Location-then-Edit предполагает определение конкретного места в модели, где сосредоточены знания о каком-либо факте. Для этого мы наблюдаем за тем, как меняются градиенты.

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

Спасибо за внимание! Делитесь мыслями по теме в комментариях :)

Разбор подготовил Артём Сафин

Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍141
Самые интересные статьи с ICLR 2024

В начале мая прошла ICLR 2024 — конференция, которая собирает специалистов в области машинного обучения со всего мира. Мы побывали на мероприятии и теперь в карточках рассказываем о статьях, которые запомнились больше всего.

А вот ссылки на все тексты:

1. Fast-DetectGPT: Efficient Zero-Shot Detection of Machine-Generated Text via Conditional Probability Curvature

2. LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models

3. DoLa: Decoding by Contrasting Layers Improves Factuality in Large Language Models

4. Never Train from Scratch: Fair Comparison of Long-Sequence Models Requires Data-Driven Priors

5. ToolLLM: Facilitating Large Language Models to Master 16000+ Real-world APIs

6. Towards a statistical theory of data selection under weak supervision

Рассказывайте в комментариях, какие статьи понравились вам, и делитесь впечатлениями!

Душный NLP
🔥33👍1410
Instruction Tuning для MoE-моделей

Техника Mixture of Experts (MoE) предполагает использование в сети нескольких специализированных блоков — экспертов — для решения одной задачи. Модели на архитектуре MoE сильно выигрывают от грамотного файнтюнинга. Об этом и говорится в статье, которую мы сегодня разберём.

Преимущества инстракшн-тюнинга

Секрет, как утверждают авторы, в предварительном инстракшн-тюнинге — после претрейна и до файнтюнинга. Проверяют эту гипотезу на нескольких сетапах. Первый — Switch Transformer, у которого каждый слой MoE и только топ-1 гейтинг. Далее — GShard с топ-2 гейтингом, expert-choice, дающий возможность экспертам выбирать токены и ST-MoE.

На графике можно увидеть результаты файнтьюнинга моделей с инстракшн-тюнингом (приставка Flan) и без него, сразу после претрейна. В первом случае МоE выбивается вперёд, а вот во втором её показатели хуже, чем у Т5. Это происходит потому, что при обычном файнтюнинге МоЕ-моделей они теряют преимущество, ведь «эксперты» начинают сходиться во мнениях.

Как устроен инстракшн-тюнинг

Авторы использовали задачи из FLAN-датасета и применяли auxillary loss. Это нужно, чтобы все токены не отправлялись одному «эксперту». Также применяли дропаут (0,05) и экспертный дропаут (0,2). Коэффициент скорости обучения — на уровне 1e −4.

Результаты

Авторы статьи утверждают, что их FLAN-MoE, требующий 32 миллиарда операций при форварде (32.1 GFLOPs/token), показывает себя лучше, чем FLAN-PALM, у которого в 3 раза больше количество операций 91.6 GFLOPs/token. В итоге после инстракшн-тюнинга показатели модели выросли в три с лишним раза. Выглядит слегка подозрительно, но впечатляет. Более того, при росте модели сохраняется тенденция к росту показателей после инстракшн-тюнинга. Но авторы подчёркивают, что количество данных важнее, чем число «экспертов».

Разбор подготовил Александр Мазитов

Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥136🎃1
Ускорить обучение LLM 70B на 25%? Легко! YaFSDP

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

Библиотека даёт ускорение до 25% — результат зависит от архитектуры и параметров нейросети. С помощью YaFSDP также можно расходовать до 20% меньше ресурсов графических процессоров (GPU), которые требуются для обучения.

Несколько подходов нашего метода:

— выделить два буфера под все собираемые веса, чтобы не отдавать их на отĸуп аллоĸатору памяти torch. Каждый нечётный слой будет использовать первый буфер, ĸаждый чётный — второй. Это уменьшит нагрузку на память и сделает её использование более предсказуемым;
— не делать чеĸпоинт аĸтиваций для ĸаĸ можно большего числа слоёв. Это позволит убрать избыточные вычисления за счёт сэкономленной памяти;
— выделить два стрима: вычислений и ĸоммуниĸаций, а синхронизацию построить таким образом, чтобы forward не начинался до завершения all_gather того же слоя, а all_gather не начинался до освобождения соответствующего буффера на предыдущем слое;
— разово собирать RMSNorm/LayerNorm в начале итерации и тольĸо в ĸонце усреднить градиенты;
— вынести predivide в самый ĸонец backward, таĸ ĸаĸ при reduce_scatter в bf16 или fp32 рисĸа переполнения нет.

Более подробно про проблемы обучения на множестве GPU можно почитать на Хабре. Приходите в репозиторий библиотеки YaFSDP, ставьте лайк и приносите вопросы в Issues. А ещё — делитесь своими впечатлениями здесь в комментариях.

Душный NLP
🔥6813👍13👏4
Mamba — что это такое и как себя показывает

Mamba — это LLM, которая основана на SSM (State Space Models). О ней рассказывается в статье, которую мы сегодня и разберем.

Для начала напомним, что такое SSM. Это модели, которые позволяют эффективно работать с длинными последовательностями данных. Что-то вроде RNN, но без нелинейности, благодаря чему запись можно осуществлять в виде одной большой матричной операции.

Mamba сочетает в себе преимущества SSM и Gated MLP. Вот, как это работает. Сначала к последовательности применяется in projection, увеличивается количество каналов. Затем используется 1D-конволюция и нелинейность. После этого, как в Gated MLP, происходит поэлементное умножение параллельного входа и выходной projection. Таких блоков может быть несколько.

Какие преимущества даёт такой подход

• Mamba использует recomputation во время backward pass, что позволяет эффективно утилизировать памяти. Это соответствует таким подходам, как Flash Attention, которые разработаны для оптимизации памяти.

• На длинных последовательностях Mamba превосходит Transformer++, особенно при увеличении числа FLOPS и размера модели. При этом на коротких последовательностях результаты сравнимы с Transformer++.

• Модель может работать с контекстом до одного миллиона токенов, что демонстрирует её способность обрабатывать очень длинные последовательности.

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

• В экспериментах Mamba демонстрирует высокую эффективность на задачах копирования текста.
На этом всё. Рассказываете, что вы думаете о Mamba в комментариях!

Разбор подготовил Александр Мазитов

Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍39🔥16🎉93🤡3😁1