Telegram Web
Channel created
Привет! На связи NLP-команда Яндекса. Коллективный разум создал этот канал, чтобы делиться разборами научных статей со всеми, кто жаждет знаний. Не стесняйтесь общаться в комментариях! Мы за обмен опытом и увлекательные дискуссии. Кстати, форточку открывать не собираемся — здесь душно, потому что так нужно.
🔥11😁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
2025/07/08 22:47:44
Back to Top
HTML Embed Code: