

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 低延迟实时推理 Amazon PrivateLink


 Amazon SageMaker AI 为实时推断提供低延迟，同时使用多可用区部署保持高可用性和弹性。应用程序延迟由两个主要部分组成：基础设施或网络延迟以及模型推理延迟。减少开销延迟创造了新的可能性，例如部署更复杂、更深入、更精确的模型，或者将单体应用程序拆分为可扩展和可维护的微服务模块。您可以使用 Amazon PrivateLink 部署缩短 SageMaker AI 实时推断的延迟。借助 Amazon PrivateLink，您可以使用接口 VPC 终端节点，以可扩展的方式私密访问虚拟私有云 (VPC) 中的所有 SageMaker API 操作。接口 VPC 终端节点是子网中的弹性网络接口，其私有 IP 地址可作为所有 SageMaker API 调用的入口点。

默认情况下，具有 2 个或更多实例的 SageMaker AI 终端节点部署在至少 2 个 Amazon 可用区 (AZs) 中，并且任何可用区中的实例都可以处理调用。这会导致一个或多个可用区“跳跃”，从而造成开销延迟。将 `privateDNSEnabled` 选项设置为 `true` 的 Amazon PrivateLink 部署通过实现两个目标来缓解这个问题：
+ 它将所有推理流量保留在您的 VPC 内。
+ 使用 Runt SageMaker ime 时，它会将调用流量与发起调用流量的客户端保持在同一个可用区中。这样可以避免在 AZs 减少开销延迟之间的 “跳跃”。

本指南的以下部分演示了如何通过 Amazon PrivateLink 部署减少实时推理的延迟。

**Topics**
+ [

## 部署 Amazon PrivateLink
](#deploy-privatelink)
+ [

## 在 VPC 中部署 SageMaker AI 终端节点
](#deploy-sagemaker-inference-endpoint)
+ [

## 调用 SageMaker AI 终端节点
](#invoke-sagemaker-inference-endpoint)

## 部署 Amazon PrivateLink


要进行部署 Amazon PrivateLink，请先为连接到 SageMaker AI 终端节点的 VPC 创建接口终端节点。请按照[使用接口 VPC 终端节点访问 Amazon 服务](https://docs.amazonaws.cn/vpc/latest/privatelink/create-interface-endpoint.html)中的步骤创建接口终端节点。创建端点时，请在控制台界面中选择以下设置：
+ 选中**其他设置**下的**启用 DNS 名称**复选框
+ 选择要与 SageMaker AI 终端节点一起使用的相应安全组和子网。

此外，请确保 VPC 已启用 DNS 主机名。有关如何更改 VPC 的 DNS 属性的更多信息，请参阅[查看和更新 VPC 的 DNS 属性](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)。

## 在 VPC 中部署 SageMaker AI 终端节点


要实现低开销延迟，请使用您在部署 Amazon PrivateLink时指定的相同子网创建 SageMaker AI 终端节点。这些子网应与您的客户端应用程序相匹配，如以下代码片段所示。 AZs 

```
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 终端节点


最后，指定 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)
```

有关端点配置的更多信息，请参阅[为实时推理部署模型](realtime-endpoints-deploy-models.md)。