NPU (华为 昇腾)¶
使用方法¶
请参考 MMCV 的安装文档 来安装 NPU 版本的 MMCV。
以下展示单机八卡场景的运行指令:
bash tools/dist_train.sh configs/ssd/ssd300_coco.py 8
以下展示单机单卡下的运行指令:
python tools/train.py configs/ssd/ssd300_coco.py
模型验证结果¶
Model | box AP | mask AP | Config | Download |
---|---|---|---|---|
ssd300 | 25.6 | --- | config | log |
ssd512 | 29.4 | --- | config | log |
ssdlite-mbv2* | 20.2 | --- | config | log |
retinanet-r18 | 31.8 | --- | config | log |
retinanet-r50 | 36.6 | --- | config | log |
yolov3-608 | 34.7 | --- | config | log |
yolox-s** | 39.9 | --- | config | log |
centernet-r18 | 26.1 | --- | config | log |
fcos-r50* | 36.1 | --- | config | log |
solov2-r50 | --- | 34.7 | config | log |
注意:
如果没有特别标记,NPU 上的结果与使用 FP32 的 GPU 上的结果结果相同。
(*) 这些模型在 NPU 上的结果与 GPU 上的混合精度训练结果一致,但低于 FP32 的结果。这种情况主要与模型本身在混合精度训练中的特点有关, 用户可以自行调整超参数来获得更高精度。
(**) GPU 上 yolox-s 在混合精度下的精度为 40.1 低于readme中 40.5 的水平;默认情况下,yolox-s 启用
persister_woker=True
,但这个参数 目前在NPU上存在一些bug,会导致在最后几个epoch由于资源耗尽报错退出,对整体精度影响有限可以忽略。
Ascend加速模块验证结果¶
优化方案简介:
修改循环计算为一次整体计算,目的是减少下发指令数量。
修改索引计算为掩码计算,原因是SIMD架构芯片擅长处理连续数据计算。
Model | Config | v100 iter time | 910A iter time |
---|---|---|---|
ascend-ssd300 | config | 0.165s/iter | 0.383s/iter -> 0.13s/iter |
ascend-retinanet-r18 | config | 0.567s/iter | 0.780s/iter -> 0.420s/iter |
以上模型结果由华为昇腾团队提供