使用示例
- 参见工具安装完成精度预检工具安装。
- 参见代码样例准备模型代码并将代码上传至服务器任意目录,例如“/home/resnet”。
- 打开模型训练脚本,引入工具。
cd /home/resnet && vi ddp_basic.py
导入精度预检工具。
import api_accuracy_checker.dump # 以下为可选 from api_accuracy_checker.dump import msCheckerConfig ...
- (可选)若用户需修改dump路径,在训练迭代开始前,可添加dump代码。
msCheckerConfig.update_config(dump_path="my/dump/path", real_data=True)
- 执行命令启动训练,采集API信息。
python ddp_basic_main.py 8
8表示训练所用卡数。
目前工具仅支持抓取训练的第二个迭代并且在第二个迭代后会报错退出训练进程。可在打屏日志中查看回显,显示以下内容即表示训练停止,API信息已采集完成。
Exception: Model pretest: exit after iteration 1.
此时可进入dump路径查看采集的数据,所配置dump目录下(默认为'./')产生了一组或多组dump文件,每组dump文件由 forward_info_{pid}.json,backward_info_{pid}.json、stack_info_{pid}.json三个文件组成(其中{pid}表示进程号)。
forward_info与stack_info中的key值一一对应,用户可根据forward_info中API的key在stack_info中查询到其调用栈及代码行位置。
- 进入比对工具目录进行API精度检测。
cd $ATT_HOME/debug/accuracy_tools/api_accuracy_checker/run_ut python3 run_ut.py -forward ./forward_info_0.json -backward ./backward_info_0.json
其中$ATT_HOME为工具源码所在目录,例如“/home”。
参数说明:
- -forward:指定前向API信息文件forward_info_{pid}.json,必选。
- -backward:指定反向API信息文件backward_info_{pid}.json,必选。
- -save_error_data:保存精度未达标的API输入输出数据,可选。数据默认会存到“./ut_error_data”路径下(相对于启动run_ut的路径)。
- --out_path:指定run_ut执行结果存盘路径,默认“./”(相对于run_ut的路径),可选。
run_ut执行结果包括api_accuracy_result.csv和api_accuracy_details.csv两个文件。
pretest_result.csv是API粒度的,标明每个API是否通过测试。建议用户先查看pretest_result.csv文件,对于其中没有通过测试的或者特定需要的API,根据其API name字段在pretest_details.csv中查询其各个输出的达标情况以及比较指标。
- pretest_result.csv表格里面主要是各API是否通过的结果:
- API name:API的名称。
- Forward Test Success:前向的计算结果。若无误,则为TRUE;反之则为FALSE。
- Backward Test Success:反向的计算结果。若无误,则为TRUE;反之则为FALSE。若有API反向被跳过,此处显示N/A。
- pretest_details.csv相对于pretest_result.csv更加详细,以下是的相关表项的含义:
- Subject:API的名字以及前向、反向、输入、输出的信息。
- Cosine Similarity:该API的输出数据与标杆侧数据的余弦相似度。正常情况下为0到1之间的数,小于0.99为不达标。N/A表示无法计算余弦或该API计算跳过。
- Max Rel Error:CPU和NPU的相对误差值,供参考。
- Thousandth Max Rel Err:相对误差千分之一达标率:Tensor中的元素逐个与对应的标杆侧数据对比,相对误差小于千分之一的比例占总元素数比例。对于bf16和fp16,大于99.9%为达标;对其他数据类型该指标供参考。Ten Thousandth Max Rel Err:相对误差万分之一达标率:Tensor中的元素逐个与对应的标杆侧数据对比,相对误差大于万分之一的比例占总元素数比例。对fp32,要求大于99.99%。对其他数据类型该指标供参考。
目前API通过测试的标准是float16和bfloat16数据要通过双千分之一标准,float32数据要通过最大相对误差双万分之一标准,float16和bfloat16数据要通过相对误差或绝对误差双千分之一标准,pretest_details.csv中的相对误差供用户分析时使用。
父主题: 精度预检工具