Секреты обучения больших языковых моделей: опыт Hugging Face и проекта BigCode 0:47
Современный ландшафт больших языковых моделей (LLM) стремительно меняется. Если несколько лет назад казалось, что только закрытые системы вроде GPT-4 обладают «секретным соусом», то сегодня сообщество open-source практически догнало лидеров рынка. Лубна Бен-Аллуа, инженер машинного обучения в Hugging Face, в рамках финальной лекции курса Stanford CS25 рассказала, что сегодня успех модели определяется не столько архитектурой, сколько качеством и объемом данных для обучения.
⚖️ Искусство баланса: законы масштабирования 5:54
Вопрос о том, сколько данных нужно для обучения качественной модели, решается через законы масштабирования (scaling laws). Они помогают распределить вычислительный бюджет между размером модели и количеством токенов.
- Классический подход Kaplan (OpenAI): Утверждал, что при увеличении вычислительных мощностей в 10 раз, количество параметров модели нужно увеличивать в 5,5 раз, а объем данных — лишь в 1,8 раза. Это привело к появлению недообученных моделей, таких как GPT-3.
- Chinchilla (DeepMind): Исследователи пересмотрели предыдущие выводы, обнаружив, что данные и параметры нужно масштабировать пропорционально.
- Реалии сегодняшнего дня: По мнению Лубны, многие современные разработчики, включая Meta (Llama 3) и Mistral, отходят от «оптимальных» параметров Chinchilla. Это объясняется экономией на этапе инференса (работы модели): выгоднее обучать меньшую модель дольше, чем использовать огромную, но слабо обученную.
Короткие модели, обученные на больших массивах данных, позволяют значительно сократить расходы при эксплуатации. Однако, если данных не хватает, существует стратегия повторения токенов: повторение данных до четырех раз дает производительность, сопоставимую с уникальными токенами.
🏗️ Где брать данные: от веба до синтетики 15:05
Для достижения масштабов Llama 3 (15 трлн токенов) требуются колоссальные объемы информации. Лубна выделяет три основных источника:
- Веб-данные: Основой часто служит CommonCrawl, но «сырые» дампы требуют крайне сложной фильтрации. Гораздо эффективнее использовать уже очищенные наборы, такие как FineWeb от Hugging Face, который показывает высокую производительность на популярных бенчмарках.
- Программный код: Проект BigCode выпустил The Stack — крупнейший репозиторий открытого кода. Вторая версия набора (Stack v2) была собрана через архив Software Heritage и включает не только код, но и GitHub-ишью, а также запросы на слияние (pull requests), что суммарно дает около 1 трлн токенов.
- Синтетические данные: Это новый тренд. Использование моделей (как, например, в Microsoft «Textbooks Are All You Need») для создания обучающих материалов позволяет достигать результатов, сопоставимых с обучением на реальных данных. Hugging Face выпустила Cosmopedia — набор из 25 млрд токенов, сгенерированных моделью Mixtral-8x7B.
🧹 Фильтрация: как отсеять мусор 23:30
Данные — это «хребет» LLM, поэтому фильтрация критически важна. Обычного удаления дубликатов недостаточно. Лубна подчеркивает важность проведения «аблационных исследований» (ablation models):
- Метод: Создается небольшая модель, обучаемая на выборке с конкретным фильтром, и сравнивается с базовой моделью без него.
- Результаты: В опыте с StarCoder использование количества «звезд» репозитория как показателя качества привело к удалению 70% данных и катастрофическому падению производительности. А вот «близкое дублирование» (near-deduplication) с использованием MinHash, напротив, дало значительный прирост.
Отдельное внимание уделяется безопасности. Для удаления персональных данных (PII) из набора The Stack команда обучила специальную модель StarPII, которая распознает имена, почты и секретные ключи, требуя около 800 GPU-часов работы.
🤖 Код-генераторы: будущее помощников 38:34
Развитие моделей для программирования изменилось после появления Codex от OpenAI, который доказал, что код можно обрабатывать как обычный текст, используя предсказание следующего токена.
Сегодня в экосистеме Hugging Face насчитывается более 1700 моделей для генерации кода. Проект StarCoder выделяется своей прозрачностью — все данные, код для обработки и веса моделей находятся в открытом доступе. Лубна отмечает, что для IDE-помощников критически важна «осведомленность о репозитории» (repository awareness): модель должна понимать связи между файлами внутри одного проекта, что было реализовано в StarCoder2 путем конкатенации файлов через специальные токены.
🔮 Будущее и советы 50:37
Отвечая на вопросы слушателей, Лубна поделилась прогнозами:
- Синтетические данные: Имеют риски усиления предвзятости (biases) и загрязнения бенчмарков (contamination), поэтому идеальным решением является смесь синтетических и тщательно отфильтрованных реальных данных.
- RLHF: Это не единственный путь для создания чат-ассистентов. Методы вроде DPO или ORPO позволяют проводить обучение на парах «инструкция-решение» без использования полноценного обучения с подкреплением.
- Бюджет: При работе на одном GPU стоит использовать методы эффективной настройки (PEFT) и фокусироваться на качестве, а не на количестве обучающих данных.