
第7部 学習と微調整第14章
学習ツール群
Transformers、TRL、PEFT、Accelerate、DeepSpeed、FSDP、Unsloth、Axolotl、LlamaFactory……。名前の洪水も、どの層の道具かで分ければすっきりします。2026年10月時点の状況(torchtuneの開発終了など)も含めて地図を描きます。
このページの内容(10項目)
「LoRAで微調整したい」。で、どれをインストールすればいい?
調べ始めると、Transformers、TRL、PEFT、Accelerate、DeepSpeed、FSDP、Unsloth、Axolotl、LlamaFactory……と、似たような名前が次々に出てきます。どれも「LLMの学習に使う」と書いてあるので、ライバル同士に見えるかもしれません。
実は、その多くは競合ではなく重ねて使うものです。たとえばAxolotlの中ではTransformersもPEFTもTRLも動いています。この章では、ツールを「層」に分けて地図を作ります。
まずは地図:ツールは「層」で考える
ひとことで言うと
土台にPyTorch、その上にモデル定義のTransformers、微調整の部品のPEFTとTRL、複数GPUに広げるAccelerate・DeepSpeed・FSDPがあり、いちばん上に設定ファイルやGUIで全部をまとめて動かすAxolotl・LlamaFactory・Unslothが乗っています。
flowchart TD A["統合ツール
Axolotl・LlamaFactory・Unsloth"] --> B["学習手法
TRL・PEFT"] B --> C["モデル定義と学習ループ
Transformers"] C --> D["分散のまとめ役
Accelerate"] D --> E["分散学習エンジン
DeepSpeed・FSDP2"] E --> F["土台
PyTorch"] F --> G["GPU
CUDA・ROCmなど"]
料理にたとえると、PyTorchはコンロと鍋、Transformersは定番料理のレシピ集、PEFTやTRLは「時短調理法」や「味の調え方」の技法書、DeepSpeedやFSDPは大人数の料理人で厨房を回す段取り、Axolotlなどの統合ツールは「材料をセットすれば完成まで導いてくれる調理家電」です。
Hugging Faceの基本セット:Transformers・PEFT・TRL
Transformers トランスフォーマーズ
Hugging Faceのモデル定義ライブラリ。from_pretrained() でHubのモデルを読み込み、汎用の学習ループ Trainer も備えます。2026年1月にv5.0.0が公開され、2026年10月時点の最新はv5.20系です。Hubについては第3章を参照してください。
PEFT ペフト
LoRA・QLoRA・DoRA・IA3など、パラメータ効率のよい微調整(第13章)の部品集。LoraConfig と get_peft_model() で、Transformersのモデルにアダプタを付けられます。結合や複数アダプタの合成もここが担当します。
TRL Transformer Reinforcement Learning
事後学習(第12章)のトレーナー集。SFTTrainer、DPOTrainer、GRPOTrainer、KTOTrainer などがあり、PEFTと組み合わせてLoRA学習もできます。名前に「強化学習」とありますが、いまはSFTから好みの学習、強化学習まで幅広く扱います。2026年10月時点の最新はv1.16.0です。
この3つの組み合わせが、多くのツールやチュートリアルの共通基盤です。たとえばTRLの SFTTrainer にモデル名、データセット、LoraConfig を渡すだけで、LoRAによるSFTが始められます。
from datasets import load_dataset
from peft import LoraConfig
from trl import SFTTrainer
trainer = SFTTrainer(
"Qwen/Qwen3-0.6B",
train_dataset=load_dataset("trl-lib/Capybara", split="train"),
peft_config=LoraConfig(),
)
trainer.train()
上はTRLのドキュメントに載っている例です。数行で動くのは、裏でTransformersがモデルを読み、PEFTがアダプタを付け、TRLがデータの整形と学習ループを引き受けているからです。
学習データはどんな形で用意する?
ツールを選ぶ前に、データの形を決めておくと迷いません。TRLのドキュメントでは、SFT用のデータとして主に次の2種類の形を受け付けます。
{"messages": [{"role": "user", "content": "空は何色?"},
{"role": "assistant", "content": "青です。"}]}
{"prompt": [{"role": "user", "content": "空は何色?"}],
"completion": [{"role": "assistant", "content": "青です。"}]}
上は会話全体を1つにまとめた形、下は「指示」と「回答」を分けた形です。会話形式のデータを渡すと、トレーナーがモデルのチャットテンプレートを自動で当てはめます。Axolotl や LlamaFactory も、似た形式のJSONやJSONLを読み込めます。DPO用なら、1つの指示に対して「選ばれた回答(chosen)」と「選ばれなかった回答(rejected)」を並べた形になります。
GPUを何枚も使う:DeepSpeed・FSDP・Accelerate
モデルが1枚のGPUに収まらないとき、あるいは学習を速くしたいときは、複数のGPUに仕事を分けます。いちばん単純なのは、全GPUにモデルを丸ごと複製してデータだけを分けるDDP(Distributed Data Parallel)ですが、これでは1枚に入らないモデルは扱えません。
そこで、重み・勾配・オプティマイザ状態を各GPUに分割して持たせる(シャーディング)方法が使われます。第13章で見たとおり、フルファインチューニングは1パラメータあたり約16バイトかかるので、これを分け合えるのは大きな助けになります。
| DeepSpeed ZeRO | 各GPUに分割するもの |
|---|---|
| Stage 1 | オプティマイザの状態 |
| Stage 2 | +勾配 |
| Stage 3 | +モデルの重みそのもの |
DeepSpeed ディープスピード
Microsoft発の分散学習ライブラリ(現在のGitHubは deepspeedai/DeepSpeed)。ZeROのステージを選んで使い、さらに足りない分をCPUメモリやNVMe SSDに逃がすオフロード(ZeRO-Offload / ZeRO-Infinity)も持ちます。2026年10月時点の最新はv0.19系です。
FSDP / FSDP2 Fully Sharded Data Parallel
PyTorch本体に入っているシャーディング方式で、考え方はZeRO Stage 3に近いものです。新しいFSDP2(fully_shard)は、パラメータごとに分割するDTensorベースの設計になり、PyTorchのドキュメントは旧来のFSDP1の利用者にFSDP2への移行を勧めています。
Accelerate アクセラレート
Hugging Faceの「分散のまとめ役」。accelerate config で環境を設定し、accelerate launch で同じスクリプトを1GPU・複数GPU・複数ノードのどれでも動かせます。裏側でDDP・FSDP・DeepSpeedを切り替えられるので、TransformersのTrainerやTRLもこれを使って規模を広げます。
ためしてみよう
最初の1回は、GPU 1枚でQLoRAから始めるのがおすすめです。複数GPUやDeepSpeedは、1枚で動く設定ができてから広げても遅くありません。設定項目が多いので、「1枚で動くもの」を基準に差分を追うと迷いにくくなります。
まとめて面倒を見る統合ツール
上の部品を自分で組み合わせる代わりに、設定ファイルやGUIで学習全体を動かせるツールがあります。中身では前述のライブラリが動いているので、「どれを選んでも根っこは同じ」と考えて大丈夫です。
Unsloth アンスロース
独自に最適化したGPUカーネルで、学習を速くメモリ少なめにすることを売りにするツール。公式READMEは「2倍速く、VRAMを70%削減、精度の劣化なし」とうたっています(自社の計測)。LoRA・QLoRA・フルファインチューニング・DPO・GRPOなどに対応し、NVIDIAに加えAMDやIntelのGPUもサポート対象に挙げています。2026年10月時点では、モデルの実行と学習ができるデスクトップアプリとしても配布されています。
Axolotl アホロートル
YAMLの設定ファイル1枚で学習を記述するツール。SFT・DPO・GRPOなどの手法、LoRA・QLoRA、FSDP2やDeepSpeedによる複数GPU・複数ノード学習、MoEモデル向けの並列化まで幅広く対応し、新しいモデルへの対応も速いのが特徴です。2026年10月時点の最新はv0.21.0です。
LlamaFactory ラマファクトリー(旧表記 LLaMA-Factory)
「コードを書かずに」100以上のLLMとVLMを微調整できることを掲げるツール。llamafactory-cli のコマンドと、ブラウザで操作する「LlamaBoard」というWeb UIの両方を持ちます。継続事前学習、SFT、報酬モデル、PPO、DPO、KTO、ORPOなどに対応しています。GitHubのリポジトリ名は hiyouga/LlamaFactory です。
開発が止まったツール:torchtune
torchtuneは、PyTorch公式チームによる「PyTorchネイティブ」の微調整ライブラリでした。しかし2025年7月、チームはtorchtuneの積極的な開発を終了すると発表しました。告知では、2025年中は重大なバグ修正とセキュリティパッチを続けるものの、新機能は追加しないとしています。
後継として発表されたtorchforgeも、2026年10月時点のREADMEでは「開発を一時停止」と書かれ、PyTorchでのLLM学習はtorchtitanに集約するとされています。古い記事でtorchtuneを勧められても、新しく始めるならほかのツールを選ぶのが無難です。
注意: ツールの「鮮度」を確かめる
この分野のツールは入れ替わりが早く、1年前の定番が止まっていることもあります。使う前に、GitHubの最終更新日やリリース、READMEの冒頭にある告知を確認する習慣をつけましょう。
Macで学習する:MLX-LM
Apple Silicon のMacでは、Appleの機械学習フレームワークMLXと、その上のLLM用パッケージMLX-LMで微調整ができます。CPUとGPUが同じメモリを共有する「ユニファイドメモリ」を活かせるのが強みです(ハードウェアは第17章、MLXは第18章)。
pip install mlx-lm
mlx_lm.lora --model <モデル> --train --data <データのフォルダ>
mlx_lm.fuse --model <モデル>
MLX-LMの mlx_lm.lora は、--fine-tune-type で lora(既定)・dora・full を選べます。量子化済みのモデルを指定するとQLoRAとして学習し、mlx_lm.fuse でアダプタを結合できます。結合後にGGUFへ書き出す機能もありますが、対応するモデルの種類は限られています。
どれを選ぶ?
| 状況 | まず試すもの | 理由 |
|---|---|---|
| GPU 1枚で手軽にLoRA | Unsloth / TRL+PEFT | 速くて省メモリ、情報も多い |
| コードを書かずに試したい | LlamaFactory / Unsloth | Web UIやアプリで操作できる |
| 設定を管理して何度も回す | Axolotl | YAMLで再現しやすい |
| 自分で細かく制御したい | TRL+PEFT+Accelerate | 部品を直接触れる |
| Macで試したい | MLX-LM | Apple Silicon向けに最適化 |
どのツールを使っても、成果物は「Baseモデル+アダプタ」か「結合済みのモデル」です。推論はvLLMやllama.cppなど別のランタイムで行うのが普通なので、学習ツールと推論ツールは分けて考えましょう(第6章)。
よくある誤解
AxolotlとTransformersは、どちらか一方を選ぶライバルだ
AxolotlはTransformers・PEFT・TRLなどの上に乗る統合ツールです。層が違うので、重ねて使っています
DeepSpeedを使えば、1枚のGPUでも学習が速くなる
主な役割は複数GPUへの分割とオフロードによるメモリ節約です。1枚ではオフロードで「入らないものを入れる」代わりに遅くなることもあります
PyTorch公式のtorchtuneが、いまの標準ツールだ
torchtuneは2025年に積極的な開発を終えました。新規に始めるなら、開発の続いているツールを選びましょう
確認クイズ
Q2. DeepSpeed ZeRO Stage 3 は、Stage 2 に加えて何を分割する?
モデルの重み(パラメータ)そのものです。Stage 1がオプティマイザ状態、Stage 2がそれに加えて勾配を分割します。PyTorchのFSDPも、考え方はStage 3に近い方式です。
この章のまとめ
- 学習ツールは層で整理する: PyTorch → 分散(DeepSpeed・FSDP2)→ Accelerate → Transformers → PEFT・TRL → 統合ツール
- Transformers・PEFT・TRLの組み合わせが多くのツールの共通基盤
- DeepSpeed ZeROとFSDP2は重み・勾配・オプティマイザ状態をGPU間で分割し、Accelerateはそれらを切り替えて起動する
- Unsloth・Axolotl・LlamaFactoryは設定やGUIで全体を動かす統合ツール。MacならMLX-LM
- torchtuneは2025年に積極的な開発を終了。ツールの鮮度は必ず確認する
さらに深く学ぶ
この章の内容をもう一歩掘り下げるための原典です。
- ZeRO: Memory Optimizations Toward Training Trillion Parameter Models重み・勾配・最適化状態を複数GPUに分割して持つZeROを提案。DeepSpeedやFSDPの考え方の基本です。
- PyTorch FSDP: Experiences on Scaling Fully Sharded Data ParallelPyTorch標準の分散学習FSDPの設計と経験をまとめた論文。
- TRL - Transformer Reinforcement LearningSFT・DPO・GRPOなどの事後学習をそろえたHugging Faceのライブラリの公式ドキュメント。
- PEFTLoRAやその派生手法を共通の書き方で使えるPEFTライブラリの公式ドキュメント。
出典・参考
- huggingface/transformers v5.0.0 リリース(2026年1月)、Transformers ドキュメント
- huggingface/peft(GitHub) — v0.21系(2026年10月時点)
- huggingface/trl(GitHub)、TRL ドキュメント「SFT Trainer」 — トレーナー一覧とPEFT併用の例(v1.16.0)
- Accelerate ドキュメント
- DeepSpeed チュートリアル「Zero Redundancy Optimizer」 — ZeROの各ステージとZeRO-Infinity
- PyTorch ドキュメント「torch.distributed.fsdp.fully_shard」 — FSDP2とFSDP1からの移行
- unslothai/unsloth(GitHub) — 対応ハードウェアと速度・VRAMの公称値(2026年10月確認)
- axolotl-ai-cloud/axolotl(GitHub)、Axolotl ドキュメント
- hiyouga/LlamaFactory(GitHub)
- torchtune「[IMPORTANT] The future of torchtune」(2025年7月)、meta-pytorch/torchforge(GitHub)、pytorch/torchtitan(GitHub)
- MLX-LM「Fine-Tuning with LoRA or QLoRA」