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
2 025 просмотров · 18 реакций Открыть в Telegram · Открыть пост на сайте
⚗️ Что такое дистилляция и как она применяется в 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
9 845 просмотров · 30 реакций Открыть в Telegram · Открыть пост на сайте
Привет! На связи NLP-команда Яндекса. Коллективный разум создал этот канал, чтобы делиться разборами научных статей со всеми, кто жаждет знаний. Не стесняйтесь общаться в комментариях! Мы за обмен опытом и увлекательные дискуссии. Кстати, форточку открывать не собираемся — здесь душно, потому что так нужно.
1 687 просмотров · 17 реакций Открыть в Telegram · Открыть пост на сайте