【极速前进】20240524-20240526:Meta多模态模型Chameleon、参数高效微调MoRA、跨层注意力降低KV Cache、Octopus v4、SimPO

相关博客
【极速前进】20240706-24240714:用于Agent的树搜、理解LLM的语种困惑、事实知识抽取微调、Quiet-STaR
【极速前进】20240615-20240623:Zipper融合模态、VideoLLM视频理解、WebAgent可以自我改善、Nemotron-4、AnyGPT统一模态
【极速前进】20240608-20240610:评估模型Prometheus 2、CoPE、DITTO:使用示例反馈对齐LLM、CoA:利用多Agent解决长文本、Qwen2在线合并优化器
【极速前进】20240524-20240526:Meta多模态模型Chameleon、参数高效微调MoRA、跨层注意力降低KV Cache、Octopus v4、SimPO
【极速前进】20240423-20240428:Phi-3、fDPO、TextSquare多模态合成数据、遵循准则而不是偏好标签、混合LoRA专家
【极速前进】20240422:预训练RHO-1、合成数据CodecLM、网页到HTML数据集、MLLM消融实验MM1、Branch-Train-Mix
【极速前进】20240415-20240421:TR-DPO、压缩与智能的线性关系、模拟伪代码改善算术能力、Many-shot、合成数据综述

一、Chameleon:混合模态早期融合基础模型

论文地址:https://arxiv.org/pdf/2405.09818

​ Chameleon是一个基于token的早期融合多模态模型,能够理解和生成任意序列的文本或者图像。

1. 预训练

1.1 Tokenization

图像Tokenization。从大小为8192的codebook中奖512*512的图像编码为1024个离散tokens。使用授权图片来训练tokenizer。由于生成人脸的重要性,对人脸图像进行了上采样。该tokenizer的核心弱点是重构具有大量文本的图像,因此遇到需要大量OCR相关的任务会导致模型效果较差。

文本Tokenizer。使用训练数据的子集来训练新的BPE tokenizer,词表大小为65536,其中包含8192个图像codebook tokens,使用sentencepiece库。

1.2 预训练数据

​ 将预训练分为两个阶段,第一个阶段占80%,第二阶段20%。

第一阶段。第一阶段包含大量无监督数据的混合数据集,包括:(1) 大约2.9T tokens的纯文本数据集;(2) 使用大约1.4 B的图文对,其能够产生1.5T的图文tokens;(3) 从互联网收集大约400B tokens的图文交错数据。

第二阶段。降低第一阶段数据的权重为50%并混合高质量数据集,同时维护图像文本token的比例相近。此外,包含了指令调优的部分数据集。

1.3 稳定性

​ 当Chameleon超过8B参数和1T tokens时会遇到稳定性问题,而且不稳定性出现在训练后期。为了解决稳定性问题,采用措施:

架构。模型结构大致类似于LLaMa-2。由于训练中后期输出范数的缓慢增长,LLaMa架构会出现复杂的分歧。最终定位到是由softmax的平移不变性导致的。由于模型权重跨模态共享,每个模态会通过轻微增加范数来与其他模态竞争。虽然训练开始时没有问题,但是随着训练进行超过bf16有效表示范围,就会出现分歧。在单一模态中,该问题称为logit漂移问题。
在这里插入图片描述

​ 上图5(a)是训练过程中最后Transformer层输出的范数,大约在训练的20%处出现分歧。范数出现不受控增长与loss出现分歧高度相关。在Transformer中Softmax出现在两处:核心注意力机制和logit之后。这里使用QK-Norm来控制softmax输入的范数。此外,除了QK-norm以外,也有必要在注意力和前馈层前引入dropout。但是,该方案对于Chameleon-34B并不足够,其需要额外的范数重排。具体来说,使用Liu et al.的normalization策略。设 h h h表示输入 x x x经过自注意力机制后的隐藏向量,则
Chameleon-34B:   h = x + attention_norm ( attention ( x ) ) output = h + ffn_norm ( feed_forward(h) ) Llama2:   h = x + attention ( attention_norm ( x ) ) output = h + feed_forward ( ffn_norm ( h ) ) \begin{align} \textbf{Chameleon-34B: }&h=x+\text{attention\_norm}(\text{attention}(x)) \\ &\text{output}=h+\text{ffn\_norm}(\text{feed\_forward(h)}) \\ \textbf{Llama2: }&h=x+\text{attention}(\text{attention\_norm}(x)) \\ &\text{output}=h+\text{feed\_forward}(\text{ffn\_norm}(h)) \\ \end{align} \\ Chameleon-34B: Llama2: h=x+attention_norm(attention(x))output=h+ffn_norm(feed_forward(h))h=x+attention(attention_norm(x))output=h+feed_forward(ffn_norm(h))
​ 此外,发现这种类型的normalization与dropout不能很好的结合,因此训练Chameleon-34B不使用dropout。

优化。应用QK-Norm有助于注意力内的softmax,但对于最后输出层的logit shift问题没有帮助。因此,应用z-loss正则化。具体来说,对softmax的配分函数进行正则化,即对于 σ ( x ) i = e x i Z \sigma(x)_i=\frac{e^{x_i}}{Z} σ(x)i=Zexi中的 Z = ∑ i e x i Z=\sum_i e^{x_i} Z=iexi 1 0 − 5 log ⁡ 2 Z 10^{-5}\log_2 Z 105log2Z。Chameleon-7B使用dropout和z-loss实现稳定性,而Chameleon-34B仅需要z-loss。

2. 对齐

数据。将SFT数据分为以下类别:文本、代码、视觉对话、图像生成、文本/图像交替生成、安全。

微调策略。SFT阶段平衡模态数据比例至关重要。

二、MoRA:用于参数高效微调的高秩更新

论文地址:https://arxiv.org/pdf/2405.12130

​ LoRA的低秩更新机制可能会限制LLM学习和记忆新知识的能力。本文提出MoRA,能够实现相同可训练参数情况下的高秩更新。

1. 分析低秩更新的影响

​ 给定预训练权重矩阵 W 0 ∈ R d × k W_0\in\mathbb{R}^{d\times k} W0Rd×k,LoRA利用两个低秩矩阵来计算权重更新 Δ W \Delta W ΔW
h = W 0 x + Δ W x = W 0 x + B A x h=W_0x+\Delta Wx=W_0x+BAx \\ h=W0x+ΔWx=W0x+BAx
其中 A ∈ R r × k A\in\mathbb{R}^{r\times k} ARr×k B ∈ R d × r B\in\mathbb{R}^{d\times r} BRd×r表示低秩矩阵。为了确保训练开始时 Δ W = 0 \Delta W=0 ΔW=0,LoRA使用高斯分布初始化 A A A并初始化B为0。由于 Δ W \Delta W ΔW被低秩分解为 B A BA BA,则 rank ( Δ W ) ≤ r \text{rank}(\Delta W)\leq r rank(ΔW)r。LoRA更新在文本分类或者指令微调上表现出与全秩微调相当的效果,但是在复杂推理或者持续预训上则效果会变差。

​ 基于这些观察,提出假设:低秩更新能够更好利用LLM的原始知识和能力,但是对于需要增强LLM知识和能力的任务来说就很挣扎。经验实验验证,LoRA确实难以学习新知识,即使可以通过增大秩来缓解。

2. MoRA

​ 给定预训练权重 W 0 ∈ R d × k W_0\in\mathbb{R}^{d\times k} W0Rd×k,LoRA使用两个低秩矩阵 A A A B B B来实现低秩更新,总可训练参数为 ( d + k ) r (d+k)r (d+k)r。在相同可训练参数下,方阵 M ∈ R r ^ × r ^ M\in\mathbb{R}^{\hat{r}\times\hat{r}} MRr^×r^ r ^ = ⌊ ( d + k ) r ⌋ \hat{r}=\lfloor\sqrt{(d+k)r} \rfloor r^=(d+k)r 能够实现最高的秩,因为 r ≪ min ⁡ ( d , k ) r\ll\min(d,k) rmin(d,k)

​ 为了实现该目标,应该缩减 M M M的输入微调并增加输出维度。正式来说,
h = W 0 x + f decomp ( M f comp ( x ) ) h=W_0x+f_{\text{decomp}}(M f_{\text{comp}}(x)) \\ h=W0x+fdecomp(Mfcomp(x))
其中 f comp : R k → R r ^ f_{\text{comp}}:\mathbb{R}^{k}\rightarrow\mathbb{R}^{\hat{r}} fcomp:RkRr^表示将 x x x输入维度从 k k k降低至 r ^ \hat{r} r^的函数, f decomp : R r ^ → R d f_{\text{decomp}}:\mathbb{R}^{\hat{r}}\rightarrow\mathbb{R}^d fdecomp:Rr^Rd则是将输出维度从 r ^ \hat{r} r^增加到 d d d的函数。此外,这两个函数应该是非参数化的操作且能在线性时间内执行。对于将 M M M转换为 Δ W \Delta W ΔW,对应函数 f comp : R r ^ × r ^ → R r ^ × k f_{\over{\text{comp}}}:\mathbb{R}^{\hat{r}\times\hat{r}}\rightarrow\mathbb{R}^{\hat{r}\times k} fcomp:Rr^×

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BQW_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值