INTERSPEECH2023论文解读|BAT一种低延迟低内存消耗的RNN-T模型

简介: INTERSPEECH2023论文解读|BAT一种低延迟低内存消耗的RNN-T模型

流式识别即实时语音识别技术,可以让用户在语音输入过程中即时获取识别结果,获得流畅自然的交流体验,在车机助手、实时字幕、电话语音转录等人机交互场景中扮演着重要角色。同时,流式识别也面临一些挑战,包括对低延迟的要求、处理不完整语音的准确性以及对大规模语言模型的实时运算需求等。


image.png

(实例:工作学习AI助手通义听悟上的流式语音识别)


RNNT语音识别模型具有流式识别出字自然流畅的特点,并且具有良好的识别效果,近年来受到研究者的青睐。然而,RNNT模型训练过程中,需要消耗大量的计算与GPU内存资源。与此同时,RNNT为了获得更好的识别效果,往往会搜索更多的上下文,进而导致识别出字延迟较高。


为了解决上述问题,我们设计了一种低延迟和低内存消耗的RNNT模型。

论文题目:


BAT: Boundary aware transducer for memory-efficient and low-latency ASR


作者:安柯宇,石宪,张仕良


论文地址:https://arxiv.org/abs/2305.11571


代码地址:https://github.com/alibaba-damo-academy/FunASR


模型体验地址https://modelscope.cn/models/damo/speech_bat_asr-zh-cn-16k-aishell1-vocab4234-pytorch/summary


研究背景


图1 CTC与RNNT模型结构对比


CTC(上图左)是语音识别的经典模型之一,被广泛使用于各种语音识别系统中。然而,CTC的一个显著缺陷是其输出的条件独立特性,这使其无法很好地建模语言的上下文依赖关系。为了弥补这一缺陷,RNN Transducer (RNN-T [1],上图右)在CTC的基础上添加了对文本信息的建模,RNN-T的输出不仅依赖声学信息,也依赖历史的输出信息,两者通过一个joint network融合。


语音-文本信息的融合使得RNN-T取得了相对CTC更优越的识别性能,但也带来了极大的训练开销。此外,由于缺乏对齐信息的指导,RNN-T倾向于访问更多的上下文以获得更好的性能,这导致了流式识别时更高的发射延迟(emission latency)。


为了解决这两个问题,我们提出了Boundary aware transducer(BAT),用于减小RNN-T训练的时间和内存消耗和推理时的发射延迟。

BAT的思想受到了一些之前工作的启发。在降低显存开销方面,Alignment Restricted RNN-T (Ar-RNN-T)[2] 和Pruned RNN-T [3] 均表明可以通过限制RNN-T loss前后向计算在lattice上的可行路径来降低显存开销;在降低发射延迟方面,一些研究表明可以通过引入额外的对齐信息(通常来自一个传统HMM模型)对RNN-T的高延迟路径施加惩罚,来达到减小RNN-T延迟的目的。


与先前工作不同的是:1. BAT的对齐信息是通过一个轻量级CIF模块在线生成的,无需预先训练一个对齐模型;2. BAT同时实现了训练时的显存降低和测试时的发射延迟降低。


BAT是如何运算的?


>>>标准RNN-T loss


我们先简要回顾一下标准RNN-T loss的计算过程。

ca0a80a3b9c4155872af32a53ebbd7f9.png

>>>基于CIF对齐的boundary aware training


图2 BAT模型结构图


在BAT中,我们首先利用continuous integrate-and-fire(CIF)[4] 生成声学特征和标准文本之间的对齐(alignment),然后用它来限制可行的(t, u)路径。



图3 RNNT与BAT搜索路径对比



BAT的实验结果如何?


我们主要在公开的AISHELL-1和非公开的工业级数据集上评测了我们的模型,详细实验配置请参考论文。

>>>与类似工作横向对比


我们在相同的实验设置下,比较了标准RNN-T (采用warp_rnnt [7]实现)、pruned RNN-T和BAT loss计算的时间和显存开销,如下表所示。可以看到,pruned RNN-T和BAT的时间和显存占用开销均远好于标准RNN-T。BAT略好于pruned RNN-T,因为BAT确定裁剪边界的方式相较pruned RNN-T更为高效,后者需要先通过对一个“trivial” joiner network的输出计算RNN-T loss来确定裁剪边界。


表1 与类似工作对比(耗时与峰值GPU内存)


>>>AISHELL-1数据实验结果


AISHELL-1上的非流式模型结果如下表所示。可以看到,BAT识别准确率与RNN-T接近。R_d和R_u增大,识别结果变好,但计算开销也会相应增大。


表2 AISHELL-1 非流式实验结果对比


AISHELL-1上的流式模型结果如下表所示。为了更好地展示BAT对发射延迟的改进效果,我们提供了标准RNN-T加上FastEmit [6]正则的结果作为对比。

下表中的avg ET (average emission time) 代表了最后一个token的平均发射时间,PR (partial recognition latency)代表了最后一个token发射时刻和说话人实际完成讲话的时刻之差,PR50和PR90分别是PR的50分位数和90分位数。可以看到:与FastEmit类似,BAT的结果体现出了准确率和延迟的trade-off,即更大的R_d和R_u会造成更大的延迟,但识别准确率会有所提高。


表3 AISHELL-1 流式实验结果对比

下图可视化了流式RNN-T和流式BAT的token发射快慢。途中横坐标代表了时间轴,纵坐标则代表了模型输出的non-blank token。可以看到,流式BAT的token输出要显著快于流式RNN-T。



图4 流式RNNT与BAT出字延迟对比

>>>3万小时工业数据实验结果

3万小时工业数据上的结果如下表所示。可以看到,BAT在工业量级数据上取得了与RNN-T可比的性能。


表4 3万小时工业数据实验结果


‍▎Future Work


本文中我们提出了BAT,同时解决了RNN-T在训练时显存占用较高和推理时发射延迟较高的问题。我们将验证BAT在其他语种(例如英语)上的效果。

此外,在BAT中,仅在训练阶段利用了CIF的对齐信息,后续工作将考虑结合对齐信息的推理,例如基于CIF的预测权重进行跳帧解码等。

BAT显著降低了RNN-T的训练成本。再结合encoder输出降采样、混合精度训练和预训练等加速方案后,在阿里巴巴内部的PAI平台上使用32卡A100训练RNN-T工业模型的时间从15天缩短至5天内,显著加快了模型开发和迭代的速度。在未来,BAT有望在流式语音识别和端上语音识别等场景发挥作用。


‍▎联系我们


BAT的代码已在FunASR开源,欢迎对识别模型开源和应用感兴趣的研究人员和开发人员加入Fun-ASR开源社区交流群,共同探讨精进!



References:

[1] Graves, Alex., “Sequence Transduction with Recurrent Neural Networks.”, ArXiv abs/1211.3711 (2012).

[2] J. Mahadeokar et al., "Alignment Restricted Streaming Recurrent Neural Network Transducer." , SLT 2021.

[3] Kuang, Fangjun et al., "Pruned RNN-T for fast, memory-efficient ASR training.", INTERSPEECH 2022.

[4] L. Dong and B. Xu, "CIF: Continuous Integrate-And-Fire for End-To-End Speech Recognition," ICASSP 2020.

[5] https://github.com/danpovey/fast_rnnt

[6] Yu, Jiahui  et al., FastEmit: Low-Latency Streaming ASR with Sequence-Level Emission Regularization. ICASSP 2021.

[7] https://github.com/1ytic/warp-rnnt


相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
3月前
|
程序员 编译器 C++
【C++核心】C++内存分区模型分析
这篇文章详细解释了C++程序执行时内存的四个区域:代码区、全局区、栈区和堆区,以及如何在这些区域中分配和释放内存。
56 2
|
18天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
2月前
|
机器学习/深度学习 算法 物联网
大模型进阶微调篇(一):以定制化3B模型为例,各种微调方法对比-选LoRA还是PPO,所需显存内存资源为多少?
本文介绍了两种大模型微调方法——LoRA(低秩适应)和PPO(近端策略优化)。LoRA通过引入低秩矩阵微调部分权重,适合资源受限环境,具有资源节省和训练速度快的优势,适用于监督学习和简单交互场景。PPO基于策略优化,适合需要用户交互反馈的场景,能够适应复杂反馈并动态调整策略,适用于强化学习和复杂用户交互。文章还对比了两者的资源消耗和适用数据规模,帮助读者根据具体需求选择最合适的微调策略。
153 5
|
3月前
|
XML IDE 前端开发
IDEA忽略node_modules减少内存消耗,提升索引速度
在后端开发中,IDEA 在运行前端代码时,频繁扫描 `node_modules` 文件夹会导致高内存消耗和慢索引速度,甚至可能会导致软件卡死。为了改善这一问题,可以按照以下步骤将 `node_modules` 文件夹设为忽略:通过状态菜单右键排除该文件夹、在设置选项中将其加入忽略列表,并且手动修改项目的 `.iml` 文件以添加排除配置。这些操作可以有效提高IDE的运行性能、减少内存占用并简化项目结构,但需要注意的是,排除后将无法对该文件夹进行索引,操作文件时需谨慎。
121 4
IDEA忽略node_modules减少内存消耗,提升索引速度
|
6月前
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
86 0
|
2月前
|
JavaScript 前端开发 安全
如何避免闭包带来的内存消耗呢
【10月更文挑战第12天】如何避免闭包带来的内存消耗呢
30 0
|
2月前
|
机器学习/深度学习 自然语言处理 算法
【NPL自然语言处理】带你迅速了解传统RNN模型
【NPL自然语言处理】带你迅速了解传统RNN模型
|
4月前
|
机器学习/深度学习 数据采集 PyTorch
构建高效 PyTorch 模型:内存管理和优化技巧
【8月更文第27天】PyTorch 是一个强大的深度学习框架,被广泛用于构建复杂的神经网络模型。然而,在处理大规模数据集或使用高性能 GPU 进行训练时,有效的内存管理对于提升模型训练效率至关重要。本文将探讨如何在 PyTorch 中有效地管理内存,并提供一些优化技巧及代码示例。
182 1
|
5月前
|
机器学习/深度学习 自然语言处理
彻底改变语言模型:全新架构TTT超越Transformer,ML模型代替RNN隐藏状态
【7月更文挑战第25天】近年来,NLP领域取得显著进展但也面临挑战,如长上下文建模与计算效率的平衡。为此,研究人员提出Test-Time Training (TTT) 模型架构。TTT由多机构合作开发,旨在解决长上下文建模难题及提高计算效率。通过将隐藏状态视为可学习更新的模型,TTT能随输入增长提升表示能力;采用自监督学习更新规则确保线性计算复杂度的同时保持高性能。实验显示TTT在多种NLP任务中表现优秀,尤其在长上下文处理方面超越Transformer。尽管如此,TTT仍面临训练资源需求高及自监督学习鲁棒性等挑战。[论文](https://arxiv.org/abs/2407.04620)
130 5
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
160 9