本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon SageMaker AI 為即時推論提供低延遲,同時使用多可用區域部署維持高可用性和彈性。應用程式延遲由兩個主要元件組成:基礎架構或額外負荷延遲以及模型推論延遲。減少額外負荷延遲開啟了新的可能性,例如部署更複雜、更深入且精確的模型,或將整體應用程式分割為可擴充且可維護的微服務模組。您可以使用 部署,透過 SageMaker AI 減少即時推論的 AWS PrivateLink 延遲。透過 AWS PrivateLink,您可以使用界面 VPC 端點,以可擴展的方式從虛擬私有雲端 (VPC) 私下存取所有 SageMaker API 操作。介面 VPC 端點是包含私有 IP 地址的彈性網路介面,用於所有 SageMaker API 呼叫的彈性網路介面。
根據預設,具有 2 個或更多執行個體的 SageMaker AI 端點會部署在至少 2 個 AWS 可用區域 (AZs) 中,而任何 AZ 中的執行個體都可以處理調用。這會導致一個或多個 AZ “跳轉” 造成額外負荷延遲。其 privateDNSEnabled
選項設定為 true
的 AWS PrivateLink 部署可藉由達成兩個目標來減輕此問題:
-
它會將所有推論流量保留在您的 VPC 中。
-
它會將調用流量保留在與使用 SageMaker 執行期時產生它的用戶端相同的 AZ 中。這樣可以避免 AZ 之間的 “跳轉”,從而減少額外負荷延遲。
本指南的以下各節示範如何透過 AWS PrivateLink 部署降低即時推論的延遲。
部署 AWS PrivateLink
若要部署 AWS PrivateLink,請先建立 VPC 的介面端點,從中連線至 SageMaker AI 端點。請依照使用介面 VPC 端點存取 AWS 服務中的步驟來建立介面端點。建立端點時,請在主控台介面中選取下列設定:
-
選擇其他設定下的啟用 DNS 名稱核取方塊
-
選取要與 SageMaker AI 端點搭配使用的適當安全群組和子網路。
此外,請確定 VPC 已開啟 DNS 主機名稱。如需如何變更 VPC DNS 屬性的詳細資訊,請參閱檢視和更新 VPC 的 DNS 屬性。
在 VPC 中部署 SageMaker AI 端點
若要達到低額外負荷延遲,請使用您在部署時指定的相同子網路來建立 SageMaker AI 端點 AWS PrivateLink。這些子網路應該符合用戶端應用程式的 AZ,如下列程式碼片段所示。
model_name = '<the-name-of-your-model>'
vpc = 'vpc-0123456789abcdef0'
subnet_a = 'subnet-0123456789abcdef0'
subnet_b = 'subnet-0123456789abcdef1'
security_group = 'sg-0123456789abcdef0'
create_model_response = sagemaker_client.create_model(
ModelName = model_name,
ExecutionRoleArn = sagemaker_role,
PrimaryContainer = {
'Image': container,
'ModelDataUrl': model_url
},
VpcConfig = {
'SecurityGroupIds': [security_group],
'Subnets': [subnet_a, subnet_b],
},
)
上述程式碼片段假設您已遵循中開始之前的步驟。
叫用 SageMaker AI 端點
最後,指定 SageMaker Runtime 用戶端並叫用 SageMaker AI 端點,如下列程式碼片段所示。
endpoint_name = '<endpoint-name>'
runtime_client = boto3.client('sagemaker-runtime')
response = runtime_client.invoke_endpoint(EndpointName=endpoint_name,
ContentType='text/csv',
Body=payload)
如需有關端點組態的詳細資訊,請參閱部署模型以進行即時推論。