ACS クラスター内の GPU-HPN 仮想ノードは、GPU 属性ラベルを公開しており、アプリケーションコードを変更することなく、特定の GPU モデルまたはネットワークゾーンに Pod をターゲットにすることができます。
前提条件
開始する前に、以下を完了していることを確認してください。
-
クラスターを GPU-HPN キャパシティ予約に関連付ける
GPU 属性ラベル
すべての GPU-HPN 仮想ノードには、以下のラベルが付与されています。
| ラベル | 説明 |
|---|---|
alibabacloud.com/gpu-model-series |
仮想ノードで使用される GPU モデル |
alibabacloud.com/node-series |
仮想ノードの予約済みリソースのタイプ |
alibabacloud.com/hpn-zone |
高性能ネットワークのゾーン |
ご利用のキャパシティ予約でサポートされている GPU モデルを表示するには、チケットを送信してください。
スケジューリング方法の選択
Kubernetes には、特定のノードに Pod をターゲットにする 2 つの方法があります。
| 方法 | 仕組み | 利用シーン |
|---|---|---|
| ノードセレクター | 厳密な一致 — Pod を完全に一致するラベル値を持つノードにのみスケジュールします | フォールバックなしで特定の GPU モデルに固定する場合 |
| ノードアフィニティ | 強い制約 (required) と優先的な制約 (preferred) の両方をサポートします |
ある GPU モデルを優先しつつ、別のモデルも許容するなど、より柔軟なルールを適用する場合 |
以下の例では、ノードセレクターを使用します。ノードアフィニティの構文については、Kubernetes ドキュメントをご参照ください。
特定の GPU モデルへの Pod のスケジュール
この例では、特定の GPU モデルを持つ仮想ノードで TensorFlow MNIST トレーニングジョブを実行します。
-
「
tensorflow-mnist.yaml」という名前のファイルを作成し、以下の内容を記述します。apiVersion: batch/v1 kind: Job metadata: name: tensorflow-mnist spec: parallelism: 1 template: metadata: labels: app: tensorflow-mnist spec: nodeSelector: alibabacloud.com/gpu-model-series: "gpu-example" # ご利用の GPU モデルに置き換えてください containers: - name: tensorflow-mnist image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5 command: - python - tensorflow-sample-code/tfjob/docker/mnist/main.py - --max_steps=1000 - --data_dir=tensorflow-sample-code/data resources: requests: cpu: 1 memory: 1 nvidia.com/gpu: 1 limits: cpu: 1 memory: 1 nvidia.com/gpu: 1 workingDir: /root restartPolicy: Never -
Job をデプロイします。
kubectl apply -f tensorflow-mnist.yaml -
Pod のステータスを確認します。
kubectl get pod -l app=tensorflow-mnist -o wide[NODE] 列を確認し、Pod が期待される仮想ノードで実行されていることを確認してください。
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES default tensorflow-mnist-xxx 0/2 Running 0 4h2m <none> cn-shanghai-b.cr-u4ub6c3un2mrjlct2l9c <none> <none>出力は、Pod が `gpu-example` GPU を使用する仮想ノードで実行されていることを示しています。