
LLaMA 4 模型的解读和理解
一、背景
Meta 赶在清明节期间发布了 LLaMA 4 模型,目前看着比较仓促,官方 Blog 信息比较混乱,也没有发表技术报告,我们这里先根据官方 Blog 梳理相应的信息。
PS:Meta 确实在 PR 中使用了一些常见的手段,比如避重就轻,扬长避短,但是个人感觉还不至于出现在后训练中刻意混入评估集这种情况。LLaMA 3.1 的技术报告很全面,笔者之前也做过深度解读,期待 Meta 早日发表 LLaMA 4 技术报告,展示更多相关细节内容。
对应的官方 Blog 为:The Llama 4 herd: The beginning of a new era of natively multimodal AI innovation [1]
对应的代码库为:https://github.com/meta-llama/llama-models/tree/main/models/llama4 [2]
二、模型
2.1 概览
如下图所示为相应的模型配置和参数:
2.2 MoE
如下图为 interleave_moe_layer_step 参数的作用,表示每多少层有一个 MoE 层:
- 如果值为 1,表示全是 MoE 层。
- 如果值为 2,表示一层 MoE 层,一层 Dense 层,交替排列。
- 如果值为 3,表示一层 MoE 层,两层 Dense 层,交替排列。
如下图所示(来自 llama-models/models/llama4/moe.py [3]),可以看出 MoE Layer 默认都是 1 个共享专家:
官方 Block 中也提到:其中的 Maverick 模型采用 Dense 和 MoE 交替架构,也就是一层 Transformer Block 中为 Dense,另一层是 MoE。此外,Maverick 的 MoE 包含 128 个路由专家(Routed Expert)和 1 个共享专家(Shared Expert)。如下图所示为 Scout 模型的 Case:
2.3 iRoPE & qk_norm & Chunked Attention
LLaMA 4 中的另一个变化是采用了交替的 RoPE(interleaved RoPE,iRoPE),一部分层使用 RoPE,一部分层不使用 PE。如下图所示(来自 llama-models/models/llama4/model.py at main [4])可以看出:
- 每 nope_layer_interval 层有一个 nope 层,如果 nope_layer_interval 为 None 或者为 1,则都是 rope 层。
Scout 模型中为 None:全部是 rope 层。
Maverick 模型中为 4:每 4 层中有 1 层 nope 层,3 层 rope 层。
- 只在 rope 层才会使用 qk_norm,并且要求配置了 use_qk_norm。
如下图所示,在 nope 层采用 Full Attention,在 rope 层采用 Chunked Local Attention。也就是 Scout 模型全部是 Chunked Local Attention,而 Maverick 模型有 1/4 依然是 Full Attention。这可能也是为什么 Scout 模型上下文长度可以达到 10M,而 Maverick 只有 1M,不然 Full Attention 的计算成本会很高。
如下所示,Chunked Local Attention 的 Size 对应 attention_chunk_size,默认为 8K:
如下图所示,对于 nope 层,如果序列长度非常长,可以考虑设置 attn_temperature_tuning,以便采用 Temperature Tuning,默认是 False([2501.19399] Scalable-Softmax Is Superior for Attention [5]):
2.4 Vision
Vision Backbone 应该是 MetaCLIP。如下图所示,Vision Embedding 后包含一个单层 Liner 的投影层:
如下图所示,Image Token 和 Text Token 拼接后输入 LLM,没有采用之前的 Cross Attention 方案,结构更加简单:
2.5 Scout 模型
如下图所示为 Scout 模型中的 Text 模型配置:
- interleave_moe_layer_step 为 1,表示全部是 MoE 层。
- nope_layer_interval 为 None,全部是 RoPE 层。
- attention_chunk_size 为 8192,所有层都是 Chunked Attention。
- 采用 GQA,Q 和 KV 的比例为 5:1。
如下图所示为 Scout 模型的 Vision 模型配置:
2.6 Maverick 模型
如下图所示为 Maverick 模型的配置:
- 看着 Maverick 和 Scout 模型的 Attention 部分大小一样,Dim、Head 数都相同。
- interleave_moe_layer_step 为 2:MoE 层和 Dense 层各一半,交替排列。
- nope_layer_interval 为 4:每 4 层中有 1 层 nope 层,3 层 rope 层。
- attention_chunk_size 为 8192,3/4 层为 rope 层,使用 Chunked Attention,1/4 层为 Full Attention。
- 采用 GQA,Q 和 KV 的比例为 5:1。
三、训练
3.1 MFU
对于 Scout 模型,总共 109B 参数量,每个 Token 的激活参数量为 17B,可以采用如下公式计算 MFU,其中每个 Token 计算量 Ctoken 可以用 6N 来近似,N 表示模型激活参数量:
MFU = (Token 数 * Ctoken) / (训练 GPU 小时数 * GPU FLOPs * 3600)
其中,预训练 Token 数为 40T,训练时长为 5.0M H100 小时,则对应的 MFU 大约为:
MFU = (40T*17B*6) / (5.0M*989T*3600) = 22.9%
对于 Maverick 模型,总共 400B 参数量,每个 Token 的激活参数量为 17B,预训练 Token 数为 22 T,训练时长为 2.38M H100 小时,则对应的 MFU 大约为:
MFU = (22T*17B*6) / (2.38M*989T*3600) = 26.5%
除此之外,Maverick 模型是通过 Behemoth 模型蒸馏而来,由于采用了协同蒸馏优化,有部分数据需要经过 Behemoth 的 Forward 计算(后面蒸馏部分介绍)。这部分计算量在上述计算公式中没有考虑,另一方面也不确定对应的比例,除此之外,也不确定 2.38M 是否包含,因此这里我们也不再额外分析。
此外,上述计算中都忽略了 GQA 中的无参数 Attention 计算等,这一部分在预训练中通常占比不会特别大,这里假设占比 10%,则对应的 MFU 分别为:
- Scout:22.9% * 1.1 = 25.2%
- Maverick:26.5% * 1.1 = 29.2%
对于 Behemoth 模型,总共 2T 参数量,每个 Token 的激活参数量为 288B,预训练 Token 数为 30 T,官方 Blog 中提到其最大的 Behemoth 模型使用 32K H100、FP8 训练:
- Scout 和 Maverick 模型未使用 FP8,对应的 BF16 精度的 MFU 为 25.2% 和 29.2% 还比较符合预期,没有特别高,也没有很差。
- Behemoth 模型采用 FP8 训练,按照 BF16 算力的话 MFU 为 390/989 = 39.4%,也算很不错的水平。
- PS:Meta 刻意不提 Behemoth 模型的训练成本,根据上述数据也可以推算出来:训练 GPU 小时数 = (Token 数 * Ctoken) / (实际 GPU FLOPs * 3600) = (30T*288B*6)/(390T*3600) = 36.9M H100 小时,远大于 Scut 和 Maverick 模型的成本。
3.2 预训练
LLaMA 4 中 3 个模型的预训练数据规模不太一样,这个比较奇怪,比如 Scout 预训练包括 40T Token,Maverick 预训练包括 22T Token,而 Behemoth 模型目前是训练了 30T Token。
- LLaMA 的预训练预料覆盖 200 种语言(其中 100+ 种的 Token 数超过 1B)。总共的多语言 Token 总量是 LLaMA 3 的 10 倍。
- Behemoth 训练数据超过 30T Token,包含多样化的文本、图像及视频数据源,这么看 30T 数据不是全部文本数据,那么上面的 Scout 和 Maverick 预训练 40T 和 22T 是否也是有图像及视频数据?
- 在“中期训练”阶段会采用创新训练方案,比如基于专用数据集的长上下文扩展,该策略不仅可以提升模型质量,还可以使 Scout 模型实现 1000 万的上下文窗口。
3.3 后训练
Llama 4 Maverick 在图文理解领域展现出很强的性能。作为通用助手和对话场景的主力产品模型,Maverick 模型后训练阶段面临的核心挑战是:平衡多模态输入、Reasoning 能力与会话性能。
针对模态融合问题:作者设计了一套精密的课程学习策略,在保持个模特专家模型性能的前提下实现最优组合。LLaMA 4 的后训练流程为:轻量级 SFT -> 在线强化学习(RL) -> 轻量级 DPO。关键发现表明,过度依赖 SFT 和 DPO 会制约模型在在线 RL 阶段的探索空间,导致 Reasoning、编程及数学等领域的准确率达不到最优。
- 作者将 LLaMA 模型作为评估器,剔除了 50% 以上被标记为 “简单” 的数据样本,仅对剩余高难度数据集进行轻量化 SFT。
- 在多模态在线 RL 阶段,通过精心筛选高难度提示词,实现了性能的阶跃性提升。作者进一步实施了持续性在线 RL 策略:在模型训练与提示词筛选间建立动态训练,仅保留中高难度样本进行迭代优化。该策略在计算效率与准确率之间取得了显著平衡。
- 最终,通过轻量化 DPO 处理模型响应质量的边界案例,在智能水平与会话能力间达成精妙平衡。这种创新型训练架构配合自适应数据过滤的持续在线 RL 策略,最终造就了具有顶尖智能水平和图像理解能力的行业领先通用对话模型。
3.4 蒸馏
由于 Behemoth 模型在非 Reasoning 类模型中的数学、多语言处理和图像基准测试中性能达到 SOTA,因此可以成为指导小规模 LLaMA 4 Maverick 模型的教师模型。为此,作者采用协同蒸馏技术,以 Behemoth 作为教师模型训练出了 Maverick 模型,使其终端任务性能到达业界顶尖水平。
具体来说,开发了 soft 目标(来自 Behemoth 的 Forward 输出)和 hard 目标(原始的训练 Target)动态加权的蒸馏损失函数,通过在预训练阶段实施协同蒸馏策略,有效分摊模型蒸馏中教师模型(Behemoth)Forward 的开销。这里其实是个 Trick,在 Maverick 模型和 Behemoth 模型的预训练数据中有很大一部分重叠(作者没有介绍对应的比例),因此:
- 在 Behemoth 预训练中已经存在的数据,可以存储其预训练中 Forward 结果,在蒸馏 Maverick 中直接使用,避免重复计算。
- 在 Behemoth 预训练中不存在的数据,可以调用训练好的 Behemoth 进行 Forward 生成。
PS:有个比较有意思的问题,因为 Behemoth 模型在预训练的时候是在不断地更新的,那么预训练比较早期的 Forward 结果可能不适合作为蒸馏 Target,因此可以考虑跳过这部分数据。而如果全部数据都使用训练好的 Behemoth 模型进行 Forward 的成本又比较高。感觉这里是个权衡,这也许能够解释为什么 Maverick 的预训练数据只有 22T。
四、推理
文章中提到 Scout 适合单个 H100 推理,但是考虑到总参数量达到 109B,如果使用 FP8 推理,则需要结合 Offload 机制,这里应该说的是使用 W4A8 或 W4A16 推理。
此外,单个 Maverick 可在单个 H100 DGX 主机上运行,对应 8 个 H100,共 640 GB 显存,即使使用 FP8 部署依然可以装下。如下图所示,在 Llama 4 - a meta-llama Collection [6] 中也提供了对应的 FP8 版本:
由于 LLaMA 模型的各种特殊配置,当前的 LLM Inference 框架通常需要适配才能支持,vLLM 团队也在第一时间进行了支持和测试,可以参考:Llama 4 in vLLM [7]。如下图所示为 vLLM 团队在 8xH100 和 8xH200 上进行的吞吐测试,相应结论也基本符合预期。当然,也有一些可以改进的空间:
- 考虑到 DeepSeek R1 激活参数 37B,是 Scout 和 Maverick 17B 的 2 倍多,如果采用大规模分布式部署,Scout 和 Maverick 的吞吐也应该是 DeepSeek R1 的 2 倍多。有点类似 10000:1000 的结论。
- 还未充分发挥出 FP8 的潜力,Maverick 和 Scout 激活参数量都是 17B,充分优化后 Maverick-FP8 的吞吐应该能达到 Scout-BF16 的 1.5x-1.8x。
五、评估
5.1 Maverick 模型
如下图所示为 Maverick 模型及相当模型的效果,看着其各种指标相比 Gemini 2.0 Flash、DeepSeek v3.1 和 GPT-4o 都有比较明显的优势。表格下的一系列注释似乎也没有明显问题:
- 关于 LLaMA 模型的评估结果,采用 0-shot 评估,温度参数为 0,未使用多数投票或并行测试时计算(比如 Best-of-N)。针对高方差基准测试(GPQA Diamond、LiveCodeBench),通过多次生成结果取平均值以降低不确定性。
- 对于非 LLaMA 模型,除非另有说明,默认采用其官方报告的最高评估结果。仅纳入可通过 API 或开源权重可复现评估的模型数据,且不包括思维链(non-thinking)模型。非 LLaMA 模型的成本估算数据来源于 Artificial Analysis 平台。
- 由于 DeepSeek v3.1 的测试日期范围未明确(49.2 分),作者在既定日期范围内提供了内部测试结果(45.8 分)。GPT-4o 的评估结果取自 LiveCodeBench(LCB)排行榜。
- 通用模型通常不报告专项长上下文评估数据,因此作者通过内部测试展示 LLaMA 模型在该领域的性能表现。
- 基于分布式推理假设,估算 Llama 4 Maverick 模型的推理成本为 0.19 美元/百万 Token(3:1 混合比例)。在单主机部署场景下,预计该模型的推理成本为 0.30-0.49 美元/百万Token(3:1 混合比例)。
如下图所示为 Llama 4 in vLLM [7] 进行 Inference 适配后的一些简单评估,其 MMLU Pro 和 ChartQA 指标也基本符合预期:
5.2 Scout 模型
如下图所示为 Scout 模型及相当模型的效果,可以看出其相比 Gemma 3 27B、Mistral 3.1 24B 和 Gemini 2.0 Flash-Lite 有比较明显的优势。同样也有几个注释,对应 Maverick 评估注释的 1/2/4 ,没有太明显的问题:
5.3 Behemoth 模型
如下图所示为 Behemoth 模型及相当模型的效果,也是争议比较多的地方,如下所示为其对应的注释:
- LLaMA 模型的结果代表 Meta 目前最佳的内部测试结果。(PS:最佳是如何评估的,是否还是 0-shot,是否采用多数投票或者并行测试时计算?)
- 对于非 LLaMA 模型,除非另有说明,默认采用其自报告的最高评估结果。仅包含那些评估结果可复现(通过 API 或开源权重)的模型,且仅包括非“思维型”模型。
- 结果来自 LCB 排行榜。
5.4 LMArena ELO Score
其实受到最多争议的是声称在 LMArena ELO 榜单达到 1417 分,是开源模型中最强的,与社区中大家实测不符。并且在下图的小字注释中指出,LMArena ELO 评测的 Maverick 模型是针对对话场景优化的版本,并不是实际开源的版本。
5.5 MATH-Perturb 评估
如下图所示(数据来自 MATH-Perturb [8]),在 MATH-Perturb 上的评估结果也是受到质疑的地方,不过这里靠前的模型都是 Reasoning 模型,而 LLaMA-4-Scout-17B-16E-Instruct 虽然具备一定的 Reasoning 能力,但终究还是传统的 Instruct 模型,期待 Meta 后续推出对应版本以及在技术报告中能够解答相关疑问。
六、参考链接
- https://ai.meta.com/blog/llama-4-multimodal-intelligence/
- https://github.com/meta-llama/llama-models/tree/main/models/llama4
- https://github.com/meta-llama/llama-models/blob/main/models/llama4/moe.py
- https://github.com/meta-llama/llama-models/blob/main/models/llama4/model.py
- https://arxiv.org/abs/2501.19399
- https://huggingface.co/collections/meta-llama/llama-4-67f0c30d9fe03840bc9d0164
- https://blog.vllm.ai/2025/04/05/llama4.html
- https://math-perturb.github.io/
本文转载自AI闲谈,作者:AI闲谈
