0Pricing
AI Agents · Урок

LoRA и QLoRA для экономичного дообучения

Обучайте только низкоранговые адаптеры на квантизованной базовой модели — так дообучение модели 70B помещается на одном GPU

«LoRA и QLoRA для экономичного дообучения» — бесплатный урок AI Agents на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Зачем нужен PEFT?

Полное дообучение Llama 70B требует 8 и более ускорителей H100 и обновляет 70 миллиардов параметров. PEFT (дообучение с эффективным использованием параметров) обновляет менее 1% параметров при сопоставимом качестве. Это даёт огромную экономию.

LoRA: низкоранговая адаптация

LoRA (Hu и др., 2021) обучает небольшие матрицы «адаптеров» вместе с замороженными базовыми весами:

  • Добавляются матрицы A x B, где A имеет размерность dxr, а B — rxd; r мало (8, 16, 64)
  • Прямой проход: y = Wx + (BA)x
  • Обучаются только A и B — параметров на порядки меньше

QLoRA: квантизированная LoRA

QLoRA (Dettmers и др., 2023) дополнительно снижает затраты, квантизуя базовую модель до 4 бит во время обучения:

  • Базовая модель в NF4 (4 бита)
  • Адаптеры LoRA с более высокой точностью
  • Дообучение модели 70B помещается на одном A100/H100

Setup with peft + transformers

# pip install peft transformers bitsandbytes
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    'meta-llama/Llama-3.1-8B-Instruct',
    load_in_4bit=True,        # QLoRA
    device_map='auto'
)

lora_config = LoraConfig(
    r=16,                     # rank
    lora_alpha=32,
    target_modules=['q_proj', 'v_proj'],
    lora_dropout=0.05,
    bias='none'
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: ~0.5% of total

Training Loop with TRL

from trl import SFTTrainer

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    tokenizer=tokenizer,
    args=TrainingArguments(
        per_device_train_batch_size=4,
        gradient_accumulation_steps=4,
        learning_rate=2e-4,
        num_train_epochs=3,
        output_dir='./lora-out'
    )
)
trainer.train()
model.save_pretrained('./adapter')

Использование Unsloth

Unsloth — самая быстрая библиотека для LoRA, в 2 раза быстрее обычного peft. Интерфейс API для простой замены:

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name='meta-llama/Llama-3.1-8B-Instruct',
    load_in_4bit=True
)
model = FastLanguageModel.get_peft_model(
    model,
    r=16,
    target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj', 'gate_proj', 'up_proj', 'down_proj']
)

Оценка затрат

QLoRA для Llama 3.1 8B на 10k примерах:

  • ~4 часа на одном H100
  • ~$5–10 затрат на облачный GPU
  • Файл адаптера: 100–300 MB

Выбор ранга r

  • r = 8 — минимальный вариант для изменений формата и стиля
  • r = 16–32 — подходит для большинства случаев
  • r = 64+ — для существенного нового поведения и большей ёмкости

Целевые модули

По умолчанию выбирайте проекции внимания (q, v). Для большей ёмкости включите все линейные слои — качество будет выше, но параметров станет больше.

Важные гиперпараметры

  • Скорость обучения — обычно от 1e-4 до 5e-4
  • Эпохи — 2–5 для SFT
  • Размер пакета — зависит от VRAM; используйте накопление градиента, чтобы имитировать больший размер

Объединение адаптера с базовой моделью

При выводе можно объединить LoRA обратно с базовыми весами:

merged = model.merge_and_unload()
merged.save_pretrained('./full-model')

Обслуживание нескольких LoRAs

vLLM поддерживает горячую замену LoRAs во время вывода. Это полезно для дообученных под каждого клиента моделей на общей базовой модели:

llm = LLM(model='base', enable_lora=True, max_lora_rank=64)
response = llm.generate(prompt, lora_request=LoRARequest('customer-a', 1, './customer-a-adapter'))

Оценка адаптера

Всегда запускайте набор для оценки YOUR на дообученной модели. Иногда после дообучения результат на пограничных случаях хуже — честно учитывайте регрессии.

Преимущество LoRA

Каково главное практическое преимущество LoRA перед полным дообучением?

Повторение

LoRA + QLoRA = экономичное дообучение. Unsloth обеспечивает скорость, а peft/TRL — широкий набор возможностей. Ранг 16–32 подходит для большинства случаев. Проводите оценку по эталонному набору.

Часто задаваемые вопросы

Урок «LoRA и QLoRA для экономичного дообучения» бесплатный?

Да — полный текст урока «LoRA и QLoRA для экономичного дообучения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «LoRA и QLoRA для экономичного дообучения»?

Обучайте только низкоранговые адаптеры на квантизованной базовой модели — так дообучение модели 70B помещается на одном GPU Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «LoRA и QLoRA для экономичного дообучения»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Когда дообучение лучше подсказок
  2. Сбор данных: траектории и воспроизведение трасс
  3. LoRA и QLoRA для экономичного дообучения
  4. Оценка дообученных моделей по сравнению с базовой
← Назад к AI Agents