生产笔记:AI 集群的极致成本与数据保命指南

一、 GPU 节点的启停调度方案(从手动到全自动)

在云上,算力空转等于公司在流血。针对不同的业务阶段,我们采用以下四种梯度的调度方案:

1. 手动管理(适合:入职第一周的极早期联调)

  • 具体做法: 运维登录 AWS 控制台,找到 EC2 实例,右键点击 Stop instance(关机)。

  • 老兵点评: 最简陋的方式。极容易因为周五下班忘记点,导致周末白烧几千美金。生产环境严禁依赖此方式。

2. Terraform 调度(适合:基建代码化阶段)

  • 具体做法: 利用 Terraform 的 aws_ec2_instance_state 资源来控制开关机,而不是销毁。

    复制代码
    # 在变量中定义状态
    variable "gpu_state" { default = "stopped" } # 需要开机时改为 "running"
    
    resource "aws_ec2_instance_state" "ai_node_state" {
      instance_id = aws_instance.gpu_worker.id
      state       = var.gpu_state
    }
  • 操作: 运维只需执行 terraform apply -var="gpu_state=stopped",即可优雅关机。保留了代码的一致性。

3. AWS 打标签调度(适合:规律作息的算法团队)

  • 具体做法: 使用 AWS 官方开源方案 Instance Scheduler

    1. 通过 CloudFormation 一键部署这个工具。

    2. 在配置表里写好规则,比如 OfficeHours: Mon-Fri 09:00-22:00

    3. 运维给指定的 EC2 机器打上一个 Tag:Key=Schedule, Value=OfficeHours

  • 效果: 机器会严格按照设定的时间表自动开关机,完全无需人工干预。

4. Lambda 定时与条件触发(适合:极度成熟的 AIOps 体系)

  • 具体做法: 编写一段 Python (boto3) 代码部署到 AWS Lambda。利用 EventBridge(类似高级版 Crontab)每小时触发一次。

  • 实操细节: Lambda 脚本不仅看时间,还会调取 CloudWatch 监控指标。如果发现 GPU 利用率(DCGM_FI_DEV_GPU_UTIL)连续 2 小时低于 5%,则判定为"算法在摸鱼或任务已挂",自动调用 ec2.stop_instances 强制关机,并往飞书/钉钉发一条告警。


二、 存储保命机制(对付最贵的 FSx 与 S3 归档)

FSx 极贵且无法关机,我们只能用 S3 作为"数据防空洞"。关于数据回推,解答你的灵魂拷问:

1. 代码层:异步推 S3(算法与运维的交接点)

  • 推的是什么? 推的是模型的 Checkpoint(检查点)。里面包含神经网络当前的权重(Weights)、优化器状态和训练轮数(Epoch)。

  • 会影响机器性能吗? 绝对会! 一个大模型(如 70B)的 Checkpoint 可能高达 100GB+。如果算法代码写得烂,采用"同步阻塞"式写入,保存的那几分钟内,GPU 会因为等待 IO 而处于 0% 负载,这叫"卡死"。

  • 具体落地方案: 必须要求算法组使用**异步保存(Async Saving)**技术。

    • 步骤 A: 代码将 Checkpoint 快速写入本地挂载的 FSx(NVMe 级速度,几秒钟搞定,不卡 GPU)。

    • 步骤 B: 代码触发一个后台独立线程(Background Thread),使用 AWS boto3 的 upload_file(开启多线程分片上传 multipart upload),悄悄把 FSx 里的文件传到 S3。

    • 结果: GPU 继续跑下一轮训练,后台网络慢慢推 S3,互不干扰。

2. 系统层:定时托底机制

  • 具体做法: 针对那些"忘记写后台推 S3 代码"的笨蛋,运维在系统层面兜底。

  • 操作细节: 在 EC2 上配置 crontab -e

    复制代码
    # 每 2 小时的第 0 分钟,强制把 FSx 目录下的变动同步到 S3
    0 */2 * * * sudo lfs hsm_archive /mnt/fsx/checkpoints/ >> /var/log/fsx_archive.log 2>&1

3. 基建层:关机/销毁前的"生死门"

无论是人工关机,还是 Lambda 自动关机,都必须加一个前置校验拦截器

  • 手动操作的方案: 运维在执行 Destroy 前,必须进机器敲 lfs hsm_action /mnt/fsx/checkpoints/。如果输出为空,说明全部归档完毕;如果还有列表,必须干等。

  • Lambda 自动化方案(高阶):

    1. Lambda 决定关机前,先通过 AWS Systems Manager (SSM) Run Command 远程向 EC2 发送一条指令。

    2. 指令内容:强行执行 lfs hsm_archive 并检测状态。

    3. 如果 SSM 返回结果说"还有 50GB 在传",Lambda 就会放弃本次关机动作,并输出日志:"归档未完成,推迟到下个周期关机"。这完美堵死了数据丢失的漏洞。

相关推荐
快乐非自愿2 小时前
AI 赋能微服务工程化:Surging Engine-CLI 的插件化 Agent 架构革新
人工智能·微服务·架构
JavaGuide2 小时前
太魔幻了!SpaceX官宣600 亿美元收购Agent编程的鼻祖Cursor
人工智能·后端
独隅2 小时前
EasyOCR跨框架部署:从PyTorch到TensorFlow Lite的转换全面指南
人工智能·pytorch·tensorflow
云起SAAS2 小时前
小智笔记APP源码 | 8大广告联盟聚合(穿山甲/优量汇/快手/百度) | 应用市场过审极速版 | uni-app全栈商用项目
笔记·uni-app·广告联盟·笔记app
派拉软件2 小时前
从 IAM 到 AAM,重构 AI Agent 时代的访问控制体系
大数据·人工智能·网络安全·重构·iam·身份与访问控制·aam
SteveSenna2 小时前
Pika数据采集与处理
人工智能·学习
用户223586218202 小时前
Subagent 不是函数 - claude_0x06
人工智能
kunlong_luo2 小时前
用 200 行 Python 搭一个全本地 RAG:一次笔记本工程师的踩坑实录
人工智能
前端7412 小时前
Cursor 被 SpaceX 盯上了:600 亿美元买的不是编辑器,是你的键盘
人工智能