
- Inference ComponentsでGPUコストを8分の1に削減しつつMulti-AZ高可用性を達成
- SchedulingConfigでAZバランスとインスタンス配置を制御
- CopyCount=1は高可用性要件を満たさないため注意
背景と課題
SalesforceはAIエージェント基盤であるAgentforceのために、Amazon SageMaker AIのInference Components(IC)を利用しています。ICは複数のモデルを共有GPU上に配置することで、インフラストラクチャコストを8倍削減できる機能です。しかし、デフォルトの配置アルゴリズムは各配置操作を独立に最適化するため、AZをまたいだバランスを考慮しませんでした。その結果、特定のモデルが一つのAZに集中し、単一障害点が生じるリスクがありました。
Salesforceは全ての本番モデルに対して2つのAZでのサポートを社内コンプライアンス要件としており、このままでは要件を満たせませんでした。そこでAWSは、CreateInferenceComponent APIにSchedulingConfigパラメータを追加し、ICコピーの配置を細かく制御できるようにしました。
SchedulingConfigの仕組み
SchedulingConfigには、AZ間の分布を制御するAvailabilityZoneBalanceと、各AZ内のインスタンス配置を指定するPlacementStrategyの2つのサブパラメータがあります。AvailabilityZoneBalanceは、AZ間でコピーを均等に分散し、MaxImbalanceで許容できる不均衡量を設定します。PlacementStrategyは、SPREADとBINPACKの2つから選択でき、SPREADはできるだけ多くのインスタンスに分散させて障害の影響を隔離し、BINPACKは少数のインスタンスにまとめてGPU利用効率を高めます。
例えば、2つのAZにそれぞれ2つのインスタンスがある環境で、4つのICコピーをSPREADで配置する場合、AZごとに2コピーずつ配置されます。MaxImbalanceを1に設定すると、AZ間のコピー数の差は最大1つまで許容されます。軽量なモデルで2コピーだけを配置する場合は、MaxImbalanceを0にすることで、厳密に1コピーずつに分けることも可能です。
スケーリングとリバランス
スケールアウト時には、SageMakerは設定されたSchedulingConfigに従ってAZのバランスを保つように新しいコピーを配置します。スケールイン時には、AZ間で対称にコピーを削除します。ただし、CopyCountを1に設定すると、単一のAZにしか配置されず、2-AZコンプライアンスを即座に破るため、高可用性が重要なモデルでは避けるべきです。
長期的な運用では、スケールインとスケールアウトを繰り返すと配置の偏りが生じることがあります。このため、エンドポイントのScaleInPolicyにCONSOLIDATION戦略を設定すると、バックグラウンドのプロセスが定期的にICコピーを再配置し、AZバランスを保ちながらアイドル状態のインスタンスを解放します。
実装上の考慮点と監視
AZバランスの取れた配置を確実にするには、オンデマンド容量予約(ODCR)を利用することが推奨されます。Salesforceは各AZにGPU容量を事前予約しています。一方、配置アルゴリズムは部分配置をサポートしており、容量制約で完全なバランスが取れない場合でも、利用可能なインスタンスに配置します。ただし、その場合はバランスが最適でなくなることがあります。
SageMaker AI Insightsを使用すると、AZスキューやICコピー数などのメトリクスから配置の健全性を監視できます。これにより、スケーリングイベント後にバランスが崩れた場合も検出しやすくなります。AWSは今後、この監視機能に関する詳細なブログを公開する予定です。
Salesforceの成果
SalesforceはこのIC配置機能を導入したことで、全モデルにおいて2-AZサポートを満たすことができました。また、単一のインスタンス障害やAZ障害でモデルが完全に停止するリスクを排除しました。コスト削減効果は維持され、SPREAD配置によりインスタンス間のフォールトアイソレーションを最大限に高めています。
さらに、スケールイン・スケールアウト運用でもMulti-AZ配置が維持されるため、継続的な高可用性が確保できます。この事例は、SageMaker AIを利用する他の企業にとっても、コスト効率と高可用性を両立するための参考になるでしょう。
| 項目 | デフォルト配置 | SchedulingConfig配置 |
|---|---|---|
| 配置の最適化対象 | 各配置操作を独立に最適化 | 最終的な配置全体を考慮 |
| AZバランス | 考慮しない(不均衡が生じうる) | AvailabilityZoneBalanceで制御 |
| AZ内の配置 | インスタンスに均等配置(AZ考慮なし) | SPREAD/BINPACKで制御 |
| 障害耐性 | 単一障害点が生じる可能性 | SPREADでフォールトアイソレーション |
| コスト効率 | コスト最適化(GPU共有) | SPREADでも共有継続、BINPACKで効率向上 |
For Salesforce, the ICs delivered an 8x reduction in infrastructure costs by co-hosting multiple models on shared GPUs.
Salesforceにとって、ICは共有GPU上で複数のモデルをホストすることで、インフラコストを8分の1に削減した。
今後の見通し
この配置機能はSageMaker AIの一部として提供されており、今後は観測可能性の向上や、より自動化されたリバランスが進む可能性があります。また、部分配置のサポートにより容量制約がある環境でも利用できますが、最適なバランスを保つにはODCRなどの計画が引き続き重要になるでしょう。企業がMulti-AZ HAを導入する際には、この機能の挙動を十分にテストし、監視メトリクスを活用して継続的に調整することが求められます。将来的にはより詳細な観測機能の公開が予定されており、実運用での判断材料が増えるとみられます。
日本の開発者・IT企業にとっての意味
日本のIT企業がAWS上でAI推論サービスを運用する際、コスト削減と高可用性の両立は重要な課題です。Inference ComponentsによるGPU共有はコストを大幅に削減できますが、デフォルト配置ではMulti-AZ耐障害性が保証されませんでした。今回のSchedulingConfigを利用すれば、配置戦略を明示的に制御し、2AZ要件などの社内基準に合わせた運用が可能になります。また、SPREADとBINPACKを使い分けることで、モデルの重要度に応じて耐障害性とGPU利用効率のバランスを調整できます。監視メトリクスを活用し、スケーリングイベント後のAZバランスを継続的に確認する実務も重要になるでしょう。
気になる点
- SchedulingConfigはどのAPIから利用できますか?
- CreateInferenceComponent APIまたはUpdateInferenceComponent APIから指定できます。SchedulingConfigパラメータの中にAvailabilityZoneBalanceとPlacementStrategyを設定します。
- CopyCountはいくつに設定すればよいですか?
- 高可用性が求められるモデルでは、2つ以上に設定してください。CopyCount=1は1つのAZにしか配置されないため、2-AZ要件を満たせません。
- 容量不足でAZバランスが崩れる場合はどうなりますか?
- 配置アルゴリズムは部分配置をサポートしており、利用可能なインスタンスに配置します。ただし、バランスは最適にならない場合があるため、ODCRで容量を確保することが推奨されています。
用語解説
- Inference Components (IC)
- 複数のモデルを共有GPU上でホストし、インフラコストを削減するSageMaker AIの機能。
- AvailabilityZoneBalance
- ICのコピーを複数のAZに均等に分散させるためのSchedulingConfigのサブパラメータ。
- PlacementStrategy
- AZ内のインスタンスレベルでの配置戦略。SPREADとBINPACKがある。
- SPREAD
- できるだけ多くのインスタンスにコピーを分散させ、障害の影響を最小化する配置戦略。
- BINPACK
- コピーを少数のインスタンスにまとめることでGPU利用効率を高める配置戦略。
- ODCR
- オンデマンド容量予約。特定のAZ内でインスタンス容量を事前予約する仕組み。
出典
Spreading the load: How Salesforce met Multi-AZ HA with SageMaker Inference Components
AI導入も顧問も、お任せください
何から手をつけるか、どこまでAIに任せるか。自社の業務に合わせて整理し、導入から運用まで伴走します。相談だけでも構いません。
AI導入について相談する