デフォルトでは、共有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がインストールされていません
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
ページの下部で、[デプロイ] をクリックします。 表示されるページで、[スケジューリングコンポーネント (バッチタスクスケジューリング、GPU共有、トポロジ対応GPUスケジューリング、およびNPUスケジューリング)] を選択し、[クラウドネイティブAI Suiteのデプロイ] をクリックします。
Cloud-native AI Suiteページで、コンポーネントリストでack-ai-installerを見つけ、[操作] 列の [アンインストール] をクリックします。 コンポーネントのアンインストールメッセージで、[確認] をクリックします。
ack-ai-installerをアンインストールしたら、[操作] 列の [デプロイ] をクリックします。 パラメーターパネルで、
gpuMemoryUnit: 128MiB
をコードに追加します。[OK] をクリックします。
ack-ai-installerのステータスが [デプロイ] から [デプロイ済み] に変わるまで待ちます。
ack-ai-installerがインストールされている
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
Cloud-native AI Suiteページで、コンポーネントリストでack-ai-installerを見つけ、[操作] 列の [アンインストール] をクリックします。 コンポーネントのアンインストールメッセージで、[確認] をクリックします。
ack-ai-installerをアンインストールしたら、[操作] 列の [デプロイ] をクリックします。 パラメーターパネルで、
gpuMemoryUnit: 128MiB
をコードに追加します。[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