Дообучення (Fine-Tuning) Llama: on-premise, LoRA, QLoRA

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

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

Часті запитання

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

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

Дообучення (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-адаптер можна:

  1. Використовувати окремо (PEFT inference): завантажувати базову модель + адаптер
  2. Злити в одну модель (merge_and_unload()): спрощує деплой, прибирає overhead PEFT
  3. Квантизувати після 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 у вашу інфраструктуру з максимальною віддачею.