核心要点
用 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 文件不远程锁导致冲突。
追问
追问 1:IaC 和 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 可能含敏感输出。
追问 3:Drift 检测是什么?
指检测真实云环境与 IaC 声明的期望状态之间的偏差,通常由人在控制台手改资源造成。terraform plan 会显示这些 drift;可定时跑 plan 告警,发现后选择 import 纳管或 apply 拉回声明状态,确保代码仍是单一事实来源。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
📰 AI 资讯
🛠️ AI 工具
- BentoML
AI 模型服务化框架,8.6K+ stars。最简化的方式部署 AI 应用和模型,支持模型推理 API、任务队列、LLM 服务等,是模型从实验到生产的桥梁