SageMaker HyperPod 推理操作符简化安装指南
概述
Amazon SageMaker HyperPod 为 AI 全生命周期(实验、训练、推理)提供端到端的解决方案。HyperPod Inference Operator 是一个 Kubernetes 控制器,负责在 HyperPod 集群上管理模型的部署和生命周期。它提供了灵活的部署接口(kubectl、Python SDK、SageMaker Studio UI、HyperPod CLI)、基于动态资源分配的高级自动伸缩功能,以及全面的可观测性(跟踪首令牌时间、延迟、GPU利用率等关键指标)。
在 SRE 实践中,基础设施的可管理性和部署的可靠性至关重要。传统在 Kubernetes 上部署 AI 推理负载的过程涉及复杂的 Helm 图表、IAM 配置、依赖管理和手动升级,耗时数小时。将 Inference Operator 升级为 EKS Add-on 模式,实现了从 SageMaker 控制台的一键安装和托管升级,极大简化了运维复杂度,使 SRE 团队能够更专注于保障服务的可靠性目标(SLO),而非底层基础设施的配置。
核心概念
1. Inference Operator 与 EKS Add-on 模式
- Inference Operator:一个运行在 Kubernetes 上的控制器,负责处理
InferenceEndpointConfig或JumpStartModel等自定义资源(CR),管理模型部署、扩缩容、节点调度等。 - EKS Add-on:一种由 AWS 托管、与 EKS 集群紧密集成的扩展机制。它简化了第三方软件(如负载均衡器、存储驱动)的安装、升级和管理。将 Inference Operator 实现为 EKS Add-on,意味着其版本管理、补丁更新和回滚都由 AWS 和 EKS 控制平面处理,符合 SRE 对变更管理和故障恢复的要求。
2. 高级部署功能
- 多实例类型部署:允许在配置中指定一个带优先级的实例类型列表(例如
["ml.p4d.24xlarge","ml.g5.24xlarge"])。Kubernetes 调度器使用nodeAffinity规则,按优先级顺序尝试调度。当首选实例类型不可用时,自动回退到次优选择,这提升了部署成功率和资源利用效率。 - 原生节点亲和性:直接暴露 Kubernetes 的
nodeAffinity字段,允许 SRE/平台团队进行精细的调度控制,例如排除 Spot 实例、偏好特定可用区或定位具有自定义标签的节点,这对于实现高可用性和成本优化至关重要。
3. 依赖管理 Operator 依赖于多个 Kubernetes 组件,默认包含但可按需禁用:
- cert-manager:管理 TLS 证书。
- S3/FSx CSI 驱动:提供对 S3 和 FSx for Lustre 的持久化存储访问。
- AWS Load Balancer Controller:管理 AWS 负载均衡器。
- KEDA Operator:实现基于事件的自动伸缩(如根据队列长度或 GPU 利用率)。
实践
安装方法
方法一:通过 SageMaker 控制台安装(推荐) 这是最简化的体验,提供两种选项:
- 快速安装:自动创建所有必要资源(IAM 角色、S3 存储桶、依赖 Add-on)并使用优化默认值部署 Operator。
- 自定义安装:允许复用现有资源(如 IAM 角色、S3 存储桶)或自定义配置。
安装步骤如下:
- 导航至 SageMaker 控制台 -> HyperPod 集群 -> 集群管理。
- 选择目标集群。
- 转到 推理 选项卡,选择 快速安装 或 自定义安装。
- 对于 自定义安装,指定现有资源。
- 点击 安装 开始自动化过程。
- 验证安装状态:
kubectl get pods -n hyperpod-inference-system # 或 aws eks describe-addon --cluster-name <CLUSTER-NAME> --addon-name amazon-sagemaker-hyperpod-inference --region <REGION>
方法二:通过 EKS API (CLI) 安装 适用于偏好命令行工作流的团队,但需手动预先创建所有先决条件资源(IAM 角色、S3 存储桶、VPC 端点等)。
aws eks create-addon \
--cluster-name my-hyperpod-cluster \
--addon-name amazon-sagemaker-hyperpod-inference \
--addon-version v1.0.0-eksbuild.1 \
--configuration-values '{
"executionRoleArn": "arn:aws:iam::ACCOUNT-ID:role/SageMakerHyperPodInference-inference-role",
"tlsCertificateS3Bucket": "hyperpod-tls-certificate-bucket",
"hyperpodClusterArn": "arn:aws:sagemaker:REGION:ACCOUNT-ID:cluster/CLUSTER-ID",
"alb": { "serviceAccount": { "create": true, "roleArn": "arn:aws:iam::ACCOUNT-ID:role/alb-controller-role" } },
"keda": { "auth": { "aws": { "irsa": { "roleArn": "arn:aws:iam::ACCOUNT-ID:role/keda-operator-role" } } } }
}' \
--region us-west-2
方法三:通过 Terraform (IaC) 安装
适用于使用基础设施即代码管理环境的团队。在 custom.tfvars 文件中启用模块:
create_hyperpod_inference_operator_module = true
Terraform 模块会处理所有依赖项的安装。可通过变量(如 enable_cert_manager = false)禁用已存在的组件。
模型部署示例
安装完成后,可通过自定义资源部署模型:
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: InferenceEndpointConfig
metadata:
name: lmcache-test-1
namespace: default
spec:
replicas: 13
modelName: Llama-3.1-8B-Instruct
instanceTypes: ["ml.p4d.24xlarge","ml.g5.24xlarge","ml.g5.8xlarge"] # 多实例类型优先级列表
清理与迁移
- 卸载操作符:可通过 SageMaker 控制台点击“移除”,或使用 AWS CLI
aws eks delete-addon。 - 删除模型:
kubectl delete inferenceendpointconfig <name>或kubectl delete jumpstartmodel <name>。 - 从 Helm 迁移:存在自动化迁移脚本,支持自动发现现有 Helm 配置、安全地缩放旧部署、安装新 Add-on,并具备回滚能力,确保零停机迁移。
SRE 要点
与可靠性的关联
- 降低部署风险:一键式、托管的安装和升级流程,消除了因手动配置 Helm 图表或 IAM 策略错误导致的人为失误,这是事件响应中常见的根本原因之一。
- 增强弹性:多实例类型部署和节点亲和性功能,使模型部署在面对底层实例容量波动时更具弹性,有助于维持服务的可用性目标(SLA)。
- 简化灾难恢复:作为 EKS Add-on,其状态由控制平面管理,集群重建或恢复后可快速重新安装,缩短恢复时间目标(RTO)。
最佳实践与常见反模式
- 最佳实践:
- 使用 IaC:通过 Terraform 等工具管理安装配置,确保环境一致性。
- 利用自定义安装:在生产环境中,复用已通过审核的 IAM 角色和基础设施资源,符合最小权限原则。
- 启用可观测性:集成 HyperPod Observability Add-on,建立对推理服务性能的全面可视化,设置基于 SLI(如首令牌时间、P99延迟)的 SLO 和 Error Budget。
- 反模式:
- 绕过控制台直接修改底层资源:如直接修改 Add-on 的 IAM 角色,可能破坏托管生命周期,导致升级失败。
- 忽略依赖管理:在已有复杂环境的集群上使用“快速安装”可能导致资源冲突。应使用“自定义安装”显式管理依赖。
相关指标(SLI/SLO/SLA)
Inference Operator 提供的可观测性数据是构建 SLO 的基础:
- 首令牌时间:衡量请求到生成第一个令牌的延迟,是 LLM 推理的关键体验指标。
- 端到端延迟:请求的总处理时间。
- GPU 利用率:反映资源效率和潜在瓶颈。
- 自动伸缩指标:如 KEDA 基于的队列长度或自定义指标,用于实现 SLI 驱动的自动伸缩,以维持 SLO。SRE 团队应基于这些指标定义明确的服务等级目标(例如,“99% 的请求首令牌时间 < 500ms”),并据此管理 Error Budget。
相关页面:sre-observability, incident-response, infrastructure-as-code