-
Notifications
You must be signed in to change notification settings - Fork 41
Open
Description
在本 issue 中主要记录 Graph Bert 模型搭建的流程以及中间的结果,搭建过程主要分为4步:
- 模型结构
- 模型训练流程
- 下游任务的 finetune 测试指标
- README 以及相关文档和工具代码
模型结构的正确性验证
模型结构的正确性验证中主要包括下面两个步骤:
- Graph 载入 Lazy 模型,在相同输入时,对齐输出结果和 loss (廖星宇)
- Eager, Graph 和 Lazy 模型使用相同的初始化,关掉模型中的随机性(Dropout) 和数据读取的随机性(random shuffle),关掉 lr scheduler,使用 SGD 进行 1000 轮 loss 对齐 (廖星宇)
使用 dataset/bert_regression_test/0/part-0,训练配置如下
batch size: 32
iter_num: 1000
lr: 1e-3
optimizer: SGD, momentum=0.9
scheduler: None
oneflow commit: ba36de99c
1000 轮 loss 曲线
从上面的结果来看,eager, graph 和 lazy 在相同的数据集上训练 1000 轮,loss 曲线近似重合,可以认为三种方式的结果已经对齐。
模型结构的正确性验证 double check(程鹏)
目前看来lazy和graph版本几乎可以对齐,但是lazy和eager版本还是有差距
实验配置
- 采用相同的模型初始化(load from lazy),关掉dataloader中的随机元素,关掉dropout
batch size: 32
iter_num: 1000
lr: 5e-4
scheduler: None
optimizer:SGD, momentum=0.9
模型训练流程的正确性验证
模型的训练流程主要包括下三个流程
- 完成模型训练所需依赖,在单卡上进行 1000 轮 loss 对齐 Lazy 结果
- 使用 8 卡进行模型训练
- 进行多卡训练性能测试
下游任务 finetune 测试指标验证
下游任务的精度验证主要分为下面三个过程:
-
载入 train 好的 Lazy 模型权重,进行下游任务 finetune,在 SQuAD 上进行精度验证 (廖星宇)
-
根据 TensorFlow Bert 官方实现加入所有下游任务的评测 (廖星宇)
Lazy Bert 使用不同的 pretrain model 结果如下- 使用 tf pretrain model 得到的结果
{"exact_match": 81.7123935666982, "f1": 89.07152353706256} - 使用 of pretrain model 得到的结果
{"exact_match": 73.50993377483444, "f1": 82.1944788581551}
Graph Bert 使用不同的 pretrain model 结果如下
- 使用 tf pretrain model 得到的结果
{"exact_match": 82.57332071901608, "f1": 89.63355726606137} - 使用 of pretrain model 得到的结果
{"exact_match": 73.30179754020814, "f1": 82.10048936661447}
在 tf 官方实现中需要对齐的精度为
{"exact_match": 80.71901608325449, "f1": 88.4073447260652},在使用和 tf 相同的 pretrain model 进行训练可以认为已经对齐了 SQuAD 的精度,of pretrain model 的问题等待后续 check - 使用 tf pretrain model 得到的结果
-
载入 train 好的 graph 模型权重,进行下游任务 finetune,在 SQuAD 上进行精度验证
chengtbf and Ldpe2G
Metadata
Metadata
Assignees
Labels
No labels





