Как дообучить LLM: пошаговый разбор
Автор берёт небольшую модель Qwen2.5-0.5B, потому что её можно дообучать на ограниченном железе, и ставит узкую задачу: модель получает текст и JSON Schema, а возвращает валидный JSON без лишних комментариев. Такой сценарий полезен, когда готовые API-модели не подходят из-за требований к корпоративным данным, локальному запуску или 152-ФЗ.
Для обучения используется 1000 валидных примеров из scrapegraphai/scrapegraphai-100k, для теста — 200 примеров из paraloq/json_data_extraction. Входные тексты ограничены 4096 токенами, чтобы эксперимент помещался в память Colab, а качество проверяется по соответствию JSON-схеме и близости ответа к эталону через расстояние Левенштейна.
Отдельно отслеживается забывание прежних знаний модели: для этого берётся подвыборка MMLU из 285 вопросов по 57 доменам. До обучения baseline составил 0.27 по schema_valid, 0.41 по Levenshtein и 0.46 по MMLU; после одной эпохи автор фиксирует улучшение извлечения JSON, хотя промежуточные метрики вели себя нестабильно.
Коротко
- Эксперимент сфокусирован на fine-tuning LLM для структурированного вывода: текст и JSON Schema на входе, валидный JSON на выходе.
- Модель Qwen2.5-0.5B выбрана из-за небольшого размера: 0.5 млрд параметров, контекст 32K и возможность обучения в Colab вместе с LoRA.
- Обучающая выборка собрана из 1000 примеров scrapegraphai-100k, тестовая — из 200 примеров paraloq/json_data_extraction.
- Забывание прежних знаний проверяется на MMLU: использована подвыборка из 285 вопросов, по 5 вопросов из каждого из 57 доменов.
- Baseline до обучения: schema_valid 0.27, Levenshtein 0.41, MMLU 0.46; после одной эпохи качество извлечения JSON улучшилось.
FAQ
Зачем дообучать LLM для извлечения JSON, если уже есть готовые модели вроде GPT, Claude, Grok или DeepSeek?
Дообучение нужно для узких задач и локального запуска, когда использование внешнего API может не подходить из-за корпоративных данных, безопасности или требований 152-ФЗ.
Почему в эксперименте используется LoRA, а не полное обучение всех весов выбранной языковой модели?
LoRA замораживает основные веса модели и обучает небольшие дополнительные матрицы. Это снижает требования к памяти и позволяет провести эксперимент на ограниченных ресурсах Colab.
Как автор проверяет, что после fine-tuning модель не только лучше извлекает JSON, но и не потеряла прежние знания?
Качество JSON оценивается через валидность по схеме и расстояние Левенштейна, а забывание прежних знаний отслеживается на подвыборке бенчмарка MMLU.
Читайте также
Capacitor: от веба к мобильным приложениям. Часть 4. Интегрируем локальную LLM в проект
Как llama.cpp-бэкенд ускорил инференс CosyVoice3 в 2,6 раза
Голубая мечта околоайтишника — разбогатеть на ChatGPT-обертке
Meta сделала собственную AI-ленту с кликбейтными новостями
Как я собрал LLM-печку на четырёх GPU и что она умеет
- Локальное дообучение LLM для задач с ограничениями по данным: Если внешние LLM API не подходят из-за корпоративных данных, требований безопасности или 152-ФЗ, практичным вариантом становится open-source модель, запущенная на собственном оборудовании. Для узких задач можно брать небольшую модель и дообучать её под конкретный формат ответа вместо использования крупной универсальной модели.
[AI / локальные LLM]
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Пошаговый разбор fine-tuning open-source LLM для задачи извлечения данных в JSON по заданной схеме. В эксперименте Qwen2.5-0.5B дообучают через LoRA на бесплатных ресурсах Colab и проверяют качество на отдельном тестовом датасете.