在AI领域的快速发展中,大模型正以前所未有的速度推动着技术的边界。Meta发布的Llama系列模型,尤其是最新的Llama-3.1,引起了广泛的关注。本文将详细梳理Llama开源家族的演进历程,包括进化史、模型架构、训练数据、训练方法、效果对比以及社区生态等方面。
1、引言
北京时间7月23日,Meta官宣了Llama3.1,这是继Llama1、Llama2、Code-Llama和Llama3之后的第三代模型,在多个基准测试中实现了全面领先,性能优于业界同类最先进的模型。Llama系列模型的演进不仅展示了技术的进步,也对商业和学术界产生了深远的影响。
2、Llama进化史
1、Llama1系列
- 发布时间和特点:Llama1于2023年2月发布,有7B、13B、30B和65B四个参数量版本,在超过1T token的语料上进行预训练,最大的65B参数模型在2,048张A100 80G GPU上训练近21天,在大多数基准测试中超越了具有175B参数的GPT-3。
- 开源协议问题:不可免费商用。
- 生态影响:由于模型开源且性能优异,成为开源社区中最受欢迎的大模型之一,众多研究者将其作为基座模型进行衍生开发,推动了大模型领域的研究进展。
2、Llama2系列
- 发布时间和特点:时隔5个月,Meta于2023年7月发布,有7B、13B、34B和70B四个参数量版本,除了34B模型外,其他均已开源。预训练语料扩充到2T token,上下文长度翻倍到4,096,并引入分组查询注意力机制(GQA)等技术。
- 相关模型:通过进一步的有监督微调(SFT)、基于人类反馈的强化学习(RLHF)等技术,Meta发布了面向对话应用的微调系列模型Llama2-Chat;2023年8月,基于Llama2的优异性能,发布了专注于代码生成的Code-Llama。
3、 Llama3系列
- 发布时间和特点:2024年4月发布,包括8B和70B两个参数量版本,400B的Llama3还在训练中。支持8K长文本,采用编码效率更高的tokenizer,词表大小为128K,预训练数据使用了超过15T token的语料。
- 性能提升:推理、代码生成和指令跟随等能力得到极大改进,更加可控,在相同规模的大模型中取得最优异的性能。
3、模型架构
主流大语言模型采用Transformer架构,Llama模型与GPT类似,采用基于解码器的架构,并进行了一些改动:
- 采用前置的RMSNorm作为层归一化方法,增强训练稳定性。
- 采用SwiGLU作为激活函数,提高模型性能。
- 采用RoPE作为位置编码,更好地建模长序列数据。
- 部分模型采用分组查询注意力机制(GQA),平衡效率和性能。
具体来说,输入的token序列通过词嵌入矩阵转化为词向量序列,依次通过多个解码器层,最后进行归一化输出。每个解码器层中,输入状态经过归一化、注意力模块和前馈网络层处理,输出进行残差连接。
模型 | 改进 |
---|---|
Llama1系列 | 使用BPE算法分词,由sentencepiece实现,词表大小为32k。 |
Llama2系列 | 使用与Llama - 1相同的架构和tokenizer,上下文长度扩展到4k,34B和70B参数量版本使用GQA。 |
Llama3系列 | tokenizer由sentencepiece换成tiktoken,与GPT4保持一致,词表大小扩展到128k,8B和70B都采用GQA,上下文长度扩展到8k。 |
4、训练数据
1、Llama1系列
- 数据来源和处理:使用海量无标注数据进行自监督学习,数据来源包括英语CommonCrawl、C4、Github、维基百科、Gutenberg和Books3、ArXiv、Stack Exchange等。经过一系列处理,整个训练数据集包含大约1.4T token,部分数据进行了约两个epoch的训练。
2、Llama2系列
- 预训练数据:使用来自公开可用源的2T个数据token,对数据安全性进行全面考量,包括隐私和法律审查、排除含大量个人信息的网站数据等,预训练主要集中在英语数据上,非英语语言熟练度有限。
- 微调数据:Llama2-Chat在为此项目创建的27,540个提示 - 响应对上进行额外微调,使用包含Meta示例和多个小数据集的人类反馈强化学习(RLHF)。
3、Llama3系列
- 数据量和模型版本:训练数据量从Llama - 2的2T Tokens扩展到15T Tokens,代码数据扩充4倍。提供8B、70B和400B(仍在训练中)三种模型版本,8B性能略优于Mistral 7B和Gemma 7B,70B性能介于ChatGPT 3.5和GPT 4之间,400B旨在成为多模态、多语言版本,预期性能与GPT 4或GPT 4V相当。
- 数据特点:训练数据包括大量代码token和超过5%的非英语token,来源于30多种语言,提升了模型在多语言处理和代码能力方面的表现。
- 数据质量保障:Meta开发了一系列数据过滤pipeline,包括启发式过滤器、NSFW过滤器、语义重复数据删除技术及文本分类器,还通过实验评估了混合数据的最佳策略。
5、训练方法
1、Llama1系列
- 自监督学习:是基础的自监督学习模型,使用AdamW优化器,采用余弦学习率调度、权重衰减、梯度裁剪和预热步骤,还进行了一系列优化措施,如使用xformers库、手动实现反向传播函数、利用检查点技术、采用模型和序列并行性及优化GPU通信等。
2、Llama2系列
- 微调过程:Llama2-Chat基于Llama2微调,保持固定的4k上下文长度,采用自回归损失函数,训练过程中用户输入提示的token损失被清零。
3、Llama3系列
- 预训练:投入大量精力扩大预训练,为下游基准测试制定扩展法则,对扩展法则有新观察,如8B模型在训练两个数量级数据后性能仍提高,70B参数模型也有类似表现。结合三种并行策略训练最大模型,开发新训练堆栈提高训练效率,训练效率比Llama2提高约三倍。
- 微调:对模型的微调方法进行创新,结合有监督微调(SFT)、拒绝采样、近似策略优化(PPO)和直接策略优化(DPO),通过偏好排序的训练提高模型在处理复杂逻辑推理问题时的准确性。
6、Llama3.1介绍
Llama3.1最近才出来,而且还是属于Llama3版本,所以暂时就不归入到前面介绍的内容,在这里单独开一张简单介绍一下。本着旧不如新,如果要部署的话就直接从最新版本开始吧。
6.1 Llama3.1系列模型简介
Llama3.1 系列模型是 Llama3 系列模型持续训练的产物,包含 80 亿参数的 Llama3.1 - 8B、700 亿参数的 Llama3.1 - 70B 和 4050 亿参数的 Llama3.1 - 405B 这三个不同参数规模的版本。这三个模型的训练数据量均达 15 万亿 tokens,上下文长度均为 128K。这里15万亿数据来自公开可用数据集,而微调数据集除了公开数据外,还包含了2500万合成的数据。
模型名称 | Llama 3.1 | 上下文长度 | 128k |
---|---|---|---|
训练数据 | 公开数据集 | 是否支持GQA | 支持 |
参数规模 | 80亿、700亿和4050亿 | 训练tokens数 | 15万亿+ |
输入模态 | 多语言文本 | 知识日期 | 2023年12月份 |
输出模态 | 多语言文本和代码 | ||
Llama3.1 模型能够支持多种不同的语言,不过仅支持文本的输入与输出。Llama3.1 系列模型依然属于自回归架构的语言模型。其微调版本的模型经历了有监督微调以及 RLHF 训练。该模型支持英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语等。从上表能够明显看出,Llama3.1 系列模型还支持代码输出。
6.2 Llama3.1系列模型的开源地址
Llama3.1系列模型的开源协议是允许商用的,包括4050亿参数规模的Llama3.1-405B,但是使用的时候必须显著提示“Built with Llama”。此外,月活用户超过7亿,必须向Meta申请额外许可。但是,对于我们影响最大的还是该协议遵守贸易合规,这意味着受到制裁的企业可能无法使用。
Llama3.1系列模型的开源地址等其它信息参考DataLearnerAI大模型信息卡:
模型名称 | 模型地址 |
---|---|
Llama3.1-405B | https://www.datalearner.com/ai-models/pretrained-models/Llama3_1-405B |
Llama3.1-405B-Instruct | https://www.datalearner.com/ai-models/pretrained-models/Llama3_1-405B-Instruct |
Llama3.1-70B | https://www.datalearner.com/ai-models/pretrained-models/Llama3_1-70B |
Llama3.1-70B-Instruct | https://www.datalearner.com/ai-models/pretrained-models/Llama3_1-70B-Instruct |
Llama3.1-8B | https://www.datalearner.com/ai-models/pretrained-models/Llama3_1-8B |
Llama3.1-8B-Instruct | https://www.datalearner.com/ai-models/pretrained-models/Llama3_1-8B-Instruct |
参考
[1] https://cloud.tencent.com/developer/article/2411892
[2] https://www.datalearner.com/llm-blogs/llama3-model-upgrade-analysis