一、Llama进化史
唯一美中不足的是,因为开源协议问题,Llama-1不可免费商用。
经过长达五个月的等待,Meta终于在2023年7月推出了可供商业使用的免费版本——Llama-2。
这个版本包含了四个不同参数量的模型,分别是7B、13B、34B和70B。值得一提的是,除了34B模型外,其他三个模型都已经实现了开源。
此外,Llama-3在推理、编程代码生成以及指令执行等方面也进行了大幅度的优化,使得模型更加易于控制和应用。
二、模型架构
当前,业界广泛采用的大型语言模型大多基于Transformer架构,这是一种依赖于多层自注意力(Self-attention)机制的神经网络模型。
为了提升模型训练的稳定性,Llama 3采用了RMSNorm作为前置的层归一化技术。
在提升模型性能方面,Llama 3选择了SwiGLU作为其激活函数,以增强模型的表达能力。
为了更有效地处理长序列数据,Llama 3引入了RoPE作为其位置编码机制。
同时,为了在效率和性能之间取得平衡,Llama 3的部分版本采用了分组查询注意力机制(Grouped-Query Attention, GQA)。
具体实现流程如下:输入的token序列首先通过词嵌入矩阵转换为词向量序列。接着,这些词向量序列作为初始的隐藏状态,依次通过L层解码器层处理,并在每一层后应用RMSNorm进行归一化,最终的归一化隐藏状态将作为模型的输出。
Llama-1 模型架构,详见MODEL_CARD:
Llama-3 模型架构,详见MODEL_CARD:
同时,模型的上下文处理能力也得到了增强,上下文长度提升至8,000个token。
三、训练数据
本节将对每个版本的训练数据进行简要介绍,包括数据来源、规模和处理方式。
Llama-1模型通过利用大量未标注的数据集进行了自监督学习的训练。
CommonCrawl:
Llama-1在预处理阶段,针对2017年至2020年期间的五个CommonCrawl数据集进行了细致的处理。该过程首先在行级别执行了去重操作,随后利用fastText构建的线性分类器来识别和排除非英语页面。 为了进一步提升数据质量,Llama-1还采用了n-gram语言模型来筛选掉那些低质量的内容。此外,Llama-1还特别训练了一个线性模型,用以区分维基百科中作为参考来源的页面和通过随机抽样得到的页面。在这一分类过程中,那些未被模型判定为参考来源的页面会被排除在训练数据集之外。 C4: 在进行的探索性实验中,Llama-1模型发现,采用多样化的预处理方法来处理CommonCrawl数据集能够显著提高模型性能。基于这一发现,Llama-1的训练数据集也纳入了公开可获取的C4数据集。 C4数据集的预处理同样包括了去重和语言识别的步骤。与CommonCrawl数据集(CCNet)的主要差异在于质量过滤环节,C4数据集的质量过滤主要依赖于一些启发式规则,这些规则包括但不限于标点符号的有无以及网页中单词和句子的数量等。 通过这种综合的预处理策略,Llama-1模型能够从多样化的数据源中提取出高质量的信息,从而为模型的训练提供更加丰富和可靠的数据支持。 Github: Llama-1模型利用了在Google BigQuery平台上公开可用的GitHub数据集进行训练。在数据的筛选过程中,Llama-1特别关注了在Apache、BSD和MIT等开放源代码许可证下发布的项目,确保了数据的合法性和可用性。 为了进一步提升数据质量,Llama-1采取了基于文件行长度或字母数字字符比例的启发式规则,用以识别并排除那些质量不高的文件。此外,Llama-1还运用正则表达式技术,去除文档中的模板化内容,如页眉、页脚等,以减少噪声并提高数据的实用性。 在完成了上述预处理步骤后,Llama-1进一步在文件级别执行了去重操作,确保数据集中不包含任何内容完全相同的重复文件,从而保证了训练数据的唯一性和多样性。 维基百科: Llama-1在其训练数据中纳入了2022年6月至8月期间的维基百科内容,这些内容覆盖了使用拉丁字母和西里尔字母的20种不同语言。在数据预处理阶段,Llama-1执行了一系列操作以净化数据,包括去除超链接、用户评论以及所有其他格式化的模板文本。 通过这些步骤,Llama-1旨在从维基百科中提取出纯净的文本信息,从而为模型提供高质量的语言学习材料,同时减少不必要的噪声和干扰,优化模型的训练效果。 Gutenberg和Books3: Llama-1的训练数据集整合了两个丰富的书籍语料库:首先是Gutenberg项目,它收录了众多公共领域的文学作品;其次是ThePile的Books3部分,这是一个公开可用的、专为训练大型语言模型而设计的数据集。在整合这些书籍数据时,Llama-1采取了书籍级别的去重措施,排除了内容相似度超过90%的重复书籍。 这一做法能够确保训练数据集中的多样性和独特性,避免因内容过度重复而导致模型训练效率降低,同时也有助于提升模型对语言多样性的理解和生成能力。通过精心筛选和预处理,Llama-1能够从这些书籍语料库中获得广泛而高质量的文本信息,为模型的训练打下坚实基础。 ArXiv : Llama-1对ArXiv的LaTeX文件进行了专门的处理,目的是将更多的科学内容融入到其训练数据集中。在这一过程中,Llama-1特别去除了文档中每一节之前的所有内容,以及文末的参考文献部分,从而集中获取文章的核心科学论述。 此外,Llama-1还对.tex文件中的注释进行了清理,以减少非正文信息的干扰。为了提高不同论文之间的文本一致性,Llama-1对用户定义的宏和命令进行了内联扩展,即将这些自定义的LaTeX命令替换为它们的实际文本内容。 通过这些细致的处理步骤,Llama-1旨在提炼出ArXiv文档中的科学文本,同时确保数据集中的科学信息准确、一致,并且尽可能地减少无关内容的干扰,从而为模型提供一个更加精准和专业的科学文本训练环境。 Stack Exchange: Llama-1的训练数据集中融入了Stack Exchange的数据转储,这是一个包含多个领域,从计算机科学到化学等,提供高质量问答内容的综合性平台。在整合这些数据时,Llama-1特别选取了其中28个规模最大的网站的数据进行纳入。 为了提高数据的质量,Llama-1对文本内容进行了清洗,去除了HTML标签等非文本元素,确保了文本数据的纯净性。同时,Llama-1还依据答案的得分进行了排序,优先选择了得分最高到最低的答案,以此来筛选出社区认为最有价值的信息。 通过这种综合的训练策略,Llama-1能够充分挖掘不同数据源的潜力,同时平衡训练效率和模型性能,最终达到优化模型泛化能力的目的。
四、训练方法
本节将对每个版本的训练方法进行简要介绍,包括预训练、有监督微调和基于人类反馈的强化学习。
Llama-1模型是一个基础的自监督学习模型,它没有经过任何形式的特定任务微调。
自监督学习原理
训练配置与优化
参数选择与训练策略
过拟合与数值稳定性
权重衰减与梯度裁剪:实施0.1的权重衰减和1.0的梯度裁剪,是防止过拟合和保证数值稳定性的常规做法。
训练动态与资源优化
Llama-1也展示了一系列针对大规模语言模型训练进行的优化措施,主要包括:
内存与计算效率提升
训练速度与资源消耗
手动实现反向传播:代替自动微分系统,手动实现反向传播函数,提升训练速度。
并行性与GPU通信优化
模型与序列并行:通过模型和序列的并行化,以及优化GPU间通信,进一步提高训练效率。
大规模模型训练优势
资源管理与效率优化
模型发展与微调
微调技术与训练方法
Llama-2-Chat训练流程
迭代改进与人类反馈
Llama-3系列模型
预训练阶段的扩展法则
新的观察与数据量
并行策略与训练效率
硬件与软件优化
存储系统:开发了新的可扩展存储系统,减少检查点和回滚开销,有效训练时间超过95%。
训练效率提升
微调阶段的创新
五、效果对比
Meta官方数据显示,Llama-2在众多基准测试中都优于Llama-1和其他开源语言模型。
特别值得关注的是,英伟达的科学家Jim Fan所整理的信息显示,Llama-3的400B参数版本在性能上已经非常接近Claude-3-Opus和GPT-4-turbo。这一进展预示着开源界不久将能够迎来与GPT-4相媲美的大型模型。
六、社会影响
Llama模型的适用性已成功拓宽至涵盖移动设备和边缘计算设备在内的多样化平台。这种跨平台的兼容性不仅推动了技术的广泛传播,还加速了创新应用的开发进程。
小 结
