Skip to content

6. 生态与源码分析:引擎与框架的多模态支持对比 ​

一句话理解:2026 年的格局是「推理引擎负责把模态变成 token,Agent 框架负责把 token 变成对话」——vLLM/SGLang 在引擎层把多模态做成了注册表 + 缓存的一等公民,LiveKit/Pipecat 在框架层把三段式与端到端抽象成同一套 turn 语义,而 TensorRT-LLM 代表编译派在图层面融合视觉塔。

6.1 推理引擎的多模态支持对比 ​

维度vLLMSGLangTensorRT-LLM
输入形态离线 multi_modal_data 字典 + 在线 image_url/video_url/input_audio与 vLLM 同源的多模态数据通路编译期固定的 VLM 图(encoder + LLM 融合)
占位符prompt 内嵌模型专属占位符(OpenAI 服务自动处理)同左图内固定槽位
encoder 输出缓存默认按媒体内容哈希跨请求缓存;支持 multi_modal_uuids 跳过媒体传输RadixAttention 前缀复用同样覆盖视觉 token由上层(如 TRT-LLM MBS/后端)管理
视频可插拔解码后端(OpenCV/torchcodec/NVDEC/deepstream);--video-pruning-rate token 剪枝(Qwen3-VL vidcom2)视频模型经 process_vision_info 类管线进引擎编译期帧抽取策略
音频Whisper / Qwen-Audio / Qwen-Omni / Ultravox 类模型;split_audio 静音点切分SGLang Omni 扩展 ASR/TTS以多模态 embedding 为主
限额与安全limit_mm_per_prompt;媒体下载超时 5s/30s/10s;域名白名单类似引擎级限额部署面自己管
定位通用高吞吐,多模态是运行时的动态特性LLM/VL/扩散统一 runtime,overlap 调度天然覆盖多模态极致单模型性能,多模态是编译目标

读法:vLLM 把多模态做成「运行时的注册表」(新模型 = 注册 processor),SGLang 把它做成「统一 runtime 的一种模型类型」,TensorRT-LLM 把它做成「编译期的图」。运维视角下 vLLM/SGLang 更适合多模型混部,TRT-LLM 适合单模型大规模。

6.2 vLLM 多模态通路的代码解剖 ​

vLLM 的多模态支持可以沿一条请求路径读源码:

text
入口  LLM.chat / OpenAI server
  │   媒体引用(image_url/base64)进入 chat template
  ▼
多模态注册表  vllm.multimodal.registry / MultiModalProcessor
  │   按模型找到注册的 processor;下载+解码+缩放媒体
  ▼
输入处理器  InputPreprocessor
  │   占位符 token 计数;生成 mm_positions(mm item 在 token 序列中的区间)
  ▼
encoder 缓存  MultiModalCache: 内容哈希 → encoder 输出
  │   命中则跳过视觉前向(可用 uuid 完全跳过媒体传输)
  ▼
模型前向  SupportsMultiModal 接口: get_multimodal_embeddings() 替换占位符 embedding
  ▼
PagedAttention / KV:  替换后的统一 token 序列走标准 prefill/decode

三个值得记住的设计决策:

  1. 缓存 key 是内容哈希而非请求 id——同一张图跨请求、跨会话复用,命中时甚至不用传图(uuid 契约);
  2. 占位符与 mm_positions 分离——tokenizer 只负责数 token,embedding 替换发生在模型层,调度器全程无感知;
  3. 限额是引擎参数而非应用参数——limit_mm_per_prompt 在引擎侧直接拒绝,防止单请求打爆显存。

6.3 语音 Agent 框架对比 ​

维度LiveKit AgentsPipecat
定位Agent 作为 WebRTC 房间参与者管道化 Agent 编排框架
传输自研 SFU(LiveKit 开源/Cloud)客户端 SDK 全平台 + Pipecat Cloud
管线抽象AgentSession:STT→LLM→TTS 或 realtime 模型,插件化 providerpipeline/processors/transports,可编排 150+ 服务
turn 检测自研 turn detector(VAD + 语义);自适应打断门控回通道依赖 provider(OpenAI server VAD / 自带 VAD)
打断语义暂停+恢复(false interruption 自动续播)取消 + 事件驱动
编排能力多 Agent handoff、K8s 部署、负载均衡多模态 I/O、自托管/云
开源Apache 2.0BSD-2

两者都把「三段式 vs 端到端」抽象成同一接口:把 OpenAI Realtime / Gemini Live 当作「一个 provider」插进管线,框架层继续负责房间管理、记忆、工具编排。基础设施的选择被压缩到:SFU/传输自己扛(LiveKit),还是框架 + 云(Pipecat Cloud)。

6.4 端到端语音 API 的接口契约 ​

OpenAI Realtime 与 Gemini Live 的共同契约(2026 GA 状态):

  • 传输:浏览器 WebRTC(OpenAI 要求临时 client secret,密钥不落客户端)/ 服务端 WebSocket(Gemini Live 为 WSS);
  • 音频格式:输入 16-bit PCM 16kHz(Gemini),输出 24kHz;会话建立时协商;
  • 打断:内建 server VAD + barge-in 事件;OpenAI 暴露 threshold/silence_duration_ms/eagerness;
  • 工具:function calling 与会话流复用同一通道;工具结果作为事件回注;
  • 计费:音频按 token(秒)计,显著高于文本——成本模型见 8.3。

6.5 选型决策树 ​

小结 ​

  • 引擎层:vLLM(运行时注册表 + 内容哈希缓存)、SGLang(统一 runtime + overlap)、TRT-LLM(编译融合)三种范式;功能集 2025 年后已基本对齐,差异在性能曲线与运维形态。
  • 框架层:LiveKit 与 Pipecat 把传输、turn 语义、打断治理沉淀为可复用组件,端到端 API 只是它们管线里的一个 provider。
  • 端到端 API 的契约已经稳定(传输/音频格式/打断/工具/计费五要素),基础设施团队的剩余责任是会话接入、工具编排与记忆。

Released under CC-BY-SA-4.0 License.