大模型场景下智算平台的设计与优化实践 肖松2024.06.14 引言 不同时期对智算平台的需求 客户A 我资源比较少,几十卡的规模,如何提升卡的利用率? 客户B 我的模型跑起来耗时长,能加速吗? 客户C 我想跑大模型,需要多少资源?网络如何构建?多长时间能跑完? 国产卡怎么用?能否与NV卡一起使用? 客户D 2018 2024 2 目录 01大模型时代,智算平台新特点4 02智算平台需解决的问题6 03大模型场景技术实践8 04对于智算平台发展的未来思考25 01大模型时代,智算平台新特点 小模型vs.大模型 大模型时代,智算平台新特点 小模型vs.大模型 ResNet50(小模型) GPT-4(大模型) 工程问题 158秒$15 训练时长训练成本 55天$2150万 训练时长训练成本 增强:耗时长凸显大模型训推加速需求 新增:成本高带来稳定性需求,减少资源闲置 参数25M(0.025B) vs. 参数1800B 新要求 增强:参数爆炸突破显存墙,多机多卡成为常态增强:卡间和机间高性能通信愈发重要 算力128块V100 数据167G(ImageNet) 算力8192块H100 数据13T 维持:GPU切分在小模型和推理场景依然存在新增:新卡适配和芯片利旧,多芯混合调度 新增:数据集处理加速 新增:数据湖存储和高性能存储 *数据来源:非官方数据,为业界推测 5 02智算平台需解决的问题 基础设施、调度、应用、运维 智算平台需解决的问题 基础设施、调度、应用、运维 运维 应用 数据训练推理 •数据集下载和转储加速 •数据集的清洗和加工处理 •训练任务的性能优化 •任务的监控和容错 •FlashCheckpoint •推理任务的性能优化 •在线服务的监控告警 调度 资源管理任务管理 •大规模异构算力高效调度和分配 •算力虚拟化 •多种AI框架和并行策略支持 •AI任务调度和任务流管理 •云原生容器化 基础设施 算力存储网络 •适配多种异构芯片 •固件、OS内核、驱动兼容 •混合多芯 •优化存储读写性能 •镜像加速、镜像预铺 •搭建和调试高性能网络 7 03大模型场景技术实践 基础设施层 基础设施——混合多芯 国产卡能否与NV卡一起使用? 拟合性能系数统一并行策略 AI效能矩阵图谱 通信整合 9 基础设施——高性能存储 镜像加速 超大镜像预加载P2P镜像分发流式镜像拉取 训练数据加速 高性能并行文件系统全SSD闪存 RDMA链路加速 模型加速 大吞吐数据湖存储分布式缓存加速 如何实现数据集加速?如何I/O加速? 镜像服务 流式读取P2P加速 MEMDISK MEMDISK MEMDISK MEMDISK TCP/InfiniBand/RoCE并行文件存储PFS TCP 分布式缓存加速存储RapidFS 托管BCC/BBC集群 对象存储BOS 标准存储低频存储冷存储归档存储 10 基础设施——高性能网络 如何实现通信库加速? 3层无收敛RDMA网络 Tor拓扑感知调度 NCCL通信拓扑感知 Upto512 Upto512 Upto16K+ 11 03大模型场景技术实践 调度层 调度——GPU虚拟化 如何提高单卡资源利用率? 用户态方案 CUDAdriverAPI,提供显存限制,算力时分复用 CUDAruntimeAPI,提供远程调用,显存限制,算力时分复用 内核态方案 内核模块修改,提供显存限制,算力时分复用 Full/para-虚拟化,内核模块修改,MMIO拦截,显存划分,算力时分复用 硬件方案 NvidiaMIG昆仑2SR-IOV NV官方,硬件划分,提供显存划分、算力划分、编解码划分(1/7)SR-IOV,硬件划分,提供显存划分、算力划分(1/3、1/2) 13 调度——GPU虚拟化 双引擎GPU虚拟化 用户态 优势:性能好,长尾延迟低缺点:故障隔离差 内核态 优势:故障隔离好 缺点:有一定性能损耗14 调度——资源管理和调度逻辑 如何调度资源? 配额管理 调度会话插件集合 入队 Gang调度 多租户资源管理 资源分配 Binpack/Spread调度 Gang抢占 集群资源视图 资源回收 亲和性调度 CPU/MEM 资源抢占 Tor架构感知 GPU拓扑 异构芯片(独占/共享) RDMA 自定义资源 选择最优调度 PodGroup Pod Pod Pod 资源调度 回填 混部调度 15 03大模型场景技术实践 应用层 应用——AIAK训推加速 如何优化训练和推理性能? 兼容Llama2、ChatGLM2等20余种开源模型,一键部署,透明加速 大模型训练加速镜像大模型推理加速镜像 数据并行优化张量并行优化 量化/剪枝/蒸馏 并行优化 流水线并行优化 图精简 数学等价代换/死代码移除 显存重算显存卸载 访存密集型算子融合 GEMM/Conv长尾运算融合 显存优化 细粒度显存切分 算子融合 背靠背GEMM融合 算子优化 算子融合注意力机制优化调度优化 算子优化 访存优化 模板化优化 训练性能提升30%+推理性能提升60%+ 17 应用——训练容错 如何提升训练稳定性? 任务无效训练时间=故障中断次数×(任务故障恢复时长+任务故障重算时长)+任务常态写Ckpt总时长 • • 降低节点故障率 提升故障感知召回率 • • 提升调度效率 降低节点MTTR 降低Ckpt时长,缩短Ckpt间隔周期 基础设施稳定性 调度容错效率 框架容错代价 硬件故障快速感知硬件端到端上线预检测 节点热维修/秒级冷迁移恢复 任务异常快速感知重调度容错 镜像/数据缓存加速 Ckpt存储加速异步Ckpt加速分布式Ckpt加速 主流框架/分布式库,打开开关即可容错 Pytorch DeepspeedMegatron PaddlePaddle… 18 应用——FlashCheckpoint 如何降低Checkpoint时间? Checkpoint容错机制带来了计算时间片浪费 有效训练时间有效训练时间 Checkpoint等待Checkpoint等待 传统方案FlashCKPT FlashCKPT并行内存写入,快速完成checkpoint操作,提升整体有效训练时长。 训练框架 同步写 Memory加速层 Memory 同步close 训练框架 同步写 Memory加速层 Memory 异步close 业务可制定更细粒度的检查点策略,从而降低故障恢复时间 NVMESSD 流式分块上传 等待lastpart 分布式,异步写 3小时 每日节省有效训练时长 1秒 千亿大模型CKPT写入 远端对象存储 并行文件存储PFS 小时级CKPT,容错恢复时间长秒级CKPT,更细粒度的打点恢复 19 03大模型场景技术实践 运维 运维目标 可观测能力 运维目标 故障处理容量管理&优化任务性能调优 任务告警 发现(变更告警、故障告警、阈值告警) 快速任务稳定性大盘 定位(任务关联的节点、组件,配套服务 健康情况) 根因根因排查 排查(集群、任务事件,任务运行日志) 辅助智能排障建议 止损(基于大模型的智能故障分析) 集群资源视图 (集群资源概览,利用率、分配率变化&趋势,任务资源概览) 节点资源视图 (节点资源详情、GPU分配/利用分析) 任务资源视图 (任务资源详情、GPU使用分析、Pod分配情况) 任务性能大盘 (训推吞吐指标,任务并行策略、性能关联参数) 任务收敛监控&告警 (监控任务loss收敛情况,异常报警) 分阶段指标 (诊断训练分阶段耗时,助力训练性能调优) 故障定位时间小时级->分钟级发现资源瓶颈提升分配/利用率发现任务性能瓶颈,避免空跑 21 03大模型场景技术实践 百度百舸架构和演进 智算平台架构 百度百舸 大模型IO加速方案FlashCheckpoint 大镜像预加载 大规模镜像P2P加速 大模型任务增强 开源大模型定制优化 高性能算子 高效显存利用 高效并行策略 高性能训推框架 大模型训推任务加速镜像 异构资源调度 高性能存储插件 高性能网络插件 百舸组件 AI基础组件 任务工作流管理 AI任务编排 深度学习框架 AI编排调度 通信测试工具 自动任务容错 多维故障感知 稳定性&容错 可观测大盘 30% 集群资源视图 训练吞吐提升 任务稳定性大盘 98.8% 性能监控&调优 有效训练时长 60% 推理吞吐提升 95% 带宽有效性 CCEK8S集群 百舸资源池 A800/H800/昆仑/升腾异构算力 高性能分布式存储PFS万卡RDMA网络 23 百度百舸发展历程 AI硬核能力积累 百舸1.0 AI基础设施产品化 百舸2.0 AI基础设施云原生化 百舸3.0 一站式大模型算力平台 支撑百度核心业务发展 视觉&自然语言处理 自动驾驶&生命科学 大模型新业态 孔明超级计算集群 AI容器服务 通信&算子加速 AI可观测大盘 X-MAN超级AI服务器 太行.弹性裸金属 云原生作业调度 AIAK大模型训推加速工具包 自动故障容错 智能故障诊断 RDMA高性能网络 沧海.高性能存储 GPU容器虚拟化 FlashCheckpoint 大镜像分发加速 百度十年AI实践202120222023 24 对智算平台发展的一些思考 智算平台个人思考 定位 承上启下,向下纳管异构资源,向上承载AI平台 核心 屏蔽下层的复杂性,或许未来能像使用CPU一样使用GPU 发展 不再满足资源纳管,对AI研发栈的需求越来越旺盛 趋势 预训练门槛变高,领域微调变多,模型推理或许会迎来爆发 26 THANKS