隨着組織在生產中擴展生成式 AI 工作負載,確保可靠的 GPU 計算已成為最持久的運營挑戰之一。大型語言模型 (LLM) 和多模態架構需要特定的實例類型,當容量不可用時,端點在服務一個請求之前就會失敗。
在 Amazon SageMaker AI 上構建實時推理端點意味着在創建時承諾使用單一實例類型。當該類型容量不足時,端點無法達到運行狀態。您更新配置,選擇不同的實例類型,然後重試,重複循環直到配置嘗試成功。
今天,Amazon SageMaker AI 為新的和現有的推理端點引入了容量感知實例池。您定義優先級列表的實例類型,當容量在創建、擴展和縮減期間受到限制時,SageMaker AI 會自動遍歷您的列表。您的端點可以在可用的 AI 基礎設施上自動配置,無需手動干預。此功能適用於單模型端點、基於推理組件的端點和異步推理端點。
本文介紹了實例池的工作原理以及如何開始使用,無論是創建新端點還是遷移現有端點。
問題
當您將模型部署到 SageMaker AI 推理端點(無論是實時還是異步)時,您指定單一實例類型。如果該類型沒有可用容量,端點創建失敗。此限制出現在端點生命週期的每個階段。
- 端點創建因容量而失敗。當您首選的實例類型不可用時,SageMaker AI 返回容量不足錯誤。要獲得運行中的端點,需要手動迭代替代方案,每次嘗試都花費大量時間才能知道結果。
- 自動縮放無法增長羣組。當擴展事件觸發且您的實例類型容量不足時,自動縮放器會無限重試同一類型。流量持續增加,而端點保持在當前大小。
- 縮減沒有優先級意識。使用單一實例類型,沒有首選與回退硬件的概念。每個實例都可以被移除,沒有區別。
- 可觀測性聚合且不可操作。Amazon CloudWatch 指標在端點級別彙總。在調查延遲或容量問題時,指標表明有問題,但不知道是哪個實例類型導致的。
工作原理:基於優先級的實例池
您在端點配置中定義一個稱為實例池的排序實例類型列表。每當容量受限時,SageMaker AI 會自動遍歷該列表。
- 您的端點上線。SageMaker AI 首先嚐試您的首選實例類型。如果容量不可用,它會立即嘗試第二選擇,然後是第三選擇。無需手動重試。您的端點可在幾分鐘內在第一個可用的 AI 基礎設施上達到 InService 狀態。
- 您的端點保持運行。當自動縮放觸發且您首選的實例類型受限時,SageMaker AI 會在優先級列表中的下一個可用類型上進行擴展,從而保持流量流動。
- 您的羣組趨向於首選硬件。在縮減期間,SageMaker AI 首先移除最低優先級(回退)實例。在後續擴展事件中,它再次首先嚐試最高優先級類型。隨着首選硬件變得可用,您的羣組自然地隨時間向它回移,無需手動干預。
- 您看到一切。每個現有的 CloudWatch 指標現在都包含一個 InstanceType 維度,因此您可以跟蹤單個端點內每個實例類型的延遲、吞吐量、GPU 利用率和實例計數。
要了解更多信息,請參閲 Amazon SageMaker AI 文檔並探索 GitHub 上的示例筆記本。
每個實例類型的正確模型
回退實例類型通常在 GPU 內存、計算能力和架構上有所不同。為高內存多 GPU 實例優化的模型不一定能在較小的單 GPU 回退上運行。有兩種方法可以將池列表中的每個實例類型與正確配置的模型匹配。
選項 1:自帶優化模型
如果您已經知道實例類型目標,請為每個目標準備模型工件。對於您的高端主實例,您可能會跨多個 GPU 使用張量並行。對於中端回退,您可以應用推測解碼來加速推理。對於最低優先級的回退,您可以使用 INT4 量化以適應較小的內存預算。
為每個配置創建一個單獨的 SageMaker AI 模型,並使用 ModelNameOverride 在每個 InstancePools 條目中引用它(對於單模型端點)或在每個實例類型的 Specifications 中引用(對於基於推理組件的端點)。當 SageMaker AI 回退到較低優先級的池時,它會部署您為該硬件準備的模型。
選項 2:使用 SageMaker AI 推理建議
如果您不想手動優化每個硬件目標,SageMaker AI 推理建議可以為您生成特定於硬件的配置。提供您的基礎模型,SageMaker AI 會使用推測解碼和量化等技術在您的目標實例類型中生成優化的配置。
建議作業為每個目標實例類型返回一個結果。每個結果在 AIRecommendationModelDetails 響應中包含一個 ModelPackageArn 和一個 InferenceSpecificationName,標識該特定硬件的配置。您使用這兩個字段為每個結果創建一個 SageMaker AI 模型,然後在其對應的池條目中使用 ModelNameOverride 引用它——與選項 1 相同的模式,服務處理優化工作。
混合羣組的自動縮放
自動縮放遵循您在創建時定義的相同優先級邏輯。擴展首先嚐試最高優先級的池,如果容量不可用則回退到下一個池。縮減首先移除最低優先級的實例,在羣組收縮時保留您的首選硬件。
構建加權縮放指標
因為您的羣組包含具有不同吞吐量的實例類型,默認的聚合指標可能會錯誤地表示實際使用情況。考慮一個處理 18 個併發請求的 p5 實例和一個處理 7 個的 g6,將這些原始數字平均為 12.5 並不能準確反映任一類型上的負載。
您現在可以使用 CloudWatch 指標數學基於每種類型的利用率比率構建加權指標。每個項將類型觀察到的併發度除以其最大容量,產生一個介於 0.0–1.0 之間的值。平均這些比率給出羣組級別的使用信號,與 TargetValue 相同的 0.0–1.0 範圍。將 TargetValue 設置為 0.7 意味着:當加權平均值超過羣組中所有實例類型容量的 70% 時進行擴展。
監控您的羣組
所有現有的 CloudWatch 指標現在都包含一個新的 InstanceType 維度:ModelLatency、ConcurrentRequestsPerModel、GPUUtilization、InstanceCount 和 InvocationsPerInstance——按硬件類型在單個端點內細分。您可以構建儀表板和警報,獨立跟蹤每個實例類型。
DescribeEndpoint 返回每個池的當前實例計數,因此您始終知道您的羣組組成。
流量路由
對於具有實例池的端點,我們建議通過在生產變體中設置 RoutingConfig 來啓用最少未完成請求 (LOR) 路由。LOR 將每個傳入請求路由到每個模型副本中飛行請求最少的實例。因為高容量實例處理請求更快,它們更快地排空隊列並在穩態下保持較低的飛行計數。這意味着它們自然接收比例更高的流量,無需任何手動權重配置。
更新和回滾
同時支持藍綠部署和滾動部署。
藍綠部署在轉移流量之前使用相同的基於優先級的回退邏輯配置一個完整的新(綠色)羣組。如果健康檢查通過,流量切換。如果失敗,自動回滾保留您的藍色羣組,並且您的端點在整個過程中保持 InService。
滾動部署以可配置的批次(每次 5-50% 的實例)更新您的羣組,比完整的藍綠羣組需要更少的額外容量——對於大模型或高需求的 GPU 實例類型尤其有價值。SageMaker AI 在配置每個新批次時應用基於優先級的回退邏輯。如果在烘烤期間 CloudWatch 警報觸發,流量自動回滾。
先決條件
在開始之前,請確保您擁有:
- 具有 sagemaker:CreateEndpointConfig、sagemaker:CreateEndpoint 和 sagemaker:UpdateEndpoint IAM 權限的 AWS 賬户
- 至少一個帶有 Amazon S3 中工件的 SageMaker 模型
- Boto3 版本 1.43.1 或更高(用於 Python SDK 中的 InstancePools 支持)
- (可選)每個目標實例類型的獨立優化模型工件,或來自 SageMaker AI 推理建議的 ModelPackage
實例池支持適用於所有商業 AWS 區域。您可以通過 AWS 管理控制台、AWS 命令行界面 (AWS CLI) 或 AWS SDK 開始使用。
配置端點的工作流程
有兩種方法可以配置實例池:用於新的 Amazon SageMaker AI 端點或用於您現有的 Amazon SageMaker AI 端點。
如果你是創建新端點,以下圖表解釋了工作流程:
- 選擇您的實例類型並分配優先級(1 為最高)。
- 為每個實例類型準備優化模型,或運行 SageMaker AI 推理建議生成它們。
- 使用列出您優先級的 InstancePools 創建端點配置。
- 創建端點。SageMaker AI 自動處理容量解析。
- 使用新的 InstanceType 維度設置每類型 CloudWatch 監控。
如果你是遷移現有端點,以下圖表解釋了工作流程:
- 創建新的端點配置:將 InstanceType 替換為 InstancePools,將您當前的實例類型保持在 Priority: 1。
- 調用 UpdateEndpoint,您的端點在藍綠過渡期間保持 InService。
- 可選地添加加權利用率縮放指標,如果您的回退實例類型在吞吐量上差異顯著。
設置
採用實例池需要對端點配置進行一個字段更改:將 ProductionVariant 中的單個 InstanceType 字段替換為 InstancePools 列表。您的模型、縮放策略和監控儀表板繼續工作,無需修改。
遷移現有端點
之前:單一實例類型:
import boto3 sm = boto3.client("sagemaker")
sm.create_endpoint_config( EndpointConfigName="my-config", ProductionVariants=[{ "VariantName": "primary", "ModelName": "my-llm", "InitialInstanceCount": 2, "InstanceType": "ml.g6e.48xlarge", # 單一類型 — 無容量回退 }], )
之後:優先級排序的實例池:
sm.create_endpoint_config( EndpointConfigName="my-config-v2", ProductionVariants=[{ "VariantName": "primary", "ModelName": "my-llm", "InitialInstanceCount": 2, "VariantInstanceProvisionTimeoutInSeconds": 1200, # 見下面的説明 "InstancePools": [ {"InstanceType": "ml.g6e.48xlarge", "Priority": 1}, # 您當前的類型 {"InstanceType": "ml.g6.48xlarge", "Priority": 2}, # 相同系列,第一個回退 {"InstanceType": "ml.p4d.24xlarge", "Priority": 3}, # 更廣泛的回退 ], }], )
您的端點在藍綠過渡期間保持 InService。
sm.update_endpoint( EndpointName="my-endpoint", EndpointConfigName="my-config-v2", )
注意:VariantInstanceProvisionTimeoutInSeconds 是一個與實例池支持一起引入的新字段。它設置了從池中獲取實例的總窗口:SageMaker AI 在此窗口內繼續重試容量不足錯誤,並在超時後移動到下一個池。有效範圍是 300-3600 秒。1200 秒對於大型 GPU 實例類型來説是合理的起始值。此計時器僅涵蓋實例獲取,模型下載和容器啓動時間由現有的 ModelDataDownloadTimeoutInSeconds 和 ContainerStartupHealthCheckTimeoutInSeconds 字段分別管理。要在每個實例類型上部署不同的優化模型,請將 ModelNameOverride 添加到任何池條目。您可以在上一節中看到模型配置選項。
基於推理組件的端點
sm.create_inference_component( InferenceComponentName="my-ic", EndpointName="my-heterogeneous-endpoint", VariantName="primary", Specifications=[ { "InstanceType": "ml.p5.48xlarge", "ModelName": "my-model-p5-optimized", "ComputeResourceRequirements": { "NumberOfAcceleratorDevicesRequired": 8, "MinMemoryRequiredInMb": 65536, }, }, { "InstanceType": "ml.g6.48xlarge", "ModelName": "my-model-g6-optimized", "ComputeResourceRequirements": { "NumberOfAcceleratorDevicesRequired": 8, "MinMemoryRequiredInMb": 32768, }, }, ], RuntimeConfig={"CopyCount": 4}, )
異步推理端點
實例池同樣適用於異步推理端點。在您的 CreateEndpointConfig 調用中添加 AsyncInferenceConfig 塊以及 InstancePools 定義——基於優先級的配置和回退邏輯同樣適用。這對於縮放到零實例的異步工作負載特別有用:當端點重新向上縮放以處理排隊的請求時,SageMaker AI 首先使用您可用的最高優先級池進行配置,為您提供無需手動干預的彈性冷啓動行為。
結論
Amazon SageMaker AI 實例池允許您為推理端點定義優先級列表的實例類型,SageMaker AI 根據該順序自動管理容量。
在端點創建、擴展和縮減期間,SageMaker AI 會遍歷您首選的實例類型,因此當您的首選硬件不可用時,您無需手動重試部署。開始使用很簡單:將端點配置中的 InstanceType 替換為 InstancePools,然後調用 UpdateEndpoint。您現有的模型、自動縮放策略和監控儀表板無需重大更改即可繼續工作。
通過每實例類型的 CloudWatch 指標和來自 DescribeEndpoint 的詳細池計數,您還可以清晰實時地瞭解哪些實例類型正在為您的羣組提供動力。無論您是在優化成本、處理 GPU 容量限制,還是構建可以從零冷啓動的彈性異步管道,實例池都為您提供了靈活性和自動化,使 ML 推理運行更順暢,運營開銷更低。
此功能今天可用,無需額外費用。您按與標準單類型端點相同的費率支付實際配置的實例類型。要了解更多信息,請參閲 Amazon SageMaker AI 文檔並探索 GitHub 上的示例筆記本。