LoRA
Low-Rank Adaptation — техника fine-tuning, обновляющая только матрицы малого ранга вместо всех весов.
Что такое LoRA
LoRA (Low-Rank Adaptation) — метод параметрически эффективного fine-tuning (PEFT), предложенный Hu et al. (2021). Вместо обновления всех весов модели LoRA добавляет к каждому весовому слою две матрицы малого ранга: A (d×r) и B (r×k), где r << min(d, k). Только эти матрицы обучаются, исходные веса «заморожены».
При инференсе адаптер можно либо держать отдельно (удобно для смены задачи), либо «слить» с основными весами (нет overhead).
Экономия VRAM: 7B-модель с LoRA r=8 обновляет ~4M параметров вместо 7B — это 0.06% от общего числа. Потребность в VRAM снижается с ~80 ГБ (full fine-tuning) до ~16–20 ГБ.
Ключевые гиперпараметры
| Параметр | Описание | Типичное значение |
|---|---|---|
r (rank) |
Размерность LoRA-матриц | 8, 16, 64 |
alpha |
Масштабирующий коэффициент (LoRA_scale = alpha/r) | 16, 32 |
target_modules |
Какие модули адаптировать | q_proj, v_proj, k_proj, o_proj |
dropout |
Dropout в LoRA-слоях | 0.05 |
Быстрый старт с PEFT
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
torch_dtype="bfloat16",
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,
bias="none",
task_type="CAUSAL_LM",
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: 20,971,520 || all params: 8,051,036,160 || trainable%: 0.26
Слияние адаптера с базой
# После обучения — слить LoRA с базовой моделью
merged_model = model.merge_and_unload()
merged_model.save_pretrained("./merged-llama-3-finetuned")
LoRA vs QLoRA
LoRA — обучает адаптеры поверх полноформатной (BF16) базы. QLoRA — поверх квантизованной (INT4) базы, что ещё больше снижает VRAM.
Связанные термины
- QLoRA — LoRA с квантизованной базой
- PEFT — библиотека, реализующая LoRA
- fine-tuning — общий процесс
- rank (ранг) — размерность LoRA-матриц; см. shape тензора
- Подробный гайд по LoRA и QLoRA
Готовы запустить GPU-задачу?
Запустить GPU-сервер