精度比对案例
假设有一个PyTorch模型,在图模式下出现了精度异常。为了确定问题来源,需要比对图模式与Eager模式下模型精度差异。具体的操作步骤如下:
- 环境准备,参考安装完成torch_npu安装和依赖的软件安装。
- 安装msit工具包里llm组件(大模型推理精度工具)。
- 获取图模式下Ascend IR图dump数据。
以如下脚本为例,在torch.compile入图处使用msit提供的get_ge_dump_config接口获取Ascend IR图数据。
# 导入torch_npu和工具等 import torch, torch_npu, torchair from msit_llm.dump import torchair_dump # 定义模型Model class Model(torch.nn.Module): def __init__(self): super().__init__() def forward(self, x, y): ...... model = Model().npu() # 配置获取Ascend IR图dump的config config = torchair_dump.get_ge_dump_config(dump_path=${ge_dump_path}) ...... # Graph模式下torch.compile npu_backend = torchair.get_npu_backend(compiler_config=config) model = torch.compile(model, backend=npu_backend, dynamic=True) ......
配置后执行推理脚本,会在dump_path指定目录下生成dump数据,目录样式如下:
|--${ge_dump_path} |--dump_${timestamp} |--${op_dump_timestamp} // 图模式下dump的算子输入/输出信息文件夹,以时间戳命名 |--dynamo_original_graph_${graph_id}_rank_${rank_id}_pid_${pid}_ts_${timestamp}.txt // 图模式下dump的原始图结构 |--dynamo_optimized_graph__${graph_id}_rank_{rank_id}_pid_{pid}_ts_{timestamp}.txt // 图模式下dump的优化后图结构
dump的数据包括两部分,一部分是“图模式下dump的算子输入/输出信息”,文件介绍可参考算子输入输出dump功能(图模式)中“产物说明”;另一部分是“图模式下dump的图结构信息”,文件介绍可参考图结构dump功能中“产物说明”。
- 获取Eager模式下FX图dump数据。
以如下脚本为例,在torch.compile入图处使用msit提供的get_fx_dump_config接口获取FX图数据。
import torch, torch_npu, torchair from msit_llm.dump import torchair_dump # 定义模型Model class Model(torch.nn.Module): def __init__(self): super().__init__() def forward(self, x, y): ...... model = Model().npu() # 配置获取FX图dump的config config = torchair_dump.get_fx_dump_config() ...... # Eager模式下torch.compile npu_backend = torchair.get_npu_backend(compiler_config=config) model = torch.compile(model, backend=npu_backend, dynamic=True) ......
配置后执行推理脚本,一般会在当前路径下data_dump/${token_id}/gm_${time stamp}_dump(老版本中路径可能为gm_${timestamp}_dump)目录生成dump数据,其中${token_id}从1开始,相对于GE模式是从0开始的,比对时会将FX模式的${token_id}减1。产物是npy格式,文件名和内容介绍可参考算子输入输出dump功能(Eager模式)中“产物说明”。
- 通过llm组件提供的精度比对能力,比对两种模式下的模型精度。
使用如下命令,请确保当前用户已拥有目标文件的读、写权限。
msit llm compare --my-path ${ge_dump_path}/dump_${timestamp} --golden-path ${fx_dump_path}
- ${ge_dump_path}:图模式下Ascend IR图dump数据路径,即get_ge_dump_config接口dump_path参数指定路径下${ge_dump_path}/dump_${timestamp}目录。
- ${timestamp}:图模式下dump对应的时间戳。
- ${fx_dump_path}:Eager模式下FX dump数据路径,即get_fx_dump_config接口默认路径下data_dump目录。
执行命令后,会出现类似的回显信息,精度比对结果文件中的参数说明请参见精度比对结果参数说明,以便做进一步分析。
1 2 3 4
msit_llm_logger - INFO - Comparing GE with FX msit_llm_logger - INFO - All token ids in my_dump_data: dict_keys([0]) ...... msit_llm_logger - INFO - Saved comparing results: ./msit_cmp_report_${timestamp}.csv
父主题: 图模式精度比对