Aivaro
  • Оглавление
  • Вопросы
  • Практика
  • Вики
  • Материалы сообщества
  • Тесты
  • Поиск
✈Telegram @ai_varo
RUEN中文
…
Оглавление/Вопросы/#960

Как вы подбираете гиперпараметры для LoRA (learning rate, batch size, rank, alpha)?

Краткий тезис

Подбор гиперпараметров для LoRA (Low-Rank Adaptation) — это компромисс между качеством адаптации, стабильностью обучения и вычислительными затратами. Ключевые параметры: learning rate (обычно выше, чем при полном fine-tune, ~1e-4), rank (r) и alpha (scaling factor, часто alpha = 2×r), batch size (стандартный 8–32). Эффективная стратегия — фиксация batch size и LR, затем grid search по r и alpha на валидационном наборе.

2. Alpha (scaling factor): обычно alpha = 2 × r

Alpha — это коэффициент масштабирования, который умножает выход адаптера перед сложением с исходными весами. Формально:
h = W₀x + (alpha / r) * BA x, где B и A — обучаемые матрицы ранга r.

Правило большого пальца:

  • alpha = 2 × r — наиболее распространённая эвристика, дающая хороший баланс между величиной обновления и стабильностью.
  • Если alpha слишком мала (например, alpha = r), эффект адаптации может быть недостаточным.
  • Если alpha слишком велика (alpha > 4×r), обновление доминирует над исходными весами, что может привести к переобучению или забыванию (catastrophic forgetting).

Когда отклоняться:

  • Для задач, требующих сильного изменения поведения (например, смена стиля генерации), можно увеличить alpha до 4×r.
  • Для тонкой настройки на маленьком датасете (сотни примеров) лучше уменьшить alpha до 1×r, чтобы избежать переобучения.

3. Batch size: стандартный (8–32)

Batch size для LoRA обычно выбирается таким же, как и для полного fine-tune той же модели, с учётом доступной памяти GPU. Рекомендуемый диапазон: 8–32 (для моделей 7B–13B).

Влияние на обучение:

  • Большой batch size (64+) может снизить качество из-за усреднения градиентов по большому числу примеров, что особенно критично для низкоранговых адаптеров.
  • Маленький batch size (1–4) увеличивает шум градиентов и требует большего числа шагов для сходимости, но может помочь при сильной регуляризации (dropout в LoRA не применяется, но шум градиентов играет аналогичную роль).

Практика:

  • Начните с batch size = 16.
  • Если loss колеблется, увеличьте до 32 или используйте gradient accumulation (например, effective batch size = 32 при физическом batch size = 8 и accumulation steps = 4).
  • Для больших моделей (70B) часто используют batch size = 8 из-за ограничений памяти.

4. Grid search по r и alpha на валидации

Наиболее системный подход — фиксировать LR и batch size (например, 1e-4 и 16) и провести grid search по паре (r, alpha). Рекомендуемая сетка:

ralpha (по правилу 2×r)Альтернативные alpha
242, 8
484, 16
8168, 32
163216, 64

Процедура:

  1. Разбейте датасет на train/val (например, 90/10).
  2. Для каждой комбинации (r, alpha) обучите LoRA-адаптер на фиксированное число шагов (например, 500–1000).
  3. Оцените метрику на валидации (perplexity, accuracy, F1 — в зависимости от задачи).
  4. Выберите комбинацию с лучшей метрикой.
  5. При необходимости уточните LR для выбранной пары (например, попробуйте 5e-5, 1e-4, 2e-4).

Автоматизация:

  • Используйте Hugging Face Trainer с hyperparameter_search (поддерживает Optuna или Ray Tune).
  • Для LoRA можно также применить Bayesian optimization по всем четырём параметрам сразу, но grid search по r и alpha часто даёт достаточное качество при меньших вычислительных затратах.

5. Пет-проект для закрепления

Задача: Обучить LoRA-адаптер для задачи классификации тональности (например, SST-2) на модели Llama 2 7B и подобрать гиперпараметры.

Инструменты:

  • Python, PyTorch, Transformers, PEFT (библиотека для LoRA).
  • Датасет: glue (sst2) из Datasets.
  • Метрика: accuracy на валидации.

Шаги:

  1. Загрузите модель и токенизатор.
  2. Настройте LoRA через LoraConfig с параметрами: r=8, alpha=16, target_modules=["q_proj","v_proj"].
  3. Зафиксируйте LR=1e-4, batch size=16, обучите 3 эпохи.
  4. Проведите grid search по r ∈ [2,4,8,16] и alpha ∈ [r, 2r, 4r].
  5. Для каждой комбинации обучите 1 эпоху (для скорости) и запишите accuracy.
  6. Выберите лучшую пару и дообучите с ней 3 эпохи.
  7. Сравните результат с baseline (без LoRA — полный fine-tune невозможен на одном GPU, но можно сравнить с замороженной моделью).

Ожидаемый результат:

  • Таблица с accuracy для всех комбинаций.
  • Вывод: оптимальная пара (r=8, alpha=16) даёт accuracy ~93–94% (на SST-2), что близко к полному fine-tune (95%).
  • Понимание, что увеличение r выше 16 даёт незначительный прирост, но увеличивает число параметров.

Связь с другими вопросами

ВопросТема
23Механизм низкоранговой адаптации, математика LoRA
959Сравнение LoRA, Adapter, Prefix Tuning, IA³
961Выбор слоёв для вставки адаптеров

Навигация

  • Предыдущий: 959
  • Следующий: 961
  • Индекс: 00. Индекс разборов