视觉 Token 预算计算器
《AI 数据全书》· 第 26 章 · 多模态数据工程拖一下分辨率滑杆,看一张图吃掉多少上下文——「图贵文贱」是多模态数据工程的第一性事实
一张图进入多模态 LLM 之前,要被切成多少个「视觉 token」?这个数字直接决定上下文预算、推理成本, 以及 第 9 章 里 packing 的难度——视觉 token 数量随分辨率剧烈变化,是 batch 内序列长度失控的主因。
① 图像尺寸
px
px
原图 1280×960
→28px 网格 46×34
② 模型策略
视觉 token 数
1,564
(46 × 34) = 1564 token,每 28×28 像素 1 token(patch 14 × 2×2 合并)
上下文预算占比
8K 上下文1,564 / 8,192(19.1%)
视觉
剩余文本预算 81%
32K 上下文1,564 / 32,768(4.8%)
剩余文本预算 95%
batch 内 8 张图的 token 差异
同一 batch 的 8 张图尺寸各异 → 视觉 token 数差异悬殊 → 序列长度参差不齐。 文本 packing(第 9 章)只需按 token 数装箱;多模态 packing 还要保证整张图不被拆到两条序列——这是纯文本世界不存在的新失效模式。
483640×576
1,102800×1063
1,2951024×970
2,7601280×1683
2,4511600×1202
6,9001920×2808
8,9182560×2735
16,3483840×4211
本批最大/最小比:33.8×——差距越大,padding 浪费越严重、装箱越难。
🗜️ 压缩的代价
pixel shuffle(InternVL,约 4×~16× 压缩)、Perceiver Resampler(Flamingo,固定 64 query)、 Q-Former(BLIP-2,固定 32 token)都能把视觉 token 砍掉一个数量级, 但细粒度 OCR 任务上损失明显——小字、表格线、密集文字在压缩后最先「糊掉」。
📐 动态分辨率由来
anyres 思路:与其把大图粗暴 resize 到 224(细节全毁),不如切块保留原生分辨率—— LLaVA-1.6 的 grid 切分、InternVL 的动态 tiling、Qwen2.5-VL 的原生动态分辨率都是这条路线, 代价就是 token 数不再固定。
🖼️ 视觉 token 远超文本
一张 1280×960 图按 Qwen2.5-VL 算约 1,564 token, 而一段 50 token 的文字描述可能就够了——「图贵文贱」是所有多模态训练数据配比(第 26 章)必须面对的第一性事实。
内容参考 《AI 数据全书》第 26 章「多模态数据」(视觉 token 经济学)与 第 9 章「Tokenization 与序列 Packing」(§9.6 多模态特化)。三种策略的公式在浏览器内实算,实现细节差异已在对应位置标注。