Дообчання (Fine-Tuning) відкритої LLM під задачі замовника

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Дообчання (Fine-Tuning) відкритої LLM під задачі замовника
Складний
від 1 тижня до 3 місяців
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1279
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1195
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Дотонування моделей LLM з відкритим кодом для завдань клієнта

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

Вибір базової моделі для завдання

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

Клас завдання Рекомендовані моделі Обґрунтування
Класифікація, NER, структурований вивід Llama 3.1 8B, Mistral 7B, Phi-4-mini Якості достатньо, швидкий логічний висновок
Генерування російськомовного тексту Qwen2.5-7B/14B, Llama 3.1 8B Сильна багатомовна підтримка
Програмування, SQL, огляд коду Qwen2.5-Coder-32B, DeepSeek-Coder-V2, Phi-4 Спеціалізовані моделі коду
Складний 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 Вроджена підтримка зображень

Архітектура типового проекту дотонування

Фаза 1: Аудит завдання та даних (1–2 тижні)
  ├── Формалізувати завдання (класифікація/генерування/видалення)
  ├── Інвентаризація існуючих даних
  ├── Оцінка необхідного обсягу та якості
  └── Вибір базової моделі та методу тренування

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

Фаза 3: Тренування (1–4 тижні)
  ├── Оцінка базової моделі на базовій лінії
  ├── Перший запуск LoRA/QLoRA з параметрами за замовчуванням
  ├── Аналіз кривих втрат под час тренування/валідації
  ├── Налаштування гіперпараметрів
  └── Повне дотонування, якщо необхідно

Фаза 4: Оцінка та ітерації (1–3 тижні)
  ├── Автоматичні метрики (F1, BLEU, ROUGE, accuracy)
  ├── LLM-as-judge (GPT-4o або сильна модель як оцінювач)
  ├── Людська оцінка вибірки
  └── Аналіз випадків невдачі → доповнення даних

Фаза 5: Розгортання та моніторинг (1–2 тижні)
  ├── Квантизація (опціонально)
  ├── Розгортання через vLLM/TGI
  ├── Налаштування моніторингу
  └── A/B тест проти базової лінії

Синтетичне генерування даних через сильну модель

Часто трапляється сценарій: клієнт не має позначених даних, але має неструктуровані джерела (документи, нормативні акти, 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. Дотонування Qwen2.5-14B (найкращий російськомовний для медичної термінології)

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

  • Top-3 точність для МКБ-10: 71% → 89%
  • Повнота рекомендацій обстежень (recall vs експерт): 0.62 → 0.84
  • Рівень галюцинацій (придумані препарати/процедури): 24% → 6%
  • Затримка (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,
    })

Ознаки деградації моделі: збільшення рівня відмов, зниження оцінок користувачів, вищий рівень escalation у downstream системах.

Вимоги до інфраструктури

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

Графік повного циклу

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