生产笔记: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 就会放弃本次关机动作,并输出日志:"归档未完成,推迟到下个周期关机"。这完美堵死了数据丢失的漏洞。

相关推荐
冬奇Lab15 分钟前
每日一个开源项目(第160篇):Destructive Command Guard - 在 AI Agent 运行 rm -rf 之前拦截它
人工智能·安全·开源
IvorySQL20 分钟前
PG 日报|SQL/PGQ 图查询基于联接重写机制实现
数据库·人工智能·sql·postgresql·区块链·ivorysql
博图光电28 分钟前
博图汽车零配件视觉检测与测量解决方案
人工智能·汽车·视觉检测
仿生狮子36 分钟前
别再说“全栈”了,AI 时代团队只认这 5 种人
前端·人工智能·后端
乒乓狂魔1 小时前
SkyWalking 也能 AI 智能化了
人工智能·skywalking
满怀冰雪2 小时前
03-第一个 Paddle 程序:Tensor 创建、计算与设备管理
人工智能·python·paddle
Maynor9962 小时前
AI Coding 零基础实战教程|第七部分:Codex Desktop 安装和使用教程
人工智能·ai编程·codex·claude code·ai coding
CClaris2 小时前
大模型量化从0到1(九):用 llama.cpp 把模型转成 GGUF 并跑本地推理
人工智能·pytorch·python·深度学习·llama
学编程的小虎2 小时前
SenseVoice微调
人工智能·python·自然语言处理