歡迎 Llama 4 Maverick 和 Scout 加入 Hugging Face

釋出於 2025 年 4 月 5 日
在 GitHub 上更新

我們非常激動地歡迎 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 團隊的其他成員,感謝你們出色的協同作用!

參考

社群

這個指令碼對我不起作用。我收到以下錯誤

ValueError: Unrecognized image processor in meta-llama/Llama-4-Maverick-17B-128E-Instruct. Should have a `image_processor_type` key in its preprocessor_config.json of config.json, or one of the following `model_type` keys in its config.json: align, aria, beit, bit, blip, blip-2, bridgetower, chameleon, chinese_clip, clip, clipseg, conditional_detr, convnext, convnextv2, cvt, data2vec-vision, deformable_detr, deit, depth_anything, depth_pro, deta, detr, dinat, dinov2, donut-swin, dpt, efficientformer, efficientnet, flava, focalnet, fuyu, gemma3, git, glpn, got_ocr2, grounding-dino, groupvit, hiera, idefics, idefics2, idefics3, ijepa, imagegpt, instructblip, instructblipvideo, kosmos-2, layoutlmv2, layoutlmv3, levit, llama4, llava, llava_next, llava_next_video, llava_onevision, mask2former, maskformer, mgp-str, mistral3, mllama, mobilenet_v1, mobilenet_v2, mobilevit, mobilevitv2, nat, nougat, oneformer, owlv2, owlvit, paligemma, perceiver, phi4_multimodal, pix2struct, pixtral, poolformer, prompt_depth_anything, pvt, pvt_v2, qwen2_5_vl, qwen2_vl, regnet, resnet, rt_detr, sam, segformer, seggpt, shieldgemma2, siglip, siglip2, superglue, swiftformer, swin, swin2sr, swinv2, table-transformer, timesformer, timm_wrapper, tvlt, tvp, udop, upernet, van, videomae, vilt, vipllava, vit, vit_hybrid, vit_mae, vit_msn, vitmatte, xclip, yolos, zoedepth

fly-int4-quantization 的程式碼在哪裡?我有 2 塊 H100 NVL 94Gb 400W GPU。我可以載入 llama-4-scout-instruct 嗎?

註冊登入發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.