多模态 Agent 如何做到「实时「
1️⃣ 考察意图
考察推理优化和系统设计能力。刁钻点:多模态 Agent 的延迟瓶颈通常在视觉编码和 LLM 推理,需要分别优化。
2️⃣ 标准答
延迟分解与优化:
| 阶段 | 延迟 | 优化方案 |
|---|---|---|
| 图像编码(ViT) | 100ms | batch+缓存+量化 |
| 视觉token投影 | 5ms | 无需优化 |
| LLM 首token | 300ms | KV cache+speculative decoding |
| LLM 生成(100token) | 3000ms | 流式输出+量化 |
| 总延迟(首token) | 405ms | 目标<500ms |
优化策略:
- 视觉编码缓存:同一图像多轮对话只编码一次。用 image_hash 做 cache key
- ViT 量化:INT8 量化,编码速度提升 2 倍(100ms→50ms)
- LLM 流式输出:首 token 后立即返回,用户边看边等
- Speculative Decoding:用小模型(1.4B)生成 draft,大模型(7B)验证。生成速度提升 2-3 倍
- KV Cache 复用:多轮对话复用历史 KV cache,避免重复计算
- 模型量化:LLM INT4 量化,推理速度提升 1.5 倍
端侧实时方案:
- MobileLLaVA(1.4B) + INT4 量化:首token <200ms,生成 50ms/token
- NPU 加速:Apple Neural Engine / 骁龙 Hexagon,能效比 GPU 高 5-10 倍
- 渐进式加载:低分辨率先回复,高分辨率后补充
3️⃣ 答题模板
"实时优化六策略:视觉编码缓存(image_hash+只编码一次)、ViT INT8(50ms)、LLM流式输出(首token 300ms即返回)、Speculative Decoding(2-3倍加速)、KV Cache复用、LLM INT4量化。端侧用 MobileLLaVA+NPU。总首token延迟<500ms,生成50ms/token。"
4️⃣ 高频追问
追问 1:Speculative Decoding 在多模态中怎么用?
小模型(1.4B VLM)看低分辨率图像(112×112)快速生成 5 个 token,大模型(7B VLM)看高分辨率图像(224×224)验证。如果验证通过,一次接受 5 个 token;如果不通过,大模型自己生成。加速比:多模态场景约 2-3 倍(比纯文本的 3-4 倍低,因为视觉 token 的 KV cache 复用效率低)。注意:小模型和大模型需要用相同 tokenizer。
追问 2:视频流的实时处理怎么做?
滑动窗口+关键帧:只处理最近 2 秒的关键帧(约 4-8 帧),旧帧丢弃。用环形缓冲区管理。Agent 对每帧做轻量处理(MobileViT 编码+1.4B VLM 推理),延迟 <300ms/帧。如果用户问"刚才发生了什么",用历史帧的文本摘要回答。
5️⃣ 避坑
- ❌ "用更大的 GPU 就能实时" → ✅ "GPU 大不能解决 ViT 编码延迟和 LLM 自回归生成的固有限制。需要缓存+量化+流式+speculative 多管齐下。"
6️⃣ 简历呼应
- 有推理优化项目:从"延迟优化"切入,给出优化前后的具体数据
- 校招无项目:用 llama.cpp + LLaVA 量化部署,测试不同精度下的延迟
- "Speculative Decoding: Fast Inference via Parallel Generation" (Leviathan et al., 2023) / "MobileVLM: Fast VLM on Mobile Devices" (Chu et al., 2023)
—— 本场面试完 ——