コンテナー内での 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
で次の機能
の一部を指定します。
gpu
nvidia
nerdctl 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
は正常に実行できます。