Asecend Tensor Compiler编译失败,ModuleNotFoundError:No module named “te_fusion“

Asecend Tensor Compiler简称ATC,昇腾张量编译器,主要是将开源框架的网络模型或Ascend IR定义的单算子描述文件(json格式)转换为昇腾AI处理器支持的om格式

场景描述:使用二进制文件在转换模型时,调用ATC工具时,报了没有找到te_fusion的error,从EROOR来看这是没有找到tensor engine融合的模块.

解决过程:

一开始怀疑是不是CANN包安装的有问题,于是重新安装了CANN包,但是仍然报错,于是检查环境变量,从PATH和PYTHONPYTH上看是没有什么问题的,设置DEBUG级别日志查看ERROR信息,初步认定是环境问题,因为有PATH DOES NOT MATCH THE DIRECTIONARY类似的提示信息,思索后检查了/usr/bin下面的python,发现python默认是指向ubuntu系统自带的python2.7,python3软链接指向python3.8(此处解释一下,其实3.8应该也是支持ATC的,但无法使用应该是ATC默认设置的原因)

所以我rm -rf /usr/bin/python3,然后重新建立软链接ln -s /usr/bin/python3.75 /usr/bin/python3

重新调用ATC接口对模型进行编译,显示ATC RUN SUCCESS

分析:因为不是ATC组件的开发人员,所以很多只能从ATC开发使用指南上查询ATC相关的资料,从结果上看,ATC应该依赖的是环境的PYTHON3,由于python软链接的问题导致了ATC在python对应的site-package下没有找到te-fusion模块,所以编译无法正常进行。

PS:经验分享,具体问题具体分析,有问题请多指教~

 

你可能感兴趣的:(python)