常见问题

import 出错

错误一:Cannot find the extension library(_C.so)

解决方法:

  • 确定 horizon_plugin_pytorch 版本和 cuda 版本是对应的。
  • 在 python3 中,找到 horizon_plugin_pytorch 的执行路径,检测该目录下是否有 .so 文件。可能同时存在多个 horizon_plugin_pytorch 的版本,需要卸载只保留一个需要的版本。

错误二:RuntimeError: Cannot load custom ops. Please rebuild the horizon_plugin_pytorch

解决方法:确认本地 CUDA 环境是否正常,如路径、版本等。

无法正常 prepare_calibration/qat

RuntimeError: Only Tensors created explicitly by the user (graph leaves) support the deepcopy protocol at the moment

解决方法:一般是模型中包含 non-leaf tensor 才会出现这样的错误,尝试以下方法:

  • 将 prepare_calibration/qat 的 inplace 设为 True。
  • 正常 horizon_plugin_pytorch 定义的算子不会出现这种错误,检查模型中自定义的算子是否有 non-leaf tensor 的定义。

prepare_qat 后 forward 报错

TypeError: when calling function <built-in method conv2d of type object at >

解决方法:自定义算子继承了某个 torch 的 Module 算子,导致 prepare_qat 没有被成功转成 qat module。建议使用 submodule 的方式调用 conv2d。

量化精度异常

QAT/Quantized 精度不符合预期、出现 NAN 或 QAT 初始 loss 相对 float 明显异常。

解决方法:请参考 精度调优工具使用指南