Ви працюєте з великими мовними моделями, але не вистачає GPU для дообучення? Ми стикаємося з цією проблемою щодня. Наша команда вже 5+ років досвіду займається LLM і використовує QLoRA для ефективного навчання гігантських моделей на кшталт Llama 3.1 70B на одному A100 80GB. QLoRA (Quantized Low-Rank Adaptation) — метод, що поєднує квантизацію базової моделі до 4-bit з навчанням LoRA-адаптерів у bf16/fp32. Це дозволяє дообучати 70B моделі на одному GPU з мінімальною втратою якості: за нашими тестами, різниця з повним fine-tuning у bf16 не перевищує 0.5% за метриками. QLoRA потребує в 4 рази менше пам'яті, ніж LoRA у bf16, при цьому якість знижується менш ніж на 0.5%. Ми пропонуємо дообучення під ключ: від підготовки даних до деплою. Гарантуємо відтворюваність результатів з фіксацією seed та версій. У нашому портфоліо 10+ успішних проєктів з дообучення LLM для юриспруденції, медицини та фінансів. QLoRA дозволяє заощадити до 70% витрат на інфраструктуру: економія на оренді GPU може сягати $1500 на місяць при використанні QLoRA замість повного fine-tuning.
Як працює QLoRA
Крок 1: базова модель завантажується в 4-bit NormalFloat (NF4) — спеціальний формат квантизації, оптимальний для нормально розподілених ваг нейромереж. Використовується бібліотека bitsandbytes.
Крок 2: для кожного квантизованого блоку зберігається окремий масштабуючий коефіцієнт (Double Quantization — квантизація самих масштабів).
Крок 3: при forward/backward pass ваги деквантизуються в bf16 «на льоту» для обчислень. Крок 4: LoRA-адаптери зберігаються та оновлюються в повній точності (bf16/fp32).
Результат: споживання пам'яті знижується приблизно в 4× порівняно з bf16 LoRA, при цьому якість практично не страждає завдяки NF4 квантизації.
Чому QLoRA — оптимальний вибір для обмежених GPU?
Основна причина — можливість дообучати моделі в 70B на єдиній карті. Якщо у вас немає доступу до кластера з 8 GPU, QLoRA — єдиний практичний метод. Наші клієнти підтверджують: після переходу з повного fine-tuning на QLoRA витрати на інфраструктуру знижуються в 3–5 разів при збереженні точності в межах 1%.
Як QLoRA впливає на якість?
Наші вимірювання показують: різниця між QLoRA та повним fine-tuning у bf16 становить менше 0.5% за recall/precision. Це підтверджується і в бенчмарках: NF4 квантизація спеціально спроєктована для мінімальної деградації.
Реалізація QLoRA
Код конфігурації QLoRA
from transformers import AutoModelForCausalLM, BitsAndBytesConfig from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training import torch # NF4 квантизація з Double Quantization bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16, bnb_4bit_use_double_quant=True, ) model = AutoModelForCausalLM.from_pretrained( "meta-llama/Meta-Llama-3.1-70B-Instruct", quantization_config=bnb_config, device_map="auto", ) model = prepare_model_for_kbit_training(model) lora_config = LoraConfig( r=64, lora_alpha=128, target_modules=["q_proj", "v_proj", "k_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], lora_dropout=0.05, task_type="CAUSAL_LM", bias="none", ) model = get_peft_model(model, lora_config) model.print_trainable_parameters() # trainable: 0.84% | all: 70B | memory: ~40 GB на 1×A100 80GB Вимоги до пам'яті QLoRA vs LoRA vs Full FT
| Метод | 7B | 13B | 34B | 70B |
|---|---|---|---|---|
| Full FT (bf16) | 4×A100 40GB | 8×A100 40GB | N/A | 8×A100 80GB |
| LoRA (bf16) | 1×A100 40GB | 2×A100 40GB | 4×A100 40GB | 4×A100 80GB |
| QLoRA (NF4) | 1×A100 24GB | 1×A100 40GB | 2×A100 40GB | 1×A100 80GB |
QLoRA дозволяє працювати з 70B моделлю на одній A100 80GB — це революційне зниження вимог до інфраструктури.
Gradient Checkpointing при QLoRA
При QLoRA активації займають основну пам'ять. Gradient checkpointing критично важливий:
from trl import SFTTrainer, SFTConfig training_args = SFTConfig( output_dir="./qlora-output", num_train_epochs=3, per_device_train_batch_size=2, gradient_accumulation_steps=16, gradient_checkpointing=True, gradient_checkpointing_kwargs={"use_reentrant": False}, learning_rate=2e-4, lr_scheduler_type="cosine", warmup_ratio=0.05, bf16=True, max_seq_length=4096, logging_steps=25, save_steps=100, report_to="wandb", ) Практичний кейс: 70B модель на одному A100 80GB (з нашої практики)
Задача: спеціалізація Llama 3.1 70B Instruct для аналізу юридичних договорів — класифікація ризиків, виявлення нестандартних умов, порівняння з шаблоном.
Чому 70B, а не 8B: раніше тестували Llama 3.1 8B — якість аналізу складних договорів неприйнятна (занадто багато пропущених нюансів). 70B дає якість, порівнянну з GPT-4o.
Інфраструктура: 1×A100 80GB. QLoRA NF4, r=64, alpha=128.
Датасет: 1400 договорів з розміткою (проведена практикуючими юристами): кожен договір → список ризиків з категорією та severity.
Час навчання: 3 епохи, 22 години на одній A100 80GB. Результати:
| Метрика | Llama 3.1 8B (fine-tuned) | Llama 3.1 70B (QLoRA) |
|---|---|---|
| Recall ризиків | 0.71 | 0.89 |
| Precision | 0.79 | 0.87 |
| Якість формулювань (LLM-as-judge, 1–5) | 3.6 | 4.5 |
| Вартість інференсу vs GPT-4o API | - | -71% |
Після дообучення модель можна використовувати в RAG системах для юридичного аналізу.
Що входить у дообучення під ключ
- Аудит даних: перевірка якості, розмітка, аугментація при необхідності.
- Вибір архітектури LoRA (rank, alpha, target modules).
- Конфігурація QLoRA: NF4, double quant, gradient checkpointing.
- Навчання на вашому GPU або орендованому інстансі (допоможемо з налаштуванням).
- Оцінка якості (hold-out set, LLM-as-judge).
- Деплой через vLLM або Triton Inference Server з API endpoint.
- Документація та передача моделі (ваги LoRA, конфіги, інструкції).
- Навчання вашої команди роботі з моделлю.
Обмеження QLoRA
Швидкість навчання: деквантизація на льоту уповільнює навчання на ~20% порівняно з bf16 LoRA. Тепловиділення: A100 при QLoRA працює на межі — потрібна адекватна система охолодження.
Варіативність: результати трохи менш відтворювані через квантизаційні помилки (але ми фіксуємо seed і версії).
Терміни
- Підготовка даних: 2–5 тижнів
- Навчання (70B, QLoRA, 1×A100 80GB): 12–36 годин
- Ітерації: 1–2 тижні
- Разом: 4–8 тижнів
Оцінимо ваш проєкт і підготуємо пропозицію протягом 2 робочих днів. Замовте консультацію — наші інженери допоможуть підібрати оптимальну конфігурацію для вашого завдання. Отримайте безкоштовний аналіз даних та рекомендації щодо дообучення моделі.
Джерело: Деттмерс Т. та ін., QLoRA: Efficient Finetuning of Quantized Language Models, arXiv:2305.14314, 2023.







