Unsloth, Axolotl, TRL и LLaMA-Factory: чем отличаются четыре фреймворка для дообучения LLM

Четыре проекта фактически поделили между собой нишу дообучения языковых моделей — все они оборачивают PyTorch и Hugging Face, но по-разному. Разберём, чем каждый силён и под что его брать.

Кто есть кто

  • TRL — эталонная реализация от Hugging Face. Даёт готовые классы SFTTrainer, DPOTrainer, GRPOTrainer, KTOTrainer, RewardTrainer и RLOOTrainer (версия 1.8.0).
  • Unsloth — переписывает код моделей на собственных Triton-ядрах и вручную выводит шаги обратного распространения.
  • Axolotl — обёртка на YAML, которая складывает стратегии параллелизма поверх Transformers, PEFT, TRL, Accelerate и DeepSpeed.
  • LLaMA-Factory — демо с конференции ACL 2024: 100+ LLM и VLM, интерфейс на Gradio (LlamaBoard).

Скорость

Unsloth ускоряет обучение моделей Llama на одной видеокарте вдвое. На MoE-моделях выигрыш ещё заметнее — до 7,3x на gpt-oss-20b при контексте 8K, хотя всё зависит от условий (встречаются и 1,1x–1,77x). В связке с AMD зафиксировали ускорение 1,39x.

Axolotl ещё в феврале 2025 года взял на вооружение собственные Triton-ядра по мотивам Unsloth: 1,45x к скорости и минус 30% памяти на Qwen3.5-35B под H100. Поддерживает FlashAttention 2/3/4, xFormers, Flex Attention, SageAttention и Liger Kernel.

TRL остаётся базовой точкой отсчёта и берёт широтой: упаковка, батчинг без паддинга, усечение, интеграция с Liger Kernel и родная поддержка Unsloth.

LLaMA-Factory сам ничего не ускоряет, а перекладывает работу на других: флаг use_unsloth: true даёт 170% относительной скорости, а обучение на длинных последовательностях — 117% скорости при экономии 50% памяти.

Видеопамять

Минимумы Unsloth: 6 ГБ для 8B-модели (4-битная QLoRA), 41 ГБ для 70B; LoRA в 16 битах требует 22 ГБ и 164 ГБ соответственно.

Минимумы LLaMA-Factory: 6 ГБ на 7B, 24 ГБ на 30B, 48 ГБ на 70B (4-битная QLoRA); полный bf16 для 70B — уже 600 ГБ.

Отдельно показателен запас по длине контекста. На 8 ГБ видеопамяти Unsloth тянет контекст в 2972 токена, тогда как Transformers с FA2 просто падает по памяти. На A100 с 80 ГБ Unsloth дотягивает до 342 733 токенов против 28 454 у Transformers. По памяти MoE Axolotl умеет квантовать эксперты и урезает GLM-4.7-Flash со ~127 ГиБ до ~23 ГиБ зарезервированной памяти.

Несколько GPU

Axolotl предлагает самый глубокий параллелизм: DeepSpeed ZeRO стадий 1–3, FSDP, DDP (рекомендуется FSDP2), а также составные TP, CP и EP через PyTorch DeviceMesh. Правда, параллелизм по последовательности через ring-flash-attention масштабирует контекст почти линейно, но эффективность по пропускной способности проседает: на 8 GPU остаётся лишь 15,2% ускорения на карту.

TRL различает бэкенды: Ring Attention на FSDP2 (нужен Accelerate 1.11.0+, только SDPA) и ALST/Ulysses на DeepSpeed (Accelerate 1.12.0+, совместимо с FlashAttention-2). Ring Attention хорош для последовательностей от миллиона токенов, Ulysses ограничен числом голов внимания.

LLaMA-Factory покрывает DDP, DeepSpeed и FSDP (включая FSDP2), плюс добавили бэкенд Megatron-core для крупного предобучения. FSDP+QLoRA дообучает 70B на двух картах по 24 ГБ — самый дешёвый описанный путь.

Unsloth поддерживает Accelerate и DeepSpeed (FSDP/DDP), но со сложностями: на PyPI мультиGPU помечен как доступный, но с оговорками, а автоматическое распределение по картам в марте 2026-го значилось лишь как предварительное.

Что под что брать

  • Одна потребительская видеокарта и поддерживаемая архитектура — Unsloth (ради запаса по контексту);
  • от двух до восьми GPU, длинный контекст, пайплайны RLHF — Axolotl (FSDP2 и параллелизм по последовательности лучше всего задокументированы);
  • свои циклы обучения и новые алгоритмы — TRL (тот самый примитивный слой, который оборачивают остальные);
  • максимальный охват моделей, старт без кода и для неинженеров — LLaMA-Factory (а при росте нагрузки переходят на CLI).