歡迎 Llama 4 Maverick 和 Scout 加入 Hugging Face
我們非常激動地歡迎 Meta 的下一代大型語言模型加入 Hugging Face Hub:Llama 4 Maverick (~400B) 和 Llama 4 Scout (~109B)! 🤗 兩者都是專家混合 (MoE) 模型,具有 17B 個活躍引數。
今天釋出的這些強大的、原生多模態模型代表著一個重大的飛躍。我們與 Meta 緊密合作,確保從第一天起就無縫整合到 Hugging Face 生態系統中,包括 transformers 和 TGI。
這只是我們與 Llama 4 合作的開始。在接下來的幾天裡,我們將繼續與社群合作,使用 Maverick 和 Scout 構建令人驚歎的模型、資料集和應用程式!🔥
Llama 4 是什麼?
Llama 4 由 Meta 開發,引入了一種新的自迴歸專家混合 (MoE) 架構。這一代包括兩個模型:
- 功能強大的 Llama 4 Maverick,總引數約 400B,其中 17B 為活躍引數,擁有 128 位專家。
- 高效的 Llama 4 Scout 也擁有 17B 活躍引數,總引數約 109B,僅使用 16 位專家。
這兩個模型都利用早期融合實現原生多模態,使其能夠處理文字和影像輸入。Maverick 和 Scout 都經過多達 40 萬億個 token 的資料訓練,資料涵蓋 200 種語言(並針對包括阿拉伯語、西班牙語、德語和印地語在內的 12 種語言提供特定微調支援)。
部署方面,Llama 4 Scout 專為可訪問性而設計,可透過即時 4 位或 8 位量化在單個伺服器級 GPU 上執行,而 Maverick 則提供 BF16 和 FP8 格式。這些模型根據自定義的 Llama 4 社群許可協議釋出,可在模型儲存庫中查閱。
Hugging Face 上的功能和整合
為了幫助社群立即利用這些最先進的模型,我們很高興宣佈以下整合:
- Hub 上的模型檢查點:Llama 4 Maverick 和 Llama 4 Scout 的模型權重都直接在 Hugging Face Hub 的
meta-llama
組織下提供。這包括基礎模型和指令微調模型。這使得訪問、探索和下載變得容易。您需要先接受模型卡上的許可條款才能訪問權重。 - Hugging Face
transformers
整合:立即開始構建!Llama 4 模型已完全整合到transformers
(版本v4.51.0
) 中。這允許使用熟悉的 API 輕鬆載入、推理和微調,包括支援其原生多模態功能以及 TRL 等下游庫。 - 自動支援張量並行和 transformers 中的自動裝置對映。
- 文字生成推理 (TGI) 支援:為了實現最佳化和可擴充套件的部署,這兩個模型都受 TGI 支援。這允許高吞吐量文字生成,從而更容易將 Llama 4 整合到生產應用程式中。
- 量化支援:Scout 提供了即時 int4 量化程式碼,可在最小化效能下降的同時,實現在較小的硬體佔用空間上部署。Maverick 包含 FP8 量化權重,可在相容硬體上高效部署。
- Xet 儲存:為了改進上傳、下載並支援社群微調模型的更快迭代,我們使用 Xet 儲存後端啟動了所有 Llama 4 模型。此儲存系統專為更快的上傳和下載而設計,使用 Llama 4 可實現約 25% 的重複資料刪除。所有派生(微調、量化等)模型應具有更高的重複資料刪除率(約 40%),從而為社群節省更多時間和頻寬。
上下文長度和架構選擇
Llama 4 模型經過預訓練,上下文長度為 256K。指令模型經過微調以支援更大的上下文長度:在大型 128 專家版本(Maverick)中為 1M,在 16 專家版本(Scout)中為 10M (!)。
模型 | 指令版 | 上下文長度 |
---|---|---|
Scout (16E) | ✅ | 10M |
Maverick (128E) | ✅ | 1M |
Scout (16E) | 256K | |
Maverick (128E) | 256K |
這些大型上下文長度伴隨著一些非常有趣的架構選擇。在官方技術報告發布之前,這是我們目前所瞭解的。
- 無 RoPE (NoPE) 層
NoPE(可愛的名字,+1 魅力點),早在 2022 年就已探索過,它只是放棄了通常應用於 transformer 模型中的傳統位置編碼方案,例如 RoPE。在 Llama 4 的情況下,NoPE 層每 4 層使用一次。這些層對於長上下文至關重要,因為它們使用上下文上的完整因果掩碼。
對於 RoPE 層(四分之三),使用*分塊注意力*。
Meta 將 NoPE 層與溫度縮放(如下所述)的*交錯*使用稱為 iRoPE
架構。
如果您想了解更多關於位置編碼的資訊,我們推薦閱讀 Chris 最近的博文。
- 分塊注意力(在 RoPE 層中)
為了降低記憶體需求,Llama 4 在使用傳統 RoPE 位置編碼的層(4 個解碼器層中的 3 個)中使用了分塊注意力。視覺化分塊注意力工作原理的最佳方式是檢視從 transformers 原始碼中提取的 ASCII 表示:
'What' : 0 ■ ⬚ ⬚ ⬚ ⬚ ⬚
'▁is' : 1 ■ ■ ⬚ ⬚ ⬚ ⬚
'▁ch' : 2 ■ ■ ■ ⬚ ⬚ ⬚
'unked' : 3 ⬚ ⬚ ⬚ ■ ⬚ ⬚
'▁attention': 4 ⬚ ⬚ ⬚ ■ ■ ⬚
'?' : 5 ⬚ ⬚ ⬚ ■ ■ ■
此圖顯示瞭如果分塊注意力長度為 3,將使用的注意力掩碼。在 Llama 4 的情況下,分塊注意力長度為 8192
。這意味著 RoPE 層只能跟蹤 8K 塊中的上下文,而 NoPE 層可以訪問完整上下文。您可以將其視為滑動視窗注意力的更記憶體和計算效率更高的版本。
- 注意力溫度調優
應用於長上下文的注意力塊存在一個問題:隨著序列長度的增加,注意力機率分數會*衰減*趨近於零。這是對非常長的序列應用 *softmax* 函式的已知結果。為了解決這個問題,Llama 4 使用了縮放 softmax,模型稱之為溫度調優。這應用於 NoPE 層,但不應用於 RoPE 層,因為這些層處理較短的子序列。
這種方法是提高任意上下文長度泛化能力的一種方式,並且可能是 Llama 4 Scout 實現 10M 上下文長度的關鍵因素之一。
- QK 歸一化
Llama Scout(16 專家版本)在 RoPE 層中,在應用 RoPE 嵌入之後,對查詢 (Query) 和鍵 (Key) 狀態使用額外的 RMS 歸一化,且不帶可學習引數。
- MoE 交錯
Llama Scout 是一個完整的 MoE,由 16 位專家組成。Llama Maverick 使用 128 位專家,但 MoE 層和密集層交替使用。因此,專家應用於一半的層。
- 協同蒸餾
Llama Maverick 是從更大的模型 Llama Behemoth 中協同蒸餾而來,使用了新的損失函式,該函式動態地加權學生和教師的 logits。
- MetaP
這些模型利用了 MetaP,這是一種可能受到 MuP 啟發的 методология,旨在在不同維度(包括訓練預算和模型大小)上最佳化超引數。
如何與 Transformers 配合使用
使用 transformers
啟動 Llama 4 非常簡單。請確保您已安裝 transformers v4.51.0
或更高版本(pip install -U transformers huggingface_hub[hf_xet]
)。這裡有一個使用指令微調的 Maverick 模型響應兩張影像的快速示例,使用張量並行以獲得最大速度。您需要在具有 8 個 GPU 的例項上執行此指令碼,命令如下:torchrun –nproc-per-instance=8 script.py
from transformers import AutoProcessor, Llama4ForConditionalGeneration
import torch
model_id = "meta-llama/Llama-4-Maverick-17B-128E-Instruct"
processor = AutoProcessor.from_pretrained(model_id)
model = Llama4ForConditionalGeneration.from_pretrained(
model_id,
attn_implementation="flex_attention",
device_map="auto",
torch_dtype=torch.bfloat16,
)
url1 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/0052a70beed5bf71b92610a43a52df6d286cd5f3/diffusers/rabbit.jpg"
url2 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/datasets/cat_style_layout.png"
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": url1},
{"type": "image", "url": url2},
{"type": "text", "text": "Can you describe how these two images are similar, and how they differ?"},
]
},
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=256,
)
response = processor.batch_decode(outputs[:, inputs["input_ids"].shape[-1]:])[0]
print(response)
print(outputs[0])
請務必檢視倉庫上的模型卡(Llama 4 Maverick (~400B) 和 Llama 4 Scout (~109B)),獲取詳細的使用說明,包括多模態示例、特定提示格式(如系統提示)、量化細節和高階配置選項!
評估得分
評估結果證實了這些模型的強大效能,顯示出顯著優於 Llama 3.1 405B 等前代模型的最先進效能。例如,在推理和知識任務上,經過指令微調的 Maverick 在 MMLU Pro 上取得了 80.5% 的成績,在 GPQA Diamond 上取得了 69.8% 的成績,而 Scout 則分別取得了 74.3% 和 57.2% 的成績。
點選展開評估結果
預訓練模型
類別 | 基準測試 | # 樣本數 | 指標 | Llama 3.1 70B | Llama 3.1 405B | Llama 4 Scout | Llama 4 Maverick |
---|---|---|---|---|---|---|---|
推理與知識 | MMLU | 5 | macro_avg/acc_char | 79.3 | 85.2 | 79.6 | 85.5 |
MMLU-Pro | 5 | macro_avg/em | 53.8 | 61.6 | 58.2 | 62.9 | |
MATH | 4 | em_maj1@1 | 41.6 | 53.5 | 50.3 | 61.2 | |
程式碼 | MBPP | 3 | pass@1 | 66.4 | 74.4 | 67.8 | 77.6 |
多語言 | TydiQA | 1 | average/f1 | 29.9 | 34.3 | 31.5 | 31.7 |
影像 | 圖表問答 | 0 | relaxed_accuracy | 無多模態支援 | 83.4 | 85.3 | |
DocVQA | 0 | anls | 89.4 | 91.6 |
指令微調模型
類別 | 基準測試 | # 樣本數 | 指標 | Llama 3.3 70B | Llama 3.1 405B | Llama 4 Scout | Llama 4 Maverick |
---|---|---|---|---|---|---|---|
影像推理 | MMMU | 0 | 準確率 | 無多模態支援 | 69.4 | 73.4 | |
MMMU Pro^ | 0 | 準確率 | 52.2 | 59.6 | |||
MathVista | 0 | 準確率 | 70.7 | 73.7 | |||
影像理解 | 圖表問答 | 0 | relaxed_accuracy | 88.8 | 90.0 | ||
DocVQA(測試) | 0 | anls | 94.4 | 94.4 | |||
程式設計 | LiveCodeBench (2024 年 10 月 1 日 – 2025 年 2 月 1 日) | 0 | pass@1 | 33.3 | 27.7 | 32.8 | 43.4 |
推理與知識 | MMLU Pro | 0 | macro_avg/em | 68.9 | 73.4 | 74.3 | 80.5 |
GPQA Diamond | 0 | 準確率 | 50.5 | 49.0 | 57.2 | 69.8 | |
多語言 | MGSM | 0 | 平均/em | 91.1 | 91.6 | 90.6 | 92.3 |
長上下文 | MTOB(半書)英→kgv/kgv→英 | - | chrF | 上下文視窗為 128K | 42.2/36.6 | 54.0/46.4 | |
MTOB(全書)英→kgv/kgv→英 | - | chrF | 39.7/36.3 | 50.8/46.7 |
致謝
釋出 Llama 4 這樣的巨型模型需要團隊、地理區域和大量虛擬機器之間的巨大努力。我們想特別感謝 Transformers 團隊的 Arthur、Lysandre、Cyril、Pablo、Marc 和 Mohammed。我們感謝 vLLM 團隊在這次充滿挑戰的緊張整合過程中,進行了豐富的討論、提供了深入的見解、分享了測試和除錯經驗。由於有更大的最佳化需求,我們感謝 Mohit 單槍匹馬地在 TGI 中添加了對 Llama 4 的支援。這些龐大的模型需要在儲存級別進行一些嚴肅的工程。這也耗費了 Ajit、Rajat、Jared、Di、Yucheng 和 Xet 團隊其他成員的大量精力。
這項工作涉及許多人,非常感謝 Hugging Face、vLLM 和 Meta Llama 團隊的其他成員,感謝你們出色的協同作用!