在当前的多模态大模型(MLLM)领域,诸如 LLaVA 等经典架构多采用“晚期融合(Late-fusion)”模式:利用现成的 Vision Encoder(如 CLIP)提取图像的连续特征,再通过一个线性投影层(Projection)强行拼接到文本大模型中。这种模式虽然能“看图说话”,但由于模态间底层的割裂,模型无法自由、交织地输出图像与文本。
Meta 提出的 Chameleon 则彻底打破了这一壁垒。它采用了“早期融合(Early-fusion)”与“全 Token 化自回归(Token-based Auto-regressive)”的全新范式。在 Chameleon 看来,世界是由 Token 组成的:文字是 Token,图像也是 Token,它们在底层共享同一个表示空间,没有任何特权划分。
本篇文档将以通俗易懂的语言,同时不失学术与工程细节地为你拆解 Chameleon 的核心秘密,尤其是图像是如何被精确离散化为 Token 的。
一、 图像的“离散 Token 化”:图像如何变成一篇文章?
在自然语言处理(NLP)中,文本变成 Token 是靠分词器(Tokenizer)查字典。但图像是连续的像素矩阵(RGB通道),如何把它变成像文字一样的离散符号(Discrete Tokens)?
Chameleon 采用了一个定制的 VQ-GAN(Vector Quantized Generative Adversarial Networks,矢量量化生成对抗网络) 变体来作为它的 Image Tokenizer。这个过程可以用“矩阵下采样 -> 密码本查表 -> 离散网格化”来概括。
- 详细步骤拆解
假设我们输入一张分辨率为
(3通道RGB)的彩色图像:
步骤 A:编码与空间压缩(Encoder)
输入图像首先通过一个由多层卷积神经网络(CNN)组成的 Encoder。
编码器的作用是对图像进行下采样(Downsampling),提取高阶的视觉特征,同时压缩空间维度。Chameleon 的下采样倍数(Stride)为 16。
经过压缩后,原本
的空间分辨率变成了
。
此时,图像变成了一个
的特征图网格(Grid)。网格中的每一个点(Cell),都是一个连续的高维实数向量(假设维度是
)。
步骤 B:矢量量化与密码本查表(Vector Quantization) —— 最核心的一步
这是将“连续”变为“离散”的魔法所在。VQ-GAN 内部维护着一个“密码本”(Codebook),你可以把它理解为一个包含固定数量向量的“视觉字典”。
参数设定:Chameleon 的 Codebook 大小(Vocabulary Size)为 8192。即这个字典里一共有 8192 个固定的
维向量,索引编号为
。
最近邻查找(Nearest Neighbor Search):对于
特征图网格中的每一个连续特征向量
,算法会遍历整个 Codebook,计算它与 Codebook 中所有 8192 个向量的欧氏距离(L2 Distance)。
离散替代:找出距离最近的那一个密码本向量
,并用这个向量的索引值
(一个
之间的整数)来替代原有的连续向量。
结果:原本由连续实数组成的特征图,被彻底转换为了一个
阶的整数矩阵。这 1024 个整数,就是这张
图像的离散 Tokens!
步骤 C:对抗重建与保真(Decoder & GAN)
为了确保压缩后的 Token 真的保留了完整的图像信息,在训练 Tokenizer 时,会把这 1024 个整数索引重新去 Codebook 里查出对应的向量,拼回
的特征图。
随后送入一个基于 CNN 的 Decoder 进行上采样,努力将其还原回
的原始图像。
为什么引入 GAN? 普通的 VQ-VAE 在大幅压缩后恢复出的图像非常模糊。VQ-GAN 引入了判别器(Discriminator)和感知损失(Perceptual Loss),利用生成对抗机制强迫 Decoder 去补充细节纹理(如毛发、皮肤纹理),确保即使图像被高度压缩为 1024 个 Token,重建出来后在人眼看来依然极其逼真。
2. 精确的数据对齐
图像输入:
像素。
图像输出:1024 个离散 Token 组成的序列。
视觉词表:大小为 8192。
论文提示的局限性:由于这种机制把图像强行划分为了
的网格,对于图像中非常微小的文字(如路标、书本小字),单个网格难以精细表征,因此该 Tokenizer 存在一定的 OCR 性能上限。
二、 统一词表(Unified Vocabulary):字与图的绝对平等
有了文本 Token 和图像 Token 后,Chameleon 重新训练了一个全新的 BPE(Byte-Pair Encoding)分词器。
总词表大小(Total Vocabulary):65,536。
空间分配:在这 65,536 个总位置中,直接划出了 8192 个固定位置给上述的图像 Token,其余的位置分配给各种语言的文本、数字以及代码 Token。
底层逻辑:由于它们在同一个词表里,文本 Token ID 和图像 Token ID 会进入同一个 Embedding 层,映射到完全相同的隐藏层维度(Hidden Dimension)中。对后面的 Transformer 而言,它根本不知道送进来的是一句话还是半张图,它看到的只是一串平等的 Token 序列。
三、 核心基座:Chameleon Transformer 架构
Chameleon 的核心骨干是一个纯粹的 Decoder-only Transformer(整体遵循 LLaMA 架构)。不管是文本续写,还是图像生成,它的核心训练目标只有一个:下一 Token 预测(Next-Token Prediction)。
- 跨模态训练的毁灭性痛点:不稳定性(Divergence)
Meta 团队在开发中发现,当模型参数量扩大到 8B 以上,且训练 Token 超过 1T(1万亿)时,多模态联合自回归训练极度不稳定,会频繁发生灾难性的梯度爆炸和 Loss 震荡。
原因在于: 文本和图像的熵(Entropy)截然不同。文本的预测概率非常集中(信息密度高),而图像网格序列在局部具有极高的冗余性和完全不同的表征模式。当它们共享相同的 Transformer 权重时,两种模态在内部会剧烈“竞争”,导致标准 Softmax 机制下的输出范数(Norm)失控地无约束增长,引发 Logit 漂移。
- 驯服不稳定的三大工程绝招
为了让大体量的模型(尤其是 Chameleon-34B)稳定存活,Meta 对标准 LLaMA 架构进行了三处极具深度的底层手术:
① 强力引入 QK-Normalization(Query-Key 归一化)
在标准的自回归 Attention 机制中,随着层数加深,不同模态特征模长的差异会导致注意力矩阵的数值不断膨胀。
Chameleon 在计算 Scaled Dot-Product Attention 之前,显式地对 Query (
) 和 Key (
) 向量应用 Layer Normalization(按通道进行归一化):
这一步将输入 Softmax 的数值强行锚定在一个极其稳定的、与模态无关的范围内,成功镇压了跨模态时注意力的不稳定性。
② 规范化层重测序(Norm Re-ordering)
对于 34B 的超大模型,光靠 QK-Norm 还不够。Chameleon 改变了 Transformer 块内部残差连接(Residual Connection)和规范化层(RMSNorm)的先后顺序:
标准 LLaMA 2 结构:
Chameleon 34B 结构:
这种设计通过在残差外部直接对 Attention 和 FFN(Feed-Forward Network)的输出进行缩放,有效锁死了由 SwiGLU 激活函数乘法特性带来的特征膨胀。
⚠️ 关键细节:实验发现,这种重测序结构如果与 Dropout 结合,会导致严重的性能崩塌。因此,Chameleon-34B 是在完全关闭(置 0)所有 Dropout 的情况下进行稳定训练的。
③ 引入末端
-loss 正则化
为了防止输出层(Linear Head)的 Logit 绝对值随时间不断漂移导致 bf16 溢出,模型在总损失函数(Loss)中引入了微小的
-loss 正则化惩罚(权重为
)。它通过拉住 Softmax 的配分函数(Partition Function),确保系统长期运行下的数值稳定性。
四、 训练生命周期与数据平衡(Data Balancing)
Chameleon 共经历了高达 9.2T Tokens 的庞大预训练。
多模态图文对与交织网页(Interleaved Data):训练集不仅包含“图片-标签”对,更包含了大量的真实网页。在这些数据里,文字后面可能跟着图,图后面又跟着文字。
微调阶段的“模态平衡(Data Balancing)”:在进行高质量的指令微调(SFT)时,Meta 强调必须极度精准地控制文本、纯图、图文指令的比例。如果某一种模态比例失衡,大模型会建立起有害的“无条件先验”(例如:哪怕你只让它回答文字,它也会因为画图先验太强,无条件地在结尾吐出 1024 个图像 Token,变成一个控制不住想画画的“疯子”)。
五、 推理(Inference)阶段的独特硬件挑战
将图像彻底自回归化后,在实际部署和推理时,Chameleon 带来了传统纯文本 LLM 未曾面对的工程痛点:
硬件控制流中断(Data-dependencies per-step):
在自回归解码时,大模型是逐个 Token 吐出数据的。GPU 没法提前预知下一个 Token 是文字还是图片。因此,CPU 必须在每一步强制阻断、读取 GPU 吐出的 Token ID。如果发现 ID 落在了
的图像词表里,就要立刻改变接下来的硬件调度控制流。这会造成严重的流水线阻塞(Pipeline Bubble)。
定长图像数据块(Fixed-sized units):
文本生成可以随时遇到 [EOS] 停下来,长度不可控;但图像一旦决定生成,模型就必须雷打不动地连续吐满 1024 个 Token 才能凑齐一张完整的图片,这要求 KV Cache 的管理必须支持高效的块状动态分配。
总结:Chameleon 的划时代意义
Chameleon 证明了:不需要分离的视觉专家网络(如 CLIP),不需要复杂的交叉注意力机制(Cross-Attention Router),仅靠一个最纯粹、最经典的自回归 Transformer,就能完美地融汇理解与生成。 它把视觉信号变成了一种可读、可写的离散“高级语言”,为未来的全模态、全智能体(General Agent)基座指出了一条极具纯粹美学的技术路径。