Дообучение (Fine-Tuning) открытой LLM под задачи заказчика

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Дообучение (Fine-Tuning) открытой LLM под задачи заказчика
Сложная
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1240
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1167
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    867
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1084
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    563
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    829

Дообучение (Fine-Tuning) открытой LLM под задачи заказчика

Дообучение открытой языковой модели — наиболее гибкий путь получить специализированный AI-инструмент с полным контролем над данными и инфраструктурой. В отличие от API-моделей (GPT-4o, Claude), вы владеете весами, можете развернуть модель on-premise, масштабировать инференс без платы за токены и адаптировать архитектуру под конкретные требования.

Выбор базовой модели под задачу

Выбор базовой модели — критическое решение. Неправильный выбор приводит к переработке на этапе итераций.

Класс задачи Рекомендуемые модели Обоснование
Классификация, NER, структурированный вывод Llama 3.1 8B, Mistral 7B, Phi-4-mini Достаточно качества, быстрый инференс
Генерация текста на русском Qwen2.5-7B/14B, Llama 3.1 8B Сильная многоязычность
Программирование, SQL, code review Qwen2.5-Coder-32B, DeepSeek-Coder-V2, Phi-4 Специализированные code модели
Сложный reasoning, анализ DeepSeek-R1-Distill-32B, Llama 3.1 70B Высокий reasoning, инструкции
Edge/offline/мобильные Phi-4-mini, Qwen2.5-3B, Llama 3.2 3B Малый размер, квантизация
Мультимодальные задачи Llama 3.2-Vision, Qwen2-VL, InternVL Нативная поддержка изображений

Архитектура типового проекта fine-tuning

Фаза 1: Аудит задачи и данных (1–2 недели)
  ├── Формализация задачи (классификация/генерация/извлечение)
  ├── Инвентаризация имеющихся данных
  ├── Оценка необходимого объёма и качества
  └── Выбор базовой модели и метода обучения

Фаза 2: Подготовка данных (2–6 недель)
  ├── Сбор и агрегация источников
  ├── Очистка (дубликаты, шум, PII)
  ├── Разметка (ручная/синтетическая/комбинированная)
  ├── Форматирование под chat template
  └── Train/val/test split (80/10/10)

Фаза 3: Обучение (1–4 недели)
  ├── Baseline оценка базовой модели
  ├── Первый запуск LoRA/QLoRA с дефолтными параметрами
  ├── Анализ training/val loss кривых
  ├── Подбор гиперпараметров
  └── Full Fine-Tuning при необходимости

Фаза 4: Оценка и итерации (1–3 недели)
  ├── Автоматические метрики (F1, BLEU, ROUGE, accuracy)
  ├── LLM-as-judge (GPT-4o или другая сильная модель как судья)
  ├── Человеческая оценка выборки
  └── Анализ failure cases → доработка данных

Фаза 5: Деплой и мониторинг (1–2 недели)
  ├── Квантизация (опционально)
  ├── Деплой через vLLM/TGI
  ├── Настройка мониторинга
  └── A/B тест vs baseline

Синтетическая генерация данных через сильную модель

Распространённый кейс: у заказчика нет размеченных данных, но есть неструктурированные источники (документы, регламенты, FAQ). Используем GPT-4o или Claude для автоматической генерации обучающих пар:

from openai import OpenAI
import json

client = OpenAI()

def generate_training_example(document_chunk: str, num_examples: int = 5) -> list:
    """Генерирует обучающие пары из фрагмента документа"""

    prompt = f"""Ты — эксперт по созданию датасетов для обучения языковых моделей.

На основе фрагмента документа ниже создай {num_examples} пар "вопрос-ответ" в формате JSON.
Вопросы должны быть разнообразными: фактические, аналитические, практические.
Ответы — точными, основанными только на тексте документа.

Документ:
{document_chunk}

Верни JSON-массив: [{{"question": "...", "answer": "..."}}]"""

    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": prompt}],
        response_format={"type": "json_object"},
        temperature=0.7
    )

    return json.loads(response.choices[0].message.content)["pairs"]

Важно: синтетические данные требуют ручной верификации выборки (минимум 10–15%) для контроля качества. Галлюцинации GPT-4o в синтетических данных попадут в обучение и снизят качество.

Практический кейс: специализация под телемедицину

Задача: ассистент для врачей первичного звена — дифференциальная диагностика по жалобам пациента, предложение списка обследований, выбор МКБ-10 кода.

Исходные данные:

  • 450 клинических случаев с заключениями (из медицинской системы, обезличенные)
  • Клинические рекомендации МЗ РФ по 12 нозологиям (PDF, 3200 страниц)
  • Справочник МКБ-10

Стратегия:

  1. Конвертация клинических рекомендаций в chunks
  2. Синтетическая генерация 3200 примеров через GPT-4o (жалобы → диагностика)
  3. Верификация 15% выборки практикующими терапевтами
  4. Fine-tuning Qwen2.5-14B (лучший русский язык для медтерминологии)

Результаты (после 4 эпох QLoRA, r=32):

  • Top-3 accuracy МКБ-10: 71% → 89%
  • Полнота списка рекомендованных обследований (recall vs эксперт): 0.62 → 0.84
  • Hallucination rate (выдуманные препараты/процедуры): 24% → 6%
  • Latency (vLLM, A100): 1.8с на запрос

Мониторинг качества в продакшне

После деплоя настраиваем систему непрерывного мониторинга:

import mlflow

# Логирование предсказаний для анализа дрейфа
with mlflow.start_run():
    mlflow.log_metrics({
        "avg_response_length": avg_len,
        "refusal_rate": refusal_rate,
        "latency_p95": latency_p95,
        "user_rating_avg": rating_avg,
    })

Признаки деградации модели: рост refusal rate, снижение пользовательских оценок, увеличение доли escalation в downstream системах.

Инфраструктурные требования

Метод Модель GPU VRAM Время обучения
QLoRA 7B 1×A100 40GB 18 GB 2–6ч
QLoRA 14B 1×A100 80GB 35 GB 4–12ч
QLoRA 70B 2×A100 80GB 90 GB 12–36ч
Full FT 7B 4×A100 40GB 120 GB 8–24ч
Full FT 70B 8×H100 80GB 560 GB 48–120ч

Сроки полного цикла

Минимальный проект (готовые данные, несложная задача): 3–5 недель. Типичный проект (подготовка данных с нуля): 8–14 недель. Сложный проект (специализированный домен, итеративная разметка): 16–24 недели.