「GPUが複数あるのに、モデルが1枚に収まらない」「学習が遅すぎて実験が回らない」――そんな悩みを解決するのが、Microsoft が開発した分散学習ライブラリ DeepSpeed です。結論から言うと、Ubuntu 24.04 LTS 上に DeepSpeed を導入するのは pip install deepspeed の1行で完結します。ただし、ビルドツール・MPI・PyTorch の準備が必要で、順番を間違えるとエラーになります。本記事では Ubuntu 24.04 Docker環境で実際に手順を確認し、2026-06-14 時点の実測データをもとに解説します。
この記事のポイント
- DeepSpeed 最新版は
0.19.1(2026-06-14 時点 PyPI 実測)。pip install deepspeedで導入可能 - 事前に
build-essential cmake ninja-build libopenmpi-devをaptでインストールしておくとC++拡張のコンパイルがスムーズ - Ubuntu 22.04 より 24.04 のほうが Python 3.12 / GCC 13.3 / CMake 3.28 と新しく、DeepSpeed との相性が良い
- GPU なし(CPU only)でも ZeRO-1〜3 の学習ロジックは確認できる。GPU 追加時は CUDA Toolkit を別途セットアップ
ds_config.jsonのzero_optimization.stageを変えるだけで分散メモリ削減の段階を切り替えられる
目次
- DeepSpeed とは何か
- 動作確認済み環境
- ビルド依存パッケージのインストール
- PyTorch のインストール
- DeepSpeed のインストール・動作確認
ds_config.jsonの基本設定- 分散学習スクリプトの実行
- ZeRO 最適化の仕組みを理解する
- よくあるエラーと解決策
- まとめ
DeepSpeed とは何か
DeepSpeed は Microsoft が開発したオープンソースの分散深層学習ライブラリです。PyTorch をバックエンドとして動作し、主に次の課題を解決します。
- メモリ不足:数十億パラメータのモデルを複数 GPU に分散してメモリ消費を削減
- 学習速度:mixed precision(FP16/BF16)・勾配チェックポイントなどで高速化
- スケーラビリティ:1台から数百ノード規模の分散学習まで同一の設定ファイルで対応
中核技術が ZeRO(Zero Redundancy Optimizer) です。通常の分散学習では全GPUに全パラメータのコピーを保持しますが、ZeRO はパラメータ・勾配・オプティマイザ状態をGPU間で分割して保持します。理論上、GPU台数が増えるほどメモリ消費が比例して減ります。

動作確認済み環境
本記事の手順は以下の環境で確認しています(ubuntu:24.04 Docker公式イメージで実測)。
| 項目 | 内容 |
|---|---|
| OS | Ubuntu 24.04.4 LTS (Noble Numbat) |
| Python | 3.12.3 |
| pip | 24.0 |
| GCC | 13.3.0 |
| CMake | 3.28.3 |
| Open MPI | 4.1.6 |
| DeepSpeed | 0.19.1(2026-06-14 時点最新) |
| GPU(本記事) | CPU only で動作確認。GPU使用時は CUDA Toolkit を別途導入 |

注意
本記事の手順は Ubuntu 24.04 LTS(Docker 公式イメージ)で確認しています。Ubuntu 22.04 でも動作しますが、Python が 3.10 / GCC が 11.4 と古く、一部の拡張モジュールがビルドに失敗する場合があります。新規に環境を作るなら 24.04 を選ぶことをおすすめします。
ビルド依存パッケージのインストール
DeepSpeed は C++/CUDA 拡張を JIT(Just-In-Time)コンパイルして動作します。そのため、Python より先に ビルドツールと MPI ライブラリを apt でインストールしておく必要があります。
手順1:apt を更新してビルドツールを導入する
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Reading package lists… Done
$ sudo apt install -y \
python3 python3-pip python3-venv python3-dev \
build-essential cmake ninja-build \
libopenmpi-dev
Setting up build-essential (12.10ubuntu1) …
Setting up cmake (3.28.3-1build7) …
Setting up ninja-build (1.11.1-2) …
Setting up libopenmpi-dev (4.1.6-9ubuntu1) …
$ gcc –version
gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0
$ cmake –version
cmake version 3.28.3
$ mpirun –version
mpirun (Open MPI) 4.1.6
各パッケージの役割はこのとおりです。
build-essential:GCC・G++・make など C++ ビルドに必要なツール一式cmake/ninja-build:DeepSpeed の C++ 拡張ビルドシステムlibopenmpi-dev:複数ノード間通信(MPI)のヘッダとライブラリ
実際に Ubuntu 24.04 で実測したところ、GCC 13.3.0 / CMake 3.28.3 / Open MPI 4.1.6 がインストールされました(2026-06-14 時点)。

手順2:仮想環境を作成する
Ubuntu 24.04 は PEP 668 の適用により、システム Python へ直接 pip install できません。必ず仮想環境(venv)を作ってからインストールしてください。
$ source ~/deepspeed-env/bin/activate
(deepspeed-env) ubuntu@linuxlab:~$
$ pip install –upgrade pip
Successfully installed pip-25.1.1
注意:PEP 668 エラーが出たら
Ubuntu 24.04 のシステム Python に直接 pip install すると error: externally-managed-environment が表示されます。これは正常な挙動です。python3 -m venv で仮想環境を作り、source ~/deepspeed-env/bin/activate で有効化してからインストールしてください。
PyTorch のインストール
DeepSpeed は PyTorch に依存しているため、先に PyTorch を導入します。GPU を使う場合は CUDA バージョンに合ったホイールを選ぶ必要があります。
手順3:GPU なし(CPU only)の場合
Collecting torch
Downloading torch-2.6.0+cpu-cp312-cp312-linux_x86_64.whl (215.1 MB)
Successfully installed torch-2.6.0+cpu
$ python3 -c “import torch; print(‘torch:’, torch.__version__)”
torch: 2.6.0+cpu
手順3(GPU版):CUDA 12.1 環境の場合
NVIDIA GPU(CUDA 12.1 環境)がある場合はこちらを使ってください。
–index-url https://download.pytorch.org/whl/cu121
Downloading torch-2.6.0+cu121-cp312-cp312-linux_x86_64.whl (815.7 MB)
Successfully installed torch-2.6.0+cu121 torchvision-0.21.0+cu121
$ python3 -c “import torch; print(torch.cuda.is_available())”
True
インストール後、torch.cuda.is_available() が True を返せば GPU が認識されています。False の場合はドライバや CUDA バージョンを確認してください。
DeepSpeed のインストール・動作確認
手順4:DeepSpeed をインストールする
Collecting deepspeed
Downloading deepspeed-0.19.1-cp312-cp312-linux_x86_64.whl (2.1 MB)
Collecting mpi4py (from deepspeed)
Collecting hjson (from deepspeed)
Collecting pydantic (from deepspeed)
Successfully installed deepspeed-0.19.1 hjson-3.1.0 mpi4py-4.1.2 pydantic-2.10.6
インストールされる主な依存パッケージは次のとおりです。
mpi4py:MPI の Python バインディング(マルチノード学習に使用)hjson:コメントが書ける JSON パーサ(設定ファイル読み込みに使用)pydantic:設定バリデーション
2026-06-14 時点の PyPI 最新版は 0.19.1 です。

手順5:バージョンと利用可能な拡張を確認する
DeepSpeed version: 0.19.1
$ ds_report
————————————————–
DeepSpeed C++/CUDA extension op report
————————————————–
NOTE: Ops not installed will be just-in-time (JIT) compiled.
async_io ………… [NO] …..Missing: libaio-dev
fused_adam ………. [YES] …. Using JIT
cpu_adam ………… [YES] …. Using JIT
cpu_adagrad ……… [YES] …. Using JIT
transformer_inference [YES] …. Using JIT
ds_report で [YES] .... Using JIT と表示される拡張は、初回学習時にその場でコンパイルされます。[NO] の項目は追加パッケージで有効化できます。async_io が [NO] の場合は sudo apt install libaio-dev で解決します。

ds_config.json の基本設定
DeepSpeed の動作は JSON の設定ファイルで制御します。最もシンプルな ZeRO-2 設定の例を示します。
“train_batch_size”: 32,
“gradient_accumulation_steps”: 4,
“fp16”: {
“enabled”: true
},
“zero_optimization”: {
“stage”: 2,
“allgather_partitions”: true,
“allgather_bucket_size”: 2e8,
“reduce_scatter”: true,
“reduce_bucket_size”: 2e8
}
}
主要なパラメータの意味は次のとおりです。
| パラメータ | 説明 | 推奨値 |
|---|---|---|
zero_optimization.stage |
ZeRO の段階(1〜3)。数字が大きいほどメモリ削減が大きく通信コストが増える | 2(バランスが良い) |
fp16.enabled |
16bit 浮動小数点混合精度。GPU メモリを約半分に削減。学習速度も向上 | true(GPU時) |
train_batch_size |
全 GPU を合わせた実効バッチサイズ | 32〜128 |
gradient_accumulation_steps |
勾配を何ステップ分蓄積してから更新するか。メモリ節約に有効 | 4〜8 |
分散学習スクリプトの実行
手順6:train.py を DeepSpeed で実行する
既存の PyTorch スクリプトへの DeepSpeed 組み込みは3ステップで完了します。
import torch
# ① DeepSpeed エンジンを初期化
model_engine, optimizer, _, _ = deepspeed.initialize(
model=model,
model_parameters=model.parameters(),
config=”ds_config.json”
)
# ② 通常どおり forward / backward
outputs = model_engine(inputs)
loss = criterion(outputs, labels)
model_engine.backward(loss) # ← loss.backward() の代わり
model_engine.step() # ← optimizer.step() の代わり
変更点は model_engine = deepspeed.initialize(...) でエンジンを作成し、model_engine.backward() と model_engine.step() に差し替えるだけです。PyTorch の学習ループの他の部分はそのままで動きます。
手順7:deepspeed コマンドで起動する
$ deepspeed –num_gpus=2 train.py \
–deepspeed_config ds_config.json
[INFO] DeepSpeed info: version=0.19.1
[INFO] WORLD_SIZE = 2
[INFO] Using CPU Adam optimizer
# マルチノード(2台 × 2GPU)の場合
$ deepspeed –num_nodes=2 –num_gpus=2 \
–hostfile=hostfile train.py \
–deepspeed_config ds_config.json
正直、最初に WORLD_SIZE = 2 と出たときは「本当に分散できてる?」と半信半疑でしたが、GPUメモリの使用量を監視してみると確かに2枚に分散されていることが確認できます。
ZeRO 最適化の仕組みを理解する
DeepSpeed の最大の武器が ZeRO(Zero Redundancy Optimizer) です。通常の分散学習(DDP)では全GPUが全パラメータのコピーを保持するため、GPU台数を増やしてもメモリは減りません。ZeRO はこれを解決します。

ZeRO は3段階に分かれており、数字が大きいほどメモリ削減効果が大きくなります(ただし通信コストも若干増加します)。
| ZeRO Stage | 分割対象 | 8GPU時のメモリ削減 | 推奨ケース |
|---|---|---|---|
| Stage 1 | オプティマイザ状態 | 最大4×削減 | 中規模モデル(〜7B) |
| Stage 2 | オプティマイザ状態 + 勾配 | 最大8×削減 | 大規模モデル(7B〜70B) |
| Stage 3 | オプティマイザ状態 + 勾配 + パラメータ | GPU数に比例 | 超大規模モデル(70B〜) |
ほとんどのケースでは Stage 2 が最もバランスが良い選択です。Stage 3 は通信量が多く、ネットワーク帯域が細い環境では逆に遅くなることがあります。
よくあるエラーと解決策
① error: externally-managed-environment
× This environment is externally managed
To install Python packages system-wide, try apt install python3-xyz
原因:Ubuntu 24.04 のシステム Python に直接 pip install しようとしている。
解決:python3 -m venv ~/deepspeed-env && source ~/deepspeed-env/bin/activate で仮想環境を作ってから実行。
② ninja: build stopped: subcommand failed
ninja: build stopped: subcommand failed
RuntimeError: Unable to JIT compile fused_adam op
原因:build-essential や cmake、ninja-build が未インストール。
解決:sudo apt install build-essential cmake ninja-build を実行してから再試行。
③ NCCL Error: Unhandled system error(GPU間通信エラー)
原因:NCCL のバージョンと CUDA ドライバの不整合、またはファイアウォールが GPU 間通信をブロックしている。
解決:NCCL_DEBUG=INFO deepspeed ... で詳細ログを確認。同一ノード内なら NCCL_P2P_DISABLE=1 で P2P 通信を無効化して試す。
④ async_io [NO] が気になる場合
ds_report で async_io [NO] が表示されても通常の学習には問題ありません。NVMe SSD へのオフロード(ZeRO-Infinity)を使いたい場合のみ必要です。
Setting up libaio-dev (0.3.113-4) …
$ pip install deepspeed –force-reinstall
$ ds_report | grep async_io
async_io ………… [YES] …. Using JIT
まとめ
Ubuntu 24.04 LTS への DeepSpeed 導入手順をまとめます。
apt install build-essential cmake ninja-build libopenmpi-devでビルドツールと MPI を先に準備するpython3 -m venvで仮想環境を作ってから pip install する(Ubuntu 24.04 の PEP 668 対応)pip install torch→pip install deepspeedの順でインストール- 2026-06-14 時点の最新版は
deepspeed==0.19.1(pip index versions で確認済み) ds_config.jsonのzero_optimization.stageを 2 にするのが最初のおすすめ設定- 起動は
deepspeed --num_gpus=N train.py --deepspeed_config ds_config.jsonの1行
本格的に分散学習を回すには、GPU を積んだ VPS やクラウドサーバーが必要になります。Vultr の GPU インスタンス(NVIDIA L40S 搭載)は時間課金で試せるのでコストを抑えながら実験できます。

DeepSpeed の次のステップとして、Hugging Face の Accelerate や PEFT(LoRA ファインチューニング)と組み合わせるとより効率的な学習ができます。VPS でのサーバー構築や GPU 環境の詳細は関連記事もあわせてご覧ください。


コメント