在昇腾AI处理器上进行BERT-CRF模型训练,发现Loss收敛异常。
在PyTorch模型迁移与训练过程中出现的精度问题,可以从以下两方面依次进行定位。
请参考ptdbg_ascend工具使用说明安装ptdbg_ascend精度工具。BERT-CRF模型训练工程可点击获取链接-ModelZoo,下载BERT-CRF模型训练脚本并准备训练环境和训练数据集。
cd examples/sequence_labeling vi task_sequence_labeling_ner_crf.py
from ptdbg_ascend import PrecisionDebugger
...
model = Model().to(device)
print(model)
if 'npu' in device:
optimizer = apex.optimizers.NpuFusedAdam(model.parameters(), lr=args.lr)
model, optimizer = amp.initialize(model, optimizer, opt_level=args.opt_level, \
loss_scale=256, combine_grad=True, combine_ddp=True if distributed else False)
else:
optimizer = optim.Adam(model.parameters(), lr=args.lr)
debugger = PrecisionDebugger(dump_path="./overflow", hook_name="overflow_check")
# 模型初始化
# 下面代码也可以用PrecisionDebugger.start()和PrecisionDebugger.stop()
debugger.start()
# 需要dump的代码片段1
debugger.stop()
debugger.start()
# 需要dump的代码片段2
debugger.stop()
debugger.step()
bash ./test/train_full_1p.sh --data_path=$data_path # data_path请根据实际情况设置