Обновить

Как я обучил GPT с нуля на русском языке — и что из этого получилось

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели7.5K
Всего голосов 10: ↑8 и ↓2+8
Комментарии8

Комментарии 8

Опять дичь.

Интересная идея и реализация, а есть какой-то результат для примера?

Неделю назад обучал 0.25B LLM с нуля исключительно на статьях с хабра, датасет IlyaGusev/habr, просто посмотреть, что из этого получится. SFT датасет автоматически построен из датасета хабра, чтобы не было примесей из других источников. Токенизатор обучен тоже только на хабре.

Идея была попробовать обучить 1B, но времени было мало, поэтому на коленке обучил только 0.25B за 3 часа. Первый шаг, это pre-train, который умеет только продолжать то, что ему задать как промпт:

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

Обучение pre-train было всего на 1 эпохе, поэтому знания плохо усвоены, но что-то аппроксимировано. Модель сама выявила паттерны русского языка, родов, склонений и прочего, хотя логика и знания хромают, общее написание фраз вполне корректное.

Для примера как выглядело начало обучения:

10% от 1 эпохи
10% от 1 эпохи

Дальше идет обучение SFT, где pre-train учится шаблону чата и умению отвечать на вопросы и уметь разделять где assistant, а где user. Качество общения зависит от качества SFT датасета, его я сделал автоматически и всего на 1к записей, как старт сойдет, но о проработке речи не идет:

Первое, что ответила модель после SFT обучения, все совпадения случайны
Первое, что ответила модель после SFT обучения, все совпадения случайны
0.25B LLM плохо обученная на статьях с хабра, SFT
0.25B LLM плохо обученная на статьях с хабра, SFT

Примеров генерации нет, к сожалению. Запуски были давно, чекпоинты не сохранились, остались только графики loss.

По твоему опыту - интересно. Датасет в parquet со сжатием, реальный объём текста скорее всего ~15 гб, но оценить сколько это всё таки в токенах сложно из-за дополнительных полей. По Chinchilla нужно 5B токенов для 0.25B модели, и если за 3 часа всё это не прошло, модель явно недообучена. Отсюда и результат "что-то аппроксимировано". Интересно было бы посмотреть что получится с несколькими эпохами или большим датасетом.

Датасет, конечно, лютая дичь. Почему бы не засунуть всю русскую литературу, которая находится в свободном домене от Пушкина до Ленина? Было бы больше пользы.

На Ленине надо зафайнтюнить, потом подать в контекст описание текущего положения дел в стране и мире и спросить что делать )

Удивительно, что до сих пор никто не сделал так.

Тестил на книгах, но там свои проблемы - стиль слишком далёк от живого языка, а у части контента содержание специфичное 💀. Жёсткая фильтрация оставила бы слишком мало. Для задачи с персонажем нужен был именно неформальный язык, поэтому и пошёл в сторону блогов.

Я бы очень хотел посмотреть как рассуждает модель обученная вообще без фильтрации специфичного контента из книг и сказок.

На Ленине надо зафайнтюнить, потом подать в контекст описание текущего положения дел в стране и мире и спросить что делать ) Удивительно, что до сих пор никто не сделал так.

Вообще-то сделали, и даже в виде интервью:

https://youtu.be/7XHvrwijXY4?t=264

Видео эпичное, я от начала и до конца посмотрел, очень круто получилось.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации