🚀 Llama 3.2 多语言大语言模型
Llama 3.2 是一系列多语言大语言模型,提供 1B 和 3B 两种规格。它在常见行业基准测试中表现出色,适用于商业和研究场景,能处理多种自然语言生成任务。
🚀 快速开始
使用 transformers 库
从 transformers >= 4.43.0 版本开始,你可以使用 Transformers 管道抽象或借助 Auto 类和 generate() 函数进行对话推理。
确保通过 pip install --upgrade transformers
更新你的 transformers 库。
import torch
from transformers import pipeline
model_id = "meta-llama/Llama-3.2-3B"
pipe = pipeline(
"text-generation",
model=model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
pipe("The key to life is")
使用 llama
代码库
请遵循 仓库 中的说明。
要下载原始检查点,请参考以下使用 huggingface-cli
的示例命令:
huggingface-cli download meta-llama/Llama-3.2-3B --include "original/*" --local-dir Llama-3.2-3B
✨ 主要特性
- 多语言支持:官方支持英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语,且在更多语言上进行了训练。
- 高性能表现:在常见行业基准测试中,超越了许多开源和闭源聊天模型。
- 多种应用场景:适用于商业和研究,可用于知识检索、摘要生成、移动写作助手等。
- 量化模型:可适应计算资源有限的设备端应用。
📦 安装指南
确保通过 pip install --upgrade transformers
更新你的 transformers 库,以使用 Llama 3.2 模型。
💻 使用示例
基础用法
import torch
from transformers import pipeline
model_id = "meta-llama/Llama-3.2-3B"
pipe = pipeline(
"text-generation",
model=model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
pipe("The key to life is")
📚 详细文档
模型信息
属性 |
详情 |
模型开发者 |
Meta |
模型架构 |
自回归语言模型,采用优化的 Transformer 架构,调优版本使用监督微调(SFT)和基于人类反馈的强化学习(RLHF)。 |
支持语言 |
英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语,可在更多语言上微调。 |
模型发布日期 |
2024 年 9 月 25 日 |
状态 |
基于离线数据集训练的静态模型,未来可能发布改进版本。 |
许可证 |
Llama 3.2 社区许可证 |
预期用途
预期用例
- 商业和研究用途,支持多种语言。
- 指令调优的纯文本模型适用于类助手聊天和代理应用,如知识检索、摘要生成等。
- 预训练模型可用于各种自然语言生成任务。
- 量化模型适用于计算资源有限的设备端应用。
超出范围
- 违反适用法律法规(包括贸易合规法律)的使用。
- 违反可接受使用政策和 Llama 3.2 社区许可证的使用。
- 使用模型未明确支持的语言。
硬件和软件
训练因素
使用自定义训练库、Meta 定制的 GPU 集群和生产基础设施进行预训练,微调、量化、注释和评估也在生产基础设施上进行。
训练能源使用
训练累计使用了 916k GPU 小时的 H100 - 80GB(TDP 为 700W)类型硬件。
训练温室气体排放
估计基于位置的温室气体排放总量为 240 吨 CO2eq。自 2020 年以来,Meta 在全球运营中保持净零温室气体排放,并 100% 使用可再生能源匹配电力消耗。
训练数据
Llama 3.2 在来自公开来源的多达 9 万亿个标记的数据上进行预训练。对于 1B 和 3B 的 Llama 3.2 模型,在模型开发的预训练阶段融入了 Llama 3.1 8B 和 70B 模型的逻辑。预训练数据截止到 2023 年 12 月。
量化
量化方案
- 所有 Transformer 块中的线性层权重量化为 4 位分组方案(组大小为 32),激活采用 8 位每标记动态量化。
- 分类层权重量化为 8 位每通道,激活采用 8 位每标记动态量化。
- 嵌入层采用 8 位每通道量化。
量化感知训练和 LoRA
量化感知训练(QAT)结合低秩适应(LoRA)模型仅经过后训练阶段,使用与全精度模型相同的数据。
SpinQuant
应用了 SpinQuant 和生成式后训练量化(GPTQ)。
基准测试
英文文本基准测试
类别 |
基准测试 |
样本数 |
指标 |
Llama 3.2 1B |
Llama 3.2 3B |
Llama 3.1 8B |
通用 |
MMLU |
5 |
macro_avg/acc_char |
32.2 |
58 |
66.7 |
|
AGIEval English |
3 - 5 |
average/acc_char |
23.3 |
39.2 |
47.8 |
|
ARC - Challenge |
25 |
acc_char |
32.8 |
69.1 |
79.7 |
阅读理解 |
SQuAD |
1 |
em |
49.2 |
67.7 |
77 |
|
QuAC (F1) |
1 |
f1 |
37.9 |
42.9 |
44.9 |
|
DROP (F1) |
3 |
f1 |
28.0 |
45.2 |
59.5 |
长上下文 |
Needle in Haystack |
0 |
em |
96.8 |
1 |
1 |
多语言基准测试
类别 |
基准测试 |
语言 |
Llama 3.2 1B |
Llama 3.2 1B Vanilla PTQ** |
Llama 3.2 1B Spin Quant |
Llama 3.2 1B QLoRA |
Llama 3.2 3B |
Llama 3.2 3B Vanilla PTQ** |
Llama 3.2 3B Spin Quant |
Llama 3.2 3B QLoRA |
Llama 3.1 8B |
通用 |
MMLU (5 - shot, macro_avg/acc) |
葡萄牙语 |
39.8 |
34.9 |
38.9 |
40.2 |
54.5 |
50.9 |
53.3 |
53.4 |
62.1 |
|
|
西班牙语 |
41.5 |
36.0 |
39.8 |
41.8 |
55.1 |
51.9 |
53.6 |
53.6 |
62.5 |
|
|
意大利语 |
39.8 |
34.9 |
38.1 |
40.6 |
53.8 |
49.9 |
52.1 |
51.7 |
61.6 |
|
|
德语 |
39.2 |
34.9 |
37.5 |
39.6 |
53.3 |
50.0 |
52.2 |
51.3 |
60.6 |
|
|
法语 |
40.5 |
34.8 |
39.2 |
40.8 |
54.6 |
51.2 |
53.3 |
53.3 |
62.3 |
|
|
印地语 |
33.5 |
30.0 |
32.1 |
34.0 |
43.3 |
40.4 |
42.0 |
42.1 |
50.9 |
|
|
泰语 |
34.7 |
31.2 |
32.4 |
34.9 |
44.5 |
41.3 |
44.0 |
42.2 |
50.3 |
**注:仅用于比较,模型未发布。
推理时间
类别 |
解码速度(标记/秒) |
首标记时间(秒) |
预填充速度(标记/秒) |
模型大小(PTE 文件大小,MB) |
内存大小(RSS,MB) |
1B BF16(基线) |
19.2 |
1.0 |
60.3 |
2358 |
3185 |
1B SpinQuant |
50.2(2.6 倍) |
0.3(-76.9%) |
260.5(4.3 倍) |
1083(-54.1%) |
1921(-39.7%) |
1B QLoRA |
45.8(2.4 倍) |
0.3(-76.0%) |
252.0(4.2 倍) |
1127(-52.2%) |
2255(-29.2%) |
3B BF16(基线) |
7.6 |
3.0 |
21.2 |
6129 |
7419 |
3B SpinQuant |
19.7(2.6 倍) |
0.7(-76.4%) |
89.7(4.2 倍) |
2435(-60.3%) |
3726(-49.8%) |
3B QLoRA |
18.5(2.4 倍) |
0.7(-76.1%) |
88.8(4.2 倍) |
2529(-58.7%) |
4060(-45.3%) |
责任与安全
负责任的部署
- Llama 3.2 Instruct:目标是为研究社区提供安全微调鲁棒性研究的资源,为开发者提供安全强大的模型。采用多方面的数据收集方法,注重模型拒绝良性提示和拒绝语气。
- Llama 3.2 系统:大语言模型应作为整体 AI 系统的一部分部署,开发者应部署系统安全防护措施。Meta 提供了 安全防护措施,参考实现默认包含这些防护措施。
新功能和用例
Llama 发布通常会引入新功能,需要额外考虑。Llama 3.2 1B 和 3B 模型适用于高约束环境,开发者应确保系统安全符合用例要求。
评估
进行了专门的对抗性评估数据集建设和评估,开展了红队测试,与专家合作确定对抗性目标。
关键风险
对 CBRNE(化学、生物、放射、核和爆炸武器)、儿童安全和网络攻击等关键风险领域进行了评估和缓解。
社区
🔧 技术细节
模型架构
Llama 3.2 是自回归语言模型,采用优化的 Transformer 架构。调优版本使用监督微调(SFT)和基于人类反馈的强化学习(RLHF),以符合人类对有用性和安全性的偏好。
量化方案设计
考虑了模型质量、预填充/解码速度和内存占用等指标,结合 PyTorch 的 ExecuTorch 推理框架和 Arm CPU 后端进行设计。
量化感知训练和 LoRA 流程
利用 BF16 Llama 3.2 模型检查点初始化 QAT,进行额外的 SFT 训练,冻结骨干网络,应用 LoRA 适配器进行另一轮 SFT 训练。
基准测试评估方法
使用内部评估库进行标准自动基准测试,评估不同模型在多种任务上的性能。
📄 许可证
使用 Llama 3.2 受 Llama 3.2 社区许可证 约束,这是一个自定义的商业许可协议。
许可证协议详情
请参考 LLAMA 3.2 社区许可协议,其中包含了使用、复制、分发和修改 Llama 材料的条款和条件。
可接受使用政策
使用 Llama 3.2 必须遵守 可接受使用政策,禁止用于违反法律、道德和安全的活动。
反馈与问题报告
有关如何提供反馈或对模型发表评论的说明,请参阅 Llama 模型 README。如需了解更多关于生成参数和在应用中使用 Llama 3.2 的技术信息,请访问 此处。
⚠️ 重要提示
使用 Llama 3.2 时,请确保遵守 Llama 3.2 社区许可证和可接受使用政策,不得用于任何违反适用法律法规的活动。
💡 使用建议
在使用模型前,仔细阅读相关文档和许可证协议。对于特定应用场景,可根据需求对模型进行微调。遇到问题或发现异常情况,及时通过反馈机制报告。