大模型Llama架构:从理论到实战

okkaandw · · 53 次点击 · 开始浏览    置顶

/s/1LhVlBMOR_ZHuIlZH79OR-g 提取码:8rzl LLaMA(Large Language Model Meta AI),这个由Meta AI开发的大型语言模型,自2023年2月问世以来,便以其出色的性能和广泛的应用前景吸引了众多关注。本文将对LLaMA大模型进行全面剖析与解读,带您深入了解其架构、特点、训练数据及算法优势。 一、LLaMA模型架构 LLaMA模型的核心架构基于Transformer,但与标准的Transformer结构有所不同。它采用了前置层归一化(Pre-normalization)并使用RMSNorm归一化函数,同时激活函数更换为了SwiGLU,并使用了旋转位置嵌入(RoPE)。这些改进使得LLaMA在训练过程中更加稳定,提高了模型的性能。 前置层归一化:LLaMA将归一化操作从Transformer子层的输出移到了输入,第一层归一化设置在多头注意力层之前,第二层归一化移动到全连接层之前。这种设计有助于减少梯度消失或爆炸的问题。 RMSNorm归一化函数:RMSNorm是一种基于均方根(RMS)的归一化方法,不依赖于均值,而是通过计算特征向量的RMS值来进行归一化。在LLaMA中,RMSNorm还加入了可学习的缩放因子和偏移参数,进一步提高了模型的灵活性。 SwiGLU激活函数:SwiGLU是Shazeer在文献中提出的一种激活函数,并在PaLM等模型中得到了广泛应用。相较于传统的ReLU函数,SwiGLU在很多评测数据集上表现出了更好的性能。在LLaMA中,全连接层使用了带有SwiGLU激活函数的计算方式,提升了模型的非线性处理能力。 旋转位置嵌入(RoPE):LLaMA没有使用传统的绝对位置编码,而是采用了旋转位置嵌入。RoPE借助复数的思想,通过绝对位置编码的方式实现了相对位置编码的效果,更有效地捕捉序列中的位置信息。 二、LLaMA 1 与 LLaMA 2 对比 LLaMA2是Meta最新开源的大型语言模型,其训练数据集达到了2万亿token,显著扩大了处理词汇的范围。此外,LLaMA2对上下文的理解长度也从原来的LLaMA模型的2048个token扩大到了4096个token,使得这个模型能够理解并生成更长的文本。LLaMA2包含7B、13B和70B三种规模的模型,它们在各种语言模型基准测试集上都展示了优异的性能。值得一提的是,LLaMA2模型不仅适用于语言研究,也可用于商业应用。总的来说,LLaMA2是目前开源的大型语言模型(LLM)中表现最出色的一种。 三、Llama3的目标 Llama3拥抱开源社区。通过不断响应用户反馈来提升模型效果,并且持续在负责任的AI领域扮演重要角色。近期发布的基于文本的模型是Llama3集合的一部分。未来的目标是使Llama3成为多语言、多模态、长上下文、持续提升核心能力,如:推理和代码生成。 四、训练数据 预训练数据为15T tokens,是Llama2的7倍(其中代码数据多4倍)。为了支持后续的多语言支持,预训练数据中包含5%+的高质量非英语数据。 为了获取高质量数据,我们开发了一系列数据过滤流水线。这些流水线包括:启发式过滤器、NSFW过滤器、语义去重方法、预测数据质量的文本分类器。研究者表明之前版本的Llama模型擅长发现高质量数据,因此采用Llama2生成文本质量分类器的训练数据。 作者给出了在最终预训练数据集中异构数据源的最佳策略评估方法。这些实验让我们能够选择一个数据混合策略,从而让Llama3在trivia questions(琐事问题)、STEM、coding、historical knowledge上表现优异。 五、分组查询注意力机制GQA Llama2在架构上的一个重要创新是引入了分组查询注意力机制(GQA)。这一机制是对transformer原始的Multi-head Attention的简化与改进,旨在提升模型的推理速度。具体而言,GQA将query进行了分组,仅在组内共享同一个key和value,从而减少了计算量,提高了推理效率。实验表明,GQA在保持模型效果的同时,显著提升了推理速度。 六、训练数据量与上下文长度的提升 Llama2在训练数据量和上下文长度上也进行了显著提升。与初代模型相比,Llama2的训练数据扩充了40%,达到2万亿token,这使得模型能够学习到更丰富的语言知识和模式。同时,Llama2可处理的上下文长度也增倍至4096个token,这有助于模型理解和生成更长的文本,更好地适应各种自然语言任务。 七、Llama2的对话与代码增强版本 除了基础的Llama2模型外,Meta还推出了对话增强版本的Llama chat和代码增强版本的Code Llama。Llama chat通过RLHF强化学习确保安全性和帮助性,为开发者和研究人员提供了更加智能和可靠的对话模型。而Code Llama则支持多种编程语言,包括Python、C++、Java等,为代码生成和编程任务提供了强大的支持

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

53 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传