多模态推理
假设你要做一个语音点单机器人。用户对着手机说「我要一杯少冰的珍珠奶茶」,它得听懂,然后用语音回一句「好的,少冰珍珠奶茶一杯,十八块」。
你手上已经有一个跑得挺好的文本大模型服务。很自然的想法是:前面接个语音转文字,后面接个文字转语音,中间还是原来那套,齐活。
真接起来会发现不对劲。文本服务在你的卡上能扛住一百多路并发,加上语音之后三十几路就开始卡;GPU 利用率一看只有四成,可延迟就是下不来。你加大批处理,吞吐没涨,尾延迟先翻倍了。你想给语音那段单独加张卡,发现代码里它跟文本模型绑在同一个进程里,加不了。
这些麻烦不是哪一处写错了。加上语音之后,一个 请求里同时跑着三种脾气完全不同的计算,而你那套服务是照着其中一种的脾气设计的。
把它们放在同一条时间轴上,一眼就能看出问题:
这一章讲清楚这三种计算各自是什么、怎么工作、为什么合不来。至于合不来之后该怎么办,是下一章 SGLang-Omni 的内容。
一、总分总:十篇怎么排
中间那四篇是模态 × 方向的四象限 —— 音频/视觉各占一行,进/出各占一列。你想查什么,对号入座:
| 进(理解) | 出(生成) | |
|---|---|---|
| 音频 | 03 听 | 04 说 |
| 图像 · 视频 | 05 看 | 06 画 |
二、十篇正文
| # | 标题 | 讲什么 |
|---|---|---|
| 01 | 推理服务的基本概念 | 从「模型为什么一个字一个字往外蹦」推出自回归、KV cache、预填充与解码、连续批处理、前缀缓存,以及吞吐和延迟为什么天然对立 |
| 02 | 多模态大模型怎么工作 | 为什么非要多模态而不是几个模型串起来、一个只会读文字的模型怎么学会看图(冻住 LLM 只训翻译层)、内部拆成哪五个部件,以及从服务角度看每个部件要多少钱 |
| 03 | 听:音频怎么变成文字 | 200 个向量对 11 个字、又没人标出对应关系;CTC / AED / Transducer 三条路各自怎么绕、Whisper 三十秒窗口、流式为什么必然牺牲准确率 |
| 04 | 说:文字怎么变成音频 | 逐点吐波形要跑七万步,所以必须两段式;RVQ 多码本、delay pattern 与帧内并行、零样本克隆、首包延迟花在哪 |