wenet icon indicating copy to clipboard operation
wenet copied to clipboard

arm版本预测时提示 asr_decoder.cc:161] Check failed: input.size() == time_stamp.size() (26 vs. 0)

Open Gmgge opened this issue 2 years ago • 6 comments

很感谢你们的工作

在arm机器自行安装时,运行出现错误asr_decoder.cc:161] Check failed: input.size() == time_stamp.size() (26 vs. 0) 构建机器:华为云服务器 麒麟计算arm 构建目标:/runtime/binding/python 由于由于libtorch官方未提供arm版本的下载,自行编译1.10.0的libtorch版本。 安装脚本:python setup.py install 调用方式同x86演示,在x86机器正常运行,在arm上无法正常运行。

是否在编译libtorch的时候需要设定特殊的参数?或者在编译arm版本时,需要设定一定的参数?

或者有其他的arm方案嘛?

Gmgge avatar Sep 22 '22 03:09 Gmgge

目前我们的 runtime 和 binding 的编译暂时还没有考虑 ARM 平台,但理论上 LibTorch 支持的平台 wenet 均可以支持。你们可以调研一下如何解决,解决之后方便的话可以贡献一下方案。

robin1001 avatar Sep 22 '22 03:09 robin1001

好的,感谢回答,如果有进一步的成功案例会进行分享。

进一步的问个问题,是否可以用wenet/wenet/bin/recognize.py 来调用预训练模型,我尝试修改该文件,但是有些参数对不上,具体的说,如果我使用预训练模型的最后一个wenetspeech CN Conformer Conformer 地平线,我需要参考什么文件来设置decoding mode,以及一些权重参数呢?我查看了wenet的论文好像没有发现一些可以指导的内容。 是否是我错过了一些重要的信息吗?有一些建议或者案例嘛?

Gmgge avatar Sep 22 '22 03:09 Gmgge

什么参数对不上?

robin1001 avatar Sep 22 '22 03:09 robin1001

如果使用wenet/wenet/bin/recognize.py 来调用预训练模型,我是否只需要指定必要参数就可以正确推导呢?还是需要设定--mode --ctc_weight等一些参数,wenetruntime中会有一些默认参数,但是有一些wenetruntime有的参数,而recognize.py中没有例如rescoring_weight

Gmgge avatar Sep 22 '22 03:09 Gmgge

wenetruntime 中没有暴露参数设置的接口,wenetruntime 中默认使用 attention_rescoring 的解码方式,对应 recognize.py 中的 --mode attention_rescoring.

robin1001 avatar Sep 22 '22 03:09 robin1001

十分感谢你的回答 wenetruntime没有暴露参数接口,我通过修改core/decode/下cpp文件中的参数以达到该目的。算是个蹩脚的方法,哈哈

Gmgge avatar Sep 22 '22 04:09 Gmgge

目前尝试出一个稍微不太正常的流程,确实只要LibTorch正常编译成功就可以,但是我自行编译怎么样修改参数都是无法预测成功,可能我对pytorch的编译不是很了解。这边建议使用arm编译torch的docker

下面是一个临时的方案,可以正常运行,速度也不错: 1.下载官方x86版本的libtorch,在pypi下载官方arm的python安装包,从里面取出lib下面的库文件,替换到x86里面,也可以使用我临时构建好的libtorch。 2.由于x86量化的模型无法在arm上推理,使用预训练模型导出,再进行推理即可正常使用。 3.可以尝试进行在arm平台进行量化,我量化成功了,但是推理又报错了,目前的话没有继续研究了。

todo:建议使用上文所说的docker环境正式编译出libtorch,我使用华为云的arm机器镜像18.04docker构建出现报错就没再弄了;量化模型使用的默认是x86的fbgem,导致arm机器使用qnn量化的模型无法推理,所以可以尝试修改代码使得推理支持。

Gmgge avatar Sep 26 '22 01:09 Gmgge