Пару
часов назад завершилось долгожданное дообучение
o1
модели на
GigaChat 20B-A3B, выполнялось оно на одной RTX 4090 с 24Гб VRAM при помощи проекта
impruver и конфигурации
GigaChat/20B-A3B_lora_o1 на датасете
Egor-AI/Russian_thinking_dataset.
Залил полученный LoRA-адаптер на HuggingFace:
evilfreelancer/o1_gigachat-20b-a3b_lora
Он оказался на удивление толстеньким, аж цельных 639 мегабайт весит, вероятно это как-то связанно с особенностями MoE архитектуры модели.
На всё про всё потребовалось примерно 117 часов (почти 5 дней), на данный момент понятно, что если бы я выставил eval_steps не 100, а хотя бы 500 или даже 1000 цель бы удалось достигнуть гораздо быстрее, так как 1 eval прогон выполняется на моей 4090 примерно 46 минут, а за 10 с небольшим тысяч шагов тестов eval было всего 102 (то есть примерно 77 часов выполнялась валидация, тут я конечно переборщил, но зато красивый график получился).
Отчёт W&B тут:
evilfreelancer/nlec8bt8
Прикладываю предварительные
тесты обученной модели в формате gist, из того что видно на первый взгляд модель отвечает строгим и профессиональным языком, однако, из-за особенностей датасета не всегда отвечает корректно, хотя цепочка "рассуждений" каждый раз крайне любопытная.
Для работы модели в режиме инференса необходимо внести правки в файл
generate.py, там надо на этапе вызова токенизатора будет добавить
return_token_type_ids=False
, позже проверю не нарушит ли это работу остальных моделей, обученных через impruver, и если потребуется добавлю операцию ветвления специально для моделей семейства DeepSeek MoE (к коему относится GigaChat).
PS. Чекпоинты GGUF выложу на HF и ollama позже.
PPS. Картинку eval/train loss добавил первым сообщением под постом.