【FIreRedASR-AED】ONNX改造与Beam Search过程优化,速度提升37%
FireRedASR是一个开源工业级自动语音识别模型家族,支持多种语言和方言。其中FireRedASR-AED模型采用注意力编码器-解码器架构,在中文ASR基准测试中达到SOTA水平。项目对原始模型进行了ONNX转换和优化,通过实现完整的Beam Search缓存机制,显著提升了CPU推理速度(提升38.7%),同时保持识别准确率。优化后的模型在AISHELL-1测试集上CER为0.5527%,推
FireRedASR
[Paper] [Model] [Blog] [Demo] [modelscope]
FireRedASR是一个开源的工业级自动语音识别(ASR)模型家族,支持普通话、中国方言和英语,在公共普通话ASR基准测试上达到了新的最先进水平(SOTA),同时还提供了出色的歌词识别能力。
FireRedASR-AED:旨在平衡高性能和计算效率,并在基于大语言模型的语音模型中作为有效的语音表示模块。它利用基于注意力的编码器-解码器(AED)架构。
FireRedASR-AED模型结构
可以参考我的另一篇博客【FireRedASR-AED】目前性能最好的开源中文ASR模型
改造后的FireRedASR-AED-ONNX
项目参考 https://gitcode.com/yd778473278/FireRedASR-AED
模型下载 https://www.modelscope.cn/models/yangdi/FireRedASR-AED-ONNX
改造内容
ONNX转换
通过onnx原生网络构建,非PyTorch导出,目的是为了刚好的了解模型结构,为流式改造提供基础
Beam Search优化
原始PyTorch版在本未做完整的cache,导致大量的重复计算,这严重影响了CPU上的推理速度
可以节约的计算代价的包括,decoder self-attention的kv cache和encoder decoder cross-attention的kv cache
具体可以参考[decoder.py]https://gitcode.com/yd778473278/FireRedASR-AED/blob/main/fireredasr_aed_onnx/decoder.py
速度测试
速度提升38.7%
数据集AISHELL-1,共7176个文件
| Method | Quantization | batch | CER | Speed | CPU Core | Memory(CPU/GPU) |
|---|---|---|---|---|---|---|
| PyTorch CPU | float32 | 1 | 0.5536% | 2.4939s | 5 | 6G |
| ONNX CPU | float32 | 1 | 0.5527% | 1.5281s | 4 | 6.2G |
更多推荐
所有评论(0)