すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:GPUモデルの指定に使用されるラベル

最終更新日:Dec 09, 2024

GPUコンピューティングにContainer Service for Kubernetes (ACK) クラスターを使用する場合、ラベルを使用して、特定のGPU高速化ノードにアプリケーションをスケジュールできます。 このトピックでは、GPUモデルの指定に使用されるラベルについて説明します。 このトピックでは、特定のGPUモデルにアプリケーションをスケジュールする方法と、特定のGPUモデルにアプリケーションをスケジュールすることを回避する方法についても説明します。

GPUモデルの指定に使用されるラベル

GPU高速化ノードがACKクラスターに追加されると、次のラベルが自動的にノードに追加されます。

ラベル

説明

aliyun.accelerator/nvidia_name

GPU モデルです。

aliyun.accelerator/nvidia_mem

各GPUのメモリサイズ。

aliyun.accelerator/nvidia_count

ノードによって提供されるGPUの数。

nvidia-smiコマンドラインツールをGPUアクセラレーションノードで実行して、上記のラベルの値を照会できます。

クエリタイプ

コマンド

GPUモデルの照会

nvidia-smi -- query-gpu=gpu_name -- format=csv, nofheader -- id=0 | sed -e 's/ /-/g'

各GPUのメモリサイズの照会

nvidia-smi -- id=0 -- query-gpu=memory.total -- format=csv, nohader | sed -e 's/ // g'

ノードによって提供されるGPUの数を照会する

nvidia-smi -L | wc -l

次のコマンドを実行して、クラスター内のすべてのノードが提供するGPUモデルを照会します。

kubectl get nodes -L  aliyun.accelerator/nvidia_name
NAME                        STATUS   ROLES    AGE   VERSION            NVIDIA_NAME
cn-shanghai.192.XX.XX.176   Ready    <none>   17d   v1.26.3-aliyun.1   Tesla-V100-SXM2-32GB
cn-shanghai.192.XX.XX.177   Ready    <none>   17d   v1.26.3-aliyun.1   Tesla-V100-SXM2-32GB
cn-shanghai.192.XX.XX.130   Ready    <none>   18d   v1.26.3-aliyun.1   Tesla-V100-SXM2-32GB
cn-shanghai.192.XX.XX.131   Ready    <none>   17d   v1.26.3-aliyun.1   Tesla-V100-SXM2-32GB
cn-shanghai.192.XX.XX.132   Ready    <none>   17d   v1.26.3-aliyun.1   Tesla-V100-SXM2-32GB

特定のGPUモデルにアプリケーションをスケジュールする

上記のラベルを使用して、特定のGPUモデルにアプリケーションをスケジュールできます。 このセクションは例を提供します。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ワークロード] > [ジョブ] を選択します。

  3. [ジョブ] ページで、右上隅の [YAMLから作成] をクリックします。 次のページが表示されます。1.jpg

    サンプルコードを表示する

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: tensorflow-mnist
    spec:
      parallelism: 1
      template:
        metadata:
          labels:
            app: tensorflow-mnist
        spec:
          nodeSelector:
            aliyun.accelerator/nvidia_name: "Tesla-V100-SXM2-32GB" # Schedule the application to Tesla V100-SXM2-32GB. 
          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:
              limits:
                nvidia.com/gpu: 1
            workingDir: /root
          restartPolicy: Never

    アプリケーションの作成後、クラスターの詳細ページの左側のナビゲーションウィンドウで、[ワークロード] > [ポッド] を選択します。 [ポッド] ページで、指定したGPUモデルを備えたノードにポッドがスケジュールされていることがわかります。

特定のGPUモデルへのアプリケーションのスケジューリングを避ける

ノードアフィニティとアンチアフィニティを設定することで、特定のGPUモデルに対するアプリケーションのスケジューリングを回避できます。 このセクションは例を提供します。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ワークロード] > [ジョブ] を選択します。

  3. [ジョブ] ページで、右上隅の [YAMLから作成] をクリックします。 次のページが表示されます。2.jpg

    サンプルコードを表示する

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: tensorflow-mnist
    spec:
      parallelism: 1
      template:
        metadata:
          labels:
            app: tensorflow-mnist
        spec:
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: aliyun.accelerator/nvidia_name  # The application is not scheduled to GPU-accelerated nodes that have the aliyun.accelerator/nvidia_name label. 
                    operator: DoesNotExist
          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:
              limits:
                nvidia.com/gpu: 1
            workingDir: /root
          restartPolicy: Never

    アプリケーションの作成後、クラスターの詳細ページの左側のナビゲーションウィンドウで、[ワークロード] > [ポッド] を選択します。 [ポッド] ページで、aliyun.accelerator/nvidia_nameラベルがないノードにポッドがスケジュールされていることがわかります。

関連ドキュメント

クラウドネイティブaiスイートが提供するスケジューリングコンポーネントack-AI-installerをインストールした後、GPU高速化ノードにラベルを追加して、GPU共有やトポロジ対応のGPUスケジューリングなどのスケジューリングポリシーを有効にすることができます。 詳細については、「GPUスケジューリングポリシーを有効にするためのラベルとラベル値の変更方法」をご参照ください。