在昇腾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请根据实际情况设置