13 May 2026
智算平台随笔
最近有聊到智算平台,想着借此机会,结合自己知道的一点点,随便写写,不懂的地方就先略过,权当复习总结。
分层设计
- 应用层:训练作业、推理作业、智能体、其他作业等
- 平台层k8s:
- volcano+kueue: 作业调度+队列管理
- 多集群管理: karmada
- 训练作业管理:openfuyao
- 监控管理:prometheus+grafana+alertmanager+slack
- 日志管理:loki
- gitops: flux cd / argocd
- 基础设施层
- 计算:CPU、GPU、NPU等
- 网络
- 存储
- 缓存:热数据,训练数据等
- 磁盘:温数据,作业检查点,模型数据等
- 对象存储:冷数据,归档数据、历史数据等
容量规划
- 节点数:考虑冗余节点
- GPU卡数:单个作业最大需要多少卡
- CPU核数
- 内存
- 存储
- 网络带宽
- 功耗和散热
存储
- 热数据层:实时训练数据,保留时间短,比如1周删除或者迁移到温数据层
- 温数据层:分布式文件系统如ceph,保存活跃的训练数据、作业检查点、日志、监控数据等,保留时间长一些比如3个月删除或者迁移到冷数据层
- 冷数据层:对象存储如minio,历史数据、模型归档、日志归档等,保留时间比如6个月后删除
作业检查点
- 通过使用增量检查点减少存储空间,第一次保存完整的检查点,户名值保存增量
- 最多保存3个检查点,通过异步方式保存,不影响当前作业
- 设置适合时间保存一次检查点
- 检查点恢复机制
- 检查点清理
调度系统volcano
- 配置抢占队列,供紧急作业运行
- 配置可被抢占队列,供一般作业运行
- 拓扑感知,优先同一个机架、同交换机、通一个节点调度,提升GPU之间通信效率
- gang scheduling
- 独占式调度
- 共享式调度
- 队列支持优先级
- 弹性调度,最少需要多少卡,最多需要多少卡
- bin packing减少资源碎片
- fifo
- 自定义调度插件
- 缓存节点信息
监控系统
- 业务指标:成功作业数、失败作业数、队列排队时间、作业训练速度、作业运行时间
- 系统指标:GPU利用率、显存利用率、内存、CPU、存储、网络
- 硬件指标:GPU温度、功耗、网卡丢包、硬件错误等
- dashboard展示
- 保存短期指标数据到内存和缓存,提升查询效率,如1小时数据从内存查询,24小时数据从硬盘查,历史数据从对象存储查
- 数据压缩和降采样节约存储空间,比如超过7天数据10分钟采样,超过30天数据1小时采样
- 自身监控
- 高可用:部署分布在不同节点或者不同区域
告警
- GPU利用率低
- GPU温度高
- 作业排队时间过长
- 失败作业数多
- 支持检查点作业没有检查点
- GPU错误:自动重置?
aiops
- alert触发脚本自动resolve issue
- agent诊断
- 持续学习和改进
- 基于作业队列自动扩缩容
LEo
at 00:12