DeepSpeed

Stars

面向大模型训练与推理的分布式深度学习优化系统,通过 ZeRO、并行训练、通信优化与内存管理降低超大模型的训练成本,并提升多 GPU / 多节点执行效率。

Distributed TrainingZeROZenFlow
DISTRIBUTED TRAINING · ZENFLOW

把除零、空选择和错配挡在训练之前

两个除数、两条更新路径和一组分区缓冲区必须共享同一套配置与尺寸边界。

CONFIG BOUNDARY
01
0 < topk_ratio < 1
autoORupdate_interval ≥ 1
AUTO UPDATEselected / ratiounselected / (1 − ratio)两个除数都非零
EXPLICIT UPDATEmicro_step // interval调度间隔始终有效
PER-PARTITION INVARIANT
50 columns× 0.01→ 1 selected
max(1, int(columns × ratio))

selection=index buffer=grad buffer

迟发故障

非法值在训练启动后才爆炸

ZenFlow 配置曾接受 `topk_ratio=0/1` 以及非正数 `update_interval`,训练初始化后可能分别触发梯度归一化除零和非法调度;即使比例合法,ZeRO-1/2 的小分区也可能因整数截断选择 0 列,进一步让 `torch.topk(k=0)` 与缓冲区尺寸失去有效语义。

路径审计

自动与显式更新各有一个除数

自动更新路径同时除以 `topk_ratio` 与 `1-topk_ratio`,显式更新路径执行 `micro_step // update_interval`,因此两组除数都必须在配置边界被约束。对小比例选择,还必须以分区为单位统一计算选择数,并让索引缓冲区、梯度缓冲区和实际选择逻辑复用同一公式。

分区不变量

选择数与缓冲区必须同源

将比例约束为严格的 `(0,1)`,要求数值更新间隔至少为 1;新增共享的分区选择计数逻辑:空分区保持 0,非空分区使用 `max(1, int(columns × ratio))`,并同步应用到两条选择路径及对应缓冲区分配。

训练边界

错误配置早失败,小比例仍可运行

非法配置现在会在训练启动前直接失败;`topk_ratio=0.01` 与 50 列参数等小比例场景在 ZeRO-1/2 中仍保持非空选择,索引和梯度缓冲区与实际分区选择严格对齐。该修复经多轮维护者审查后以 PR #8274 合入 DeepSpeed master。