Skip to content

Commit 1dd1459

Browse files
AndSonderFrom00
authored andcommitted
[WeeklyReport] AndSonder 2024.05.11~2024.05.24 (PFCCLab#286)
Co-authored-by: chenruibiao <chenruibiao@baidu.com>
1 parent 1064f34 commit 1dd1459

4 files changed

+71
-0
lines changed
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
### 姓名
2+
3+
卢畅
4+
5+
### 实习项目
6+
7+
静态图半自动并行训练性能优化
8+
9+
### 本周工作
10+
11+
#### 1. 为 ZBV 适配分布式标记
12+
13+
由于 ZBV 的 V 型编排和 VPP 的切图方式不同,我们需要对 ZBV 的分布式切分标记进行适配。
14+
15+
同时当 chunk 数量是偶数的时候,输入和输出都都在第一个 stage 上,我们需要把 input 和 label 都放在第一个 stage 上。且当 chunk 数量是奇数的时候,计算 loss 的相关 op 也需要放在第一个 stage 上。否则 zbv 编排都会 hang 住。
16+
17+
#### 2. 在实际业务场景下验证性能
18+
19+
在 Llama2 上进行了实际业务场景下的性能测试,发现了一些问题。
20+
21+
1. 当 chunk 是偶数的时候,计算 loss 的时间过长,导致了 bubble rate 过高。具体来说如下图所示:
22+
23+
![picture 0](images/b27e7043d16fa085db65c6eb3a7a85712d23067531b93350356ef0f2be3240d2.png)
24+
25+
因此当 acc_steps 较小的时候,奇数 chunk 的性能要优于偶数 chunk。
26+
27+
我在编排的时候将 loss 的计算时间考虑进去,这样可以进一步优化编排性能。
28+
29+
同时由于这种情况的存在,我认为 zbv 的 rollback 实现并不是很有必要,论文里的理想编排情况很难出现,rollback 可能也并不会带来很大的性能提升。
30+
31+
2. zbv 的官方时间中在没有 f 任务的时候会错误的插入 w 任务,导致了 b 任务的 delay
32+
33+
修改前后实际运行 timeline 对比如下:
34+
35+
修改前:
36+
37+
![picture 1](images/e3f2ea72d696e92925e8b66d230ec3de016136fa712cd3f27597b8c32574fb45.png)
38+
39+
修改后:
40+
41+
![alt text](9bfadb742239c3fb238e9eb6dd5525f7.png)
42+
43+
修改后 8 卡 a100 机器上,在 pp4, dp2, chunk5 的条件下进行对比,zbv 的效果已经超过了当下最优的 vpp5 方案 (zbv 548ms 左右一个 step,vpp5 568 ms 左右一个 step,提升了 3.52%)。
44+
45+
#### 3. 将 zbv 编排和显存估计功能结合
46+
47+
之前跑的时候zbv编排都是用的模拟显存数据,现在我们将显存估计功能和zbv编排结合,可以更好的估计显存。并且根据 program 的显存占用估计出 1f1b 所用的显存并设置最大显存倍率来约束 zbv 的编排。并为 Paddle 和 PaddleNLP 添加相关运行参数。
48+
49+
相关 PR:
50+
51+
- https://github.com/PaddlePaddle/Paddle/pull/63800
52+
- https://github.com/PaddlePaddle/PaddleNLP/pull/8480
53+
54+
55+
#### 4. 为流水线 timeline 工具适配动转静
56+
57+
之前流水线 timeline 可视化工具只能适配静态图,现在我们将其适配动转静的情况。
58+
59+
相关 PR:
60+
61+
- https://github.com/PaddlePaddle/Paddle/pull/64568
62+
- https://github.com/PaddlePaddle/PaddleNLP/pull/8488
63+
64+
65+
66+
### 下周工作
67+
68+
继续测试 zbv 编排的性能,尝试在更多的业务场景下测试 zbv 编排的性能,对 zbv 编排进行收尾。
69+
70+
### 导师点评
71+
本周成功适配了ZBV的分布式标记,在实际业务场景下进行了性能测试,并将流水线timeline工具适配到动转静,展现了全面的技术能力。期待下周继续优化ZBV编排性能。

0 commit comments

Comments
 (0)