will_wang
will_wang
@Mddct > 关注一下cif那部分的转onnx 是的,确实主要是CIF那块儿的问题; 我做了一些尝试,目前可以成功转换支持动态输入的 onnx-gpu 模型,但是还是存在一些问题。 1. wenet-main/examples/aishell/paraformer/wenet/utils/mask.py ``` # 这里加item(),会导致onnx转换模型无法支持动态维度,用netron查看网络结构,会发现这里会变成一个固定值 # max_len = max_len if max_len > 0 else lengths.max().item() max_len = lengths.max() ``` 2. wenet-main/examples/aishell/paraformer/wenet/paraformer/cif.py ``` class...
> 第二部分 onnx 是支持for 循环导出的这里我有时间整一下, 你可以搜一下torch for loop to onnx; 或者可以对齐下parallel cif的实现 提个pr过来 感谢!那我这里先试一下onnx for循环导出的问题,看能不能解决; 但是推理耗时不稳定的问题,会是CIF这块儿的问题吗?
@Mddct > 应该是 其他结构都类transformer 推理应该很稳定 我做了一些测试,但是跟我原本猜想的好像不太一样: - 实际上慢的部分是decoder(并且是时快时慢,反而encoder predictor部分的耗时很稳定); - 这块儿我经验不多,我有考虑是否是资源受限的问题,但感觉又不合理 - 性能有一定的衰减,自有数据集上字错率由30%(funasr接口直测)涨到了36%,感觉可能 CIF没对齐的问题(因为主要更改了这个部分); # 测试过程 我把 encoder predictor decoder 分别导出为 onnx-gpu模型,然后单独测试其耗时; ## 1. 测试结果【测试音频不同】 - 耗时单位为 ms 毫秒 ...
> gpu跑paraformer larger onnx模型时候,模型内部出现维度不匹配错误 模型使用的是:https://modelscope.cn/models/iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx/files 没有量化模型; 错误: > > 请问,这个和什么有关系?如何更好解决或者定位问题? > > 其他:使用cpu跑的时候,没有出现问题,gpu会偶发这个问题。 # 1. 问题 大概率应该是CIF部分的问题(CIF是for循环实现的): 1. 你在转ONNX的时候,我们希望的是for循环的层数是支持动态变换的,也就是适配动态输入; 2. 但是,实际上转换的过程中,这个for循环的层数会固定为你输入数据在CIF中的实际大小,比如固定为24啥的; 3. 而 decoder的输入实际上包含两个部分, encoder的输出 + predictor(CIF部分)的输出; 4. encoder 的输出并没有受到影响(应该是你的(1,...
> @willnufe Need to make some modifications to the code in order to support it successfully. I don't have time recently, but if you are willing to do it, I...