FunASR icon indicating copy to clipboard operation
FunASR copied to clipboard

paraformer onnx-gpu耗时过长原因定位

Open willnufe opened this issue 1 year ago • 5 comments

我这边做了一些尝试,初步定位到paraformer onnx-gpu耗时过长的原因:

1. predictor中的cif部分

可将其替换成 https://github.com/George0828Zhang/torch_cif (CIF的一种快速并行的实现方式,但没确认是否等价于paraformer内部的实现

2. onnxruntime 中 CUDA Settings的问题:

  1. cudnn_conv_algo_search 的默认配置是 EXHAUSTIVE,这个选项的默认配置是比较耗时的,尤其影响卷积操作(通过打印的日志可以发现耗时的部分全部集中在 decoder 部分的Conv_kernel_time)

    "dur" :52419,"ts" :4481356,"ph" : "X","name" :"/decoder/decoders.X/self_attn/fsmn_block/Conv_kernel_time"

image

  1. 因此需要将配置修改为下面的 providers 配置,同时我也确认过,tritonserver中有同样的配置,这样triton(paraformer onnx-gpu)的部署应该成为可能:
    providers = [
        (
            "CUDAExecutionProvider", 
            {"cudnn_conv_algo_search": "DEFAULT"}
        ),
        'CPUExecutionProvider'
    ]
    

image

willnufe avatar Jun 07 '24 03:06 willnufe

我前两天刚实现了一版,我这边看着没什么问题,如果方便的话,也帮忙测一下 #1791

dtlzhuangz avatar Jun 07 '24 06:06 dtlzhuangz

"cudnn_conv_algo_search": "DEFAULT" 非常重要,onnx gpu速度快了3、40倍

zylo117 avatar Jul 10 '24 03:07 zylo117

"cudnn_conv_algo_search": "DEFAULT" 非常重要,onnx gpu速度快了3、40倍

请教下,CPP版本也会这样吗

lanyuer avatar Aug 27 '24 13:08 lanyuer

请教下,CPP版本也会这样吗

GPU 会受影响,CPU不会。cpp 和 python 是一样的

yuekaizhang avatar Aug 28 '24 03:08 yuekaizhang

请教下,CPP版本也会这样吗

GPU 会受影响,CPU不会。cpp 和 python 是一样的

奇怪,我这边测试影响不大(cpp版本的),看文档中onnxruntime 14.0之后默认是这个取值了。不过GPU的速度还是明显没有达到预期,A10和32核的CPU加速比差不多。。。

lanyuer avatar Aug 28 '24 11:08 lanyuer