このページでは、Google Distributed Cloud コネクテッドでグラフィック処理ユニット(GPU)ワークロードを管理する方法について説明します。この機能を利用するには、GPU を含む Distributed Cloud 接続ハードウェア構成が必要です。詳細については、ハードウェア構成を計画するをご覧ください。
Distributed Cloud 接続ワークロードは、コンテナと仮想マシンで実行できます。
コンテナで実行されている GPU ワークロード。Distributed Cloud 接続クラスタのすべての GPU リソースは、最初はコンテナで実行されているワークロードに割り当てられます。GPU ベースのコンテナ化されたワークロードを実行するための GPU ドライバは、Distributed Cloud コネクテッドに含まれています。各コンテナ内で、GPU ライブラリは
/opt/nvidiaにマウントされます。仮想マシンで実行されている GPU ワークロード。仮想マシンで GPU ベースのワークロードを実行するには、このページの後半で説明するように、ターゲットの Distributed Cloud 接続ノードで GPU リソースを仮想マシンに割り当てる必要があります。これにより、組み込みの GPU ドライバがバイパスされ、GPU が仮想マシンに直接渡されます。互換性のある GPU ドライバを各仮想マシンのゲスト オペレーティング システムに手動でインストールする必要があります。また、仮想マシンで専用の GPU ドライバを実行するために必要なすべてのライセンスを確保する必要があります。
Distributed Cloud に接続されたノードに GPU が存在することを確認するには、ノードに vm.cluster.gke.io.gpu=true ラベルがあることを確認します。ノードにラベルがない場合、対応する Distributed Cloud 接続の物理マシンに GPU がインストールされていません。
GPU リソースを割り当てる
デフォルトでは、クラスタ内の各ノードのすべての GPU リソースがコンテナ化されたワークロードに割り当てられます。各ノードの GPU リソースの割り当てをカスタマイズするには、このセクションの手順を行います。
GPU リソースの割り当てを構成する
Distributed Cloud 接続ノードに GPU リソースを割り当てるには、次のコマンドを使用して、ターゲット ノードの
GPUAllocationカスタム リソースを編集します。kubectl edit gpuallocation NODE_NAME --namespace vm-system
NODE_NAMEは、ターゲットの Distributed Cloud ノードの名前に置き換えます。次の例では、コマンドの出力にデフォルトの GPU リソース割り当てが表示されています。デフォルトでは、すべての GPU リソースがコンテナ化された(
pod)ワークロードに割り当てられ、仮想マシン(vm)ワークロードには GPU リソースが割り当てられません。... spec: pod: 2 # Number of GPUs allocated for container workloads vm: 0 # Number of GPUs allocated for VM workloadsGPU リソースの割り当てを次のように設定します。
- コンテナ化されたワークロードに GPU リソースを割り当てるには、
podフィールドの値を増やし、vmフィールドの値を同じ量だけ減らします。 - GPU リソースを仮想マシン ワークロードに割り当てるには、
vmフィールドの値を増やし、podフィールドの値を同じ量だけ減らします。
割り当てられた GPU リソースの合計数は、ノードが実行される物理 Distributed Cloud 接続マシンにインストールされている GPU の数を超えないようにする必要があります。超えると、ノードは無効な割り当てを拒否します。
次の例では、2 つの GPU リソースがコンテナ化された(
pod)ワークロードから仮想マシン(vm)ワークロードに再割り当てされています。... spec: pod: 0 # Number of GPUs allocated for container workloads vm: 2 # Number of GPUs allocated for VM workloads完了したら、変更した
GPUAllocationリソースをクラスタに適用し、ステータスがAllocationFulfilledに変わるまで待ちます。- コンテナ化されたワークロードに GPU リソースを割り当てるには、
GPU リソースの割り当てを確認する
GPU リソースの割り当てを確認するには、次のコマンドを使用します。
kubectl describe gpuallocations NODE_NAME --namespace vm-system
NODE_NAMEは、ターゲットの Distributed Cloud 接続ノードの名前に置き換えます。このコマンドでは、次の例のような出力が返されます。
Name: mynode1 ... spec: node: mynode1 pod: 2 # Number of GPUs allocated for container workloads vm: 0 # Number of GPUs allocated for VM workloads Status: Allocated: true Conditions: Last Transition Time: 2022-09-23T03:14:10Z Message: Observed Generation: 1 Reason: AllocationFulfilled Status: True Type: AllocationStatus Last Transition Time: 2022-09-23T03:14:16Z Message: Observed Generation: 1 Reason: DeviceStateUpdated Status: True Type: DeviceStateUpdated Consumption: pod: 0/2 # Number of GPUs currently consumed by container workloads vm: 0/0 # Number of GPUs currently consumed by VM workloads Device Model: NVIDIA L4 Events: <none>
GPU リソースを使用するようにコンテナを構成する
Distributed Cloud に接続されたコンテナが GPU リソースを使用するように構成するには、次の例に示すように仕様を構成し、クラスタに適用します。
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: containers: - name: my-gpu-container image: CUDA_TOOLKIT_IMAGE command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] env: resources: requests: GPU_MODEL: 2 limits: GPU_MODEL: 2 nodeSelector: kubernetes.io/hostname: NODE_NAME
次のように置き換えます。
CUDA_TOOLKIT_IMAGE: NVIDIA CUDA ツールキット イメージのフルパスと名前。CUDA ツールキットのバージョンは、Distributed Cloud 接続クラスタで実行されている NVIDIA ドライバのバージョンと一致している必要があります。NVIDIA ドライバのバージョンを確認するには、Distributed Cloud のリリースノートをご覧ください。一致する CUDA ツールキットのバージョンを確認するには、CUDA の互換性をご覧ください。NODE_NAME: ターゲットの Distributed Cloud 接続ノードの名前。GPU_MODEL: ターゲットの Distributed Cloud 接続マシンにインストールされている NVIDIA GPU のモデル。このリリースでは、NVIDIA L4 GPU でサポートされている値はnvidia.com/gpu-pod-NVIDIA_L4のみです。
GPU リソースを使用するように仮想マシンを構成する
GPU リソースを使用するように接続された Distributed Cloud で実行されている仮想マシンを構成するには、次の例に示すように VirtualMachine リソース仕様を構成し、クラスタに適用します。
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine ... spec: ... gpu: model: GPU_MODEL quantity: 2
次のように置き換えます。
GPU_MODEL: ターゲットの Distributed Cloud 接続マシンにインストールされている NVIDIA GPU のモデル。このリリースでは、NVIDIA L4 GPU でサポートされている値はnvidia.com/gpu-pod-NVIDIA_L4のみです。