Что именно сделал автор: краткая суть эксперимента
Энтузиаст дообучил Qwen3.5 4B методом LoRA и заявил о росте на метрике typed-decisions с 0.596 до 0.709. Обучение заняло около двух часов на арендованной RTX 3090, а синтетические данные объёмом примерно 25 млн токенов сгенерировала DeepSeek V4.1 Flash. До уровня Jev результат, по словам автора, пока не дотягивает.
Код обучения, веса модели, синтетический датасет и Jev-совместимый API-эндпоинт выложены в открытый доступ, так что проверить модель на своих запросах может любой желающий. Полное описание эксперимента опубликовано в посте на r/LocalLLaMA.
| Параметр | Значение |
|---|---|
| Базовая модель | Qwen3.5 4B |
| Метод дообучения | LoRA |
| Данные | публичные датасеты плюс около 25 млн синтетических токенов от DeepSeek V4.1 Flash |
| Железо | арендованная RTX 3090, 24 ГБ видеопамяти |
| Время обучения | около 2 часов |
| Метрика | typed-decisions: 0.596 у базовой модели, 0.709 у дообученной |
| Ориентир | Jev, уровень не достигнут |
| Артефакты | GitHub, Hugging Face, Jev-совместимый API |
Оговорка, которая важна для всего дальнейшего текста: цифры и оценки взяты из сообщения автора. Независимой проверки нет, формула расчёта typed-decisions не раскрыта, сравнение с Jev не подкреплено числами.
Почему Qwen3.5 4B и LoRA: выбор модели и метода
Связка «модель на 4 млрд параметров плюс LoRA» подходит тому, кто хочет проверить гипотезу за вечер, а не за месяц. Веса 4B-модели помещаются на одну потребительскую видеокарту, а адаптер снижает требования к памяти ещё сильнее.
Что такое LoRA и почему её выбирают для небольших моделей
LoRA (Low-Rank Adaptation) не трогает исходные веса. К выбранным слоям добавляются две небольшие матрицы A и B, произведение которых даёт поправку ΔW. Обучаются только они, базовая модель остаётся замороженной. Ранг r задаёт размер матриц: типичные значения лежат в диапазоне 8-64, и тогда обучению подлежат доли процента от общего числа параметров.
Экономия получается двойной. Оптимизатор хранит состояния только для адаптеров, поэтому память под обучение падает в разы. Сам адаптер весит десятки или сотни мегабайт, его удобно хранить, публиковать и подключать к разным сборкам одной базовой модели.
Разница в требованиях к памяти заметна на арифметике. Полный файнтюнинг 4B-модели с оптимизатором Adam требует держать веса, градиенты и два момента на каждый параметр, то есть десятки гигабайт. LoRA снимает большую часть этой нагрузки.
Автор не указал, какой ранг, alpha и целевые модули он использовал. Без этих данных оценить, насколько глубоко менялась модель, нельзя.
Ограничения подхода: что автор не раскрыл
Воспроизводимость кейса ограничена описанием. В сообщении нет:
- ранга LoRA, alpha, dropout и списка целевых модулей;
- состава и пропорций публичных датасетов в обучающей смеси;
- числа эпох, learning rate, размера батча и длины контекста;
- точного идентификатора и версии Qwen3.5 4B;
- описания, как считалась метрика typed-decisions и на какой выборке.
LoRA при этом не заменяет полный файнтюнинг. При узкой задаче и небольшом объёме данных адаптер часто даёт почти тот же результат, при широкой задаче разрыв становится заметен. Планируя свой проект, стоит заранее решить, какой из двух сценариев вам ближе.
Синтетические данные: 25 млн токенов от DeepSeek V4.1 Flash
Синтетическую часть корпуса сгенерировала DeepSeek V4.1 Flash, объём составил около 25 млн токенов. Такая масса данных нужна потому, что под конкретную метрику проще нагенерировать примеры, чем искать готовые размеченные наборы: генератор выдаёт ответы в нужном формате и в нужном количестве.
Почему в роли генератора выступила именно эта модель, автор не объясняет. О том, как DeepSeek в 2026 году выглядит на фоне Qwen и GLM и почему сравнение по бенчмаркам бывает обманчивым, есть отдельный разбор.
Зачем смешивать синтетику с публичными датасетами
Синтетика даёт контроль над форматом: можно задать схему ответа, распределение типов и сложность примеров. Публичные датасеты добавляют то, чего у генератора нет: реальное разнообразие формулировок, шум, нестандартные случаи. Если учить модель только на выходах одной модели, она подстроится под стиль и ошибки этого генератора.
Пропорции смеси автор не привёл. Сколько в обучении было реальных примеров и сколько сгенерированных, из сообщения неизвестно, а это один из главных факторов, определяющих, насколько модель сохранит гибкость.
Риски синтетических данных и как их снижают
- Ошибки генератора попадают в разметку и закрепляются в весах.
- Стиль и предвзятости DeepSeek V4.1 Flash переходят в дообученную модель.
- Обучение только на сгенерированных данных ведёт к постепенной деградации, которую называют model collapse.
- Дубликаты и шаблонные формулировки раздувают объём, не добавляя полезного сигнала.
Стандартные меры против этого: фильтрация по качеству, дедупликация, ручная проверка выборки, смешивание с реальными данными. Что из перечисленного применял автор кейса, в материалах не сказано, и это оставляет открытым вопрос о качестве корпуса.
Обучение на арендованной RTX 3090: 2 часа и что это значит
Обучение заняло около двух часов на арендованной RTX 3090. Эта цифра задаёт главный практический вывод: порог входа для эксперимента с 4B-моделью низкий, отдельная ферма для него не нужна.
Почему RTX 3090 подходит для LoRA-обучения
У RTX 3090 24 ГБ видеопамяти. Веса 4B-модели в bf16 занимают около 8 ГБ, остаётся место под активации, градиенты адаптеров и батч. Для LoRA такого запаса хватает, для полного файнтюнинга той же модели уже нет.
Если своей карты нет, аренда снимает вопрос апгрейда железа. Стоимость часа у разных провайдеров отличается, автор цену не привёл, поэтому бюджет стоит считать по текущим тарифам выбранной площадки. Настройки батча и gradient accumulation в сообщении тоже отсутствуют.
Скрытые затраты: подготовка данных и генерация
Два часа относятся только к шагу обучения. За кадром остаются:
- генерация примерно 25 млн токенов через DeepSeek V4.1 Flash, а это время и, если доступ платный, деньги;
- очистка, фильтрация и упаковка данных в формат обучения;
- написание и отладка пайплайна, подбор гиперпараметров;
- прогон оценки на отложенной выборке и сравнение с базовой моделью.
Новичку весь путь может занять дни. Аренда GPU при этом оплачивается только на время активной работы, если не держать инстанс запущенным между итерациями.
Результаты: typed-decisions 0.596 → 0.709 и сравнение с Jev
Заявленный результат: typed-decisions выросла с 0.596 до 0.709. В относительных величинах это около 19% прироста к базовой модели. Автор описывает поведение модели как «surprisingly well», но сам же ставит границу:
It's obviously nowhere near Jev yet
Обе цифры взяты из сообщения автора и независимо не проверялись.
Что такое typed-decisions и почему по ней нельзя судить обо всём
Что именно считает эта метрика, из материалов не ясно. Название указывает на оценку решений с учётом типов, но формула, датасет и процедура подсчёта не описаны. Сравнивать значение 0.709 с публикациями других проектов нельзя: у каждой команды своя реализация подобных метрик, и совпадение названий ничего не гарантирует.
Одно число не описывает модель целиком. Узкая метрика может вырасти, пока качество на других задачах, включая следование инструкциям и связность длинных ответов, останется прежним. Проверять это нужно на собственном наборе промптов. Как строить честное сравнение локальных решений и почему условия теста меняют выводы сильнее, чем сама разница между инструментами, разобрано на примере запуска Qwen 3.8 27B на одной RTX 5090.
Почему результат пока не дотягивает до Jev
Jev упоминается как ориентир, но его параметры, метрики и происхождение в материалах не раскрыты. Количественного сравнения нет, поэтому измерить разрыв невозможно. Разумные версии: у 4B-модели меньше параметров и меньше обучающих данных, чем у ориентира, а за два часа сложно повторить пайплайн с дистилляцией или обучением на предпочтениях. Проверяемых подтверждений у этих версий нет, это только гипотезы.
Открытые артефакты: код, веса, датасет и API
Автор выложил код обучения на GitHub, веса модели и синтетический датасет на Hugging Face, а также Jev-совместимый API-эндпоинт. Ссылки собраны в исходном посте. Такой набор позволяет либо прогнать инференс без обучения, либо повторить пайплайн целиком.
Как воспользоваться открытыми материалами
- Посмотрите веса и датасет на Hugging Face: объём и структура данных показывают, под какие задачи готовили модель.
- Проверьте API-эндпоинт на своих запросах. Это самый быстрый способ понять, подходит ли модель, но учитывайте, что публичные эндпоинты часто ограничивают частоту запросов, а срок их жизни обычно не гарантирован.
- Разберите код обучения на GitHub, если планируете повторять эксперимент на своих данных.
Для локального запуска нужна видеокарта с запасом памяти под веса и контекст. Для 4B-модели в 4-битной квантизации хватит 8 ГБ, в bf16 стоит ориентироваться на 10-12 ГБ и больше, если планируется длинный контекст.
Если интересует полный цикл LoRA-файнтюнинга с оценкой и упаковкой результата в GGUF, посмотрите на CodeFinetuner: там шаги разобраны от парсинга исходников до подключения модели к редактору.
Стоит ли повторять: практические выводы и ограничения
Кейс полезен как ориентир по бюджету и трудозатратам. Готового рецепта он не даёт: детали обучения скрыты, качество подтверждает только автор.
Когда LoRA-файнтюнинг оправдан, а когда нет
LoRA имеет смысл в трёх ситуациях:
- задача узкая и её можно описать одним набором метрик;
- данных мало или их дорого размечать;
- ресурсы ограничены одной видеокартой.
Обратные случаи: нужен максимум качества на широком спектре задач, есть бюджет на полный файнтюнинг и команда для валидации, либо задача вообще решается через RAG и промптинг без изменения весов. Для ответов по базе знаний дообучение обычно проигрывает поиску по документам.
Чек-лист для повторения эксперимента
- Сформулируйте задачу и метрику. Без измеримого критерия вы не поймёте, помогло ли обучение.
- Соберите данные: реальные примеры плюс синтетика. Заложите время на фильтрацию и дедупликацию.
- Выберите базовую модель под свои GPU. 4B хватит для узких задач, для агентных сценариев смотрите на модели крупнее.
- Настройте LoRA: ранг, alpha, целевые модули. Начните с малого ранга и увеличивайте, если модель недоучивается.
- Разделите данные на обучающую и отложенную выборки до старта обучения.
- Арендуйте GPU на время обучения. RTX 3090 с 24 ГБ для 4B-модели достаточно.
- Сравните результат с базовой моделью на одной выборке и при одинаковых параметрах генерации.
- Проверьте модель на реальных промптах, а не только на метрике.
Два часа автора относятся к шагу 6. Всё остальное требует отдельного времени, и основная работа обычно прячется именно там.