llama4模型原理速览


在这里插入图片描述

模型简介

2025年4月5日,meta发布了llama系列模型的第四代,包括Scout、Maverick和Behemoth。
llama4支持多模态理解,工具调用,编程,多语种任务(暂不支持中文),知识截止到24年8月。多模态支持上,可输入文本和最多5张图片,输出文本;

主要亮点:Maverick和 Scout模型此次也是首次采用了MoE混合专家结构,并且主打的亮点是原生的多模态能力、1千万上下文窗口,目前已经发布权重可用。

Scout和Maverick都由Behemoth蒸馏得到,使用了一种新的蒸馏损失函数,通过训练动态加权软目标和硬目标。Llama 4 Behemoth模型还在训练中,尚未放出。

模型尺寸

llama4系列模型包括三个尺寸:

  • 小杯:Llama 4 Scout
    16个专家,17B激活参数,支持10M上下文窗口,在一系列benckmark的测评结果优于Gemma 3, Gemini 2.0 Flash-Lite, and Mistral 3.1。
  • 中杯: Llama 4 Maverick
    128个专家,17B激活参数,在多模态任务benckmarks上优于GPT-4o和Gemini 2.0 Flash, reasoning和coding能力打平deepseek V3。
  • 大杯:Llama 4 Behemoth
    16个专家,228B激活参数,2万亿(2T)个总参数, 在STEM任务benckmarks上优于GPT-4.5, Claude Sonnet 3.7, and Gemini 2.0 Pro。
    在这里插入图片描述

训练数据

lama 4 Scout 在大约 40 万亿个token的数据上进行了预训练,而 Llama 4 Maverick 则在大约 22 万亿个多模态token的数据上进行了预训练。这些数据来自公开可用的、获得许可的数据,以及来自 Meta 的产品和服务的信息。这包括 Instagram 和 Facebook 上公开分享的帖子以及人们与 Meta AI 的互动。
微调数据:采用多管齐下的数据收集方法,将供应商(vendors)提供的人工生成数据与合成数据相结合,以降低潜在的安全风险。同时开发了许多基于大语言模型(LLM)的分类器,这些分类器能够帮助训练团队精心挑选高质量的提示和回答,从而加强数据质量控制。

训练能耗

模型预训练累计使用了738万小时的H100-80GB(TDP为700瓦)型号硬件计算时间,具体如下表所示。训练时间是指训练每个模型所需的总GPU时间,功耗是指每个GPU设备使用的峰值功率容量,已根据功率使用效率进行了调整。
在这里插入图片描述

量化

Llama 4 Scout模型以BF16权重的形式发布,但可以通过即时int4量化在单个H100 GPU上运行;Llama 4 Maverick模型则以BF16和FP8量化权重的形式发布。FP8量化权重可以在单个H100 DGX主机上运行,同时保持质量。Meta还提供了即时int4量化的代码,以尽量减少性能下降。


预训练

MoE架构

llama4模型是llama系列中首次使用MoE架构的模型。在MoE模型中,单个token仅激活总参数的一部分。MoE架构在训练和推理方面更具计算效率,并且在固定的训练浮点运算预算下,与密集模型相比能够提供更高的质量。
在这里插入图片描述
Llama4 MoE层采用多个路由专家和一个共享专家的结构。以Llama 4 Maverick模型为例,它拥有170亿活跃参数和4000亿总参数。采用交替的密集层和混合专家(MoE)层来提高推理效率。MoE层使用128个路由专家和一个共享专家。每个token都会被发送到共享专家以及128个路由专家中的一个。
因此,尽管所有参数都存储在内存中,但在使用这些模型时,只有总参数的一部分会被激活。这通过降低模型服务成本和延迟来提高推理效率——Llama 4 Maverick可以在单台NVIDIA H100 DGX主机上运行,便于部署,也可以通过分布式推理实现最高效率。

class Llama4TextMoe(nn.Module):
    def __init__(self, config):
        super().__init__()
        self.top_k = config.num_experts_per_tok
        self.hidden_dim = config.hidden_size
        self.num_experts = config.num_local_experts
        self.experts = Llama4TextExperts(config)
        self.router = nn.Linear(config.hidden_size, config.num_local_experts, bias=False)
        self.shared_expert = Llama4TextMLP(config)

    def forward(self, hidden_states):
        batch, seq_len, hidden_dim = hidden_states.shape
        hidden_states = hidden_states.view(-1, self.hidden_dim)
        router_logits = self.router(hidden_states).transpose(0, 1)
        tokens_per_expert = batch * seq_len

        router_top_value, router_indices = torch.topk(router_logits.transpose(0, 1), self.top_k, dim=1)
        router_scores = (
            torch.full_like(router_logits.transpose(0, 1), float("-inf"))
            .scatter_(1, router_indices, router_top_value)
            .transpose(0, 1)
        )
        # We do this to make sure we have -inf for non topK tokens before going through the !
        # Here we are just creating a tensor to index each and every single one of the hidden states. Let s maybe register a buffer for this!
        router_indices = (
            torch.arange(tokens_per_expert, device=hidden_states.device).view(1,<
### LLaMA 系列模型的架构原理与技术特点 LLaMA(Large Language Model Meta AI)系列是由 Meta AI 开发的一组开源大规模语言模型,旨在提供高效、灵活且资源友好的语言处理能力。该系列模型在架构设计上借鉴了 Transformer 的核心思想,并引入了多项优化,使其在性能和效率之间取得良好平衡。 #### 模型架构概述 LLaMA 系列模型基于标准的 Transformer 架构,但对其多个关键组件进行了改进。模型主要由多层 Transformer 编码器或解码器组成,采用自注意力机制(Self-Attention)来捕捉输入序列中的全局依赖关系[^1]。LLaMA 3 在 LLaMA 2 的基础上进一步优化了架构,提升了模型的可扩展性和推理效率。 ##### 自注意力机制 LLaMA 使用多头自注意力机制(Multi-Head Self-Attention),通过计算不同位置之间的相似性,实现对长距离依赖关系的有效建模。该机制允许模型在处理输入文本时动态关注与其最相关的部分,从而提升语言理解能力[^2]。 ##### 旋转位置编码(Rotary Positional Encoding) LLaMA 采用旋转位置编码(RoPE)代替传统的绝对位置编码。RoPE 通过旋转操作将位置信息编码到注意力权重中,使得模型能够更好地处理长序列输入,并提升对位置信息的感知能力。这一设计显著增强了模型的上下文建模能力。 ##### RMS 归一化(RMSNorm) LLaMA 使用 RMS 归一化(Root Mean Square Normalization)替代传统的 Layer Normalization。RMSNorm 计算更高效,减少了训练过程中的计算开销,同时保持了模型的稳定性。这种归一化方法在训练过程中有助于加收敛,并提升模型泛化能力。 ##### 前馈网络(Feed-Forward Network) LLaMA 的前馈网络采用门控线性单元(GLU)结构,提升模型的非线性表达能力。该结构通过引入门控机制,使模型能够更灵活地控制信息流,从而增强其对复杂语言模式的建模能力[^2]。 #### 训练与优化策略 LLaMA 系列模型在训练过程中采用了多种优化策略,包括混合精度训练、梯度裁剪和分布式训练等。这些策略不仅提升了训练效率,还增强了模型的稳定性和泛化能力。LLaMA 3 进一步引入了更高效的优化器和学习率调度策略,使得模型在更大规模的数据集上表现出更强的适应性[^1]。 #### 多语言支持与上下文长度 LLaMA 支持多种语言,并在多语言任务中表现出色。LLaMA 3 在上下文长度方面进行了扩展,支持更长的输入序列,从而提升了模型在对话系统、长文档生成等任务中的表现。 #### 开源与社区生态 LLaMA 系列模型是开源的,这一特性极大地促进了其在研究和工业界的广泛应用。开源社区围绕 LLaMA 构建了丰富的工具链和生态体系,包括微调框架、推理优化工具和模型压缩方案等。这些资源使得 LLaMA 成为当前最具影响力的开源语言模型之一[^1]。 #### 示例代码:LLaMA 模型加载与推理 以下是一个使用 HuggingFace Transformers 库加载 LLaMA 模型并进行文本生成的示例代码: ```python from transformers import AutoTokenizer, AutoModelForCausalLM # 加载 LLaMA 3 模型和分词器 tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3-8b") model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8b") # 输入文本 input_text = "Explain the importance of efficient algorithms in computer science." # 编码输入 inputs = tokenizer(input_text, return_tensors="pt") # 生成输出 outputs = model.generate(**inputs, max_new_tokens=100) # 解码输出 print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值