全双工语音模型火了,但大规模商用未必划算
最近 full duplex 模型非常火,我认同它是技术上限的方向,但不一定是大规模商用最合适的架构。这种模型需要重新搞预训练数据,把数据组织成全双工模式所需成本很高。
更重要的是,推理方面全双工模型的成本也是非常高的。Higgs Realtime Duplex 的 blog 里说,“our design target is that an hour with the model costs at most one-tenth as much as an hour of a person’s time”,这里是按美国人的时薪算的,$50 的十分之一就是 $5。一个语音助手如果只是用来做闲聊和日常生活助手,一小时 $5 就算是美国人也很贵了。因此 Higgs blog 列出的场景基本都是生产力场景,比如模拟面试、职业技能培训之类的。
为啥 full duplex 推理成本这么高呢?Higgs blog 中说每分钟 2.6K-5K token 的输入 token 数量,看起来不多,其实有点偷换概念了,因为这么多 token 不是一次性输入的,而是每 160ms 输入几个 token。
在这么高的请求频率下,现有 vLLM + 全局 KV cache 的架构会导致 KV Cache 反复换入换出,延迟也无法满足 160ms 的要求。因此,比较合理的 realtime serving 是需要把 KV 一直放在 GPU 内部,调度器也不要 continuous batching,而是像节拍器那样每 160ms 打一拍,服务一个 batch 的用户请求,也就是每一组 GPU 固定服务一组用户。我前几个月在 ArXiv 上发过一篇 Metronome 介绍这个架构。
如果模型是 235B A22B 的规模,200ms 事件间隔,一台 8 卡机器基本上只能服务 16 个并发用户,考虑到请求有峰谷,单用户成本大约要 $2.5/小时,跟 GPT-Live 1 的定价 $3 每小时差不多。
如果模型是 Higgs 的 45B MoE,单用户推理成本可以降到 $1/小时以内,但仍然不便宜。
如果对拟人化没有这么高要求,其实传统的三段式架构并没有那么差。很多人一听说三段式就觉得是落后技术,其实不然,三段式是 full duplex 模型在时间上、语义表达上的稀疏化。
在时间上,三段式语音链路用 VAD 作为稀疏化决策器,仅在 VAD stop 的时候触发 LLM 动作。现在很多语音链路普遍训练一个小模型作为语义 VAD,判断用户的意思是否表达完了,是否是打断意图。这样在 LLM 之前就过滤掉了大量时间片,减轻了 LLM 的负担。
在语义表达上,流式 ASR 可以把流式输入的语音(一般每秒十几到几十个 token)压缩成每秒 3 个 token 的文字和副语言信息,这样就大大减少了 LLM 需要处理的 context,即使几十分钟的语音对话,也不需要压缩上下文。同样,LLM decode 的文本和副语言信息 token 数量也比直接输出语音大大减少。
稀疏化不仅仅是为了节约成本,也便于模型学习语义表达。很多团队都独立发现,在 200ms 以下的时间片上训练 full duplex 模型的难度远高于在 500ms/1s 的时间片上训练。
最后很多人说三段式方案延迟高,这是普遍流传的错误观点,早在 2024 年我们就做到 600ms 的三段式了,今天加一次快速工具调用的语音到语音延迟也在 1.5s 以下。
延迟高多半是因为 infra 没优化好,加上 VAD 阈值设置过于保守。在 full duplex 模型上,infra 问题只会更严峻。你的 LLM TTFT 都要 300-400ms,怎么保证 200ms 时间片内能吐出 full duplex token?VAD 阈值在 full fuplex 模型里面也是要训进模型的,人说完半句话之后是马上接话,还是等一句话说完再开口?
这些认知一般都是付费的,不过我还是分享了,希望做语音的朋友们在追求技术上限的同时,能够把 infra 优化好,从第一性原理思考如何利用好时间稀疏化、语义表达稀疏化,用最低的成本实现同等效果。