作为Meta新发布的SOTA开源大型语言模型,Llama2是Llama模型的延续和升级。Llama2家族模型包括了Llama2预训练模型和Llama2-chat微调模型,分别有7B、13B和70B参数量的版本,覆盖了不同的应用场景需求。
1.1训练数据
1.2模型评估
从模型评估上看,Llama2在众多的基准测试中,如推理、编程、对话能力和知识测验上,都优于一代Llama和现有的开源大模型。
虽然Llama2-70B在推理任务上表现接近GPT-3.5,但是在综合性能上还是无法与OpenAI的GPT-4和Google的PaLM-2-L等闭源大模型相媲美,尤其在编程基准上远落后于两者。
2、解锁Llama2的模型结构
2.1Llama2模型架构
Llama2在预训练设置和模型架构上和一代模型非常相似。
a.预归一化(Pre-normalization):对每一个transformer的子层输入都进行归一化,使用RMSNorm归一化函数
b.SwiGLU激活函数:在前馈神经网络(FFN)使用SwiGLU激活函数替换了Transformer中的ReLU激活函数来提升性能
c.旋转嵌入编码(RotaryPositionalEmbeddings,RoPE):RoPE可以兼顾相对位置和绝对位置的信息以提高模型的泛化能力
2.2Llama2训练亮点
2.2.1上下文窗口扩大
Llama2的上下文长度比Llama扩大了一倍,从2048个token拓展至4096个token。更长的上下文窗口意味着更多的聊天用例可被采用,进而模型的理解能力得以提升。
2.2.2Grouped-Query注意力
在Attention的实现上,Llama230B以上的模型采用了分组查询注意力机制(Grouped-QueryAttention,GQA),见图5和图6。
自回归模型的解码通过缓存序列先前标记的键(K)值(V)对来加速注意力的计算。然而随着BatchSize和上下文窗口的增大,多头注意力模型(Multi-headAttenrion,MHA)的内存成本会随之显著增大。
GQA的优势在于其将Query进行分组,组内共享KV,这样使得K和V的预测可以跨多个头共享,从而显著降低计算和内存需求,提升推理速度。
2.3Llama2-chat微调流程
Meta致力于在偏好数据上训练奖励模型,然后采用强化学习进行优化,从而提高生成的质量。
2.3.1SFT+RLHFbyRSandPPO
和InstructGPT类似,在Llama2-chat对话模型微调流程分为:
a.自监督训练后获得Llama2基座模型
b.监督微调(Supervisedfine-tuning,SFT)
c.人类反馈强化学习(Reinforcementlearningwithhumanfeedback,RLHF):拒绝采样+近端策略优化
RLHF使用了拒绝采样(RejectionSamplingfine-tuning,RS)和近端策略优化(ProximalPolicyOptimization,PPO)两个优化算法。拒绝采样的原理为模型输出时采样K个结果,用当前时刻最好的奖励模型打分,选择奖励值最高的一个。在强化学习阶段进行梯度更新,并结合PPO进行RS加PPO的优化处理。
Meta一共迭代了5个RLHF版本,分别从V1-V5,但仅公布了最新的V5版本。V5版本迭代的步骤下图所示。
2.3.2QualityIsAllYouNeed
Meta使用用户偏好数据训练的两个独立的奖励模型HelpfulnessRM和SaftyRM,分别对有用性和安全性进行了优化。在SFT的过程中,Llama2的官方论文[2]着重强调了只需少量高质量的SFT偏好数据就能显著提升结果质量(QualityIsAllYouNeed)。此外,这篇论文也是第一篇指出“RLHF从根本上提高了大模型性能的上限”的论文。
综上,Llama2训练流程给我们最重要的一个启示是:
奖励模型不仅是RLHF的关键,也是整个大模型效果的关键;数据质量又是奖励模型的关键。[4]
03、Llama2在UCloudUK8S上的实践
3.1下载模型
3.1.1下载模型
从HuggingFace上克隆Llama2的模型[5]。本文使用的是Llama2-chat-7b模型。
3.1.2安装WebUI工具
oobabooga开源的text-generation-webui[6]一个大模型的可视化工具包,安装方法如下:
a.进入TextGeneration的github
b.选择一键安装包安装或者手动安装
c.我们将Llama2模型文件放入text-generation-webui/models目录下,文件结构如下图:
3.2构建镜像
根据Uhub容器镜像库的说明:
1.首先,在Uhub上创建镜像库
2.其次,在云主机创建镜像,并打标
3.最后,将云主机镜像推到Uhub中
3.3配置UK8S集群
1.创建UFS文件系统并挂载。
集群创建之后,点击“详情”按钮,将“外网凭证”拷贝到~/.kube/config文件中。同时,需要安装和配置Kubectl命令行工具。