Skip to content

多模态推理账:视觉编码、序列压缩与成本结构 ​

多模态模型(看图、看视频、听语音)推理的核心不是"多了个编码器",而是视觉输入被 token 化后,序列长度与 KV 成本暴涨。本文把多模态推理的 token 化账、KV 账与工程优化讲透,衔接 KV 缓存压缩账。

1. Token 化账:一张图 = 多少个 token ​

输入典型 token 数说明
纯文本 1K 字~1K token基线
一张 224² 图256 token(patch 14²)每 patch 一个 token
一张高清图1K+ token(切片/高分辨率编码)分辨率越高越贵
1 分钟视频(8fps)~12K+ token帧 × patch

判断:视觉输入的 token 化是把成本放大的根源——一张高清图 ≈ 千级 token,一分钟视频 ≈ 万级 token,KV 与预填充算力同步放大(见 推理资源账)。

2. 架构账:编码器 + 投影 + 语言模型 ​

图像/视频 ── 视觉编码器(ViT/自研)── 投影层(MLP/Q-Former)── LLM
语音 ────── 音频编码器 ────────────── 投影 ──────────────── LLM
  • 视觉编码器:把像素变成 patch 特征(ViT 系);
  • 投影层:把视觉特征映射到 LLM 的词向量空间(MLP 或 Q-Former 压缩);
  • LLM:与文本共用同一套权重,做跨模态推理。

判断:投影层是"压缩"的第一层——Q-Former 类方案用少量 learned query 压缩视觉 token,是控制序列长度的架构级手段。

3. 成本账:多模态推理的三大放大项 ​

成本项放大来源优化手段
预填充算力视觉 token 多,attention 平方增长视觉 token 降采样/合并
KV 显存视觉 token 长期驻留视觉 KV 单独量化/缓存
视觉重算同一图多次推理重复编码图像 token 缓存复用

判断:多模态推理的优化重点与文本推理不同——先压视觉 token 量,再压 KV,最后做图像级缓存(同一张图配不同问题,只编码一次)。

4. 工程优化清单 ​

  1. 输入级:按任务降分辨率/降帧率——能看清就行,别一味上高清;
  2. 架构级:用 Q-Former 类投影压缩视觉 token 数;
  3. 推理级:视觉 KV 与文本 KV 分开管理,视觉段可先量化/可过期;
  4. 服务级:图像/视频编码结果按内容哈希缓存,相同视觉输入复用;
  5. 评测级:多模态任务实测"单图问答"与"视频问答"的 token 与延迟基线(见 验收基线)。

5. 可复算 Python:多模态成本估算 ​

python
def mm_cost(n_img, tokens_per_img, n_text_tokens, kv_bytes_per_token):
    """多模态请求的 KV 显存(GB):视觉 token 主导"""
    vis = n_img * tokens_per_img
    tot = vis + n_text_tokens
    return round(tot * kv_bytes_per_token / 1e9, 3), vis

mm_cost(n_img=5, tokens_per_img=512, n_text_tokens=500, kv_bytes_per_token=0.128)
# 总 KV 0.358 GB,其中视觉 0.328 GB(占 92%)→ 视觉 token 是绝对大头

6. 交付清单 ​

  1. 上线前先量化"单图/视频问答"的 token 账,明确成本基线;
  2. 视觉输入按任务分级降采样,别默认最高清;
  3. 视觉 token 用投影压缩 + 推理时降采样/合并;
  4. 视觉 KV 单独量化、按内容缓存编码结果;
  5. 监控多模态请求的 KV 占比,超阈值再压视觉侧(见 llm-serving-sre)。

本文为本站整理思考后撰写,用于知识库学习交流;公式与算例为本站自行推导整理,具体版本与实测数据以现场为准。

AI-HPC 智算超算专家 · Contact: openaihpc@gmail.com