Дообчання (Fine-Tuning) мовної моделі Llama (Meta)

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

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • 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

Дотонування мовних моделей Llama (Meta)

Llama 3.x — сім'я моделей мов з відкритим кодом від Meta, доступна для комерційного використання з повним контролем над вагами. На відміну від GPT-4o або Claude, ви отримуєте файли ваг, можете розгорнути модель на своїй інфраструктурі та дотонувати без обмежень API. Це робить Llama пріоритетним вибором для завдань, що потребують конфіденційності даних, розгортання на місці та великого обсягу логічного висновку.

Лінійка моделей Llama 3.x

Модель Параметри VRAM (fp16) Варіант використання
Llama 3.2 1B 1B 2 ГБ Edge, вбудовані системи
Llama 3.2 3B 3B 6 ГБ Мобільні, легкі агенти
Llama 3.1 8B 8B 16 ГБ Загальні завдання, дотонування
Llama 3.1 70B 70B 140 ГБ Складні завдання, конкурентні з GPT-4
Llama 3.1 405B 405B 800+ ГБ State-of-the-art, мультиGPU

Для більшості завдань дотонування оптимальний Llama 3.1 8B або 70B — перший тренується на одному A100 80GB, другий потребує 2–4 GPU.

Методи дотонування

Повне дотонування: оновлюються всі ваги. Максимальна якість, але потребує значних обчислювальних ресурсів. Для моделі 8B — мінімум один A100 80GB, для 70B — 4×A100 або 8×A6000.

LoRA / QLoRA: оновлюються тільки низькоранговані адаптери, додані на заморожені ваги. QLoRA додатково квантизує базову модель до 4-bit, дозволяючи тренування 70B на двох A100 40GB. Якість наближається до повного дотонування для 5–15% завдань.

Інструкція дотонування: спеціалізований варіант керованого дотонування для адаптації формату інструкцій. Важливий при тренуванні на даних, специфічних для домену з нуля.

Технічний стек: TRL + PEFT + Hugging Face

Основне інструментування — бібліотека trl (Transformer Reinforcement Learning) у парі з peft:

from datasets import load_dataset
from trl import SFTTrainer, SFTConfig
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch

# Конфігурація QLoRA
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)

model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Meta-Llama-3.1-8B-Instruct",
    quantization_config=bnb_config,
    device_map="auto"
)

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
    lora_dropout=0.05,
    task_type="CAUSAL_LM"
)

model = get_peft_model(model, lora_config)

trainer = SFTTrainer(
    model=model,
    args=SFTConfig(
        output_dir="./llama3-finetuned",
        num_train_epochs=3,
        per_device_train_batch_size=4,
        gradient_accumulation_steps=4,
        learning_rate=2e-4,
        bf16=True,
        logging_steps=10,
    ),
    train_dataset=dataset["train"],
)

trainer.train()

Глибоке занурення: вибір target_modules для LoRA

Параметр target_modules визначає, які шари отримають адаптери LoRA. В архітектурі Llama 3 — трансформер з GQA (Grouped Query Attention). Типові цілі:

  • q_proj, k_proj, v_proj, o_proj — шари уваги (мінімальний набір)
  • gate_proj, up_proj, down_proj — шари MLP (добавляє виразність)
  • Всі 6 разом — максимальна якість, більше параметрів адаптера

LoRA ранг r визначає розмір адаптера: r=8 дає ~0.1% додаткових параметрів, r=64 — ~0.8%. Для спеціалізації стилю достатньо r=8–16, для складного видалення знань r=32–64.

Практичний приклад: юридичний помічник

Завдання: дотонувати Llama 3.1 8B для аналізу російських арбітражних рішень та видалення структурованих даних (сторони, предмет спору, рішення суду, сума).

Набір даних: 3200 пар (текст рішення → JSON). Дані отримані з публічної бази kad.arbitr.ru з ручною анотацією 20% та синтетичним маркуванням GPT-4o для решти (з ручною перевіркою вибірки).

Інфраструктура: один A100 80GB, тренування 4 години (3 епохи).

Результати:

  • F1 для видалення суми позову: 0.58 → 0.91
  • Точність визначення ініціатора (позивач/відповідач): 82% → 97%
  • Швидкість генерування токенів: 47 tok/s (vLLM, A100)
  • Вартість логічного висновку проти GPT-4o API: в 12 разів нижче при self-hosted

Логічний висновок дотонованої моделі

Після тренування адаптер LoRA можна:

  1. Використовувати окремо (PEFT inference): завантажити базову модель + адаптер
  2. Об'єднати в одну модель (merge_and_unload()): спрощує розгортання, видаляє overhead PEFT
  3. Квантизувати після об'єднання: GGUF через llama.cpp, AWQ через autoawq, GPTQ — для зменшення вимог до VRAM
# Об'єднати адаптер з базовою моделлю
merged_model = model.merge_and_unload()
merged_model.save_pretrained("./llama3-merged")
tokenizer.save_pretrained("./llama3-merged")

Для розгортання в виробництві використовуйте vLLM — він надає PagedAttention та безперервний батчинг, збільшуючи пропускну спроможність у 2–5 разів порівняно з наївним логічним висновком через трансформери.

Строки та інфраструктура

  • Підготовка даних та анотування: 2–6 тижнів
  • Тренування (8B, LoRA, A100): 2–8 годин
  • Тренування (70B, QLoRA, 2×A100): 12–48 годин
  • Оцінка та ітерації: 1–2 тижні
  • Розгортання з vLLM/TGI: 3–5 днів
  • Усього від старту до виробництва: 4–10 тижнів