Axolotl — универсальное дообучение

YAML-управляемое дообучение LLM с Axolotl на Clore.ai — LoRA, QLoRA, DPO, многогпу

Axolotl объединяет HuggingFace Transformers, PEFT, TRL и DeepSpeed в единый интерфейс, управляемый YAML. Вы определяете вашу модель, набор данных, метод обучения и гиперпараметры в одном конфигурационном файле — затем запускаете одной командой. Для стандартных рабочих процессов не требуется написание скриптов на Python.

circle-check

Ключевые особенности

  • Конфигурация только в YAML — определите всё в одном файле, Python не нужен

  • Все методы обучения — LoRA, QLoRA, полная дообучение, DPO, ORPO, KTO, RLHF

  • Поддержка нескольких GPU из коробки — DeepSpeed ZeRO 1/2/3 и FSDP с одним флагом

  • Упаковка примеров — конкатенация коротких примеров для заполнения длины последовательности, прирост пропускной способности в 3–5×

  • Flash Attention 2 — автоматическая экономия видеопамяти на поддерживаемом оборудовании

  • Широкая поддержка моделей — Llama 3.x, Mistral, Qwen 2.5, Gemma 2, Phi-4, DeepSeek, Falcon

  • Встроенные форматы наборов данных — alpaca, sharegpt, chat_template, completion и пользовательские

Требования

Компонент
Минимум
Рекомендуется

GPU

RTX 3060 12 ГБ

RTX 4090 24 ГБ (×2+)

VRAM

12 ГБ

24+ ГБ

ОЗУ

16 ГБ

64 ГБ

Диск

50 ГБ

100 ГБ

CUDA

11.8

12.1+

Python

3.10

3.11

Цены Clore.ai: RTX 4090 ≈ $0.5–2/день · RTX 3090 ≈ $0.3–1/день · RTX 3060 ≈ $0.15–0.3/день

Быстрый старт

1. Установите Axolotl

Или используйте Docker-образ (рекомендуется для воспроизводимости):

2. Создайте конфигурационный файл

Сохраните это как config.yml:

3. Запустите обучение

Логи прогресса обучения выводятся в stdout и при желании в Weights & Biases.

Глубокое погружение в конфигурацию

Форматы наборов данных

Axolotl нативно поддерживает несколько входных форматов:

Multi-GPU с DeepSpeed

Создайте deepspeed_zero2.json:

Добавьте в вашу конфигурацию:

Затем запустите:

Выравнивание DPO / ORPO

Полная донастройка (без LoRA)

Примеры использования

Инференс после обучения

Слияние LoRA с базовой моделью

Предобработка набора данных (проверить перед обучением)

Это токенизирует и проверит набор данных. Полезно для выявления ошибок формата до долгого запуска обучения.

Справочник по использованию видеопамяти

Модель
Метод
GPU
Видеопамять/GPU
Конфигурация

Llama 3.1 8B

QLoRA 4bit

1

≈12 ГБ

r=32, seq_len=2048

Llama 3.1 8B

LoRA 16bit

1

≈20 ГБ

r=16, seq_len=2048

Llama 3.1 8B

Полное

2

≈22 ГБ

DeepSpeed ZeRO-3

Qwen 2.5 14B

QLoRA 4bit

1

~16 ГБ

r=16, seq_len=2048

Llama 3.3 70B

QLoRA 4bit

2

≈22 ГБ

r=16, seq_len=2048

Llama 3.3 70B

Полное

4

≈40 ГБ

DeepSpeed ZeRO-3+выгрузка

Советы

  • Всегда включать sample_packing: true — наибольшее единичное улучшение пропускной способности (3–5× на коротких наборах данных)

  • Используйте flash_attention: true на GPU Ampere+ для экономии видеопамяти на 20–40%

  • Начните с QLoRA для экспериментов переходите на полную донастройку только когда качество LoRA выходит на плато

  • Установите val_set_size: 0.02 чтобы отслеживать переобучение во время обучения

  • Сначала предобработайте — выполните axolotl.cli.preprocess чтобы проверить формат данных перед запуском долгого обучения

  • Используйте Docker-образ для воспроизводимых окружений — избегает конфликтов зависимостей

  • lora_target_linear: true применяет LoRA ко всем линейным слоям, обычно лучше, чем нацеливание только на attention

Устранение неполадок

Проблема
Решение

OutOfMemoryError

Понизьте micro_batch_size до 1, включите gradient_checkpointing

Ошибки формата набора данных

Запустите python -m axolotl.cli.preprocess config.yml для отладки

sample_packing медленный на первой эпохе

Нормально — начальное вычисление упаковки выполняется единожды

Многопроцессное обучение зависает

Проверьте NCCL: export NCCL_DEBUG=INFO, убедитесь, что все GPU видимы

flash_attention ошибка импорта

Установите: pip install flash-attn --no-build-isolation

Потеря не уменьшается

Понизьте LR до 1e-4, увеличьте warmup, проверьте качество набора данных

Ошибка соединения WandB

Запустите wandb login или задайте wandb_project: в пустую строку

Ресурсы

Последнее обновление

Это было полезно?