

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 的低延遲即時推論 AWS PrivateLink
<a name="realtime-endpoints-privatelink"></a>

 Amazon SageMaker AI 為即時推論提供低延遲，同時使用多可用區域部署維持高可用性和彈性。應用程式延遲由兩個主要元件組成：基礎架構或額外負荷延遲以及模型推論延遲。減少額外負荷延遲開啟了新的可能性，例如部署更複雜、更深入且精確的模型，或將整體應用程式分割為可擴充且可維護的微服務模組。您可以使用 AWS PrivateLink 部署，減少 SageMaker AI 即時推論的延遲。透過 AWS PrivateLink，您可以使用界面 VPC 端點，以可擴展的方式從虛擬私有雲端 (VPC) 私下存取所有 SageMaker API 操作。介面 VPC 端點是包含私有 IP 地址的彈性網路介面，用於所有 SageMaker API 呼叫的彈性網路介面。

根據預設，具有 2 個或更多執行個體的 SageMaker AI 端點會部署在至少 2 個 AWS 可用區域 (AZ) 中，而任何 AZ 中的執行個體都可以處理調用。這會導致一個或多個 AZ “跳轉” 造成額外負荷延遲。其 `privateDNSEnabled` 選項設定為 `true` 的 AWS PrivateLink 部署可藉由達成兩個目標來減輕此問題：
+ 它會將所有推論流量保留在您的 VPC 中。
+ 它會在使用 SageMaker 執行時期時，將調用流量保持在與產生調用流量的用戶端相同的可用區域中。這樣可以避免 AZ 之間的 “跳轉”，從而減少額外負荷延遲。

本指南的以下各節示範如何透過 AWS PrivateLink 部署降低即時推論的延遲。

**Topics**
+ [部署 AWS PrivateLink](#deploy-privatelink)
+ [在 VPC 雲端中部署 SageMaker AI 端點](#deploy-sagemaker-inference-endpoint)
+ [調用 SageMaker AI 端點。](#invoke-sagemaker-inference-endpoint)

## 部署 AWS PrivateLink
<a name="deploy-privatelink"></a>

若要部署 AWS PrivateLink，請先為連線至 SageMaker AI 端點的 VPC 建立介面端點。請依照[使用介面 VPC 端點存取 AWS 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)中的步驟來建立介面端點。建立端點時，請在主控台介面中選取下列設定：
+ 選擇**其他設定**下的**啟用 DNS 名稱**核取方塊
+ 選取要與 SageMaker AI 端點搭配使用的適當安全群組和子網路。

此外，請確定 VPC 已開啟 DNS 主機名稱。如需如何變更 VPC DNS 屬性的詳細資訊，請參閱[檢視和更新 VPC 的 DNS 屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)。

## 在 VPC 雲端中部署 SageMaker AI 端點
<a name="deploy-sagemaker-inference-endpoint"></a>

若要達到低額外負荷延遲，請使用您在部署 AWS PrivateLink時指定的相同子網路建立 SageMaker AI 端點。這些子網路應該符合用戶端應用程式的 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],
    },
)
```

上述程式碼片段假設您已遵循中[開始之前](realtime-endpoints-deploy-models.md#deploy-prereqs)的步驟。

## 調用 SageMaker AI 端點。
<a name="invoke-sagemaker-inference-endpoint"></a>

最後，指定 SageMaker 執行時期用戶端，並調用 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)
```

如需有關端點組態的詳細資訊，請參閱[部署用於即時推論的模型](realtime-endpoints-deploy-models.md)。