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

相关推荐
xixixi77777几秒前
AI的“账号”与“钱包”:AWS与Circle同日出手,AI正从工具进化
人工智能·安全·ai·大模型·云计算·aws
目黑live +wacyltd7 分钟前
算法备案:常见驳回原因与应对策略
人工智能·算法
Skylwn12 分钟前
保姆级教程之将 GitHub Models 接入 NewAPI
笔记·github
新知图书13 分钟前
销售资料包智能生成(使用千问)
人工智能·ai助手·千问·高效办公
Cosolar27 分钟前
大模型应用开发面试 • 第4期|A2A、复杂挑战与具身智能
人工智能·后端·面试
2501_9458374329 分钟前
OpenClaw:重塑人机协作的开源 AI 智能体
人工智能
小何code32 分钟前
人工智能【第27篇】AI伦理与安全:负责任的AI开发
人工智能·隐私保护·ai伦理·算法公平
脆皮炸鸡75534 分钟前
库制作与原理~动态链接
linux·开发语言·经验分享·笔记·学习方法
咚咚王者35 分钟前
人工智能之智能体应用 第一章 大模型应用开发基础框架入门
人工智能
边缘计算社区38 分钟前
6G “AI-Native”:真命题还是PPT?拆解3GPP R19/R20的AI条款
人工智能·ai-native