跳到正文
Hugging Face Blog·· 16 小時前精選AI 評分76

Reflection 發佈開源模型 Beam,採 501B 參數 MoE 架構並支援 1M tokens 上下文窗口

Welcome Beam: a 501B open model you can own, customize, and scale

AI 導讀

Reflection 在 Hugging Face 發佈開源模型 Beam,採用 501B 參數 MoE 架構,每個 token 啟用 23B 參數,支援 1M tokens 上下文窗口。

推薦理由

文章詳列不同精度檢查點的硬件配置與評測,並附推理及微調配方,呈現自行部署這個 501B 模型的資源要求。

正文 · 繁體中文

Hugging Face mascot with colorful concentric waves on a blue background.

Reflection 推出的 Beam 已在 Hugging Face 發佈!這是美國新實驗室 Reflection 推出的首個模型,而且是開放模型!它是混合專家(MoE)模型,參數量為 501B(每個 token 啟用 23B),支援文字輸入,上下文視窗長達 1M tokens,並以 Apache 2.0 授權發佈。

Beam 專注於編碼和Agent 式應用場景。它適合希望在自有硬件、基礎設施或雲端上使用前沿級模型,並按自身應用場景自訂模型的團隊。Beam 隨附專用的開源 Rust 執行框架,讓模型發揮最佳效能。

Beam 提供原生 transformers 實作,以及 vLLM 和 SGLang 等下游函式庫。我們與 Reflection 團隊合作,為你提供推理、SFT(監督式微調)及 RL(強化學習)的操作流程,讓你按自身需要以此模型進行開發。除了 transformers、SGLang 和 vLLM 的首日支援外,本文亦會介紹如何執行和進行後訓練,以及我們用它建立的項目。

簡而言之

  • 具 501B 參數的 MoE 大型語言模型,每個 token 啟用 23B 參數。模型有 52 層,每個 MoE 層有 256 個專家,每個 token 路由至 8 個專家。
  • 文字輸入、文字輸出,上下文視窗長達 1M tokens。
  • 檢查點格式:BF16、FP8,以及 NVFP4
  • 可跨回合保留於上下文中的推理(preserve_thinking),以及使用專用文法的工具呼叫。模型支援五種推理值:「low」、「medium」(預設)、「high」、「xhigh」和「max」。
  • 分詞器中的回應範本。
  • 採用 DFlash2 的投機解碼草稿模型
  • 首日支援的函式庫:transformers、SGLang、vLLM。使用 Miles 進行全參數 RL。
  • 隨附基於 Rust 的自訂執行框架。
  • Apache 2.0。

使用 Beam 開發

Reflection 將向使用 Beam 的最佳項目送出 $10,000 Hub 額度。你只需製作一件作品,並在 Hub 分享:

  • 你可以在 Spaces 製作使用 Beam 模型的示範
  • 你可以為自己喜愛的硬件量化模型
  • 你可以為自己喜愛的問題生成合成數據集
  • 你可以使用 Beam 或為 Beam 建立 RL 環境
  • 你可以為 Beam 進行基準測試並分享結果。
  • 你可以帶給我們驚喜!

如果你使用 Beam 建立作品,並在 Hub 分享,就有機會贏得 $10,000。你只需建立 Space、模型或數據集 repo,並在模型的 repo 頁面分享。我們會收集所有連結,選出最佳項目,並將額度發送至你的 Hub 帳戶。

Beam 是甚麼?

Beam 是專為長上下文(上下文長度為 1M)的推理及 Agent 工作打造的純文字模型。它是一個稀疏 MoE 模型,每個 token 只會由網絡中一小部分計算,因此執行速度媲美規模小得多的模型,同時保留大型模型的容量。

Beam architecture: three dense layers followed by 49 mixture-of-experts layers, with hybrid attention and weighted residual connections.

注意力

解碼器有 52 層,隱藏維度為 5,120。大部分層會對前 512 個 token 使用滑動視窗注意力;每六層中的一層,以及最後一層,則會關注完整上下文。因此,模型有 43 個滑動視窗層和 9 個全局層。

Attention block with grouped-query attention, RoPE or scalable-softmax query scaling, and a learned sigmoid gate.

注意力區塊內部(兩種層類型)

兩種層處理位置的方式不同。滑動視窗層使用 RoPE,因為在短視窗內,相對位置最為重要。全域層不使用位置編碼。相反,每個查詢向量都會乘上一個隨可見 token 數量緩慢增長的縮放因子 (1 + (pos + 1) / 2048) ** 0.1。它的作用如同温度參數:隨著上下文變長,softmax 仍能維持其精細程度,不會變得平坦。實作將此方法稱為可擴展 softmax 查詢縮放。

注意力使用分組查詢注意力,設有 48 個查詢頭及 8 個鍵值頭,並對查詢和鍵使用 RMSNorm。由層輸入計算得出的可學習 sigmoid 閘門,會在輸出投影前縮放每個注意力頭的每個通道。

專家混合模型

最初 3 層使用密集 SwiGLU MLP。其餘 49 層則改用專家混合模組,內含 256 個專家;每個專家都是中間層大小為 2,560 的 SwiGLU MLP,約有 39M 個參數。專家佔模型參數的 98.4%。

路由器採用 DeepSeek-V3 的羣組限制方案。它先以 sigmoid 函數為全部 256 個專家評分,再將它們分成 8 組,每組 32 個;接著保留評分最高的 4 組(按各組最高兩個分數的總和排名),然後在這些組別中選出評分最高的 8 個專家。Beam 使用與 DeepSeek-V3 相同的組別大小,但沒有共享專家。專家輸出會以經正規化的路由器權重合併,再乘以 2.5。

Beam router scores 256 experts and selects groups before routing each token to eight experts.

每個 token 只會啟用 8 個專家,因此模型處理每個 token 時使用約 23B 個參數。全部 256 個專家都會留在記憶體中,因此部署所需的記憶體相當於 501B 模型,但執行速度則相當於 23B 模型。BF16 檢查點以 safetensors 格式儲存,大小約為 1 TB。NVFP4 檢查點將大部分參數以 4-bit 精度儲存,適用於 NVIDIA Blackwell GPU;為保持準確度,部分參數則以 BF16 儲存。hub 上亦有 FP8 檢查點,最適用於 Hopper 和 Ampere 系列晶片。

如要自行部署 Beam,請參閲下方的 vLLM 或 SGLang 部署教學。

殘差流

殘差連接是最具特色的部分。標準 Transformer 會以權重 1 將每個子層的輸出加至殘差流,因此殘差流會隨著層數增加而增大。

Standard transformer residual stream adds each sublayer output with weight one.

Beam 將輸入嵌入計作第 1 步。在第 k 步,它會以權重 1/sqrt(k) 加入子層輸出,並以權重 sqrt((k-1)/k) 保留現有殘差流。兩個權重的平方和為 1,因此從第一層到最後一層,殘差流的尺度都維持不變。經過全部 104 次相加後,最終隱藏狀態中,每個子層輸出與輸入嵌入的權重都相同。

Beam residual stream uses depth-dependent weights to keep the accumulated hidden state at a constant scale.

每個子層前後也都會進行正規化,而最終 logits 會經過界限為 ±30 的 tanh 軟上限處理,並以 FP32 計算。實作亦明確指定以下部分以 FP32 計算:路由器、SwiGLU 乘積、正規化、RoPE、查詢縮放及軟上限處理。

長上下文

混合注意力適用於長上下文。每層會為每個 token 快取 2 x 8 個 KV 頭 x 128 維 = 2,048 個數值。如果全部 52 層都保留每個 token 的快取,每個 token 便會令快取增加 208 KiB。只有 9 個全域層會保留整個序列。43 個滑動視窗層各自維持固定的 512-token 視窗,快取不再增長。因此,快取每個 token 只增加 36 KiB,約為直接估算增長率的六分之一。

上下文 如果 52 層全部都是全域層 Beam
32K 個 token 6.5 GiB 1.2 GiB
128K 個 token 26 GiB 4.6 GiB
完整上下文(1M) 208 GiB 36.08 GiB

這些數值按每條序列計算,使用 BF16 及 transformers 動態快取。

基準測試結果

以下是 Reflection 團隊提供的不同精度等級基準測試結果。

Beam (BF16) Beam (FP8) Beam (NVFP4)
代理式編碼/終端機
DeepSWE v1.1 43.3% 43.0% 42.7%
SWE Bench Pro v2-Hard 76.5% 78.4% 78.6%
SWE Bench Pro v1 66.1% 65.9% 65.6%
Terminal Bench v2.1 80.1% 78.9% 78.2%
SWE Atlas Codebase QnA 31.8% 32.2% 31.4%
SWEBench Multilingual 78.3% 78.1% 77.5%
SWEBench Verified 81.6% 80.2% 80.7%
推理
AIME 2026 97.7% 98.0% 97.5%
HLE (no tools) 36.0% 36.0% 34.8%
HLE (with tools) 51.1% 51.1% 51.1%
SciCode 49.2% 48.3% 46.9%
CriPT AA 16.3% 17.4% 15.4%
GPQA Diamond 90.6% 90.3% 89.3%
LiveCodeBench 88.3% 88.1% 87.4%
工具呼叫/搜尋
AutomationBench - 僅使用公開切分 39.3 38.2 39.8%
MCP Atlas 80.8% 81.5% 80.5%
Tau3 Banking 36.1% 36.8% 35.4%
BrowseComp(使用上下文管理) 76.8% 76.7% 75.6%
DeepSearchQA(使用上下文管理) 80.5% 79.6% 81.1%
一般能力
AA-LCR 78.2% 79.4% 78.7%
LongBench v2 67.5% 67.6% 67.2%
IFBench 79.6% 80.7% 79.2%
AA Omniscience(指數)- 僅使用公開切分 10.8 8.8 9.8

硬件需求

提供模型服務最實際的方法,是使用 NVFP4 檢查點;它保留了 BF16 檢查點的大部分品質。NVFP4 會以 4 位元儲存部分權重,因此可將 BF16 下 501B 個參數的儲存空間由 1 TB 縮減至 ~280 GB。Blackwell GPU 可原生執行 NVFP4,但較 Blackwell 舊的 GPU(例如 H200)則無法原生執行。FP8 檢查點適用於 Blackwell 之前的 GPU。

一張 B200 配備 180 GB HBM3e,因此兩張 B200(360 GB)可容納 Beam 權重,但留給激活值和 KV 快取的空間不多。建議使用四張 B200(720 GB),為長上下文和並行請求預留充足空間。你也可以在完整的 8xB200 節點、兩張各有 288 GB 的 B300,甚至 8xRTX Pro 6000 上提供模型服務。如果沒有 Blackwell 硬件,可使用 Inference Providers(無伺服器)測試 Reflection。

推理支援

Beam 自發布首日起便獲 transformers、SGLang 和 vLLM 支援。

Transformers

安裝最新版本的 transformers。

pip install -U "transformers>=5.20.1"

執行 Beam 最簡單的方法是使用 text-generation pipeline:

from transformers import pipeline

pipe = pipeline(
    "text-generation", model="reflectionai/Beam-1.0-501B-A23B", device_map="auto"
)

messages = [
    {"role": "user", "content": "Write a limerick about Python exceptions."}
]
output = pipe(messages, max_new_tokens=2000)
output[0]["generated_text"][-1]

pipeline 會傳回整段對話。最後一則訊息是 Beam 的回覆,已由回應範本解析完成。

再深入一層,可使用 AutoModelForCausalLM 和 AutoTokenizer。

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "reflectionai/Beam-1.0-501B-A23B"
tokenizer = AutoTokenizer.from_pretrained(model_id)

model = AutoModelForCausalLM.from_pretrained(
    model_id, dtype="auto", device_map="auto"
)

對話

messages = [
    {"role": "system", "content": "You should only answer with a number."},
    {"role": "user", "content": "What is 17 * 23?"},
]

inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
    reasoning_effort="medium" # by default
).to(model.device)

input_len = inputs["input_ids"].shape[-1]

outputs = model.generate(**inputs, max_new_tokens=2000)

tokenizer.parse_response(
    outputs[0][input_len:], prefix=inputs["input_ids"][0]
)

Beam 的 tokenizer 內附回應範本。parse_response 會讀取該範本,並將原始輸出轉換為訊息字典,把推理、答案及任何工具呼叫分別放在不同欄位。這樣便無需使用常見的正規表示式來分割推理、答案和工具呼叫。相關規則會隨 tokenizer 一併提供,因此解析後的結構與 Beam 受訓時要產生的結構一致。對話範本可預先填入助理回合的一部分,而解析器需要讀取這部分內容。

工具呼叫

完整的工具呼叫範例

def get_weather(city: str, unit: str = "celsius"):
    """
    Get the current weather for a city.

    Args:
        city: The city to look up.
        unit: Temperature unit, "celsius" or "fahrenheit".
    """
    ...

tools = [get_weather]
messages = [
    {"role": "user", "content": "I land in Paris tonight. Do I need a coat?"}
]

inputs = tokenizer.apply_chat_template(
    messages,
    tools=tools,
    add_generation_prompt=True,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
).to(model.device)

input_len = inputs["input_ids"].shape[-1]
outputs = model.generate(**inputs, max_new_tokens=1000)

message = tokenizer.parse_response(
    outputs[0][input_len:], prefix=inputs["input_ids"][0], tools=tools
)
message.get("tool_calls")

也將 tools 傳入 parse_response。Beam 會以自身的 XML 風格文法,將工具呼叫引數直接寫入內容中,因此單獨的 7 可能是數字,也可能是字串。提供工具結構描述後,解析器便會將每個引數轉換為其宣告的類型。

多 GPU 及多節點

Beam 的設定檔定義了專家平行處理方案。專家平行處理會將每個專家分配至一個裝置。注意力、稠密層、嵌入層及 LM head 會在每個裝置上複製。這部分共有 8B 個參數,在 BF16 下佔 16 GB。使用 DistributedConfig 載入模型:

import os

from transformers import AutoModelForCausalLM
from transformers.distributed import DistributedConfig

model = AutoModelForCausalLM.from_pretrained(
    "reflection/Beam-1.0-501B-A23B",
    distributed_config=DistributedConfig(
        tp_size=int(os.environ["WORLD_SIZE"]), enable_expert_parallel=True
    ),
)

透過 torchrun 在 16 張 H200 GPU 上啟動指令碼。此時每張 GPU 會承載 78 GB 權重。若使用 8 張 GPU,每張會承載 139 GB,對 141 GB 的 H200 而言幾乎沒有剩餘空間。裝置數量必須能整除專家數量 256。

vLLM

Beam 自發布首日起便獲 vLLM 支援。以下指令會透過 16 張 GPU(兩個 8x H200 節點)進行張量平行處理,提供 BF16 檢查點服務,並開放相容於 OpenAI 的 API:

vllm serve reflection/Beam-1.0-501B-A23B --tensor-parallel-size 16 --served-model-name beam

如要加快生成速度,可加入 DFlash2 推測解碼。小型草稿模型最多可提前提出 15 個 token,Beam 會在一次前向傳遞中全部檢查,因此每一步都可接受多個 token。代價是草稿模型需要佔用少量額外記憶體:

vllm serve reflection/Beam-1.0-501B-A23B \
  --tensor-parallel-size 16 \
  --speculative-config '{ "method": "dflash", "model": "reflection/dflash2-drafter-preview", "num_speculative_tokens": 15 }'

這兩條命令都會啟動相容 OpenAI 的伺服器,因此你可以將任何 OpenAI 用戶端指向 http://localhost:8000/v1。如需更多伺服器設定,請參閲建議用於 vLLM 的 Beam 設定方案。

SGLang

Beam 亦在 SGLang 中提供首日支援。我們建議配合 DFlash2 推測解碼進行服務,以下兩條命令都會啟用這項功能。在 Blackwell 上,NVFP4 檢查點可在 4 張 B300 上運行:

python -m sglang.launch_server \
--model-path reflection/Beam-1.0-501B-A23B-NVFP4 \
--served-model-name beam \
--tp 4 \
--attention-backend trtllm_mha \
--page-size 64 \
--context-length 1048576 \
--mem-fraction-static 0.85 \
--enable-unified-memory \
--speculative-algorithm DFLASH \
--speculative-draft-model-path reflection/Beam-1.0-501B-A23B-DFlash2 \
--speculative-dflash-block-size 8 \
--tool-call-parser beam --reasoning-parser beam \
--host 0.0.0.0 --port 30000

在 Hopper GPU 上,則改用 FP8 檢查點,並部署於 8 張 H200 上。只需更改三個旗標:檢查點、張量並行大小(8 而非 4),以及注意力後端(使用 fa3 而非需要 Blackwell 的 trtllm_mha):

python -m sglang.launch_server \
--model-path reflection/Beam-1.0-501B-A23B-FP8 \
--served-model-name beam \
--tp 8 \
--attention-backend fa3 \
--page-size 64 \
--context-length 1048576 \
--mem-fraction-static 0.85 \
--enable-unified-memory \
--speculative-algorithm DFLASH \
--speculative-draft-model-path reflection/Beam-1.0-501B-A23B-DFlash2 \
--speculative-dflash-block-size 8 \
--tool-call-parser beam --reasoning-parser beam \
--host 0.0.0.0 --port 30000

Inference Providers

Beam 現已在 Hugging Face Inference Providers 上提供,由 Baseten、Fireworks 和 Together 提供支援,並將很快加入更多供應商。

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://router.huggingface.co/v1",
    api_key=os.environ["HF_TOKEN"],
)

completion = client.chat.completions.create(
    model="reflection/Beam-1.0-501B-A23B:auto",
    messages=[{"role": "user", "content": "What is the capital of France?"}],
)

print(completion.choices[0].message)

Inference Endpoints

我們已為你準備好 Beam 設定方案,可在 Inference Endpoints 的型錄中選擇FP8或NVFP4,一鍵部署;亦可使用 hf CLI 按以下方式安裝:

hf endpoints catalog deploy --repo reflection/Beam-1.0-501B-A23B --name beam

測試內容

我們透過 Reflection 平台,在五項任務上分享 Reflection Beam-501B-A23B 的一些 vibe 評測,每項任務分別以低和高推理力度執行一次。這些是 vibe 評測,並非基準測試。如果你打算使用 Beam,這是試用它、瞭解它在特定使用案例中的表現,以及尤其重要的優勢與不足的好方法。

以下概述我們使用的提示詞,以及 hub 中的輸出追蹤記錄。完整的輸入、輸出、API 用量、任務測試資料、評分器及對話追蹤記錄,均收錄於這個公開的 Hugging Face 儲存空間。

類別 提示詞説明 低推理(token 數) 高推理(token 數)
多步驟工具呼叫 完成 ORD-742:比較庫存、預留量、附加費及到貨日期;預留符合條件且價格最低的倉庫。 ✅ 544 ✅ 811
程式碼庫長上下文檢索 根據三個完整的原始碼檔案,推導 Click 命令設定及兩個呼叫結果;引用六個實作符號。 🔴 1,613 * ✅ 5,007
沙盒中的終端任務 檢查並修復 CSV 總帳 CLI;修正所有錯誤、保留測試、執行測試及 CLI 檢查。 ✅ 582 ✅ 1,548
數學推理(AIME 風格) 集合 {1, …, 16} 中有多少個八元素子集,其元素總和可被 17 整除?請説明理由。 🟠 829 † ✅ 2,809
結構化輸出 將順序錯亂的修訂記錄轉換為嚴格 JSON:合併修補項、取消項、null 值、日期、貨幣及總額。 ✅ 1,040 ✅ 2,088

* 低推理力度版本在長上下文任務中的回應,對程式碼行為及全部六項來源引用均答對。不過,回應不符合解析器的格式,因此部分原因是提示詞含糊。

† 低推理力度版本回答正確,但沒有提供所要求的理由。高推理力度版本提供了正確的單位根證明,並經獨立審閲。

不要只聽我們説。深入查看這個儲存空間,按你的使用案例或專案改寫內容,盡情挑戰 Beam 的極限。

Beam 的後訓練

你可以針對自己的使用案例微調 Beam。這裏分享一些使用 TRL 和 Miles 的範例,助你開始監督式微調及強化學習。

使用 TRL 進行 SFT

將 Beam 調整以配合自有數據,最快的方法是使用 TRL 的 SFTTrainer 進行監督式微調。為了控制記憶體用量,我們使用 PEFT 訓練 LoRA adapter,而非更新全部 501B 個參數: 我們使用 TRL 的 SFTTrainer 調整 Beam,讓它達成一個簡單目標:以用戶指定的語言進行推理。我們使用 LoRA 在 Multilingual-Thinking 上進行微調;這種方法只訓練一小組 adapter 權重,同時凍結基礎模型。

此配置結合載入時模型分片、專家平行、FlashAttention 4 和序列打包。LoRA SFT 可在配備 8 張 B300 GPU 的單一節點上執行,速度約為每秒 19,000 個 token。相應的 H100 配置使用四個節點。

在 Multilingual-Thinking 上訓練一個 epoch 後,Beam 在 16 個留出提示詞中的 16 個都以指定語言進行推理;基礎模型則是 16 個中只有 3 個。這項小型評估衡量的是語言遵循程度,而非推理本身是否正確。

Training loss and mean token accuracy over a 500-step LoRA supervised fine-tuning run on one eight-GPU B300 node.

在一個配備 8 張 B300 GPU 的節點上,使用 open-r1/Mixture-of-Thought 的推理子集進行另一次 500 步訓練時的訓練損失(左)和平均 token 準確率(右)。這些訓練指標來自官方 TRL 範例 PR。

使用 Miles 進行 GRPO

Reflection 和 RadixArk 建立了一套使用 Miles 以 BF16 執行 GRPO 訓練的方案。你可以更新整個模型,或使用 LoRA 訓練 adapter,同時凍結基礎權重。Megatron 負責訓練,SGLang 負責生成 rollout,而 Miles 會在每次更新後將新權重發布至 rollout 引擎。我們已檢視這套方案。

工作負載 參考配置
推理/評估,BF16 每個引擎 16x H200
全參數 GRPO,BF16(Miles) 96x H200:64 張用於訓練,32 張用於 rollout。或使用 64x H200 同機部署。
LoRA GRPO,BF16(Miles) 32x H200:16 張用於訓練,16 張用於 rollout。
全參數 GRPO,BF16,128 個 token 的上下文(Miles) 48x H200:32 張用於訓練,16 張用於 rollout。這是 Reflection 和 RadixArk 首次在實際檢查點上驗證的配置。

這套方案在 DAPO-Math-17K 上執行 GRPO,並在 AIME25 上評估。建置映像檔、下載數據,然後將工作提交至由十二個 8x H200 節點組成的 Ray 叢集:

docker build -f docker/Dockerfile.beam -t miles-beam .

python scripts/run_beam.py prepare \
  --model-id reflection/Beam-1.0-501B-A23B \
  --model-dir /root/models/Beam \
  --data-dir /data/datasets

export MASTER_ADDR=10.0.0.1
export RAY_ADDRESS=http://${MASTER_ADDR}:8265

python scripts/run_beam.py execute \
  --model-dir /root/models/Beam \
  --data-dir /data/datasets \
  --output-dir /root/shared_data/beam-run \
  --num-rollout 100

一次 rollout 的流程:

抽樣:將 32 個提示詞送入模型,每個提示詞生成 8 個回應。兩個 SGLang 引擎各使用 16 張 GPU 提供 rollout 服務。

評分:將方框內的答案與標籤核對,並對接近長度上限的回應施加較輕的懲罰。

更新:使用全部 256 個樣本執行一次最佳化器更新。採用羣組相對優勢和截斷重要性抽樣,不使用 KL 或熵懲罰。

平行訓練:張量平行度為 8、專家平行度為 8、數據平行度為 8,並採用序列平行和完整重算。

最佳化器:使用 Adam,學習率固定為 1e-6。梯度使用 BF16,主權重使用 FP32,動量使用 BF16。最佳化器狀態透過節點本機 NVMe 串流處理,因此每個訓練節點需要 2 TB 暫存空間。

評估:每執行五次 rollout,便以每題八個樣本評估一次 AIME25。每二十次 rollout 儲存一個檢查點。

Full-parameter GRPO evaluation on AIME 2025: accuracy increases from 46.25% to 55.8% with a 4,000-token output limit.

目前的 rollout 訓練期間會同時生成下一個 rollout,因此回應會落後一次更新。加入 --resume 即可從最近的檢查點繼續。execute-colocate 會在八個節點上執行相同方案,讓每張 GPU 輪流執行訓練和推理服務。

使用 LoRA 訓練

你亦可以在四個 8× H200 節點上使用 LoRA 執行 GRPO:16 個 GPU 用於訓練,16 個用於 rollout。此訓練方法會在 Beam 的 attention 層、dense MLP 層及 expert 層上訓練 rank-16 適配器,同時保持基礎權重凍結。只有適配器權重會與 SGLang 同步,而最佳化器狀態會保留在 GPU 記憶體中,毋須將最佳化器卸載至 NVMe。

python scripts/run_beam_lora.py execute \
  --model-dir /root/models/Beam \
  --data-dir /data/datasets \
  --output-dir /root/shared_data/beam-run \
  --num-rollout 100

LoRA GRPO evaluation on AIME 2025: accuracy rises from 42.9% to 64.2% while mean output length falls from 3,188 to 2,197 tokens.

使用 Beam 開發:示範

如果你使用 Beam 開發了作品,不妨分享到 Hub,便有機會贏得 $10,000。你只需建立 space、模型或數據集儲存庫,並在模型的儲存庫頁面分享即可。以下是我們開發的幾個作品,希望能為你帶來靈感。

Hey Beam,開發一個原生 MacOS 應用程式!

Hugging Face 一直支持可在相應硬件上原生執行的開放模型和本地模型,但在 Mac 上開發原生應用程式並不容易!看看 Beam 能否幫上忙。

我們請 Beam 開發一個原生 MacOS 應用程式,將語音轉成文字,並方便地輸入至遊標所在位置。我們希望使用 MLX 充分發揮 Mac Metal 的效能,並使用 Parakeet Model 取得出色的語音轉文字效果。

Build BeamSpeak, a native macOS menu bar dictation app with a compact recording pill and no main window or account.

Use ⌘⇧Space to start and stop microphone recording, showing elapsed time, microphone level, and transcription status. Run speech recognition entirely locally using a Hugging Face model, preferably Parakeet v3 through MLX, and keep the model loaded between recordings. Paste the transcript into the original app if it remains focused and Accessibility permission is granted; otherwise copy it to the clipboard, preserving newer clipboard changes and never pressing Enter. Handle permissions, cancellation, silence, errors, a two-minute recording limit, and temporary audio cleanup. Deliver source code, a runnable BeamSpeak.app, setup instructions, and verification of offline transcription, the physical shortcut, microphone capture, and text delivery.

我們使用 Beam 配合 Pi 編碼執行框架,開發了最初版本的原生 macOS 選單列應用程式,透過 MLX 執行 Parakeet。已儲存的執行記錄包含後續提示詞;最終程式碼亦包括之後由 Codex 作出的修補。上方的提示詞是對開發要求的精簡版本。

你可以在這段執行軌跡查看 Beam 如何在 pi 中開發這個應用程式。若想試用示範,請下載原始碼,或閲讀設定説明。

Hey Beam,如何擴展多代理程式工作?

我們想了解,Beam 能否透過將程式設計任務分配給多個代理程式,加快進度。我們讓 Beam 配合開源 Pi 編碼代理程式,並比較三種配置:1. 一個代理程式獨自工作;2. 五個持續協作的同級代理程式,共用 Git 儲存庫;3. 一個主代理程式將工作分派給非同步子代理程式。執行框架在 Hugging Face jobs 上運作,並透過 Reflection 的平台 API 進行推理。

我們使用 ProgramBench 執行任務:代理程式必須根據程式的已編譯可執行檔和文件,還原程式,而不能查看原始碼或評測器的測試。每種配置的 API token 上限均為 8M,每項任務的解題時限均為兩小時,並由該配置中的代理程式共用。我們儲存了實作快照,並使用來自ProgramBench-Tests 數據集的固定隱藏測試套件進行評估。

我們的評分與延遲圖顯示通過測試比例的平均值。時間軸採用模型 token 的固定參考速率,加上實測的工具耗時,而非實際經過的時間。我們最初執行了五項任務。目前圖表顯示事後選取的 jq、xsv、FIGlet 和 hexyl 子集;由於評分其已儲存產物所需時間太長,ripgrep 在三種配置中均被排除。已發布的結果保留了全部 15 個原始實驗回合。

你可以在Trackio 儀錶板查看各次執行記錄、探索已發布的結果數據,並重用研究執行框架。

Hey Beam,為我的程式碼庫微調一個決策模型!

決策模型目前大受歡迎,因為它們速度非常快,而且適用於許多用途。我們先使用 Beam,待其配額用完後,再在 Pi 中使用 GLM-5.3,訓練並評估一個用於開發者事件分流的自訂決策模型。

我們想了解程式碼 Agent 能否將事故分流政策轉化為一個小型、快速的決策模型。任務是讀取開發者事故資料,判斷負責團隊、事故嚴重程度,以及是否需要立即通知某人。我們使用 Unsloth 微調 Qwen3.5-0.8B,讓模型直接為這些選項評分。

首先,工作流程建立了一個包含 2.3k 宗事故的合成數據集,並按事故羣組劃分為訓練、校準及測試集。我們在 Science Slurm cluster 上使用一張 H100 80GB,以 4-bit 主幹模型訓練 LoRA adapter 和決策頭,共三個訓練週期。

作為基準測試,我們向未經適配的模型提供完整的事故分流政策和工單,不給予示例,並要求它以 JSON 格式生成三項決策。在相同的 320 張合成測試工單中,經微調的決策模型有 76.25% 的工單三項答案全部正確,提示詞零樣本基準則為 4.69%。每張工單的平均延遲由 1,218.06 ms 降至 102.58 ms,速度提升 11.9×。

Incident triage decision model: accuracy rises from 4.69% to 76.25% and mean latency falls from 1,218.06 ms to 102.58 ms.

如果你想親自試試這項實驗,請查看實驗產物儲存區,當中包含數據、程式碼、檢查點及結果。

總結

Beam 是一個 501B 開放模型,你可以在自己的硬件上執行並修改。可以先使用 BF16 檢查點,或試試其中一種量化版本:FP8, NVFP4。如果你用 Beam 建立了作品,歡迎在討論分頁分享。

來源:Hugging Face Blog · huggingface.co