wenet在arm64开发板rk3588编译踩坑记录
作者:互联网
第一步:手动编译pytorch
wenet用的是libtorch1.10.0,这里需要下载pytorch1.10.0进行编译。
git clone -b v1.10.0 https://github.com/pytorch/pytorch.git pip install typing-extensions 如果编译时报错缺少这个包,需要提前安装 export USE_CUDA=False 不编译CUDA export BUILD_TEST=False 可节省编译时间 export USE_MKLDNN=False MKLDNN是针对intel cpu 的一个加速包,这里可以不编译 export USE_NNPACK=True 量化推理用到 有些教程里将USE_NNPACK 和 USE_QNNPACK设置成False了,会导致wenet加载模型时报错,尤其是加载量化模型时。 export USE_QNNPACK=True 量化推理用到 有些教程里将USE_NNPACK 和 USE_QNNPACK设置成False了,会导致wenet加载模型时报错,尤其是加载量化模型时。 export MAX_JOBS=1 编译时用的线程数量,可适当增大。若不设置或设置的值太大,编译时会报错,类似wait for other unfinished jobs 和 killed signal terminated program cc1plus 的错误。
cd pytorch sudo -E python setup.py install
第二步:wenet编译
1)修该cmake文件夹下的libtorch.cmake
原wenet中是下载libtorch,这里改成自己编译好的pytorch
注释libtorch下载部分,增加如下代码
set(Torch_DIR "your_path/pytorch/torch") 这里修改成你的pytorch安装路径 find_package(Torch REQUIRED PATHS ${Torch_DIR} NO_DEFAULT_PATH)
如下图所示
2)修改torch_asr_model.cc (在runtime/core/文件夹下)
在加载模型 torch::jit:load(model_path,device) 前,增加如下代码,
auto qengines = at::globalContext().supportedQEngines(); if (std::find(qengines.begin(), qengines.end(), at::QEngine::QNNPACK) != qengines.end()) { at::globalContext().setQEngine(at::QEngine::QNNPACK); }
如下图所示:
否则会出现 RuntimeError: Didn't find engine for operation quantized linear_prepack NoQEngine
3)wenet/runtime/libtorch文件夹下 进行编译
mkdir build && cd build && cmake .. && cmake --build .
一些其他记录
注意这里下载最新的模型,老版本比如wenet-1.0.1版本下的模型会出现无法识别的错误。
标签:USE,False,rk3588,开发板,编译,pytorch,export,arm64,wenet 来源: https://www.cnblogs.com/wieneralan/p/16667047.html