Максим Максимов, Team Lead R&D-лаборатории компании red_mad_robot, опубликовал на Habr развёрнутый туториал по дообучению открытой языковой модели Qwen2.5-0.5B. Задача, которую он решает, — научить модель извлекать структурированную информацию из произвольного текста и возвращать её в формате JSON по заданной схеме. Это типичная корпоративная задача: парсинг документов, обработка форм, автоматическое заполнение баз данных.

Вопрос «зачем дообучать, если есть GPT-4o или Claude» автор решает прямо. Зарубежные провайдеры предоставляют модели через API — данные уходят на внешние серверы. Для российских компаний это может нарушать требования 152-ФЗ о персональных данных или внутренние политики информационной безопасности. Open-source модели с Hugging Face можно развернуть локально, но крупные модели требуют дорогого оборудования. Выход — взять компактную модель и дообучить её под конкретную узкую задачу.

Этап обученияОбъём данныхЦельМетод
Pre-trainingТриллионы токеновБазовое понимание языка и генерация текстаОбучение с нуля на сыром тексте
Fine-tuningТысячи качественных примеровСледование инструкциям, выполнение задачLoRA, заморозка части весов
AlignmentСпециальные датасеты предпочтенийБезопасность и полезность моделиМетоды обучения с подкреплением (RL)

Автор выбрал Qwen2.5-0.5B — самую младшую модель серии Qwen2.5 от Alibaba с 500 млн параметров и контекстным окном 32K токенов. Её размер позволяет уместить дообучение в бесплатный Google Colab. Метод дообучения — LoRA (Low-Rank Adaptation): основные веса модели замораживаются, а обучаются только небольшие матрицы низкого ранга, встроенные в слои трансформера. Это резко снижает потребление памяти при сохранении качества адаптации.

Обучающая выборка — 1000 примеров из датасета scrapegraphai/scrapegraphai-100k (100 тыс. реальных примеров извлечения данных).

Для обучения используется 1000 примеров из датасета scrapegraphai/scrapegraphai-100k — реальные случаи извлечения структурированных данных с веб-страниц. Тестирование намеренно проводится на другом датасете — paraloq/json_data_extraction, синтетически сгенерированном Google Gemini Pro и охватывающем 8 доменов: медицину, e-commerce, производство и другие. Такой выбор позволяет проверить обобщающую способность модели, а не просто запоминание обучающих примеров.

Отдельный трек эксперимента — отслеживание «катастрофического забывания». Это известная проблема дообучения: модель, оптимизированная под новую задачу, может деградировать в общих знаниях, накопленных на этапе предобучения. Для измерения этого эффекта автор использует бенчмарк MMLU (Massive Multitask Language Understanding) — 14 тыс. вопросов с выбором из четырёх вариантов по 57 доменам от математики до права. Из-за ограничений Colab берётся подвыборка: по 5 вопросов из каждого домена, итого 285 вопросов. Этого достаточно, чтобы отследить динамику в ходе обучения.

Методологически эксперимент построен как трёхточечное измерение: метрики до обучения (baseline), динамика в процессе и финальная оценка после. Качество извлечения JSON оценивается двумя способами: соответствие схеме и валидность извлечённого текста через расстояние Левенштейна между ответом модели и эталоном. Такой подход позволяет разделить два типа ошибок — структурные (неправильный формат) и семантические (неверно извлечённый контент).

Туториал охватывает весь цикл: подготовку данных в единый формат с системным промптом, реализацию на Python, настройку LoRA и процедуру тестирования. Материал ориентирован на практиков, которые хотят адаптировать компактные open-source модели под корпоративные задачи без доступа к дорогостоящей инфраструктуре.