核心要点

  • 用 Terraform/Pulumi 声明式定义 GPU 节点池、K8s、对象存储、IAM,消除手工点控制台的配置漂移

  • 基础设施变更走 PR review + 审计,谁改了 GPU 配额或开放了 0.0.0.0/0 都有记录

  • 一键复现/销毁是降本关键:terraform destroy 回收临时训练集群,避免遗忘计费

  • state 必须远程存储并加锁(如 S3+DynamoDB),否则多人并发 apply 会冲突损坏

标准回答

基础设施即代码(IaC):用代码(Terraform、Pulumi、CDK)定义云资源,Git 版本管理,CI 自动 apply。

MLOps 的支持

1. 可复现环境

  • 训练集群、推理 EKS/GKE、S3 bucket、IAM 角色一键创建
  • 新成员/新区域环境与 prod 一致

2. 变更治理

  • PR review 基础设施变更(如开放 0.0.0.0/0)
  • 审计谁何时改了 GPU 配额

3. 成本与生命周期

  • terraform destroy 回收临时训练集群防遗忘计费
  • 环境分 dev/staging/prod workspace 隔离

4. ML 特定资源

  • GPU 实例类型、Spot 策略、EFS 共享存储
  • SageMaker/Vertex 端点配置
  • 网络:VPC peering 连数据仓

5. 与 CI/CD 集成

  • 模型部署 pipeline 依赖的 K8s namespace、Ingress、Secret 同步 provision

实践:模块化管理(networking/compute/ml-serving);state 远程存储(S3+lock);敏感值用 Vault。详见 MLOps 入门AI 工程

常见误区

⚠️ 常见踩坑

把 Dockerfile 当成全部 IaC;手工改生产资源无记录;state 文件不远程锁导致冲突。

追问

追问 1IaC 和 Helm chart 分工?

Terraform 等 IaC 管「集群之外/之下」的云资源:VPC、GPU 节点池、S3、IAM、托管 K8s 控制面;Helm 管「集群之内」的应用部署:Deployment、Service、Ingress、推理服务的 values。常见做法是 IaC 建好集群,再由 Helm/ArgoCD 在其上部署 ML 工作负载。

追问 2如何处理 IaC 中的密钥?

绝不把明文密钥写进代码或 state。用专门的密钥管理(Vault、AWS Secrets Manager、SOPS 加密),IaC 只引用其 ARN/路径;运行时由 Secret 注入。同时把 state 文件加密并限制访问,因为 plan/state 可能含敏感输出。

追问 3Drift 检测是什么?

指检测真实云环境与 IaC 声明的期望状态之间的偏差,通常由人在控制台手改资源造成。terraform plan 会显示这些 drift;可定时跑 plan 告警,发现后选择 import 纳管或 apply 拉回声明状态,确保代码仍是单一事实来源。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。