其他分享
首页 > 其他分享> > wenet在arm64开发板rk3588编译踩坑记录

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