多模态大模型细碎知识
多模态大模型细碎知识
收集一些琐碎的多模态大模型的知识点。
Transformer 相关的知识点
1. Transformer 中的注意力机制、为什么用 Softmax、为什么用点积(余弦相似度不行吗?)
注意力机制 (Attention Mechanism) 简述
注意力机制的核心思想是让模型在处理当前信息时,能够“关注”到上下文中相关的部分。 它的本质是一个加权求和的过程:对于一个给定的查询向量 (Query, ),计算它与所有键向量 (Key, ) 的相似度,这些相似度经过处理后作为权重,乘到对应的值向量 (Value, ) 上并求和。
为什么用 Softmax?
- 转化为概率分布:Softmax 可以将 和 计算出的点积得分(Logits)映射到 区间,且总和为 1。这使得权重具有了明确的物理意义(即不同 Token 的重要性比例)。
- 非线性与马太效应:Softmax 包含指数运算 (),这会放大得分较高的项之间的差距(即强者愈强)。在注意力机制中,我们通常希望模型能将注意力集中在少数几个最相关的 Token 上,而不是平均分配给所有人,Softmax 完美契合这一需求。
为什么用点积?余弦相似度不行吗?
- 计算效率:点积的本质就是极其简单的矩阵乘法,非常适合在 GPU 上进行高度并行的硬件加速计算。余弦相似度则需要额外计算向量的模长(Norm)并进行除法操作,计算开销更大。
- 保留幅度(Magnitude)信息:余弦相似度只关注向量在空间中的“方向”是否一致,强行把所有向量归一化到了单位球面上。但在线性代数和深度学习中,向量的模长(大小)往往代表了该特征的显著程度或信息量。点积不仅衡量方向的相似性,还保留了模长的影响。如果一个 Token 极其重要,它的 向量模长可能很大,从而在点积中获得更高的分数。
2. Transformer 中 Pre-Norm 和 Post-Norm 的设计差异是什么?对模型训练稳定性和性能有何影响?
这两种架构的差异在于 Layer Normalization (层归一化) 放置的位置不同。
设计差异:
- Post-Norm(原版 Transformer 使用):归一化在残差连接之后进行。
- 公式表达:
- Pre-Norm(现代大模型如 GPT、LLaMA 普遍使用):归一化在进入 Sublayer(如 Attention 或 FFN)之前进行,残差连接直接跳过归一化层。
- 公式表达:
对训练稳定性和性能的影响:
- 训练稳定性(Pre-Norm 胜出):在 Post-Norm 中,深层网络的梯度容易出现爆炸或消失,因为随着层数增加,残差主干上的方差会不断累积放大。因此它极其依赖 Learning Rate Warm-up(学习率预热)策略来保证早期训练不崩溃。而 Pre-Norm 有一条直通到底的干净的残差主干(Identity path),每一层的输出直接加到主干上,梯度可以直接无损回传到第一层。这使得百亿/千亿参数的大模型训练极度稳定,基本告别了由于深度带来的梯度问题。
- 最终性能(Post-Norm 理论上限可能略高):学术界有一些研究指出,Post-Norm 由于在每层结束时都进行了严格的约束,如果能精心调参并成功训练收敛,其在某些特定任务上的最终性能指标可能会比 Pre-Norm 略好一点点。但考虑到大模型动辄数月的高昂训练成本,“不崩溃、能稳定收敛”是第一要务,因此 Pre-Norm 已经成为了绝对的工业界标配。
3. 在生成式大模型中,为何通常采用 Decoder-only 架构而非 Encoder-Decoder 结构?
早期做 NLP(如翻译)多用 Encoder-Decoder(如 T5、BART),但现在的生成式大语言模型(如 GPT 系列、LLaMA、Qwen)清一色都是 Decoder-only。主要原因如下:
- 极致的训练效率与泛化能力:Decoder-only 架构通过“自回归 Next-token Prediction”这一极其纯粹的范式,将所有的任务(问答、翻译、写代码)都统一成了“续写”任务。研究发现,当模型参数量达到一定规模后,这种简单的单向自回归模型在 Zero-shot(零样本)和 Few-shot(少样本)学习上展现出了比 Encoder-Decoder 更强的泛化涌现能力。
- 无跨注意力机制,计算和显存更高效:Encoder-Decoder 架构除了自身的 Self-Attention,还需要算 Decoder 对 Encoder 的 Cross-Attention。Decoder-only 去掉了整个 Encoder 以及 Cross-Attention,网络结构更单一,参数分配更集中(所有参数都用来做生成),非常有利于工程上的极限优化(如张量并行分配)。
- KV Cache 能够完美复用:在多轮对话或长文本生成中,用户的 Prompt 可以视为前缀。在 Decoder-only 中,处理 Prompt 生成的 KV 状态可以直接作为前缀缓存起来(KV Cache),后续生成新词时直接复用即可。如果是 Encoder-Decoder,前缀往往需要由 Encoder 处理,架构处理多轮对话的缓存逻辑更为复杂。
4. 针对 Transformer 模型推理过程,你会采用哪些优化手段?
大模型的推理主要受限于**显存带宽(Memory Bound)**而非算力。因此,优化手段通常围绕减少显存读写和降低访存开销展开:
- 模型层级设计优化:
- MQA (Multi-Query Attention) / GQA (Grouped-Query Attention):通过让多个 Query 共享同一组 Key 和 Value,大幅度减小推理时的 KV Cache 体积,降低显存占用和显存带宽压力。
- 底层算子与显存优化:
- FlashAttention / FlashAttention-2:一种 IO 感知的精确注意力算法。通过分块计算(Tiling)并在 SRAM 中进行局部融合(Kernel Fusion),避免了庞大的 Attention 矩阵写入 GPU 显存(HBM),极大提升了计算速度并降低了显存占用。
- PagedAttention (例如 vLLM):借用操作系统的虚拟内存分页思想,将 KV Cache 分割成固定大小的 Block 动态分配,彻底消除了序列长度变化带来的显存碎片问题,大幅提升了系统的并发吞吐量(Batch Size)。
- 系统级与解码策略优化:
- 量化 (Quantization):将模型的权重和 KV Cache 从 FP16 降级到 INT8、INT4 甚至更低(如 GPTQ、AWQ 算法)。这不仅成倍减少了显存占用,也成倍提高了访存速度。
- 推测解码 (Speculative Decoding):利用一个小模型(Draft Model)快速生成几个候选 Token,然后交由大模型(Target Model)一次性并行验证。利用大模型的并行评估能力,打破自回归逐词生成的串行瓶颈,可以在不损失精度的情况下提升 2-3 倍的生成速度。
- 连续批处理 (Continuous Batching / In-flight Batching):在服务端打断传统的静态 Batch 等待机制,每当有一个请求生成完一个 Token,就立刻把新请求插进来,最大化 GPU 利用率。
多模态对齐相关的知识点
1. CLIP 的核心思想是什么?它是如何实现图文对齐的?
核心思想:对比学习 (Contrastive Learning)
CLIP (Contrastive Language-Image Pre-training) 打破了以往依赖人工标注标签(如 ImageNet 的 1000 个分类)的视觉模型训练范式,转而利用互联网上海量的“图像-文本对”进行自监督学习。它的目标不是让模型输出具体的分类概率,而是让模型判断给定的图片和文本是否匹配。
对齐机制:
- 双塔架构 (Dual-Encoder):CLIP 包含一个图像编码器(如 ViT 或 ResNet)和一个文本编码器(Transformer)。输入一个 Batch(比如 个)的图文对,图像和文本分别被编码成特征向量。
- 计算相似度矩阵:将 个图像特征向量和 个文本特征向量进行点积,得到一个 的余弦相似度矩阵。
- InfoNCE Loss:对角线上的 个元素是正样本(匹配的图文对),模型要最大化它们的相似度;非对角线上的 个元素是负样本,模型要最小化它们的相似度。通过这种方式,CLIP 成功地将图像和文本映射到了同一个对齐的特征语义空间中,赋予了视觉模型极其强大的 Zero-shot(零样本)分类能力。
2. BLIP 是为了解决 CLIP 的什么痛点提出的?它的核心架构创新是什么?
解决的痛点:数据噪声与任务单一
CLIP 依赖的网络图文对往往包含大量噪声(比如图片是一只狗,但网页的 alt 文本写的是“2021年促销”),这限制了模型的上限。此外,CLIP 主要是一个检索/理解模型,缺乏“生成”能力(比如不能做看图说话 Image Captioning)。
核心架构与创新 (BLIP: Bootstrapping Language-Image Pre-training):
- CapFilt (Captioner and Filter) 数据净化机制:BLIP 训练了两个模块。Captioner 负责为网络图片生成全新的、更准确的描述;Filter 负责过滤掉原始数据和生成数据中图文不匹配的脏数据。这种“引导自举”的方法大幅提升了训练数据的质量。
- MED 架构 (Multimodal Mixture of Encoder-Decoder):BLIP 巧妙地融合了三种模型形态以适应不同任务:
- Unimodal Encoder(单模态编码器):图像和文本分开编码,类似 CLIP,用于图文检索。
- Image-grounded Text Encoder(基于图像的文本编码器):文本编码器的自注意力层之后加入了交叉注意力(Cross-Attention)层,去查看图像特征,用于图文匹配判断(ITM)。
- Image-grounded Text Decoder(基于图像的文本解码器):将自注意力层替换为因果自注意力(Causal Self-Attention),使其具备自回归生成能力,用于看图问答(VQA)和图像描述生成。
3. 在多模态大模型中,双流结构(Dual-Encoder)和单流结构/交叉结构(Cross-Attention)有何区别?
- 双流结构(如 CLIP, ALIGN):图文各走各的网络,直到最后才在顶层通过点积计算相似度。
- 优势:推理速度极快,特别适合海量数据的跨模态检索(先把所有图片的特征提出来存进向量数据库,文本进来只需过一遍文本编码器即可)。
- 劣势:模态间交互太浅,无法处理复杂的细粒度推理任务(如“图片左下角的穿红衣服的人在干什么”)。
- 单流/交叉结构(如 Flamingo, BLIP 的 Decoder, LLaVA):在网络较浅的层,文本和图像特征就拼接在一起,或者通过 Cross-Attention 让文本特征逐层去 Query 图像特征。
- 优势:模态交互极深,非常适合复杂的多模态逻辑推理、多轮视觉对话。
- 劣势:计算开销大,无法用于高效的图像检索。
大模型微调技术相关的知识点 (PEFT)
4. 为什么需要 PEFT?LoRA 的数学原理及其优势是什么?
为什么需要 PEFT (Parameter-Efficient Fine-Tuning)?
当模型参数量达到百亿(如 LLaMA-13B)甚至千亿时,进行全参数微调(Full Fine-Tuning)需要极其庞大的显存(用于存储优化器状态、梯度和模型参数)和算力。PEFT 技术旨在冻结大部分预训练参数,只训练极小一部分新增参数,从而在单张消费级显卡上也能微调大模型。
LoRA (Low-Rank Adaptation) 的原理:
LoRA 假设模型在特定任务微调时,权重矩阵的更新量是一个“低秩”的矩阵。
对于预训练权重矩阵 ,LoRA 冻结 ,并引入两个可训练的降维/升维矩阵 和 ,其中秩 。
在前向传播时,原来的计算 变成了:
训练阶段:只有 和 的参数会计算梯度并更新,参数量往往下降了几百倍甚至上千倍。
LoRA 的核心优势:
- 显存极度友好:大大降低了微调的硬件门槛。
- 推理无损耗:在微调完成后,可以直接将学到的增量矩阵加到原权重上,即 。这样在实际推理时,模型架构和运算量与原始模型完全一样,没有任何额外延迟。
- 多任务热插拔:可以为主模型训练多个不同风格的 LoRA 模块(如动漫风、写实风),在推理时只需切换不同的 即可,非常轻量。
5. P-Tuning 和 Prompt Tuning 的核心思想是什么?与传统的 Fine-Tuning 有何异同?
核心思想:连续提示学习 (Continuous Prompt Learning)
这两种技术都是从“提示词工程”演变而来的。人工手写的离散提示词(Discrete Prompts,比如“请翻译这段话:”)很难达到最优效果,因为大模型的词表空间是离散的。
P-Tuning 和 Prompt Tuning 的思想是:不再寻找最优的文本词组,而是直接在模型的输入序列前,拼接一段“可训练的连续向量(Soft Prompts)”。
- Prompt Tuning:只在输入层(Embedding 层)前加入这些连续向量,冻结整个大模型,只反向传播更新这些向量。
- P-Tuning v2:由于只在输入层加向量对于深层网络的影响力有限,P-Tuning v2 将这些可训练的连续向量加入到了 Transformer 的每一层中,这大幅提升了模型在复杂自然语言理解任务上的表现,使其性能逼近全参数微调。
与全参数 Fine-tuning 的异同:
- 同:都需要通过反向传播和梯度下降来更新参数。
- 异:Fine-tuning 是在原有的几百亿参数上动刀子;而 P-Tuning/Prompt Tuning 是把大模型当成一个固定的“黑盒”,只在外围(或每一层的边缘)寻找能激活模型特定能力的“万能钥匙”(连续向量),训练成本极低。