powered by TechFeed
表示モード
Deep Dive

LLMファインチューニングの4大フレームワークを速度・VRAM・マルチGPUで実測比較 — シングルGPUはUnslothがVRAM効率で最大16倍差、マルチGPUはAxolotlが本命

7月22日、MarkTechPostが「Unsloth vs Axolotl vs TRL vs LLaMA-Factory: A Fine-Tuning Framework Comparison on Speed, VRAM, and Multi-GPU」と題した記事を公開した。LLMのファインチューニングを実践するエンジニアが必ず直面する問いがある。「どのフレームワークを選べばいいか」だ。Unsloth、Axolotl、TRL、LLaMA-Factoryはいずれも同じPyTorchとHugging Faceのスタックの上に構築されているが、エンジニアリング上の重点がまったく異なる。本記事はこの4フレームワークを速度・VRAM・マルチGPUスケーリングの3軸で実測比較した結果をまとめている。各フレームワークの立ち位置まず前提を整理しておく。

7月22日、MarkTechPostが「Unsloth vs Axolotl vs TRL vs LLaMA-Factory: A Fine-Tuning Framework Comparison on Speed, VRAM, and Multi-GPU」と題した記事を公開した。LLMのファインチューニングを実践するエンジニアが必ず直面する問いがある。「どのフレームワークを選べばいいか」だ。UnslothAxolotlTRLLLaMA-Factoryはいずれも同じPyTorchとHugging Faceのスタックの上に構築されているが、エンジニアリング上の重点がまったく異なる。本記事はこの4フレームワークを速度・VRAM・マルチGPUスケーリングの3軸で実測比較した結果をまとめている。

各フレームワークの立ち位置

まず前提を整理しておく。

  • TRLSFTTrainerDPOTrainerGRPOTrainerなどを提供するリファレンス実装層。AxolotlとLLaMA-FactoryはどちらもTRLを内部で呼び出している。
  • Unsloth:モデリングコードの一部を手書きのTritonカーネルで置き換え、バックプロパゲーションも自動微分ではなく手動導出。近似を導入しないため、Hugging Faceの公式ブログによれば標準QLoRAと比べて精度劣化は0%とされている。
  • Axolotl:YAML設定で動く並列化戦略のコンポーザ。カーネルの自作より、並列化戦略の組み合わせが差別化点。
  • LLaMA-FactoryACL 2024論文発のフレームワークで、100以上のLLM/VLMに対応。GradioベースのWeb UI「LlamaBoard」を持ち、コードなしで動かせる。

シングルGPUはUnslothが頭一つ抜ける

記事のなかで最も実務に直結するのが、コンテキスト長とVRAMの関係だ。Unslothが公開しているベンチマークは、同じVRAM予算でどれだけ長いシーケンスを扱えるかを如実に示している。

Llama 3.1 8B QLoRA(rank 32、バッチサイズ1)での比較:

GPU VRAM 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トークン

比較対象はHugging FaceのtransformersライブラリにFlash Attention 2を組み合わせた標準構成(以下、Transformers+FA2)だ。8GBのGPUでTransformers+FA2がOOMになるところをUnslothは2,972トークン処理できる。16GBでは約16倍の差がつく。これはタイトルの「16倍差」が指しているのは学習速度ではなく、同一VRAM帯域で扱える最大コンテキスト長の比である点に注意されたい。この差はUnsloth独自のグラジェントチェックポイントアルゴリズムとAppleのCut Cross Entropyの組み合わせによるものだと記事は説明している。

学習速度の面では、Llama 3.1 8BとLlama 3.3 70BにおいてTransformers+FA2比で2倍の学習速度を報告している。MoE(Mixture of Experts)モデルではさらに差が広がる。記事ではOpenAIが公開したMoEモデルgpt-oss-20bモデルカード参照)をNVIDIA B200で測定した結果として、8Kコンテキストで7.3倍(712ms vs 5,226ms/ステップ)という数字が示されている。ただしこのモデルは特定のアーキテクチャ上の特性を持つため、あくまでMoEモデルの代表的なケースとして受け取るのが適切だ。またこの倍率はシーケンス長とモデルアーキテクチャに強く依存し、Qwen3-30B-A3Bでは16Kコンテキストで1.1倍まで縮まる。


マルチGPUはAxolotlが本命

シングルGPUでのUnslothの優位はマルチGPU環境では逆転する。

Axolotlの並列化マトリクスは現時点で最も整備されている。DeepSpeed ZeRO(ステージ1〜3)、FSDP、DDPの3つのシャーディング戦略に加え、PyTorchのDeviceMeshを通じてデータ並列・テンソル並列・コンテキスト並列・エキスパート並列を組み合わせられる。サポートされる組み合わせはFSDP+TP、HSDP+TP、FSDP+CP、FSDP+TP+CP、FSDP+EPに及ぶ。

シーケンス並列(SP)のH100ベンチマーク(Llama 3.1 8B QLoRA)では:

SP度数 最大コンテキスト スループット効率
1 17,408 100.0%
2 34,816 86.8%
4 66,560 33.8%
8 129,024 15.2%

コンテキスト長はほぼ線形にスケールするが、スループット効率はSP度数4以降で急落する。4090でSP度数8にすると、コンテキストが32,768トークンに達する一方、実際の学習速度は1GPU時より遅くなる(0.88倍)。

TRLはFSDP2のRing AttentionとDeepSpeedのUlysses(ALST)という2つのシーケンス分割バックエンドを持つ。Ring Attentionは100万トークン超のシーケンスと限られたネットワークトポロジー向け、UlyssesはNVLink/InfiniBand環境で約50万トークンまでが適用範囲とされている。

UnslothのマルチGPUはAccelerateとDeepSpeedを通じて動作するが、記事は「設定が複雑で手動セットアップが必要」と明示しており、公式サポートは現在準備中の段階だと述べている。


LLaMA-Factoryは「最初の一歩」に強い

LLaMA-Factoryの強みはモデルカバレッジの広さゼロコード操作だ。use_unsloth: trueのフラグ一つでUnslothの速度改善(170%の相対速度向上と報告)を利用でき、enable_liger_kernel: trueでLiger Kernelも有効になる。

2025年の重要な追加機能としてMegatron-coreバックエンドが加わり、大規模な事前学習への道も開かれた。またFSDP+QLoRAのパスで70Bモデルを24GBのGPU2枚でファインチューニングできるとされており、これはこの比較の中で70Bを動かす最安構成だと記事は指摘している。

ただし分散学習の設定はYAMLとCLIで行う必要があり、LlamaBoardのWeb UIは使えなくなる。


選択のガイドライン

記事がまとめた用途別の選択肢は以下のとおりだ:

  • シングルコンシューマGPU + LoRA/QLoRA:Unsloth一択。コンテキスト長の余裕だけで選択理由になる。
  • 2〜8GPU + 長コンテキスト + フルファインチューニングorRLHF:Axolotl。FSDP2とシーケンス並列の組み合わせが最も整備されている。
  • カスタムトレーニングループ + 独自のポストトレーニングアルゴリズム:TRL。他のフレームワークが依存している層で直接作業する。
  • モデルカバレッジ重視 + 非エンジニアオペレーター:LLaMA-Factory。スケールアウト時にCLIへ移行する。

なおこれらは排他的ではない。LLaMA-FactoryはUnslothをバックエンドとして動かせ、TRLもUnsloth統合を提供し、AxolotlはTRLトレーナーを内部で呼び出している。

詳細はUnsloth vs Axolotl vs TRL vs LLaMA-Factory: A Fine-Tuning Framework Comparison on Speed, VRAM, and Multi-GPUを参照していただきたい。