コンテナー内での 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は正常に実行できます。