||
量化/离散化并不是为了把 Transformer 的隐藏维度 d 变短;d 是模型容量的选择。它更像是把感知信号先压缩成更紧凑的 token 序列:要么减少 token 数 n,要么减少每个 token 的比特数,从而降低数据、缓存和生成难度;而进入 Transformer 后,仍统一用 d 维表示进行推理与融合。
一、d 固定不等于成本固定:真正的重头往往在 n 和注意力在 Transformer 里,最敏感的是 token 数 n,因为注意力的开销大体跟 𝑛平方走。
例子:256×256、8×8 patch → 1024 tokens
这时再“固定 d=1024”,仍然要付出 1024×1024 规模的注意力矩阵成本。
而很多离散化方案(尤其是“先编码到更小的潜空间 latent,再离散”)真正干的是:把 n 从 1024 砍到更小(比如 256、128、甚至更少),这是实打实的减法。
关键点:离散化经常和“空间下采样/潜空间token化”绑定出现,它省的首要是 n,而不是 d。
二、量化/离散化的“省”,经常发生在 Transformer 之外:数据、缓存、I/O、显存即便进模型后都变成 d 维向量,离散表示仍然有明显优势,因为它让“流动的东西”从浮点变成整数码int:
数据存储与训练管线:连续 latent 往往是 fp16/fp32 的大块张量;离散 code 是 int(再配合熵编码就更夸张了),数据集体积、读盘带宽、吞吐都会降很多。
中间结果缓存:比如多轮编辑、视频生成、多段推理,缓存离散码(index)比缓存高维连续特征更省得多。
跨模块传输:端侧/服务端/多机之间传中间表示时,离散码天然更省带宽(也更不容易“飘”或“糊”)。
这些开销在真实系统里非常“肉疼”,而且往往比你想象的更早成为瓶颈。
三、离散化还会改变“生成问题”的性质:从回归连续值变成选码本生成模型最难的一步是什么?很多时候是:在高维连续空间里生成“看起来像”的东西,既要细节又要稳定。
离散码本(VQ 这类)把生成变成:
先生成一串离散符号(选哪个 code),
再由解码器把符号还原成图像/音频。
这会带来两个常见收益:
学习目标更“像语言”:LLM的自回归/序列建模更顺手。
错误更可控:连续回归的小偏差会导致视觉上糊、飘;离散码的错误更像“选错词”,后处理或自回归本身的纠偏空间更大。
当然它也可能带来副作用(码本过小会导致“积木感/失真”),但这不是“重复劳动”,而是在换一种折中。
提炼一下,总结如下很多读者第一次听到“把图像也离散成 token”,都会产生一个自然的疑问:既然最后进到 Transformer 里,所有 token 都要被投影成同样长度的隐藏向量 𝑑(例如 1024),那把视觉表示做离散量化,岂不是重复做功?
关键在于:量化并不是为了把 𝑑 变短。𝑑 是模型容量的选择——就像“这台大脑有多宽的工作台”。量化真正改变的,是另外两件更昂贵的东西:一是序列有多长(token 数𝑛),二是每个 token 以多少比特在系统里流动(存储与带宽)。
以 256×256 的图片为例,按 8×8 patch 切分就是 1024 个 token,长度已经是“千级”,注意力的开销会随 𝑛 平方放大;这时哪怕 𝑑 固定,计算也依然很重。很多“离散化”方案往往同时在做一件更实惠的事:先把图像编码到更低分辨率的潜空间,再在潜空间里离散化,从而把𝑛 从 1024 压到更小的量级——这才是省算力的第一刀。
更重要的是,离散 token 在 Transformer 之外也能显著省钱:它让中间表示从高维连续张量(浮点表示)变成整数码(int表示),数据集更小、读写更快、缓存更轻,跨模块传输的带宽压力也更低。换句话说,离散化是在“运输与存储层面”先把货物压缩了;至于进入大模型之后是否用 𝑑 = 1024 来统一表示,那是“工作台宽度”的问题,两者并不矛盾。
所以,把视觉信号离散成 token 不是重复劳动,而是把成本从“又长又重的连续序列”转成“更紧凑、更易搬运的符号序列”,从而让多模态统一建模更接近语言模型那套LLM成熟的工程范式。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2026-2-1 19:02
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社