菜单

模型版本

相关源文件

本文档概述了此仓库中可用的不同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 22023年7月7B, 13B, 70B4KSentencepiece首个广泛可用的开源模型
Llama 32024年4月8B, 70B8K基于TikToken推理能力提升
Llama 3.12024年7月8B, 70B, 405B128K基于TikToken增强多语言支持
Llama 3.22024年9月1B, 3B128K基于TikToken轻量级端侧模型
Llama 3.2-Vision2024年9月11B, 90B128K基于TikToken视觉能力
Llama 3.32024年12月11B, 90B128K基于TikToken改进工具使用
Llama 42025年4月Scout-17B-16E, Maverick-17B-128E10M, 1M基于TikToken大规模扩展上下文

来源:README.md24-33

架构演进

来源:README.md24-33 models/llama3_1/MODEL_CARD.md1-87 models/llama3_2/MODEL_CARD.md1-40 models/llama3_3/MODEL_CARD.md1-25

详细模型描述

Llama 3.1

实现路径models/llama3_1/

技术规格

  • 架构:带组查询注意力(GQA)的自回归变换器
  • 参数变体:在CoreModelArgs中定义的8B、70B、405B
  • 上下文长度:128K词元
  • 训练数据:约15万亿词元(截止:2023年12月)
  • 支持语言:8种语言(英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语、泰语)

实现细节

Llama 3.1的实现包含了在eval_details.md中记录的全面评估方法。关键技术特性:

  • 数据类型:利用LLMInput进行词元化输入处理
  • 评估框架:MMLU、MATH、HumanEval和多语言评估的详细基准配置
  • 训练基础设施:定制GPU集群,总训练时间39.3M GPU小时
  • 模型变体:使用SFT和RLHF预训练和指令微调版本

基准配置

评估设置使用eval_details.md中定义的特定配置:

  • MMLU:预训练模型5-shot,指令模型0-shot CoT
  • MATH:预训练模型4-shot,指令模型0-shot CoT
  • HumanEval:0-shot,使用pass@1评分
  • 工具使用:BFCL、API-Bank、Gorilla基准

来源:models/llama3_1/MODEL_CARD.md1-87 models/llama3_1/eval_details.md1-194

Llama 3.2

实现路径models/llama3_2/

技术规格

  • 架构:带共享嵌入的自回归变换器
  • 参数变体:
    • 文本模型:1B (1.23B), 3B (3.21B)
    • 视觉模型:11B, 90B
  • 上下文长度:128K词元(标准),8K词元(量化变体)
  • 训练数据:多达9万亿词元,通过Llama 3.1进行知识蒸馏

实现特点

Llama 3.2的实现强调量化和移动优化:

  • 量化方法:实现了三种不同的方法

    • 标准量化:权重采用4位组式量化,激活采用8位动态量化
    • 带LoRA的QAT:量化感知训练与低秩适应
    • SpinQuant:基于GPTQ的旋转矩阵优化
  • 数据类型:扩展CoreModelArgs以支持量化参数和视觉功能

  • 移动性能:为ExecuTorch部署优化,性能显著提升

    • SpinQuant解码速度提升2.6倍
    • 模型大小减少54-60%
    • 内存使用减少39-50%

提示格式支持

Llama 3.2包含prompt_format.md,其中包含针对以下内容的特定格式:

  • 在系统消息中使用函数定义进行工具调用
  • 结合文本和视觉的多模态输入
  • 移动优化的推理模式

来源:models/llama3_2/MODEL_CARD.md1-156

Llama 3.2-Vision

Llama 3.2-Vision扩展了Llama架构以处理多模态输入:

  • 架构:具备视觉能力的自回归语言模型
  • 大小:11B和90B参数版本
  • 上下文长度:128K词元
  • 输入模态:文本和图像
  • 特殊功能:
    • 视觉理解能力
    • 图像-文本联合推理

来源:README.md30-31

Llama 3.3

实现路径models/llama3_3/

技术规格

  • 架构:具备增强工具调用能力的自回归变换器
  • 参数变体:在CoreModelArgs中定义的70B
  • 上下文长度:128K词元
  • 训练数据:约15万亿词元,并增强了工具使用训练

高级工具实现

Llama 3.3通过其prompt_format.md实现了复杂的工具调用:

  • 内置工具:实现了四种原生工具

    • brave_search:网页搜索功能
    • wolfram_alpha:数学计算
    • code_interpreter:Python代码执行
    • photogen:图像生成
  • 数据类型:增强的ToolCall数据类,包含:

    • 工具名称和参数规范
    • JSON和自定义格式支持
    • 零样本函数调用能力
  • 特殊词元:扩展的词元集用于工具交互

    • <|python_tag|>:工具调用指示符
    • <|eom_id|>:多步交互的消息结束
    • <|eot_id|>:会话流程的回合结束

提示格式实现

prompt_format.md定义了多种交互模式:

  • 单步工具调用与即时响应
  • 多步交互与中间工具输出
  • JSON Schema格式的自定义工具定义
  • 内置工具参数验证

来源:models/llama3_3/MODEL_CARD.md1-25 models/llama3_3/prompt_format.md1-478

Llama 4

实现路径models/llama4/

技术规格

  • 架构:带专家混合(MoE)的自回归变换器
  • 参数变体:
    • Scout-17B-16E:17B参数,16个专家层
    • Maverick-17B-128E:17B参数,128个专家层
  • 上下文长度:
    • Scout:10M词元
    • Maverick:1M词元

高级实现特点

Llama 4代表了架构上的重大进步:

  • MoE架构:专家混合实现,用于高效扩展
  • 扩展上下文:原生支持百万级词元序列
  • 多模态集成:统一架构中原生支持图像和文本处理
  • 数据类型:增强的CoreModelArgs以支持:
    • 专家路由配置
    • 扩展上下文参数
    • 多模态输入规范

性能特征

双变体方法针对不同用例进行了优化:

  • Scout变体:用于长文档处理的最大上下文长度
  • Maverick变体:更高的专家数量用于复杂推理任务

来源:README.md33 README.md60-74

分词和特殊词元实现

分词器演进

从Llama 3.1开始,所有模型都使用基于TikToken的分词,通过models/datatypes.py中的数据类型实现。LLMInput数据类处理分词序列,支持:

  • 多语言文本编码
  • 特殊词元集成
  • 图像词元表示(用于视觉模型)

各版本的特殊词元实现

Llama 3.3特殊词元

models/llama3_3/prompt_format.md中定义

数据结构中的词元使用

GenerationResult数据类捕获包含这些特殊词元的模型输出,以实现正确的会话流程和工具调用协调。

跨模型版本的实现

来源:models/llama3_3/prompt_format.md4-16 models/datatypes.py

提示格式

提示格式因模型版本而异,后续版本引入了更复杂的格式来处理如工具使用等复杂交互。

基础模型格式(Llama 3.3示例)

<|begin_of_text|>Color of sky is blue but sometimes can also be

指令模型格式(Llama 3.3示例)

<|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,激活使用bfloat16
  • int4_mixed:混合精度,权重使用Int4,激活使用bfloat16

来源:README.md76-97

高级量化(Llama 3.2)

Llama 3.2引入了更复杂的量化技术:

  1. 标准量化方案:

    • 线性层:权重采用4位组式,激活采用8位逐词元动态
    • 分类层:权重采用8位逐通道,激活采用8位逐词元动态
    • 嵌入层:8位逐通道量化
  2. 带LoRA的量化感知训练(QAT):

    • SFT后使用BF16检查点初始化
    • 使用QAT进行额外一轮SFT
    • 冻结骨干网络,并使用LoRA适配器进行另一轮SFT
    • 使用DPO(直接偏好优化)进行微调
  3. SpinQuant:

    • 与GPTQ(生成式后训练量化)结合应用
    • 旋转矩阵微调,优化了100次迭代
    • 使用WikiText 2数据集中的800个序列长度为2048的样本

来源:models/llama3_2/MODEL_CARD.md62-80

量化实现和性能

各模型版本的量化方法

模型版本实现路径量化支持数据类型集成
Llama 3.1models/llama3_1/标准fp8_mixed, int4_mixed带量化标志的CoreModelArgs
Llama 3.2models/llama3_2/高级:SpinQuant,QLoRA,标准为移动设备扩展的CoreModelArgs
Llama 3.3models/llama3_3/标准量化CoreModelArgs兼容性
Llama 4models/llama4/MoE感知量化增强的CoreModelArgs

Llama 3.2性能指标(OnePlus 12 + ExecuTorch)

指标1B BF161B SpinQuant1B QLoRA3B BF163B SpinQuant3B QLoRA
解码速度(tokens/sec)19.250.2 (2.6x)45.8 (2.4x)7.619.7 (2.6x)18.5 (2.4x)
首次词元时间(sec)1.00.3 (-76.9%)0.3 (-76.0%)3.00.7 (-76.4%)0.7 (-76.1%)
模型大小(MB)2,3581,083 (-54.1%)1,127 (-52.2%)6,1292,435 (-60.3%)2,529 (-58.7%)
内存使用(MB)3,1851,921 (-39.7%)2,255 (-29.2%)7,4193,726 (-49.8%)4,060 (-45.3%)

量化数据流

来源:models/llama3_2/MODEL_CARD.md132-156 README.md76-97

基准测试性能

指令微调模型比较

Llama各版本精选基准测试结果

基准测试Llama 3.1 8BLlama 3.1 70BLlama 3.3 70BLlama 3.1 405B
MMLU (0-shot CoT)73.086.086.088.6
MMLU-Pro (5-shot CoT)48.366.468.973.3
IFEval80.487.592.188.6
HumanEval72.680.588.489.0
MATH (CoT)51.968.077.073.8
BFCL v265.477.577.381.1

来源:models/llama3_3/MODEL_CARD.md55-74

多语言性能

Llama 3.1模型在MMLU 5-shot多语言准确率表现

语言Llama 3.1 8BLlama 3.1 70BLlama 3.1 405B
葡萄牙语62.1280.1384.95
西班牙语62.4580.0585.08
意大利语61.6380.485.04
德语60.5979.2784.36
法语62.3479.8284.66
印地语50.8874.5280.31
泰语50.3272.9578.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