Amazon SageMaker AI のマルチモデルエンドポイントをデプロイする際の問題をトラブルシューティングしたいです。
解決策
コールドスタートや遅延の問題により、エンドポイントの予測時間が長くなると、マルチモデルエンドポイントのパフォーマンスが影響を受ける可能性があります。内部サーバーの例外もパフォーマンスに影響する可能性があります。
コールドスタートと遅延に関する問題
マルチモデルエンドポイントがモデルを短期間に連続して呼び出すと、SageMaker AI はそのモデルを、エンドポイントのメモリとディスクから削除します。エンドポイントが次回にモデルを呼び出す際、モデルがインスタンスのメモリエンドポイントに読み込まれるときにコールドスタートが発生します。
コールドスタートや遅延の問題を防ぐには、次の手順を実行します。
-
タイムセンシティブなモデルでは、単一のモデルでリアルタイム推論を使用します。
-
タイムセンシティブではないモデルでは、多くのモデルをメモリに保持するのに十分なメモリを備えたインスタンスタイプを選択します (例: r5 インスタンス)。または、MemoryUtilization 係数に基づいてスケーリングする自動スケーリングを実装します。
例
response = client.put_scaling_policy(
PolicyName='MemoryUtilisation-ScalingPolicy',
ServiceNamespace='sagemaker',
ResourceId=resource_id,
ScalableDimension='sagemaker:variant:DesiredInstanceCount',
PolicyType='TargetTrackingScaling',
TargetTrackingScalingPolicyConfiguration={
'TargetValue': 80.0,
'CustomizedMetricSpecification':
{
'MetricName': 'MemoryUtilization',
'Namespace': '/aws/sagemaker/Endpoints',
'Dimensions': [
{'Name': 'EndpointName', 'Value': endpoint_name },
{'Name': 'VariantName','Value': 'AllTraffic'}
],
'Statistic': 'Average',
'Unit': 'Percent'
},
'ScaleInCooldown': 600,
'ScaleOutCooldown': 300
}
)
-
エンドポイント設定をデプロイする前に、アクセス頻度が高いすべてのモデルを収容するのに十分な容量で VolumeSizeInGB サイズを指定してください。
-
テストリクエストをターゲットモデルに送信し、モデルの一部をエンドポイントのメモリに無期限に保持します。
-
マルチモデルエンドポイントのパフォーマンスを最適化するには、効率と遅延時間のバランスが取れたモデルアーティファクトを選択することをおすすめします。システム全体の効果と信頼性を最大化するには、トラフィックをモデル全体に均等に分散してください。
-
エンドポイントのパフォーマンスを最適化するには、ModelCacheHit や ModelLoadingWaitTime などの主要 Amazon CloudWatch メトリクスを確認します。ModelCacheHit 率が高く、ModelLoadingWaitTime 率が低い場合は、エンドポイントは効率的に呼び出しを管理しています。
内部サーバー例外
メモリ不足が原因でマルチモデルエンドポイントがモデルを読み込めない場合、内部サーバー例外が発生する可能性があります。たとえば、CPU メモリが 4 GB しかない ml.t3.medium インスタンスに 14 GB モデルをデプロイすると、エラーが発生します。エラーを防ぐには、実行時に複数のモデルに対応するのに十分なメモリを備えたエンドポイントインスタンスを選択してください。