海光异构卡dcu 64BW *2 ZeRO-2 异构卡2 16g*4 zero-3微调deepseekf1-qwen2-14b模型速度对比
海光异构卡dcu 64BW2 ZeRO-2 异构卡2 16g4 zero-3微调deepseekf1-qwen2-14b模型速度对比
说明 16g*4 zero-3 没有办法启用flash-attention,报错
https://www.scnet.cn/
From国家超算中心_code/deepseed加速.md:
- 初始速度 (bs=2, 无ZeRO-2优化): ~17 s/it (line 476)
- 启用FA2后 (bs=4, ZeRO-2 + CPU Offload): 9.05 s/it (line 12)
- 关闭CPU Offload (bs=8, ZeRO-2): ~7 s/it (line 476, 501)
- 优化目标 (bs=8, ZeRO-2): 5~6 s/it (line 34, 396)
From经验1 zero3 变得好慢.txt:
.16*4 zero-3: 大概 256s/it (line 2) - this is 4x16 cards, different setup
So the user is asking about “异构卡 BW 64 两张” - this refers to the DCU cards at 曙光 (Shuguang) with 2 cards, BW64 model.
From the records:
- 2张 BW64 (DCU异构卡), bs=2, 无优化: ~17 s/it
- 2张 BW64 (DCU异构卡), bs=4, DeepSpeed ZeRO-2 + CPU Offload + FA2: ~9.05 s/it
- 2张 BW64 (DCU异构卡), bs=8, DeepSpeed ZeRO-2 (无CPU Offload) + FA2: ~7 s/it
- 2张 BW64 (DCU异构卡), ZeRO-2: 大概 8s/it
Let me present these findings clearly to the user.
根据你的历史记录,以下是**「异构卡 BW64 × 2 张(曙光超算中心 DCU)」** 训练 14B 模型的速度演变:
📊 训练速度记录汇总
| 阶段 | 配置 | 速度 (s/it) | 来源 |
|---|---|---|---|
| 最初 | bs=2,无 DeepSpeed,无 FA2 | ~17 s/it | deepseed加速.md L476 |
| 中间 | bs=4,ZeRO-2 + CPU Offload + FA2 启用 | 9.05 s/it | deepseed加速.md L12 |
| 优化后 | bs=8,ZeRO-2(关闭 CPU Offload)+ FA2 | ~7 s/it | deepseed加速.md L476/L501 |
| 稳定态 | bs=4,ZeRO-2 + FA2 | 8~9 s/it | deepseed加速.md L199 |
另外一条对比记录:
16*4 zero-3 大概 256s/it— 这是 4 卡 × 16 节点的 ZeRO-3 多节点配置,速度极慢是因为 NCCL 被限制走了 socket loopback(禁用了 SHM/P2P)。
📈 速度优化路径
17 s/it (bs=2, 原始) → 9 s/it (bs=4, +ZeRO-2 CPU Offload + FA2) → 7 s/it (bs=8, 关闭CPU Offload + FA2) → 5~6 s/it (bs=8, 进一步优化的目标)核心结论:曙光 BW64 × 2 张异构卡,训练 DeepSeek-R1-14B LoRA 微调,稳定速度大约在 7~9 秒/步,取决于 batch size 大小和是否开 CPU Offload。
16g*4 zero-3微调deepseekf1-qwen2-14b 不启用flash-attention ,160s/步
bs是batch size(批大小)的缩写,在深度学习训练中非常常见。
📌 具体解释:
bs=2:即batch_size=2- 这意味着每次前向/反向传播处理的样本数量为 2 个。
- 训练时,模型会在每个
batch(批次)中同时处理这 2 个样本,并累积梯度后再更新权重。
📚 结合你的训练场景(14B 模型 + LoRA + 双卡 DCU):
batch_size设置 | 含义 | 显存占用 | 训练速度 (s/it) |
|---|---|---|---|
bs=2 | 每次处理 2 个样本,梯度累积步数多 | 较低 | ~17 s/it |
bs=4 | 每次处理 4 个样本 | 中等 | ~9 s/it |
bs=8 | 每次处理 8 个样本 | 较高 | ~7 s/it |
- 为什么
bs越大,速度越快?- 处理样本越多,GPU 并行计算效率越高,同时减少了梯度同步(如
gradient_accumulation_steps)的通信开销。 - 但
bs过大可能导致显存溢出(如你在经验1 zero3 变得好慢.txt中提到的 OOM)。
- 处理样本越多,GPU 并行计算效率越高,同时减少了梯度同步(如
💡 实操建议:
如果显存足够(如
rocm-smi显示每卡占用 <28GB),优先选择bs=8,速度更快。如果显存紧张,可降低到
bs=4或bs=2,但需增加gradient_accumulation_steps保持总 batch 不变。
