本文にスキップ
AI News HubLIVE
サイト内リライト6 分で読了

SageMaker Inference がマルチインスタンス GPU をサポートし、モデルエンドポイントの GPU 利用率を最大化

記事の要約

Amazon SageMaker Inference が NVIDIA Multi-Instance GPU(MIG)による GPU パーティショニングをサポートしました。1 つの GPU をハードウェア分離されたパーティションに分割し、エンドポイントごとに複数のモデルを実行したり、新しいアクセラレータの適切な割合を使用したりできます。本記事では 2 つのオプション API フィールドと、旧世代の GPU 全体との比較測定結果を紹介します。

ソースAWS Machine Learning Blog著者: Shantanu Tripathi
SageMaker Inference がマルチインスタンス GPU をサポートし、モデルエンドポイントの GPU 利用率を最大化
誤りを報告

訂正窓口はまだ利用できません。記事情報をコピーして保存できます。

訂正案内
本文へ

モデルを GPU エンドポイントにデプロイする際、これまで GPU の最小要求単位はアクセラレータ 1 台全体でした。これには二重の制約があります。第一に、インスタンス上でアクセラレータ数より多くのモデルをホストできません。第二に、より明白でない点として、すべてのデプロイがフル GPU の選択に帰着します。並行性とプロンプト長が増えると、旧世代インスタンスのフル GPU では不十分になりますが、新世代インスタンスのフル GPU はモデルが必要とする以上の能力を持ちます。その結果、サービス不足か過剰な能力への支払いのどちらかになります。

本日、Amazon SageMaker Inference は GPU パーティショニングをサポートしました。NVIDIA Multi-Instance GPU(MIG)を使用して物理 GPU を独立したパーティションに分割します。各パーティションは GPU の計算ユニットの固定シェアと専用メモリブロックを受け取り、分離はハードウェアで強制されます。これにより両方の制約が変わります。各パーティションに異なるモデルを配置でき、旧世代か新世代かのフル GPU ではなく、新しいアクセラレータの一部を選択できます。

本記事では両方を扱います。前半は直接的な利点である、GPU 数より多くのモデルを分離してデプロイする方法です。後半はコストに関する質問に対して、パーティショニングの粒度が適切なサイズのユニット選択にどう役立つか、および実際に測定した結果を紹介します。

読み進める前に知っておくべきこと:GPU パーティショニングは推論コンポーネント(inference components)を使用するエンドポイントで機能します。推論コンポーネントは複数のモデルを 1 つのエンドポイントにデプロイし、各モデルに与えるコンピュートを設定する構築要素です。パーティショニングはその上に直接構築されます。パーティションはコンポーネントが要求するリソースであり、CPU やメモリを要求するのと同じ場所で要求します。推論コンポーネントを使用したことがない場合、本記事で紹介します。単一モデルエンドポイント、サーバーレスエンドポイント、異種インスタンスプールはパーティショニングできません。

これまで、モデル数がアクセラレータ数を超える場合、お客様には 3 つの選択肢がありました。より少なく大きなエンドポイントを実行してバッチ処理を強化する(モデルが交換可能な場合のみ有効)、マルチモデルエンドポイントを使用する(疎でバースト的なトラフィックに適するが、モデル間の分離がなく、初回ロードにペナルティがある)、セルフマネージド Kubernetes に移行する(MIG は利用可能だが、ドライバのバージョン管理、パーティション設定、デバイスプラグイン、スケジューリングなどの作業が発生する)です。

NVIDIA MIG は 1 つの GPU を最大 7 つのインスタンスに分割します(GPU による)。各インスタンスは独自のコンピュート、キャッシュ、メモリ、メモリ帯域幅を持ちます。分割はソフトウェアではなくハードウェアで行われるため、他の共有方法では得られない保証が得られます。予測可能なレイテンシ(各パーティションに専用メモリ帯域幅があり、あるモデルのトラフィックスパイクが別のモデルの p99 に現れない)、障害分離(クラッシュやメモリエラーがパーティション内に留まる)、適切なサイズの容量(中小モデルがフル GPU ではなく適合するスライスを取得)、コールドスタートなし(各モデルが独自のパーティションにロードされたまま)、テナント分離(パーティション間のメモリ保護がハードウェアで強制され、セキュリティとコンプライアンスのレビューが簡単になる)、信頼性の高い計画とコスト配分(パーティションのパフォーマンスは隣接するパーティションに依存せず、ロードテストが本番を予測でき、GPU コストがモデル、チーム、テナントに明確にマッピングされる)です。

パーティショニングには知っておくべき境界があります。最大パーティション数はアクセラレータに依存し、7 を超えません。MIG 自体はパーティションがアイドル状態のときのみレイアウトを変更でき、SageMaker AI ではエンドポイント作成時にレイアウトを選択することを意味します。複数の GPU を必要とするモデルは依然としてデバイス全体を必要とします。これらの境界内で、各モデルに 1 つの GPU を専用することなく、別々の GPU の分離を得られます。

これまで MIG を利用するには Kubernetes スタックを自分で運用する必要がありました。Amazon SageMaker AI の GPU パーティショニングはそのステップを不要にします。モデルにパーティションプロファイルを選択すると、SageMaker AI が GPU の設定、配置、スケーリングを処理します。マネージドエンドポイント上でハードウェア分離された GPU 共有を、基盤プラットフォームを運用せずに利用できます。Salesforce は当初からこの取り組みに参加し、要件の定義と初期実装の検証を支援しました。

GPU パーティショニングは既存の API 呼び出しに 2 つのオプションフィールドを追加します。新しい API 操作、新しいリソースタイプ、新しい IAM アクションはなく、両方のフィールドを省略したエンドポイントは現在とまったく同じ動作をします。1 つ目の AcceleratorPartitionLayouts は CreateEndpointConfig の本番バリアントに配置され、各アクセラレータをどのように分割するかを宣言します。たとえば、A100 には 7 つの計算スライスがあり、レイアウトが 7 つすべてを使用する場合、p4d インスタンス上の 8 つの A100 がそれぞれ 3 つのパーティションを持ち、エンドポイントは 24 のパーティション(各種類 8 つ)を提供します。カーブは均一に適用されます。1 つのレイアウトエントリは 1 つのアクセラレータの分割方法を記述し、バリアント内のすべてのインスタンス上のすべてのアクセラレータが同じ方法で分割されます。リストは位置指定ではなく、エントリが特定の GPU にマッピングされることはありません。

2 つ目の AcceleratorPartitionType は推論コンポーネントに配置され、モデルが実行されるパーティションを選択します。各コンポーネントコピーは要求されたタイプの 1 つのパーティションを占有します。CopyCount を増やすと、追加のコピーが空きパーティションに配置されます。これは、単一プロセスでは GPU がリクエストを待つ高並行性の小さなモデルに役立ちます。NumberOfAcceleratorDevicesRequired は常に 1 で、パーティションタイプが設定されている場合は 1 つのアクセラレータではなく 1 つのパーティションを意味します。NumberOfCpuCoresRequired と MinMemoryRequiredInMb はホスト CPU とホストメモリを記述し、GPU メモリはパーティションタイプから得られます。呼び出しは変わりません。InvokeEndpoint は推論コンポーネント名でモデルをアドレス指定し、パーティションはリクエストに現れません。

パーティショニングはエンドポイントのプロビジョニング中に行われます。InService に達すると、すべてのアクセラレータが分割され、パーティションは空になります。これはコンポーネントが後で配置される有効な状態です。テストでは、アクセラレータの分割によりプロビジョニングが約 17 秒増加しました。残りの時間は通常のインスタンス起動とコンテナプルです。

利用可能なパーティションプロファイルは GPU のプロパティであるため、まずインスタンスタイプが搭載する GPU を確認し、NVIDIA がサポートする MIG プロファイルを調べます。たとえば P4d は NVIDIA A100(40 GB)を搭載し、計算/メモリの粒度は 7/8、利用可能なプロファイルは mig-1g.5gb、mig-2g.10gb、mig-3g.20gb、mig-4g.20gb、mig-7g.40gb など、GPU あたり最大 7 パーティションです。P5 は H100(80 GB)、G7 は RTX PRO 4500 Blackwell(32 GB)、G7e は RTX PRO 6000 Blackwell Server Edition(96 GB)を搭載します。プロファイル名の数字は計算ユニットと GPU メモリを表し、mig-3g.40gb は 3 つの計算ユニットと 40 GB を使用します。粒度列がレイアウトを制限します。A100 と H100 は計算が 7 分の 1、メモリが 8 分の 1 に分割され、G7 は半分、G7e は 4 分の 1 です。GPU 間でプロファイル名が異なる場合があるため、スライス数が同じでも、この表で確認せずにインスタンスファミリー間でレイアウトを移行しないでください。

これらの制限内で実際の選択肢があります。P4d または P5 では、最小プロファイルを 7 つ、3g パーティションを 2 つ、4g+2g+1g のレイアウト、またはデバイス全体を 1 つとして使用できます。G7e では、最小を 4 つ、1g を 2 つと 2g を 1 つ、2g を 2 つ、またはデバイス全体を 1 つ使用できます。G7 では、2 つのパーティションまたは 1 つです。3g プロファイルは注意が必要です。2 つの次元が一致しないためです。7 つの計算ユニットのうち 3 つを使用しますが、8 つのメモリユニットのうち 4 つを使用します。2 つの 3g パーティションで GPU が満杯になり、他は入りません。

高レベルのルール:レイアウト内のすべてのプロファイルは GPU が提供するものでなければならず、プロファイルの計算ユニットとメモリユニットの合計は 1 つのデバイスが提供する量を超えてはなりません。どちらもエンドポイント設定の作成時にチェックされ、失敗した場合はアクセラレータ全体へのフォールバックではなく拒否されます。

P4d のドライバに関する注意:mig-1g.10gb は R525 以降の NVIDIA ドライバが必要で、デフォルトの P4d イメージは 470.256.02 を搭載しています。デフォルトイメージで要求すると、プロファイルを特定しないエラーで分割が失敗します。本番バリアントの InferenceAmiVersion を al2023-ami-sagemaker-inference-gpu-4-1 に設定すると、580 ドライバ系列のイメージが得られ、このプロファイルが利用可能になります。

ワークロードに適したレイアウトの選択は、単に受け入れられるレイアウトの選択とは別の問題です。パーティションは計算とメモリを固定比率で提供し、両者は推論中に異なる役割を果たします。計算ユニットはプリフィルに必要です。プリフィルはプロンプトを読み取り、その表現を構築します。これは計算負荷の高いフェーズで、パーティションが持つストリーミングマルチプロセッサ数、つまり TFLOPs に比例します。入力が長く、同時に到着するプロンプトが多いほど、最初のトークンを返す速度を左右します。メモリユニットはデコードと容量に必要です。トークン生成は各ステップでモデルの重みを再読み取りするため、デコードは数学計算ではなくメモリ帯域幅によって制限され、メモリは保持できる KV キャッシュの量も制限します。

要点と分析を開く

記事インテリジェンス

エンジニア上級

要点

  • SageMaker Inference は NVIDIA MIG を利用した GPU パーティショニングをサポートし、物理 GPU をハードウェア分離された独立パーティションに分割します。
  • AcceleratorPartitionLayouts と AcceleratorPartitionType という 2 つのオプションフィールドにより、推論コンポーネント内でモデルごとにパーティションを指定でき、基盤プラットフォームの管理が不要になります。
  • 測定結果から、パーティショニングは予測可能なレイテンシと分離を保ちながら適切なサイズのコンピュートを実現し、リソースの過不足を避けられることが示されています。

要点と分析は自動生成され、誤りを含む場合があります。原典をご確認ください。

SageMaker Inference がマルチインスタンス GPU をサポートし、モデルエンドポイントの GPU 利用率を最大化 | AI News Hub