翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
NodeClass を作成する
重要
インスタンスグループ内のノードを 0 から開始し、Karpenter にオートスケーリングの処理を許可する必要があります。ノード数が 0 を超える場合、Karpenter はノードを 0 にスケールダウンします。
ノードクラス (NodeClass) は、ネットワーク設定、ストレージ設定、リソースタグ付けなど、EKS クラスター内のノードのグループに適用されるインフラストラクチャレベルの設定を定義します。HyperPodNodeClass は、SageMaker HyperPod で事前に作成されたインスタンスグループにマッピングするカスタム NodeClass で、Karpenter のオートスケーリングの決定でサポートされているインスタンスタイプとアベイラビリティーゾーンに関する制約を定義します。
ノードクラスの作成に関する考慮事項
-
NodeClassでは、最大 10 個のインスタンスを指定できます。 -
MIG (マルチインスタンス GPU) で GPU パーティショニングを使用する場合、Karpenter は MIG 対応インスタンスグループを使用してノードを自動的にプロビジョニングできます。インスタンスグループに MIG がサポートするインスタンスタイプ (ml.p4d.24xlarge、ml.p5.48xlarge、または ml.p5e/p5en.48xlarge) が含まれていることを確認し、クラスターの作成時に適切な MIG ラベルを設定します。GPU パーティショニングの設定の詳細については、「」を参照してくださいAmazon SageMaker HyperPod での GPU パーティションの使用 HyperPod。
-
カスタムラベルがインスタンスグループに適用される場合は、
HyperpodNodeClassステータスをクエリするときにdesiredLabelsフィールドにラベルを表示できます。これには、 などの MIG 設定ラベルが含まれますnvidia.com/mig.config。受信ジョブが MIG リソースをリクエストすると、Karpenter は適切な MIG ラベルを適用してインスタンスを自動的にスケーリングします。 -
インスタンスグループを削除する場合は、HyperPod クラスターから削除する前に、
NodeClassから削除することをお勧めします。インスタンスグループがNodeClassで使用されている間に削除された場合、NodeClassはプロビジョニングにはReadyでないとマークされ、インスタンスグループがNodeClassから削除されるまで後続のスケーリングオペレーションには使用されません。 -
NodeClassからインスタンスグループを削除すると、Karpenter はインスタンスグループ内の Karpenter が管理するノードのドリフトを検出し、中断量コントロールに基づいてノードを中断します。 -
インスタンスグループで使用されるサブネットは、同じ AZ に配置されている必要があります。サブネットは、インスタンスグループレベルまたはクラスターレベルで
OverrideVpcConfigを使用して指定されます。VpcConfigがデフォルトで使用されます。 -
現時点では、オンデマンドキャパシティのみがサポートされています。トレーニングプランまたはリザーブドキャパシティがあるインスタンスグループはサポートされていません。
-
DeepHealthChecks (DHC)を使用するインスタンスグループはサポートされていません。これは、DHC が完了するまでに約 60~90 分かかり、その間ポッドが保留状態のままになるため、オーバープロビジョニングが発生する可能性があるためです。
以下の手順は、NodeClass を作成する方法を説明しています。
-
NodeClassノードクラス設定で YAML ファイルを作成します (nodeclass.yaml など)。 -
kubectl を使用してこの設定をクラスターに適用します。
-
NodePool設定でNodeClassを参照します。 -
ml.c5.xlarge インスタンスタイプと ml.c5.4xlarge インスタンスタイプを使用する
NodeClassの例は、次のとおりです。apiVersion: karpenter.sagemaker.amazonaws.com/v1 kind: HyperpodNodeClass metadata: name: sample-nc spec: instanceGroups: # name of InstanceGroup in HyperPod cluster. InstanceGroup needs to pre-created # MaxItems: 10 - auto-c5-xaz1 - auto-c5-4xaz2 -
以下のとおり設定を適用します。
kubectl apply -f nodeclass.yaml -
NodeClass ステータスをモニタリングして、ステータスの準備完了条件が True に設定されていることを確認します。
kubectl get hyperpodnodeclass sample-nc -o yamlapiVersion: karpenter.sagemaker.amazonaws.com/v1 kind: HyperpodNodeClass metadata: creationTimestamp: "<timestamp>" name: sample-nc uid: <resource-uid> spec: instanceGroups: - auto-c5-az1 - auto-c5-4xaz2 status: conditions: // true when all IGs in the spec are present in SageMaker cluster, false otherwise - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: InstanceGroupReady status: "True" type: InstanceGroupReady // true if subnets of IGs are discoverable, false otherwise - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: SubnetsReady status: "True" type: SubnetsReady // true when all dependent resources are Ready [InstanceGroup, Subnets] - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: Ready status: "True" type: Ready instanceGroups: - desiredLabels: - key: <custom_label_key> value: <custom_label_value> - key: nvidia.com/mig.config value: all-1g.5gb instanceTypes: - ml.c5.xlarge name: auto-c5-az1 subnets: - id: <subnet-id> zone: <availability-zone-a> zoneId: <zone-id-a> - instanceTypes: - ml.c5.4xlarge name: auto-c5-4xaz2 subnets: - id: <subnet-id> zone: <availability-zone-b> zoneId: <zone-id-b>