输入数据和标杆数据准备
使用Ascend C调测工具进行算子调测前,必须提供算子的输入数据和标杆数据。
- 输入数据(input数据):固定shape算子运行时的输入数据,bin格式。
- 标杆数据(golden数据):根据输入数据计算出来的真值数据,用于与输出数据进行精度比对,bin格式。
数据该如何准备,本章节提供了多种方式,用户可以根据实际情况选择合适的方式。
- 方式1:采用外部提供的input/golden数据。
用户采用外部数据源进行算子调测,一般适合首次调测场景。
在算子信息json配置文件中,将gen_data配为false,data_file配为输入数据、标杆数据对应的路径(必须为绝对路径),示例如下:
"gen_data": false, "data_file": "/path/to/input_data_q.bin", "data_file": "/path/to/golden_data_out.bin",
若外部提供的数据是.pt文件,需要转换为.bin文件,以Pytorch为例:
import torch model = torch.load('model.pt') # 加载.pt文件 torch.save(model, 'model.bin') # 将模型参数保存为二进制文件
- 方式2:采用已生成过的input/golden数据,无需重新生成。
当用户需要多次重跑,建议直接使用历史生成的数据,避免重复生成,导致调测耗时过长。
在算子信息json配置文件中,将gen_data配为false,data_file配为输入数据、标杆数据对应的bin文件名(不含路径信息,默认在当前路径下查找数据文件),示例如下:
"gen_data": false, "data_file": "input_data_q.bin", "data_file": "golden_data_out.bin",
- 方式3:采用工具随机生成input数据。
用户未准备任何数据,可采用工具随机生成的input数据,生成的bin数据文件默认在当前路径下的对应算子的data文件夹中。该场景下没有golden数据,因此不支持精度比对。
在算子信息json配置文件中,将gen_data配为true,data_script配为空字符串或null,data_file配为输入数据、标杆数据对应的bin文件名(不含路径信息,默认在当前路径下查找数据文件),示例如下:
"data_script": "", "gen_data": true, ...... "shape": [1, 16384], "data_file": "sample.bin",
- 方式4:采用脚本生成input/golden数据。
用户自行准备数据生成脚本(一般是py文件),同时配置算子信息json配置文件。
将gen_data配为true,data_script配为数据生成脚本路径(以FlashAttentionScore算子为例),data_file配为输入数据、标杆数据对应的bin文件名(不含路径信息,默认在当前路径下查找数据文件),示例如下:"data_script": "${fa_case_dir}/flash_attention_score_golden.py", "gen_data": true, ...... "data_file": "sample.bin",
生成数据时,会调用该脚本,并固定传入以下参数:
sys.argv[1]: 输入的算子json配置文件 sys.argv[2]: 输出bin文件路径(工作路径下的data文件夹,例如debug_workspace/FlashAttentionScore/data/)
- 用户需要根据输入的sys.argv[1]读取算子json配置文件内容,获取生成数据所需的算子shape信息。
- 用户需要根据输入的sys.argv[1]读取算子json配置文件内容,获取生成数据文件的文件名,在脚本中适配生成的文件名。
- 用户需要根据输入的sys.argv[2]设置存放input/output数据文件的路径,将生成的文件保存到该路径下。
父主题: 命令行方式下数据和配置说明