Как дообучить LLM: пошаговый разбор

Пошаговый разбор fine-tuning open-source LLM для задачи извлечения данных в JSON по заданной схеме. В эксперименте Qwen2.5-0.5B дообучают через LoRA на бесплатных ресурсах Colab и проверяют качество на отдельном тестовом датасете.

Автор берёт небольшую модель 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.

Читайте также

  1. Capacitor: от веба к мобильным приложениям. Часть 4. Интегрируем локальную LLM в проект
  2. Как llama.cpp-бэкенд ускорил инференс CosyVoice3 в 2,6 раза
  3. Голубая мечта околоайтишника — разбогатеть на ChatGPT-обертке
  4. Meta сделала собственную AI-ленту с кликбейтными новостями
  5. Как я собрал LLM-печку на четырёх GPU и что она умеет
Ключевые инсайты из новости (по версии ChatGPT)
  • Локальное дообучение LLM для задач с ограничениями по данным: Если внешние LLM API не подходят из-за корпоративных данных, требований безопасности или 152-ФЗ, практичным вариантом становится open-source модель, запущенная на собственном оборудовании. Для узких задач можно брать небольшую модель и дообучать её под конкретный формат ответа вместо использования крупной универсальной модели.
    [AI / локальные LLM]
Для получения полного доступа оформите подписку PubMag PRO.
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Инсайты автоматически генерируются с помощью искусственного интеллекта на основе текста статьи.
← Назад в лентуЧитать оригинал →
✈️ Подписывайтесь на мой Telegram-канал — там еще больше интересного про AdTech, MarTech, AI и многое другое!