Перейти к содержанию
Публикация AiManual

Локальный файнтюн AliceAI-80B-A3B на трёх V100: итоги первого SFT-раунда и планы

Первый раунд SFT для AliceAI-80B-A3B на 5 млн токенов завершён: модель освоила CoT и диалог, но осталась недообучена. Чекпойнт #1 не публикуют, готовится второй

Коротко

Что будет в материале

  1. 01

    Что произошло: коротко об итогах первого SFT-раунда

  2. 02

    Что удалось и что пошло не так в первом раунде

  3. 03

    Как всё устроено: три V100, sftmill и локальная генерация данных

  4. 04

    План второго раунда: шире датасет, ниже learning rate

Что произошло: коротко об итогах первого SFT-раунда

Автор проекта по дообучению instruct-версии Yandex AliceAI-80B-A3B-Base опубликовал четвёртый апдейт о ходе работ. Первый раунд SFT на 5 млн токенов завершён, результат получился смешанным: модель начала осваивать chain-of-thought рассуждения и держать диалог, но оказалась сильно недообучена.

Чекпойнт #1, который автор помечает как 1.0 alpha, публиковать не станут. Он технически функционален, однако на практике бесполезен: на промптах, далёких от обучающих данных, модель выдаёт бессвязный вывод. Вместо релиза готовится второй датасет примерно на 5 млн токенов, но с более широким general instruct уклоном вместо кодового, а обучение пойдёт поверх 1.0 alpha со сниженным learning rate.

Вся работа идёт локально: три V100 по 32 ГБ, на тех же картах генерируются синтетические данные через движок sftmill. Скорость генератора автор поднял с 80 до примерно 240 tps, добавив работу с нескольких base URL и параллельные воркеры. Ниже разбор того, что получилось, где модель ломается и почему план второго раунда выглядит логично. Первоисточник - апдейт #4 в сообществе LocalLLaMA.

Что удалось и что пошло не так в первом раунде

Хорошая часть: модель подхватывает chain-of-thought рассуждения, и делает это корректно. Диалог тоже получается, ответы удерживают контекст беседы. Для базы, которую дообучали с нуля на поведенческую цель, это заметный шаг.

Плохая часть весомее. Instruct SFT оказалось мало, модель недообучена. Автор называет причину: стартовые 5 млн токенов не дали нужной широты, чтобы научить модель общей разговорной способности. Решает не объём, а разнообразие тем и формулировок - именно оно определяет, как модель держится на незнакомых промптах.

Почему чекпойнт #1 (1.0 alpha) не выложили

Логика простая: публикация чекпойнта, который валится на части промптов, приносит вред. Пользователи пробуют, получают мусор и делают вывод обо всей работе. Метка 1.0 alpha остаётся внутренней точкой отсчёта, от которой стартует второй раунд.

Промежуточные чекпойнты в SFT часто не публикуют по той же причине: они нужны автору для проверки гипотез, а не как готовый продукт. Отказ от релиза здесь выглядит осознанным решением, а не сокрытием результата.

Где именно ломается модель: неоднозначные промпты и далёкие от обучающих данных вопросы

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

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

Как всё устроено: три V100, sftmill и локальная генерация данных

Стек проекта компактный и полностью локальный. База - Yandex AliceAI-80B-A3B-Base, цель - instruct-файнтюн, способный к агентной работе и диалогу. Обучение ведётся на трёх V100 по 32 ГБ, это 96 ГБ видеопамяти суммарно. На тех же картах генерируются обучающие данные.

Что такое sftmill и зачем нужен off-policy distillation

sftmill - движок off-policy distillation, который автор написал в начале проекта. Задача инструмента: превратить поведенческую цель в готовый датасет. Формулируешь цель, например «нужна general instruct модель», движок генерирует сырые тренировочные данные под неё. Off-policy здесь означает, что примеры порождает не та модель, которую обучают, а отдельный генератор.

Роль генератора выполняет shallow distill Qwen 3.8 27B on medium: он показывает модели chain-of-thought рассуждения и диалоговое поведение, а SFT закрепляет этот стиль в весах AliceAI. Публичный OSS-форк sftmill открыт на GitHub, ссылка на него есть в исходном апдейте автора.

Похожие приёмы дистилляции уже давали измеримый эффект на родственной линейке моделей. В разборе файнтюна Swift-Qwen3.8-27B от UkisAI видно, как изменение стиля рассуждений урезает reasoning-токены: в тесте через Aider вышло 7,3 тыс. против 12,5 тыс. у базовой модели и вдвое меньше времени.

Как ускорили генератор с 80 до ~240 tps

Скорость локального генератора синтетики выросла с 80 до примерно 240 tps. Автор добился этого опцией использования нескольких base URL и распараллеливанием: генерация идёт на трёх отдельных инстансах, по четыре параллельных воркера на каждом. Итого 12 воркеров, и каждый работает со своим адресом модели.

Что это даёт: датасет на 5 млн токенов собирается в разы быстрее, сокращается цикл «сгенерировал, обучил, проверил». Схема остаётся локальной, без облачных счетов, и масштабируется ровно до имеющегося железа - новый инстанс добавляется как ещё один base URL.

План второго раунда: шире датасет, ниже learning rate

Изменений два. Первое: новый датасет примерно на 5 млн токенов, но с более широким general instruct уклоном вместо кодового. Второе: обучение поверх чекпойнта 1.0 alpha со сниженным learning rate. Оба пункта взяты из планов автора, результаты пока неизвестны.

Почему general instruct вместо кодового уклона

Исходный датасет был coding oriented, отсюда узкий профиль поведения. Для диалога и агентной работы нужна широта: разные темы, разные формулировки, намеренно неоднозначные вопросы. General instruct должен закрыть именно этот пробел. Конкретные пропорции данных автор не раскрывает, так что оценить состав второго набора по цифрам пока нельзя.

Зачем снижать learning rate при обучении поверх 1.0 alpha

Обучение поверх частично подготовленного чекпойнта с прежним learning rate рискует разрушить уже выученное: модель резко перестроит веса под новый поток данных и потеряет часть прежних навыков. Сниженный LR добавляет новые примеры аккуратнее, шаг за шагом. В SFT это стандартный приём при дообучении готовой модели. Конкретные значения LR в апдейте не названы.

Что это значит на практике: кому и зачем нужен такой локальный файнтюн

Подход требует трёх V100 по 32 ГБ, времени и готовности к нескольким итерациям. Он оправдан, если нужна своя instruct-модель с агентными и диалоговыми способностями и есть чем собирать датасет локально. Если результат нужен быстро, готовая instruct-модель или аренда GPU дадут его раньше - собирать 5 млн токенов синтетики с нуля ради базового диалога смысла мало.

Полезно сравнить это с оптимизацией уже готовых решений под конкретное железо: иногда выигрыш даёт не новая тренировка, а аккуратная настройка инференса. Пример такого размена - кастомная сборка llama.cpp под одну модель, где прирост в 2 раза заявлен, но подтверждённых замеров пока нет.

Ограничения и риски: что может пойти не так

  • Недообучение при узком датасете. Первый раунд это уже показал: 5 млн токенов кодового уклона не дали общей разговорной способности.
  • Бессвязный вывод на неоднозначных промптах и вопросах, далёких от обучающих данных.
  • Железо. Три V100 по 32 ГБ, суммарно 96 ГБ, задают потолок по размеру батча и скорости итерации.
  • Генерация данных конкурирует за те же GPU, что и обучение: часть времени карты заняты синтетикой, а не тренировкой.

Автор говорит об этих проблемах прямо, без сглаживания, и именно поэтому второй раунд выглядит продуманным изменением курса, а не косметической правкой.

Где взять код и данные для повторения

sftmill - открытый OSS-форк на GitHub, ссылка на репозиторий приведена в исходном апдейте автора. Для повторения последовательность такая: изучить движок, замерить, сколько токенов в час выдаёт ваш стенд на выбранном генераторе, и только потом оценивать бюджет времени на датасет. Разбор альтернативного подхода к той же дистилляции есть в материале про Swift Qwen 3.8 27B от UkisAI с его штрафом за переосмысление.

Что дальше: чего ждать от второго раунда

Планы конкретны: собрать второй датасет примерно на 5 млн токенов с general instruct уклоном, обучить поверх 1.0 alpha со сниженным learning rate, всё на тех же трёх V100. Сроков автор не называет, результатов пока нет - пока это намерение, а не факт.

Следить за проектом стоит по одной причине: инструмент открыт, а значит итог можно будет проверить на генерациях, а не на обещаниях. Если тема локального файнтюна близка, разумный первый шаг - разобрать sftmill и прикинуть, сколько VRAM и времени потребует ваш собственный стенд.

Подписаться на канал