Skip to content

Commit 40798ab

Browse files
zty-kingFrom00
andauthored
[WeeklyReport] zty-king 2025.08.02~2025.08.24 (#509)
Co-authored-by: chenruibiao <chenruibiao@baidu.com>
1 parent 48cbd66 commit 40798ab

File tree

4 files changed

+127
-0
lines changed

4 files changed

+127
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
### 姓名
2+
郑天宇
3+
4+
### 实习项目
5+
自动并行流水并行功能增强和性能优化
6+
7+
### 本周工作
8+
9+
1. GradientClipByGlobalNorm逻辑对齐,在对齐模式下,与原动半pp对齐
10+
2. fused_rotary_position_embedding算子反向逻辑修复,同时修复原来单测的逻辑缺陷(因为此缺陷导致单测未检查出反向的错误)
11+
3. 理解flexcheckpoint框架的开发逻辑,配合flexcheckpoint的dcp组件的开发验证,提出了一些逻辑问题
12+
4. 使用flexcheckpoint适配paddlenlp、paddleformers跑通ernie、llama2、qwen3、qwen3-moe
13+
5. 在llama2上对flexcheckpoint框架做了多重策略转换的验证
14+
15+
16+
### 下周工作
17+
18+
1. 在llama2上对多重策略转换的情况继续做验证——md5对齐、loss收敛。
19+
20+
### 导师评价
21+
22+
23+
24+
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
### 姓名
2+
郑天宇
3+
4+
### 实习项目
5+
自动并行流水并行功能增强和性能优化
6+
7+
### 本周工作
8+
9+
**1.在llama2上验证Flexcheckpoint框架**
10+
- 在使用过程中,对于tp、pp、dp、shardingV1、shardingV2等多种策略转换的情况——验证md5对齐、loss收敛,同时针对每种情况都写了一个自动化脚本,一键运行两种策略的互转、对齐md5、运行接续热启动训练、验证loss接续。
11+
- 在验证纯sharding时出错,原因是梯度累加数据类型有问题,需要在累加时做数据转换(临时hack,后来验证是paddle更新的pr导致的问题,最新版的paddle已修复此问题)
12+
- 在测tp策略转换的过程中,发现fused_qkv, fused_ffn打开后loss差距不符合预期;经验证,当前存在fused_qkv与old_fused_qkv两套逻辑,llama当前默认使用的是old_fused_qkv此时无需配置aoa与tp自洽,而ernie使用的是fused_qkv,需要配置aoa。
13+
- 在测dp策略转换的过程中,发现原来的纯dp策略只保存一份ckpt,而Flexcheckpoint框架
14+
- 使用aoa_config时,macros优先级、关键字过滤、fused_ffn命令长度存在问题,已修复
15+
- 针对llama2上验证Flexcheckpoint框架流程,撰写了运行指导文档: https://github.com/PFCCLab/FlexCheckpointVerf/blob/main/parallel-strategy-verification/llama2/env.md
16+
17+
**2.在ernie4.5上验证Flexcheckpoint框架**
18+
- 在使用过程中,对于tp、pp、dp、shardingV1、shardingV2等多种策略转换的情况——验证md5对齐、loss收敛,同时针对每种情况都写了一个自动化脚本,一键运行两种策略的互转、对齐md5、运行接续热启动训练、验证loss接续。(**目前还在测试过程中,未全部完成**)
19+
- tp2(ep2)->tp4时,gate参数的md5未对齐,经过验证发现,gate参数会在回调函数OrthogonalCallback中计算正交损失并更新,直接用FLAGS_shard_bypass_dygraph_optimizer 标志位控制优化器不更新无法制止gate的更新,而经过hack相应代码验证,gate不更新后,转换前后,tp2(ep2)的ckpt能完全对齐。
20+
- tp2(ep2)->pp4时,发现未适配共享参数的场景,做了适配,同时发现ernie pp和ernie 非pp的组网逻辑不一致,无法直接做对齐验证。
21+
22+
23+
24+
### 下周工作
25+
26+
1.继续在ernie4.5上验证Flexcheckpoint框架
27+
28+
### 导师评价
29+
30+
31+
32+
33+
34+
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
### 姓名
2+
郑天宇
3+
4+
### 实习项目
5+
自动并行流水并行功能增强和性能优化
6+
7+
### 本周工作
8+
9+
**1.在ernie4.5上验证method1:A->B->A的md5对齐,与loss接续**
10+
- 验证了纯tp、pp、dp、shardingV1、shardingV2,在训练时,moe_group需要设置为dummy,即不划分experts。
11+
- tp2(ep2)->pp4时,关闭tie_weights操作,md5仍无法对齐,查验后发现,需要关闭moe_use_aux_free,否则非pp将多出一份参数。
12+
- tp下,bias为None时,出现bug,主要是MPScale.apply未考虑bias为None的情况。
13+
- 当前ernie_moe跑vpp存在问题跳过。
14+
- 纯DP下,opt未被封装,会导致init_optimizer报错,优化了paddlenlp的fc适配代码。
15+
- DP2、ShardingV1、V2转TP2(EP2)_PP2等出现src_var和dst_var的global_size对不齐的现象,经验证,主要是Ernie下的SequenceParallelLayer未适配sharded_state_dict,做了适配。
16+
17+
**2.在ernie4.5上验证method2:A->B,二者合参后与uc的md5对齐**
18+
- 1.编写自动化脚本,一键训练,转化,合参,并分别与uc对比md5,已经验证了纯tp、pp、dp、shardingV1、shardingV2、sd2(ep2)。
19+
- 2.uc下,sd2(ep2)的md5无法对齐,经验证主要是uc未对expert的id做偏移,而fc做了偏移,对uc的expert_id偏移后,md5对齐。
20+
- 3.涉及TP的都无法对齐,主要是当前ernie_moe与uc在跑tp时存在bug,以及ernie_moe的tp_mappings未对mtp_block层做映射,load_state_dict和_handle_aoa未考虑到多卡转单机,已做适配。
21+
22+
23+
24+
### 下周工作
25+
26+
1.继续在ernie4.5上验证method2。
27+
28+
### 导师评价
29+
30+
31+
32+
33+
34+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
### 姓名
2+
郑天宇
3+
4+
### 实习项目
5+
自动并行流水并行功能增强和性能优化
6+
7+
### 本周工作
8+
9+
**1.在ernie4.5上验证method2:A->B,二者合参后与uc的md5对齐**
10+
全部验证完毕
11+
12+
**2.paddlnlp适配fc的代码,适配完成并合入pr**
13+
14+
**3.AOA验证工作**
15+
- 1.添加专家ID的macro
16+
- 2.修复rename不支持axis属性的问题
17+
- 3.修复$LAYER_ID的get_num_hidden_layer的bug
18+
- 4.修改及补充整个macro单测,覆盖AOAShardInfoContext类的测试
19+
- 5.修改optimizer_it的逻辑——在后续过程过滤,而不是直接读取metadata文件初始化(当前这个修改暂时保留,后续如果需要支持fused_qkv->非fused_qkv且保留优化器状态的场景,则推进该修改合入)
20+
- 6.尝试支持在qkv->q,k,v场景下,beta1_pow_acc_0,beta2_pow_acc_0一对多和多对一的赋值转换,但经过讨论后,pass了这个方案,此场景下随机赋值这两个动量。
21+
- 7.修复star_macro和add aoa原语的bug
22+
- 8.尝试在save时优化对DygraphShardingOptimizerV2的flatten_tensor的处理逻辑;目前最新pr已经将逻辑移入到load阶段,因此不做合入。
23+
24+
25+
### 下周工作
26+
27+
1.完善aoa相关组件问题
28+
29+
### 导师评价
30+
31+
32+
33+
34+
35+

0 commit comments

Comments
 (0)