コンテナー内での GPU の使用
| nerdctl >= 0.9 | |
|---|---|
nerdctl は、Docker 互換の NVIDIA GPU サポートを提供します。
前提 条件
- NVIDIAドライバ
- Docker で GPU を使用する場合と同じ要件。詳細については、NVIDIAのドキュメントを参照してください。
nvidia-container-cli- containerd は、コンテナー内の GPU を設定するためにこの CLI に依存しています。これは
libnvidia-containerパッケージからインストールできます。
nerdctl run --gpusのオプション
nerdctl run --gpus は docker run --gpus と互換性があります。
使用するGPUの数は、--gpusオプションで指定できます。
次の例では、使用可能なすべての GPU を公開します。
また、詳細な設定をキーと値のペアのリストを --gpus オプションに渡すこともできます。次のオプションが用意されています。
count: 使用する GPU の数。allは、使用可能なすべての GPU を公開します。device: 使用する GPU の ID。UUID または GPU の数を指定できます。capabilities: ドライバーの機能。設定されていない場合は、既定ドライバのutility``computeを使用します。
次の例では、特定の GPU をコンテナーに公開します。
nerdctl run -it --rm --gpus '"capabilities=utility,compute",device=GPU-3a23c669-1f69-c64e-cf85-44e9b07e7a2a' nvidia/cuda:12.3.1-base-ubuntu20.04 nvidia-smi
nerdctl compose のフィールド
nerdctl compose は、compose-spec に続く GPU もサポートしています。
作成時に GPU を使用するには、services.demo.deploy.resources.reservations.devices で次の機能の一部を指定します。
gpunvidianerdctl run --gpusで許可されているすべての機能
使用可能なフィールドは nerdctl run --gpus と同じです。
次の例では、使用可能なすべての GPU をコンテナーに公開します。
バージョン: "3.8"
サービス:
デモ:
イメージ: nvidia/cuda:12.3.1-base-ubuntu20.04
コマンド: nvidia-smi
deploy:
リソース:
予約:
デバイス:
- capabilities: ["utility"]
カウント: all
トラブルシューティング
nerdctl run --gpus は、Nvidia gpu-operator を使用すると失敗します
Nvidia ドライバーが gpu-operatorの場合、nerdctl runは、エラーメッセージ(FATA[0000] exec: "nvidia-container-cli": executable file not found in $PATH)で失敗します。
そのため、nvidia-container-cli を PATH 環境変数に追加する必要があります。
修正には、$HOME/.profile または /etc/profile (システム全体のインストールの場合) に次の行を追加します。
共有ライブラリもシステムに追加する必要があります。
これで、nerdctl run --gpusは正常に実行できます。