1.LLaMA
LLaMA的模型架构:RMSNorm/SwiGLU/RoPE/Transformer/1-1.4T tokens,和GPT一样都是基于Transformer这个架构。
1.1对transformer子层的输入归一化
与Transformer在每个子层输出后LayerNorm不同的是,LLaMA是对每个子层的输入使用RMSNorm进行归一化,计算如下:
1.2使用SwiGLU替换ReLU
【Relu激活函数】Relu(x) = max(0,x) 。
【GLU激活函数】GLU(x) = x 与 sigmoid(g(x)) 对应元素相乘 。
LLaMA采用SwiGLU替换了原有的ReLU,SwiGLU的作用机制是根据输入数据的特性,通过学习到的参数自动调整信息流动的路径,具体是采用SwiGLU的Feedforward Neural Network (简称FNN,是一种使用可学习的门控机制的前馈神经网络)。xV相当于门控值,控制Swish输出的多少。
1.3位置编码
在位置编码方面,将绝对位置嵌入的方法变为相对位置嵌入。
1.4优化器的设计
使用AdamW优化器进行训练,使用余弦学习率的方式根据模型的大小动态的改变学习率和批次大小。
2.对LLaMA进行微调
2.1 Stanford Alpaca—微调LLaMA-7b(产生训练数据方式的开天辟地)
结合英文语料通过Self Instruct的方式微调LLaMA 7B,具体通过52K的指令数据对LLaMA进行指令微调。其中52k的数据包括:指令、输入、输出。
①self-instruct方式
1.首选人工设计出175个种子数据集,包括指令、输入、输出。
2.使用GPT3对应的API使用种子数据集的上下文实例来生成更多新的指令。
3.使用生成的指令判断是否为分类任务。
4.使用模型生成实例。如果是则模型输出(class_lable、input),如果不是则模型输出(input、output)。
5.生成输入和输出数据,过滤点低质量或者相似度高的数据。
6.经过过滤后的数据放入种子数据集中。
生成52K数据的完整代码:链接
②使用生成的指令数据微调LLaMA
使用生成的52k的指令数据集有监督微调LLaMA-7b得到Alpaca-7b。
【怎么用】
比如公司想要做一个医疗问答,可以找一些医疗问答的指令种子数据集,然后根据这些种子数据集调用OpenAI的接口生成训练的指令数据集。用Alpaca的微调训练代码根据生成的医疗数据集来微调LLaMA,制作自己的医疗问答模型。
2.2 Alpaca-LoRA
LoRA的核心思想是用一种低秩的方式来调整这些参数矩阵,在数学上低秩意味着一个矩阵可以用两个极小的矩阵来近似。它提出用两个小矩阵近似一个大矩阵,先降维(减小计算量)后升维(维持维度不变)。具体来说是固定原始模型的参数,只训练降维矩阵A与升维矩阵B。最后用原始模型参数与B矩阵相加。
A矩阵一般用随机高斯分布初始化,维度上是降维;B矩阵用0矩阵初始化,维度上是升维。
参数更新 :W = W + A*B。
梯度更新 :在微调过程中,计算关于矩阵A和矩阵B的损失,在优化过程中对A和B进行更新,原始矩阵W保持不变。
代码具体操作:①将原始矩阵W参数冻结。②新引入两个线性层对应图中两个矩阵,先降维后升维。③LoRA主要实现了两分支通路,一条分支为已被冻结weight参数的原始结构,另一条分支为新引入的降维再升维线性层。
3.ChatLLaMA:LLaMA的RLHF版
由于LLaMA没有使用RLHF方法,于是ChatLLaMA在LLaMA中使用了RLHF。
3.1数据集
使用了三套数据集:分别用于训练actor、reward和RLHF。
actor_training_data训练actor,用于微调GPT3,数据集格式为问答对的形式。
reward_training_data用于训练reward,数据集格式为输入、回答、分数。与ChatGPT第二阶段不同的是,ChatGPT是使用人工标注好的奖励数据来训练RM模型,然后使用负采样计算损失;而ChatLLaMA则是直接使用RM模型来进行打分,打分结果与人工的打分计算MSE。
RLHF_training_data用于训练RLHF,通过self-instruct的方式提示LLM生成更多的指令数据。
3.2训练过程
外层循环迭代训练轮次(epochs)。内层循环遍历数据加载器(dataloader)中的批次(batches),在每次迭代中,它会处理一批数据,包括状态、动作、价值等,这些数据用于训练智能体-评论家模型。
4.ColossalChat:self-instruct微调LLaMA+RLHF
4.1self-instruct生成数据
ColossalChat首先收集并清洗了平台上人们的真实提问作为种子数据集,通过self-instruct的方式扩充数据集,最终生成了104K条问答的中英文数据集。
4.2训练方式:类似instructGPT的三阶段训练方式
①有监督的微调GPT3.0/GPT3.5–SFT。
②针对同一问题让SFT给出4-9个回答,对这4-9个回答进行人工排序,使用人工标注的数据集训练训练RM奖励模型。
③使用PPO算法和奖励模型微调SFT。文章来源:https://www.toymoban.com/news/detail-698209.html
文章来源地址https://www.toymoban.com/news/detail-698209.html
到了这里,关于类ChatGPT大模型LLaMA及其微调模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!