DeepSpeed(分布式训练优化库)

AI TERM术语词条

DeepSpeed

基础设施 分布式训练显存优化训练框架大模型

术语释义

DeepSpeed 把状态分片、卸载与混合精度等分布式训练技术封装成配置,让大模型训练改动最小地跑起来。

DeepSpeed 是面向大规模模型训练的优化库,把参数与优化器状态分片、梯度累积、混合精度与激活重计算等技术封装成一份配置,训练代码只需少量改动即可接入。它要解决的是单卡装不下模型、多卡又难以高效协同的问题——把训练状态切分到不同设备上,让同一份模型在有限显存里跑起来,同时尽量不让通信成为新的瓶颈。

主要能力

  • 状态分片:按级别切分优化器状态、梯度与参数,级别越高单卡显存越省、跨设备通信越多。
  • 卸载:把优化器状态或参数临时放到主机内存乃至本地盘,用带宽与延迟换显存,适合显存极紧而机器内存充裕的场景。
  • 混合精度:低精度计算配合主权重副本,兼顾吞吐与数值稳定性,通常与损失缩放一起使用。
  • 显存估算:先按参数量、精度与分片级别预估单卡占用,再决定并行组合,避免跑到中途才溢出。
  • 激活重计算:反向传播时重算前向激活,用额外算力换显存,在长序列训练里效果最明显。

并行组合与调参

分片级别不是越高越好:通信量随分片上升,网络较弱时吞吐会明显下降,需要在显存与带宽之间取平衡。卸载对主机内存容量与带宽敏感,配置不当会频繁换入换出,反而比不卸载更慢。与流水线并行、张量并行叠加时,微批数量与梯度累积步数要重新调,否则会出现流水线气泡或显存尖峰。梯度分桶的大小同样影响通信与计算的重叠效果:桶太小,启动开销占比升高;桶太大,重叠不充分。调参顺序上一般先固定模型与批次确认不溢出,再逐步提高并行效率,每次只改一个变量并记录吞吐,避免多个变量同时变动后无法归因。

边界与常见误区

  • 与普通数据并行的区别:普通数据并行每张卡都保存完整状态,这里的分片思路是把这些状态也切开,代价是集合通信更频繁。
  • 通信不是免费的:分片省下的是显存,付出的是通信时间,机内走高速互连与跨机走网络的效果差别很大。
  • 配置要跟着硬件走:换机器、换卡数、换互连之后,原来的最优配置往往不再最优,需要重新验证。
  • 它不能替代模型改造:算子不支持、序列过长或结构特殊时,仅靠配置调不出可用的训练,仍要回到模型侧解决。

落地时通常按先能跑、再跑快的顺序推进:先用较低分片级别确认数值正确,再逐项打开卸载与重计算,最后用单步时间与吞吐判断是否值得。需要留意的是,这类优化库改变的是训练状态的存放位置与通信方式,不改变模型本身的数学定义;如果续训或恢复时状态不完整,损失曲线的异常通常来自状态缺失,而不是优化器配置本身。

查看全部 763 条 →
共 9 条