真实面经题目 · 原创解析
Qwen-VL 如何压缩图片 token,多模态大模型中图像 token 和文本 token 的处理链路有什么差异?
这道题考察多模态大模型里视觉 token 的压缩和图文 token 进入 LLM 前的差异。回答要说清图片先变成连续视觉特征再压缩投影,文本则经过离散 tokenizer 直接得到词向量,两者在融合前的链路不同。
真实面经题目 · 原创解析
这道题考察多模态大模型里视觉 token 的压缩和图文 token 进入 LLM 前的差异。回答要说清图片先变成连续视觉特征再压缩投影,文本则经过离散 tokenizer 直接得到词向量,两者在融合前的链路不同。
我会先区分两类 token。文本 token 是 tokenizer 把字符串切成离散 id,再查 embedding;图片没有天然词表,需要先切 patch 或用视觉编码器提取 grid feature,得到大量连续视觉特征。Qwen-VL 这类模型通常不会把所有 patch 原样塞进语言模型,而是通过视觉抽象器、Resampler、查询池化或网格合并一类模块,把高分辨率视觉特征压缩成较短的 visual token 序列,再投影到 LLM hidden size。之后这些 visual token 会放到提示词中图片占位符对应的位置,和文本 token 一起被语言模型处理。差异在于:图片 token 更长、更连续、带二维空间结构,需要视觉编码、压缩和投影;文本 token 来自离散词表,顺序位置更直接。图文不是简单谁先理解完,而是各自预处理后在统一序列或跨注意力里融合。压缩的取舍是上下文长度、细节保留和计算成本之间的平衡。
文本 token 来自离散词表,tokenizer 把字符串切成子词或字节片段,再查表得到 embedding。图片 token 没有天然词表,通常要先把图像切成 patch 或 grid,经视觉编码器得到连续向量。两类 token 的生成方式不同,不能把图片理解成“像文字一样分词”。
图像进入模型后会被 resize、patchify 或按动态分辨率切分,再由 ViT/视觉编码器抽取空间网格特征。原始 patch 数可能很大,尤其高分辨率图片会快速占满上下文长度,所以视觉特征进入语言模型前通常需要压缩。
Qwen-VL 相关回答可以抓住 Resampler 或视觉抽象器这个核心:用固定数量的可学习 query、池化、合并或跨注意力,把大量 patch/grid feature 汇聚成更少的 visual tokens,并投影到语言模型的 hidden size。压缩不是随意丢弃,而是在保留主要语义和空间线索的同时控制序列长度。
文本侧通常是 tokenizer、token id、embedding、position encoding,再进入 LLM。它不需要视觉编码器和图像 token 压缩模块,但会受词表切分、上下文长度和 prompt 结构影响。文本 token 的位置是一维序列位置,图片 token 则要尽量保留二维空间来源。
多模态输入通常会在 prompt 中放图片占位符,预处理阶段把占位符替换或绑定为压缩后的 visual tokens,再和文本 token 一起进入语言模型,或通过跨注意力参与解码。实际不是“先完全处理图片再处理文本”这么简单,而是图像和文本先各自编码,再在统一隐藏维度里交互。
视觉 token 越少,计算和上下文压力越小,但细粒度文字、小物体、空间关系可能损失;视觉 token 越多,细节更充分但成本更高。面试回答要补充任务相关取舍:文档 OCR、细粒度定位和复杂图表需要更多视觉细节,普通图像描述可以更强压缩。
patch 数会随分辨率快速增加,直接送入会占用大量上下文和算力。压缩能把视觉信息变成更短的序列,让 LLM 有空间处理文本和多轮上下文。
可能损失小文字、小目标、精确空间关系和局部细节。任务越依赖细粒度视觉信息,压缩比例就越需要谨慎。
更准确的说法是两边先各自预处理:图片走视觉编码和压缩,文本走 tokenizer 和 embedding。融合通常发生在投影到统一隐藏维度之后。
visual token 是从连续像素和二维空间特征抽取得到的向量,text token 是离散词表 id 的 embedding。前者需要视觉编码、压缩和空间信息保留,后者更直接按语言序列处理。