Кто есть кто в экосистеме
Четыре проекта доминируют в сфере fine-tuning: Unsloth, Axolotl, TRL и LLaMA-Factory. Все они базируются на PyTorch и Hugging Face, но решают задачи по-разному. TRL (v1.8.0) выступает референсным слоем, предоставляя API для SFT, DPO, GRPO и других методов. Axolotl и LLaMA-Factory строятся поверх TRL, но делают акцент на удобстве и параллелизме. Unsloth же переписывает ядра (kernels) на Triton, чтобы ускорить обратное распространение ошибки без потери точности.
Скорость обучения: где кроется прирост
Unsloth демонстрирует впечатляющие результаты на одном GPU за счет оптимизации ядра. Для модели Llama 3.1 8B прирост составляет 2x, а для Llama 3.3 70B — аналогично. Однако на моделях с экспертами (MoE) разрыв становится еще более значительным. Ниже приведены результаты тестирования на NVIDIA B200:
| Модель | Контекст | Unsloth (мс/шаг) | Transformers v5 (мс/шаг) | Ускорение |
|---|---|---|---|---|
| gpt-oss-20b-BF16 | 8K | 712.33 | 5,226.86 | 7.3x |
| gpt-oss-20b-BF16 | 4K | — | — | 4.82x |
| gpt-oss-20b-BF16 | 1K | — | — | 1.37x |
Axolotl, вдохновленный Unsloth, также внедрил кастомные ядра Triton для LoRA (lora_mlp_kernel, lora_qkv_kernel). Для Qwen3.5-35B-A3B 8-bit LoRA на H100 SXM это дало ускорение до 1.45x и экономию памяти на 30%. LLaMA-Factory не пишет свои ядра, а делегирует эту работу: активация use_unsloth: true дает +170% к скорости, а enable_liger_kernel: true — дополнительные оптимизации.
Потребление VRAM: контекст против объема
Ключевое отличие Unsloth — способность работать с огромными контекстами при ограниченном VRAM благодаря алгоритму gradient checkpointing и Cut Cross Entropy. Для Llama 3.1 8B (QLoRA, rank 32, batch size 1) на GPU с 16 ГБ памяти Unsloth позволяет использовать контекст до 40,724 токенов, тогда как базовый стек Transformers + FlashAttention-2 выдает OOM (Out Of Memory) уже при 2,551 токене.
| VRAM GPU | Контекст Unsloth | Контекст Transformers + FA2 |
|---|---|---|
| 8 GB | 2,972 | OOM |
| 16 GB | 40,724 | 2,551 |
| 24 GB | 78,475 | 5,789 |
| 48 GB | 191,728 | 15,502 |
| 80 GB | 342,733 | 28,454 |
Для MoE-моделей Unsloth использует split-LoRA, избегая материализации дельты LoRA перед умножением матриц. Это позволило запустить fine-tuning gpt-oss-20b в 12.8 ГБ VRAM. Axolotl решает проблему памяти через квантование экспертных весов (MoE expert quantization), снизив потребление памяти для GLM-4.7-Flash с ~127 ГБ до ~23 ГБ.
Мульти-GPU: инверсия лидерства
На одном GPU Unsloth безоговорочно лидирует, но в распределенных системах первенство переходит к Axolotl. Он предлагает глубокую матрицу параллелизма: DeepSpeed ZeRO (1-3), FSDP (рекомендуется FSDP2), DDP, а также композицию Data, Tensor, Context и Expert Parallelism через PyTorch DeviceMesh.
Однако масштабирование имеет цену. Тесты на H100 для Llama 3.1 8B показывают, что при увеличении степени последовательного параллелизма (SP) с 1 до 8, пропускная способность на один GPU падает с 100% до 15.2%, хотя максимальный контекст растет с 17,408 до 129,024 токенов. На GPU уровня RTX 4090 при SP=8 обучение даже замедлилось (0.88x speedup), несмотря на рост контекста до 32,768 токенов.
Источник: MarkTechPost ↗
