Раз в неделю я провожу что-то вроде инвентаризации: хожу по Hugging Face, GitHub и случайным ссылкам из чужих тредов — смотрю, что новенького в мире файн-тюнинга. Большинство находок оседает в закладках и умирает там. Но на этот раз решил выписать то, что реально зацепило.
Никакого рейтинга — просто пять штук, которые я бы попробовал первыми.
1. OpenHermes 2.5 — датасет, который уже многие потихоньку используют
Датасет от Teknium, собранный из кучи синтетических источников: GPT-4-генерированные инструкции, математика, код, ролевые сценарии. Весит около миллиона примеров в формате ChatML.
Я наткнулся на него, когда пытался понять, почему некоторые опенсорсные модели отвечают так связно — и оказалось, что половина из них тюнилась именно на нём или его производных. Формат удобный: system/user/assistant прямо как в API, не надо ничего переделывать под стандартный шаблон.
Единственное — синтетические данные есть синтетические данные. Если цель не «общий болтун», а что-то специализированное, OpenHermes даёт хорошую базу, но поверх него всё равно нужен свой домен.
2. Unsloth — если устал ждать пока модель грузится
Библиотека для ускорения файн-тюнинга. Заявляют 2x скорость и в два раза меньше памяти по сравнению с обычным HuggingFace Trainer + LoRA. Я запустил на Mistral 7B через Colab T4 — и да, в GPU-памяти реально влезло то, что раньше не влезало.
Всё дело в том, что они переписали часть ядер на Triton и добавили свою реализацию FlashAttention. Звучит страшно, но на практике это просто pip install unsloth и две строчки замены в коде.
Где споткнулся: документация местами отстаёт от кода. Один параметр нашёл только в issue на GitHub, не в доках. Но в целом — один из тех инструментов, который я теперь ставлю первым делом.
3. MagPie — генератор инструкций прямо из самой модели
Вот это была неожиданная штука. Идея такая: берёшь Llama 3 или другую instruct-модель, даёшь ей только системный промпт и пустой user-тег — и модель сама придумывает вопросы, которые ей логично задать. Потом сама же на них отвечает. Получается синтетический датасет, который статистически близок к тому, на чём модель уже тренировалась.
Авторы выложили бумагу и код на GitHub. Я прочитал внимательно — там честно признают ограничения: у метода есть bias в сторону того, что модель «ожидает» спросить. Редкие или нишевые темы будут представлены плохо.
Но для быстрого старта, когда нет своих данных, — интересный подход. По крайней мере, интереснее, чем просить GPT-4 написать 500 вопросов вручную.
4. Axolotl — когда хочется настроить всё, но не писать тренировочный цикл с нуля
Фреймворк-обёртка над HuggingFace Transformers. Конфиг в YAML, поддержка кучи форматов датасетов, LoRA, QLoRA, DeepSpeed, FSDP — всё это включается одной строчкой в конфиге.
Пользуюсь уже несколько месяцев и каждый раз нахожу что-то новое. На этой неделе выяснил, что там есть поддержка curriculum — можно задать порядок, в котором модель видит данные во время обучения. Не знаю пока, насколько это меняет результат, но собираюсь поэкспериментировать.
Честно скажу: Axolotl немного перегружен опциями. Первые запуски я провалил из-за конфликтов параметров — не читал доки, думал, «само разберётся». Не разобралось. Но после того как потратил пару часов на понимание структуры конфига — всё стало логично.
5. Cosmopedia — синтетический датасет для предобучения, на русскоязычный взгляд интересный
Mistral AI выпустили датасет на 25 миллиардов токенов — синтетические учебники, рассказы, статьи в стиле Википедии, всё сгенерировано Mixtral 8x7B. Концепция взята из Phi-1: маленькая модель, обученная на качественных синтетических «учебниках», бьёт большую модель, обученную на сыром интернете.
Меня интересует вопрос: работает ли это для русского языка? В Cosmopedia есть мультиязычная часть, но основная масса — английский. Я пока только смотрел на структуру, не тренировал. Но если кто-то пробовал что-то похожее на русских данных — хочу услышать.
Для файн-тюнинга напрямую Cosmopedia не очень подходит — это скорее претрейн. Но как источник для дистилляции или генерации собственных синтетических данных — идея рабочая.
Из всего этого на этой неделе я реально буду трогать руками: Unsloth плюс MagPie как источник данных. Посмотрю, можно ли собрать нормальный датасет для небольшой специализированной задачи без ручной разметки.
Если что-то интересное выйдет — напишу.
