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

Container Service for Kubernetes:共有GPUスケジューリングの最小メモリ割り当て単位の調整

最終更新日:Nov 21, 2024

デフォルトでは、共有GPUスケジューリングの最小メモリ割り当て単位は1 GiBです。 より細かいGPUメモリ割り当てが必要な場合は、最小メモリ割り当て単位を調整できます。 このトピックでは、共有GPUスケジューリングの最小メモリ割り当て単位を128 MiBに変更する方法について説明します。

前提条件

  • ack-ai-installerは、共有GPUスケジューリングの最小メモリ割り当て単位を調整する前に、クラスターにインストールされています。 ack-ai-installerのインストール方法の詳細については、「GPU共有コンポーネントの設定」をご参照ください。

  • Kubernetes 1.18.8以降を実行するContainer Service for Kubernetes (ACK) Proクラスターが作成されます。 ACK Proクラスターを作成および更新する方法の詳細については、「ACKマネージドクラスターの作成」および「UpgradeCluster」をご参照ください。

使用上の注意

  • ポッドにe aliyun.com/gpu-memフィールドが指定されている場合、ポッドはGPUリソースを要求します。 クラスターにGPUリソースを要求するポッドが含まれている場合、共有GPUスケジューリングの最小メモリ割り当て単位を1 GiBから128 MiBに、または128 MiBから1 GiBに変更する前に、これらのポッドを削除する必要があります。 そうでない場合、スケジューラ台帳は無秩序になる可能性があります。

  • 最小メモリ割り当て単位は、GPU共有が有効で、メモリ分離が無効であるノードに対してのみ調整できます。 これらのノードには、ack.node.gpu.schedule=shareラベルがあります。 ack.node. GPU. schedule=cgpuラベルを持つノードでは、gpu共有とメモリ分離の両方が有効になります。 GPUは、メモリ分離モジュールの制限により、最大16個のポッドで共有できます。 したがって、最小メモリ割り当て単位を128 MiBに変更した場合でも、最大16個のポッドを作成して32 GiBのメモリでGPUを共有できます。

  • 最小メモリ割り当て単位を128 MiBに設定した場合、ノードの自動スケーリングを有効にしても、クラスター内のノードを自動的にスケーリングすることはできません。 たとえば、ポッドのaliyun.com/gpu-memフィールドを32に設定します。 この場合、クラスター内の使用可能なGPUメモリがポッドのメモリ要求を満たすには不十分な場合、新しいノードは追加されず、ポッドはPending状態のままになります。

  • 2021年10月20日より前に作成されたクラスターを使用する場合は、する必要があります。

    チケットを起票し、スケジューラを再起動します。 新しい最小メモリ割り当て単位は、スケジューラが再起動された後にのみ有効になります。

最小メモリ割り当て単位の調整

ack-ai-installerがインストールされていません

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[アプリケーション] > [クラウドネイティブAIスイート] を選択します。

  3. ページの下部で、[デプロイ] をクリックします。 表示されるページで、[スケジューリングコンポーネント (バッチタスクスケジューリング、GPU共有、トポロジ対応GPUスケジューリング、およびNPUスケジューリング)] を選択し、[クラウドネイティブAI Suiteのデプロイ] をクリックします。

  4. Cloud-native AI Suiteページで、コンポーネントリストでack-ai-installerを見つけ、[操作] 列の [アンインストール] をクリックします。 コンポーネントのアンインストールメッセージで、[確認] をクリックします。

  5. ack-ai-installerをアンインストールしたら、[操作] 列の [デプロイ] をクリックします。 パラメーターパネルで、gpuMemoryUnit: 128MiBをコードに追加します。1

  6. [OK] をクリックします。

    ack-ai-installerのステータス[デプロイ] から [デプロイ済み] に変わるまで待ちます。

ack-ai-installerがインストールされている

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[アプリケーション] > [クラウドネイティブAIスイート] を選択します。

  3. Cloud-native AI Suiteページで、コンポーネントリストでack-ai-installerを見つけ、[操作] 列の [アンインストール] をクリックします。 コンポーネントのアンインストールメッセージで、[確認] をクリックします。

  4. ack-ai-installerをアンインストールしたら、[操作] 列の [デプロイ] をクリックします。 パラメーターパネルで、gpuMemoryUnit: 128MiBをコードに追加します。1

  5. [OK] をクリックします。

    ack-ai-installerのステータス[デプロイ] から [デプロイ済み] に変わるまで待ちます。

例:

次のサンプルコードは、ポッドのGPUメモリを要求する方法の例を示しています。 この例では、aliyun.com/gpu-memフィールドは16に設定され、最小メモリ割り当て単位は128 MiBです。 したがって、ポッドが要求するGPUメモリの総量は、次の式を使用して計算されます。16 × 128 MiB =2 GiB。

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: binpack
  labels:
    app: binpack
spec:
  replicas: 1
  serviceName: "binpack-1"
  podManagementPolicy: "Parallel"
  selector: # define how the deployment finds the pods it manages
    matchLabels:
      app: binpack-1
  template: # The pod specifications. 
    metadata:
      labels:
        app: binpack-1
    spec:
      containers:
      - name: binpack-1
        image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:tensorflow-1.5
        command:
        - bash
        - gpushare/run.sh
        resources:
          limits:
            # 128 MiB
            aliyun.com/gpu-mem: 16   # 16 * 128 MiB = 2 GiB