Дообучення (Fine-Tuning) мовної моделі Llama (Meta)
Уявіть: ваша компанія обробляє тисячі юридичних документів. Ви хочете автоматизувати вилучення даних з точністю 95%. GPT-4o справляється, але вартість API зростає з обсягом токенів. Рішення — дообучення Llama 3.1 on-premise. Ви отримуєте файли ваг, розгортаєте модель на своїй інфраструктурі та дообучаєте без обмежень API.
Ми — команда AI/ML інженерів з 5+ років досвіду в fine-tuning відкритих моделей (Transformer, GPT, LLaMA). Надаємо послугу під ключ: від аналізу ваших даних до деплою моделі в production. Оцініть економію — self-hosted інференс на Llama 3.1 8B обходиться в 10–15 разів дешевше за аналогічний за якістю виклик OpenAI API при високих навантаженнях.
Модельний ряд Llama 3.x
| Модель | Параметри | VRAM (fp16) | Застосування |
|---|---|---|---|
| Llama 3.2 1B | 1B | 2 GB | Edge, вбудовані системи |
| Llama 3.2 3B | 3B | 6 GB | Мобільні, легкі агенти |
| Llama 3.1 8B | 8B | 16 GB | Загальні завдання, fine-tuning |
| Llama 3.1 70B | 70B | 140 GB | Складні завдання, конкурент GPT-4 |
| Llama 3.1 405B | 405B | 800+ GB | State-of-the-art, multi-GPU |
Для більшості завдань fine-tuning оптимальний Llama 3.1 8B або 70B. Перший навчається на одній A100 80GB, другий потребує 2–4 GPU.
Чому варто обрати Llama для on-premise розгортання?
На відміну від GPT-4o або Claude, ви отримуєте файли ваг. Можете розгорнути модель на своїй інфраструктурі та дообучати без обмежень API. Це дає повний контроль над даними. За нашими оцінками, self-hosted інференс на Llama 3.1 8B обходиться в 10–15 разів дешевше. Порівняння з аналогічним за якістю викликом OpenAI API. Особливо помітна різниця при високих навантаженнях. Крім того, ми маємо сертифікованих спеціалістів і досвід впровадження в індустріях з жорсткими вимогами до безпеки.
Методи дообучення
| Метод | Параметри | VRAM (8B) | VRAM (70B) | Якість |
|---|---|---|---|---|
| Full Fine-Tuning | всі ваги | 80 GB | 560 GB | max |
| LoRA (rank=16) | 0.1% ваг | 16 GB | 140 GB | ~98% від full |
| QLoRA (4-bit) | 0.1% ваг | 12 GB | 48 GB | ~95% від full |
Full Fine-Tuning оновлює всі ваги — максимальна якість, але потребує великих ресурсів. LoRA (Low-Rank Adaptation) (Hu et al.) оновлює лише низькорангові адаптери поверх заморожених ваг. QLoRA додатково квантизує базову модель до 4-bit. Для 95% завдань достатньо LoRA або QLoRA: вони дають якість, близьку до повного навчання, при витратах у 5–15%.
Який target_modules обрати для LoRA?
Параметр target_modules визначає, які шари отримають LoRA-адаптери. У Llama 3 архітектура — трансформер з GQA (Grouped Query Attention). Типові цілі:
-
q_proj,k_proj,v_proj,o_proj— attention шари (мінімальний набір) -
gate_proj,up_proj,down_proj— MLP шари (додає виразність) - Всі 6 разом — максимальна якість, більше параметрів адаптера
LoRA rank r визначає розмір адаптера: r=8 дає ~0.1% додаткових параметрів, r=64 — ~0.8%. Для спеціалізації стилю достатньо r=8–16, для складних завдань вилучення знань — r=32–64.
Техстек: TRL + PEFT + Hugging Face
Основний інструментарій — бібліотека trl у парі з peft. Приклад конфігурації QLoRA:
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() Практичний приклад: юридичний асистент
Завдання: дообучити Llama 3.1 8B для аналізу російських арбітражних рішень та вилучення структурованих даних (сторони, предмет спору, рішення суду, сума).
Датасет: 3200 пар (текст рішення → JSON). Дані отримані з публічної бази kad.arbitr.ru з ручною анотацією 20% та синтетичною розміткою GPT-4o для решти (з ручною верифікацією вибірки).
Інфраструктура: одна A100 80GB, навчання 4 години (3 епохи). Результати:
- F1 вилучення суми позову: 0.58 → 0.91
- Точність визначення ініціатора (позивач/відповідач): 82% → 97%
- Token generation speed: 47 tok/s (vLLM, A100)
- Вартість інференсу vs GPT-4o API: в 12 разів нижче при self-hosted
Деталі побудови датасету
Вихідні тексти рішень (PDF) конвертували в Markdown через pdfminer.six. Потім розбили на chunks по 512 токенів з overlap 64. Для парсингу JSON використовували Pydantic. 20% розмічено вручну двома анотаторами (Cohen's kappa = 0.89). Решта — синтетика через GPT-4o з подальшою верифікацією випадкової вибірки.
Інференс дообученої моделі
Після навчання LoRA-адаптер можна:
- Використовувати окремо (PEFT inference): завантажувати базову модель + адаптер
- Злити в одну модель (
merge_and_unload()): спрощує деплой, прибирає overhead PEFT - Квантизувати після merge: 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 та continuous batching, збільшуючи throughput у 2–5× порівняно з наївним інференсом через transformers.
Що входить в роботу
- Підготовка даних (збір, очищення, анотація, аугментація)
- Вибір моделі та методу fine-tuning
- Навчання та валідація (метрики, тести, бейзлайн)
- Злиття адаптера, квантизація та оптимізація інференсу
- Деплой на вашій інфраструктурі (vLLM, TGI, llama.cpp)
- Документація та навчання вашої команди
- Гарантія підтримки 1 місяць після здачі
Терміни та інфраструктура
- Підготовка даних і розмітка: 2–6 тижнів
- Навчання (8B, LoRA, A100): 2–8 годин
- Навчання (70B, QLoRA, 2×A100): 12–48 годин
- Оцінка та ітерації: 1–2 тижні
- Деплой з vLLM/TGI: 3–5 днів
Разом від старту до продакшну: 4–10 тижнів
Як оцінити ефективність дообученої моделі?
Використовуйте метрики залежно від завдання: для генерації — ROUGE, BLEU, F1; для QA — точність, повнота; для інструкцій — human eval або LLM-as-judge. Ми закладаємо етап A/B-тестування: порівнюємо дообучену модель з бейзлайном (API або базова Llama) на репрезентативній вибірці. Замовте консультацію — ми допоможемо визначити метрики для вашого кейсу.
Чому обирають нас
5+ років комерційного досвіду в NLP та Computer Vision. 30+ успішних проєктів fine-tuning для клієнтів з фінтеху, юриспруденції та медицини. Сертифіковані спеціалісти з Hugging Face, PyTorch, Triton Inference Server. Ми працюємо з локальними інсталяціями, гарантуємо конфіденційність даних та надаємо повну документацію.
Зацікавлені? Зв'яжіться з нами, щоб обговорити ваш проєкт та отримати попередню оцінку. Ми допоможемо впровадити Llama у вашу інфраструктуру з максимальною віддачею.







