本文档概述了此仓库中可用的不同Llama模型版本、它们的技术实现和功能。每个模型版本对应于models/datatypes.py模块中定义的特定代码实现和数据结构。
有关所有模型中使用的核心数据类型的信息,请参阅核心数据类型。有关模型架构的详细信息,请参阅模型架构。
本仓库通过专用子目录和共享数据类型实现了多个Llama模型版本。每个模型版本都有其自己的实现,具有特定的提示格式、评估配置和模型卡。
来源:根据上下文推断的models/datatypes.py目录结构
来源:models/llama3_1/MODEL_CARD.md82 models/llama3_2/MODEL_CARD.md models/llama3_3/MODEL_CARD.md README.md24-33
下表总结了每个Llama模型版本的关键规格
| 模型 | 发布日期 | 模型大小 | 上下文长度 | 分词器 | 特殊功能 |
|---|---|---|---|---|---|
| Llama 2 | 2023年7月 | 7B, 13B, 70B | 4K | Sentencepiece | 首个广泛可用的开源模型 |
| Llama 3 | 2024年4月 | 8B, 70B | 8K | 基于TikToken | 推理能力提升 |
| Llama 3.1 | 2024年7月 | 8B, 70B, 405B | 128K | 基于TikToken | 增强多语言支持 |
| Llama 3.2 | 2024年9月 | 1B, 3B | 128K | 基于TikToken | 轻量级端侧模型 |
| Llama 3.2-Vision | 2024年9月 | 11B, 90B | 128K | 基于TikToken | 视觉能力 |
| Llama 3.3 | 2024年12月 | 11B, 90B | 128K | 基于TikToken | 改进工具使用 |
| Llama 4 | 2025年4月 | Scout-17B-16E, Maverick-17B-128E | 10M, 1M | 基于TikToken | 大规模扩展上下文 |
来源:README.md24-33 models/llama3_1/MODEL_CARD.md1-87 models/llama3_2/MODEL_CARD.md1-40 models/llama3_3/MODEL_CARD.md1-25
实现路径:models/llama3_1/
CoreModelArgs中定义的8B、70B、405BLlama 3.1的实现包含了在eval_details.md中记录的全面评估方法。关键技术特性:
LLMInput进行词元化输入处理评估设置使用eval_details.md中定义的特定配置:
来源:models/llama3_1/MODEL_CARD.md1-87 models/llama3_1/eval_details.md1-194
实现路径:models/llama3_2/
Llama 3.2的实现强调量化和移动优化:
量化方法:实现了三种不同的方法
数据类型:扩展CoreModelArgs以支持量化参数和视觉功能
移动性能:为ExecuTorch部署优化,性能显著提升
Llama 3.2包含prompt_format.md,其中包含针对以下内容的特定格式:
来源:models/llama3_2/MODEL_CARD.md1-156
Llama 3.2-Vision扩展了Llama架构以处理多模态输入:
实现路径:models/llama3_3/
CoreModelArgs中定义的70BLlama 3.3通过其prompt_format.md实现了复杂的工具调用:
内置工具:实现了四种原生工具
brave_search:网页搜索功能wolfram_alpha:数学计算code_interpreter:Python代码执行photogen:图像生成数据类型:增强的ToolCall数据类,包含:
特殊词元:扩展的词元集用于工具交互
<|python_tag|>:工具调用指示符<|eom_id|>:多步交互的消息结束<|eot_id|>:会话流程的回合结束prompt_format.md定义了多种交互模式:
来源:models/llama3_3/MODEL_CARD.md1-25 models/llama3_3/prompt_format.md1-478
实现路径:models/llama4/
Llama 4代表了架构上的重大进步:
CoreModelArgs以支持:双变体方法针对不同用例进行了优化:
从Llama 3.1开始,所有模型都使用基于TikToken的分词,通过models/datatypes.py中的数据类型实现。LLMInput数据类处理分词序列,支持:
在models/llama3_3/prompt_format.md中定义
GenerationResult数据类捕获包含这些特殊词元的模型输出,以实现正确的会话流程和工具调用协调。
来源:models/llama3_3/prompt_format.md4-16 models/datatypes.py
提示格式因模型版本而异,后续版本引入了更复杂的格式来处理如工具使用等复杂交互。
<|begin_of_text|>Color of sky is blue but sometimes can also be
<|begin_of_text|><|start_header_id|>system<|end_header_id|>
You are a helpful assistant<|eot_id|><|start_header_id|>user<|end_header_id|>
Answer who are you in the form of jeopardy?<|eot_id|><|start_header_id|>assistant<|end_header_id|>
来源:models/llama3_3/prompt_format.md24-66
工具调用功能通过models/datatypes.py中的ToolCall数据类和特定于版本的提示格式实现。
来源:models/llama3_3/prompt_format.md70-478 models/datatypes.py
Llama模型支持多种量化方法,以优化推理性能和内存占用:
所有Llama模型都支持两种基本量化模式:
fp8_mixed:混合精度,权重使用FP8,激活使用bfloat16int4_mixed:混合精度,权重使用Int4,激活使用bfloat16Llama 3.2引入了更复杂的量化技术:
标准量化方案:
带LoRA的量化感知训练(QAT):
SpinQuant:
来源:models/llama3_2/MODEL_CARD.md62-80
| 模型版本 | 实现路径 | 量化支持 | 数据类型集成 |
|---|---|---|---|
| Llama 3.1 | models/llama3_1/ | 标准fp8_mixed, int4_mixed | 带量化标志的CoreModelArgs |
| Llama 3.2 | models/llama3_2/ | 高级:SpinQuant,QLoRA,标准 | 为移动设备扩展的CoreModelArgs |
| Llama 3.3 | models/llama3_3/ | 标准量化 | CoreModelArgs兼容性 |
| Llama 4 | models/llama4/ | MoE感知量化 | 增强的CoreModelArgs |
| 指标 | 1B BF16 | 1B SpinQuant | 1B QLoRA | 3B BF16 | 3B SpinQuant | 3B QLoRA |
|---|---|---|---|---|---|---|
| 解码速度(tokens/sec) | 19.2 | 50.2 (2.6x) | 45.8 (2.4x) | 7.6 | 19.7 (2.6x) | 18.5 (2.4x) |
| 首次词元时间(sec) | 1.0 | 0.3 (-76.9%) | 0.3 (-76.0%) | 3.0 | 0.7 (-76.4%) | 0.7 (-76.1%) |
| 模型大小(MB) | 2,358 | 1,083 (-54.1%) | 1,127 (-52.2%) | 6,129 | 2,435 (-60.3%) | 2,529 (-58.7%) |
| 内存使用(MB) | 3,185 | 1,921 (-39.7%) | 2,255 (-29.2%) | 7,419 | 3,726 (-49.8%) | 4,060 (-45.3%) |
来源:models/llama3_2/MODEL_CARD.md132-156 README.md76-97
Llama各版本精选基准测试结果
| 基准测试 | Llama 3.1 8B | Llama 3.1 70B | Llama 3.3 70B | Llama 3.1 405B |
|---|---|---|---|---|
| MMLU (0-shot CoT) | 73.0 | 86.0 | 86.0 | 88.6 |
| MMLU-Pro (5-shot CoT) | 48.3 | 66.4 | 68.9 | 73.3 |
| IFEval | 80.4 | 87.5 | 92.1 | 88.6 |
| HumanEval | 72.6 | 80.5 | 88.4 | 89.0 |
| MATH (CoT) | 51.9 | 68.0 | 77.0 | 73.8 |
| BFCL v2 | 65.4 | 77.5 | 77.3 | 81.1 |
来源:models/llama3_3/MODEL_CARD.md55-74
Llama 3.1模型在MMLU 5-shot多语言准确率表现
| 语言 | Llama 3.1 8B | Llama 3.1 70B | Llama 3.1 405B |
|---|---|---|---|
| 葡萄牙语 | 62.12 | 80.13 | 84.95 |
| 西班牙语 | 62.45 | 80.05 | 85.08 |
| 意大利语 | 61.63 | 80.4 | 85.04 |
| 德语 | 60.59 | 79.27 | 84.36 |
| 法语 | 62.34 | 79.82 | 84.66 |
| 印地语 | 50.88 | 74.52 | 80.31 |
| 泰语 | 50.32 | 72.95 | 78.21 |
来源:models/llama3_1/MODEL_CARD.md790-879
从3.1版本开始,所有Llama模型官方支持以下8种语言:
然而,这些模型已在更广泛的语言集合上进行了训练。开发者可以针对其他语言对模型进行微调,前提是他们遵守许可条款并确保负责任的使用。
来源:models/llama3_1/MODEL_CARD.md78 models/llama3_2/MODEL_CARD.md16-18 models/llama3_3/MODEL_CARD.md13-16
每个Llama模型版本均根据其各自的社区许可协议发布,该协议允许商业使用,但需遵守某些限制。所有模型都包含可接受使用政策,禁止有害应用。
后续模型版本(3.2及以上)包含在移动设备等高度受限环境中部署以及与多模态功能结合使用的特定条款。
来源:models/llama3_3/LICENSE1-50 models/llama3_3/USE_POLICY.md1-72