SuperAPI AI 工具集

external-cannbot-ops-pypto-precision-compare

测试与质量

查看项目

更新于 10-15 17:19

技能介绍

用途:PyPTO 算子精度问题调试,通过两种精度对比方法快速定位导致精度问题的具体 op,适用于调试 PyPTO 算子精度、定位精度差异来源、进行中间结果对比。

方法一,文件保存方法:使用 pypto.pass_verify_save() 保存到文件,使用 torch.save() 保存 golden。只保存 idx=0 的数据,不需要修改 kernel 函数签名,每次保存原始类型,对比时统一转换。适用初次定位精度问题、快速找到问题范围、只需对比单次循环数据、不想修改 kernel 函数签名、以及循环较多难以把数据搬到循环外的复杂算子。入门步骤:阅读 verify.md,在 kernel 中添加 pypto.pass_verify_save() 调用,在 golden 中添加 torch.save() 调用,运行测试生成数据,再用对比工具分析结果。

方法二,二分对比方法:使用检查点 tensor 作为输入参数,在内存中直接对比。支持保存所有循环迭代数据,需要修改 kernel 函数签名并添加检查点参数,类型需一致,实现较复杂、需管理检查点 tensor。适用需要对比多个循环迭代数据(如 idx=0,1,2,...),或保存文件过大、想用二分法在内存中直接对比以减少文件 IO 开销的场景。入门步骤:阅读 binary-search.md,修改 kernel 函数签名添加检查点 tensor 参数,修改 golden 函数返回检查点数据,修改测试函数创建检查点 tensor 并对比,运行测试并分析结果。

核心原则:数据对齐上,无论哪种方法,都必须确保 golden 与 kernel 的计算逻辑、切块方式、数据维度完全一致,若实现不一致应改写 golden 函数使其与 kernel 一致,且检查点的位置和顺序必须一一对应。检查点命名上,应使用反映计算步骤的有意义名称,按计算顺序添加数字前缀(如 1_after_matmul、2_after_softmax),并保持命名约定一致,便于对比工具自动匹配。

参考资料:PyPTO API 见 docs/api/;pass_verify_save API 见 docs/api/others/pypto-pass_verify_save.md。其他安装配置、平台与限制信息暂未提供。