菜单

Llama 3.2

相关源文件

本文件提供关于Llama 3.2模型的详细信息,重点介绍其架构、功能、量化方法和技术规格。有关Llama家族中其他模型的信息,请参阅Llama模型版本及其相关页面,包括Llama 3Llama 3.1Llama 3.3

概述

Llama 3.2是Meta于2024年10月24日发布的一系列轻量级多语言大型语言模型(LLM)。它包括1B(12.3亿参数)和3B(32.1亿参数)大小的模型,专门设计用于在移动设备等资源受限环境中部署,同时在同等大小的模型中保持有竞争力的性能。

模型提供不同变体:

  • 标准bfloat16精度模型
  • SpinQuant优化模型
  • QLoRA微调模型

所有Llama 3.2模型都支持128K令牌上下文窗口,并针对多语言对话用例进行了优化,包括检索和摘要任务。

来源: [models/llama3_2/MODEL_CARD.md:1-16]

模型架构

Llama 3.2采用与其他Llama模型类似的优化Transformer架构,具有多项关键特性,使其能够在参数量较少的情况下仍能保持高性能:

  • 分组查询注意力(GQA):用于提高推理的可扩展性
  • 共享嵌入:权重共享以减小模型大小
  • 知识蒸馏:在预训练期间纳入来自更大Llama 3.1 8B和70B模型的logits
  • 多轮SFT:采用监督微调、拒绝采样和直接偏好优化

这些模型在来自公共来源的最多9万亿个token上进行了训练,知识截止日期为2023年12月。

Llama 3.2架构图

来源: [models/llama3_2/MODEL_CARD.md:6-12], [models/llama3_2/MODEL_CARD.md:56-59]

量化方法

Llama 3.2利用先进的量化技术,针对资源受限设备上的部署进行优化。模型实现了两种主要的量化策略:

SpinQuant

SpinQuant是一种后训练量化技术,与生成式后训练量化(GPTQ)结合应用。该过程包括:

  1. 应用旋转矩阵微调(针对100次迭代优化)
  2. 使用来自WikiText 2数据集的800个样本,序列长度为2048
  3. 使用来自同一数据集的128个样本应用GPTQ

QAT+LoRA (QLoRA)

量化感知训练与低秩适应(QLoRA)遵循以下步骤:

  1. 在监督微调后,使用BF16 Llama 3.2模型检查点初始化QAT
  2. 使用torchao API执行额外的QAT完整轮次SFT
  3. 冻结QAT模型的主干,并使用LoRA适配器执行另一轮SFT
  4. 使用直接偏好优化(DPO)微调生成的模型(包括主干和LoRA适配器)

量化方案

该量化方案是为PyTorch的ExecuTorch推理框架和Arm CPU后端设计的。

  1. Transformer块中的所有线性层:权重采用4位分组方案(组大小为32),激活采用8位每令牌动态量化。
  2. 分类层:权重采用8位每通道量化,激活采用8位每令牌动态量化。
  3. 嵌入层:8位每通道量化。

来源: [models/llama3_2/MODEL_CARD.md:62-79]

性能指标

推理性能比较

下表比较了不同量化方法与BF16基线的性能指标,评估是在Android OnePlus 12设备上,使用ExecuTorch框架作为推理引擎和ARM CPU后端进行。

模型解码(tokens/秒)首个token生成时间(秒)预填充(tokens/秒)模型大小(MB)内存大小(MB)
1B BF16(基线)19.21.060.323583,185
1B SpinQuant50.2 (2.6x)0.3 (-76.9%)260.5 (4.3x)1083 (-54.1%)1,921 (-39.7%)
1B QLoRA45.8 (2.4x)0.3 (-76.0%)252.0 (4.2x)1127 (-52.2%)2,255 (-29.2%)
3B BF16(基线)7.63.021.261297,419
3B SpinQuant19.7 (2.6x)0.7 (-76.4%)89.7 (4.2x)2435 (-60.3%)3,726 (-49.8%)
3B QLoRA18.5 (2.4x)0.7 (-76.1%)88.8 (4.2x)2529 (-58.7%)4,060 (-45.3%)

关键性能指标说明

  • 解码(tokens/秒):持续生成token的速度(越高越好)
  • 首个token生成时间(TTFT):生成提示第一个token所需的时间(越低越好)
  • 预填充(tokens/秒):TTFT的倒数(越高越好)
  • 模型大小:以PTE文件(ExecuTorch的二进制格式)衡量的模型大小
  • 内存使用:驻留集大小(RSS)中的RAM使用情况

来源: [models/llama3_2/MODEL_CARD.md:132-156]

基准性能

Llama 3.2模型在各种标准基准上进行了评估。以下是指令微调模型的一些关键结果:

功能基准测试1B bf161B SpinQuant1B QLoRA3B bf163B SpinQuant3B QLoRALlama 3.1 8B
通用MMLU (5-shot)49.347.349.063.462.062.469.4
数学GSM8K (CoT)44.440.646.577.775.777.984.5
数学MATH (CoT)30.625.331.048.045.349.251.9
推理ARC-C59.457.060.778.677.677.683.4
工具使用BFCL V225.715.923.767.060.163.567.1
长上下文NIH/Multi-needle75.0不适用不适用84.7不适用不适用98.8

基准测试结果表明,3B模型在所有任务中均显著优于1B变体,并且QLoRA量化模型通常优于SpinQuant模型,尤其是在推理和数学任务中。

来源: [models/llama3_2/MODEL_CARD.md:80-116]

多语言能力

Llama 3.2官方支持8种语言:英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语。这些模型在比官方支持语言更广泛的语言集合上进行了训练。

多语言基准性能(MMLU 5-shot准确率)

语言1B bf161B SpinQuant1B QLoRA3B bf163B SpinQuant3B QLoRALlama 3.1 8B
葡萄牙语39.838.940.254.553.353.462.1
西班牙语41.539.841.855.153.653.662.5
意大利语39.838.140.653.852.151.761.6
德语39.237.539.653.352.251.360.6
法语40.539.240.854.653.353.362.3
印地语33.532.134.043.342.042.150.9
泰语34.732.434.944.544.042.250.3

多语言性能遵循与英语基准类似的模式,3B模型优于1B模型,QLoRA变体通常显示出比SpinQuant版本更好的结果。

来源: [models/llama3_2/MODEL_CARD.md:16-18], [models/llama3_2/MODEL_CARD.md:118-130]

推理管道

Llama 3.2推理管道旨在在资源受限设备上高效运行,尤其在使用量化模型时。

推理管道利用ExecuTorch框架作为推理引擎和ARM CPU优化,以实现比全精度模型显著更好的性能。主要性能改进包括:

  • 解码速度快2.4-2.6倍
  • 预填充处理速度快4.2-4.3倍
  • 首个token生成时间减少76%
  • 内存使用减少29-60%
  • 模型大小减少52-60%

来源: [models/llama3_2/MODEL_CARD.md:132-156]

训练与开发

Llama 3.2模型通过多阶段过程开发:

  1. 预训练:模型在来自公共来源的最多9万亿个token上进行训练
  2. 知识蒸馏:将Llama 3.1 8B和70B模型的logits作为token级目标纳入
  3. 剪枝与恢复:在剪枝后使用知识蒸馏来恢复性能
  4. 后训练对齐:使用多轮SFT、RS和DPO来对齐模型

训练过程利用了自定义训练库和Meta的GPU集群。训练资源总量如下:

  • Llama 3.2 1B:37万GPU小时
  • Llama 3.2 3B:46万GPU小时
  • 量化训练:相对较少的GPU小时

来源: [models/llama3_2/MODEL_CARD.md:34-54], [models/llama3_2/MODEL_CARD.md:56-60]

用例与限制

预期用例

Llama 3.2模型旨在用于多种语言的商业和研究应用:

  • 助手类聊天应用
  • 代理式知识检索和摘要
  • 移动AI驱动的写作助手
  • 查询和提示重写
  • 计算资源有限的设备上应用

量化模型专门为部署在计算资源受限的移动和边缘设备上进行了优化。

局限性

与所有语言模型一样,Llama 3.2也存在用户应注意的局限性:

  1. 模型知识截止日期为2023年12月
  2. 尽管已进行对齐努力,模型仍可能产生不准确或有偏见的输出
  3. 量化模型与其全精度模型相比,性能有所下降
  4. 长上下文性能可能受限,特别是对于量化模型
  5. 对官方支持语言以外的语言进行的基准测试有限
  6. 作为较小的模型,与较大的Llama模型相比,它们在复杂推理任务上的能力较低

来源: [models/llama3_2/MODEL_CARD.md:28-32], [models/llama3_2/MODEL_CARD.md:212-216]

部署注意事项

Llama 3.2模型不应单独部署,而应作为整体AI系统的一部分,并辅以额外的安全防护措施。开发者应:

  1. 在构建代理系统时部署系统安全防护
  2. 针对其特定用例实施适当的安全措施
  3. 在部署前进行彻底测试
  4. 对于移动部署,考虑使用轻量级安全模型,如Llama Guard 3-1B
  5. 遵守Llama 3.2社区许可要求

此存储库提供了默认包含安全防护的参考实现,以帮助开发者构建更安全的系统。

来源: [models/llama3_2/MODEL_CARD.md:157-186]