跳转到内容
English

多模态模型中的视觉 tokenizer 总览

交互教程

追踪像素如何进入语言模型,并区分这种接口与图像编解码器。

前置阅读:ViT · 语义表征 · Vision Transformers Need Registers:给 ViT 增加内部计算位置

在 VQ 自编码器中,图像 token 常指码本索引;在 ViT 中,它通常是连续特征向量;在 LLM 输入中,image 占位 ID 标记将要写入视觉向量的位置。这个占位 ID 本身并不是编码图像内容的视觉词表项。

广义 visual tokenizer 可以指整条输入路径:调整尺寸、切分像素、编码特征、减少位置、对齐维度。重建 tokenizer 还需要像素解码器与相应目标。能够回答图像问题的模型,不会因此自动提供这个解码器。

阅读顺序从左到右。点击模块,将它与计算和代码对应。代码为教学伪代码;来源链接提供论文方法或已核查的实现。

追踪五个阶段之间的接口

先记录调整后的图像尺寸,而不只是原文件尺寸;再记录 patch 网格、编码器宽度、压缩规则和 LLM 宽度。空间分组改变位置数量,投影改变特征宽度;两者都不自动等同于向量量化。

image = resize_with_model_rules(image)
patches = patchify(image)
features = visual_path(patches)
visual_embeddings = connector(features)
llm_input[image_positions] = visual_embeddings

训练状态:静态实现审计;训练状态见下文。

Npatch=H′W′p2,Nvisual=Npatchm2,V∈RNvisual×DLLMN_{\rm patch}=\frac{H^\prime W^\prime}{p^2},\quad N_{\rm visual}=\frac{N_{\rm patch}}{m^2},\quad V\in\mathbb R^{N_{\rm visual}\times D_{\rm LLM}}

逐步讲解:追踪五个阶段之间的接口

分别计算位置数、维度与有效项

256×4096 的连续表示包含 1,048,576 个标量。称其为“256 tokens”并不能给出码率,存储精度也不同于学习到的信息量。判断效率前,应比较有效图像面积、向量宽度和下游任务。

valid_visual = sum(valid_image_positions)
# Do not count padded image slots as content.
# Do not call valid_visual the complete context length.

训练状态:静态实现审计;训练状态见下文。

Ncontext=Nvisual+Ntext+Ndelimiters+Ntimestamp textN_{\rm context}=N_{\rm visual}+N_{\rm text}+N_{\rm delimiters}+N_{\rm timestamp\ text}

逐步讲解:分别计算位置数、维度与有效项

查看固定版本来源

visual token count≠codebook size≠complete context length\text{visual token count}\ne\text{codebook size}\ne\text{complete context length}
视觉理解需要输入路径;重建还需要像素解码器。
教学重绘 · 追踪五个阶段之间的接口 每条有名称的路径从左向右阅读。不同行表示独立路径或比较方案。 · 方法来源点击图片查看全尺寸。

先记录调整后的图像尺寸,而不只是原文件尺寸;再记录 patch 网格、编码器宽度、压缩规则和 LLM 宽度。空间分组改变位置数量,投影改变特征宽度;两者都不自动等同于向量量化。

对于已调整的 H′×W′ 图像、patch 边长 p、空间合并边长 m,编码器网格有 H′W′/p² 个位置,LLM 接收 H′W′/(pm)² 个视觉向量。Gemma 4 12B 的模型接口取 p=48、m=1;预处理阶段的 16 像素单位会重新组合为大像素块。

Npatch=H′W′p2,Nvisual=Npatchm2,V∈RNvisual×DLLMN_{\rm patch}=\frac{H^\prime W^\prime}{p^2},\quad N_{\rm visual}=\frac{N_{\rm patch}}{m^2},\quad V\in\mathbb R^{N_{\rm visual}\times D_{\rm LLM}}
image = resize_with_model_rules(image)
patches = patchify(image)
features = visual_path(patches)
visual_embeddings = connector(features)
llm_input[image_positions] = visual_embeddings

相近的 token 数可以隐藏不同计算

Section titled “相近的 token 数可以隐藏不同计算”
Register 计算位置、空间合并和 encoder-free 像素投影用途不同。
教学重绘 · 相近的 token 数可以隐藏不同计算 每条有名称的路径从左向右阅读。不同行表示独立路径或比较方案。 · 方法来源点击图片查看全尺寸。

Qwen3-VL 和 Qwen3.5 使用可学习 merger:拼接四个相邻特征向量,再经过 MLP。Gemma 4 编码器分支对九个编码后的空间位置求平均。Gemma 4 12B 直接嵌入更大的像素块。这些操作在减少位置前混合了不同的信息。

Qwen3-VL 向三个早期 LLM 层加入中间视觉特征;已审计 Qwen3.5 实现的输入路径仅使用最终合并视觉输出。Gemma 4 应分成小编码器、大编码器和 encoder-free 分支。下表采用具体 checkpoint revision,不以家族名称猜测结构。

分别计算位置数、维度与有效项

Section titled “分别计算位置数、维度与有效项”

256×4096 的连续表示包含 1,048,576 个标量。称其为“256 tokens”并不能给出码率,存储精度也不同于学习到的信息量。判断效率前,应比较有效图像面积、向量宽度和下游任务。

补齐后的 batch 张量可能包含空槽;语言上下文还可能含图像边界、换行、时间戳及普通文字。计算器仅统计有效视觉位置。已准备视频模式假设抽帧和尺寸调整已完成,不估算完整服务请求。

Ncontext=Nvisual+Ntext+Ndelimiters+Ntimestamp textN_{\rm context}=N_{\rm visual}+N_{\rm text}+N_{\rm delimiters}+N_{\rm timestamp\ text}
valid_visual = sum(valid_image_positions)
# Do not count padded image slots as content.
# Do not call valid_visual the complete context length.

从像素尺寸追踪到视觉 token

形状计算,不运行模型。图像模式复现固定版本的尺寸取整规则;Qwen 的预算在此指定为最大视觉 token 对应的像素面积,不是服务商计费值。

阶段/计算项结果
调整后高度512
调整后宽度512
时间组数1
补齐/复制帧数1
模型 patch 网格行数32
模型 patch 网格列数32
预处理空间单位 × 时间组1024
模型 patch 位置数1024
有效视觉 token256
LLM 视觉特征形状[256, 4096]
连续标量数1048576

2×16×16 patches → ViT → 2×2 concat + MLP → LLM

27 vision blocks · width 1152 → 4096

输入:视觉 embedding 写入图像位置,文字 embedding 保留。

当前型号的固定配置

有效 token 不包括 padding 槽、图片边界、换行、时间戳文字或其他文本。视频模式不执行抽帧和视频预算分配:输入边长必须是 Qwen 的 32 或 Gemma 的 48 的倍数。单图的帧复制是时空 patch 接口操作,不意味着有运动信息。

已核对的具体配置

核对日期:2026-11-03. 每行链接到固定版本。参数相同不表示权重相同;12B 的 patch 列表示模型接收的像素块。

型号模型 patch视觉层/宽空间操作LLM 宽DeepStack 零基层
Qwen3-VL-2B-Instruct16×1624 / 10242×2 concat + MLP20485, 11, 17
Qwen3-VL-8B-Instruct16×1627 / 11522×2 concat + MLP40968, 16, 24
Qwen3-VL-235B-A22B-Instruct16×1627 / 11522×2 concat + MLP40968, 16, 24
Qwen3.5-2B16×1624 / 10242×2 concat + MLP2048—
Qwen3.5-9B16×1627 / 11522×2 concat + MLP4096—
Qwen3.5-397B-A17B16×1627 / 11522×2 concat + MLP4096—
gemma-4-E2B-it16×1616 / 7683×3 average1536—
gemma-4-E4B-it16×1616 / 7683×3 average2560—
gemma-4-12B-it48×480 / 3840Pixel projection3840—
gemma-4-31B-it16×1627 / 11523×3 average5376—
gemma-4-26B-A4B-it16×1627 / 11523×3 average2816—

“—”表示本轮检查的路径没有 DeepStack 注入,不表示没有视觉信息。所有分支传递连续向量;本表没有把文字词表大小当作视觉码本。

CLIP 使用图文对比匹配,SigLIP 使用基于 sigmoid 的成对目标,SigLIP-2 又扩展训练配方。DINO 类方法使用不同图像视图间的自蒸馏。这些目标能产生有用语义特征,但不明确要求恢复每个像素。

多模态文字训练可按不同阶段更新连接器、编码器和 LLM。冻结编码器仍计算特征,其输入梯度也可能存在。Early-fusion 训练不意味着架构没有编码器;部署时量化权重也不意味着连续视觉特征变成 VQ codes。

对 UAR,一个有意义的实验是固定某个编码器,分别使用 merger 前后特征训练解码器,保持图像数据和 decoder 容量一致,分别测量重建、语义和成本。这是建议实验,不是三个模型家族已报告的结论。

本综述是 2026-11-03 核对的快照,聚焦指定家族,不拼接不可比榜单、不推断缺失的视觉预训练配方,也不替换当前 VAR 优先路线。

视觉 token 数相同,是否意味着压缩程度或质量相同?

不意味着。特征宽度、输入分辨率、表征类型、训练与下游用途都可能不同。

返回学习地图

自绘图和伪代码用于教学;原论文图片单独标注来源。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。