Next Concept Prediction 最近出現在研究社群的熱門頁面:2026 年 9 月 11 日,NCP-ArchPreview 技術報告成為 Hugging Face #1 Paper of the day。這只代表該平台當日排名,不是採用率。但先別被名字帶偏——這裡的 NCP 不是「神經細胞自動機」,而是 Next Concept Prediction(下一個概念預測)。
這篇專為第一次接觸潛在空間模型的讀者寫。我們會從逐字接龍開始,拆開 8.94B checkpoint 的三段架構,跑一個不需要 GPU 的迷你量化範例,再教你檢查公開模型;最後把「1.95 倍」究竟代表什麼說清楚。
先說結論:Next Concept Prediction 多加了一條「概念便條」
NCP-ArchPreview =逐 token 接龍(NTP)+每 4 個 token 預測下一組連續的「潛在便條」(NCP)
「便條」只是方便記憶的比喻。NCP target 是四個 token 狀態平均後的連續向量,預測結果則由 codebook 向量加權組成;另一條 VQ 支線才會做離散 codeword 指派。它們都不保證能翻成人類看得懂的主題詞。
因此,NCP 沒有丟掉傳統的 next-token prediction,也不是先在腦中寫好一整段摘要才輸出文字。它仍然自回歸地生成下一個 token,只是在中間多訓練一個較粗粒度的預測目標,讓模型同時學「下一個字詞」與「下一小段的潛在表示」。如果你還不熟 token,可以先讀 LLM 為什麼只是下一個 token 預測器。
先把名字說對:NCP 不是細胞自動機
arXiv 2609.10715 的正式標題直接把 NCP 展開為 Next Concept Prediction。論文描述的是固定深度的 causal Transformer:16 層 Token Encoder、8 層 Concept Module、16 層 Token Decoder;資料沿時間方向保持因果遮罩。
真正的 cellular automaton(細胞自動機)通常把同一套局部規則,反覆套到格子上的每個 cell,讓全域圖樣逐步長出來。反觀 NCP-ArchPreview 論文第 2 節與公開程式列出的完整主路徑,是三段 causal Transformer、四-token 分組與 codebook 約束的潛在預測;它也使用 16/8/16 組不同層,而不是重複使用同一 Transformer block 的 recurrent-depth 方法。想分辨後者,可對照 Looped Transformer 與 recurrent depth 教學。
為什麼要預測「下一個概念」?
想像你在聽一句話:「下雨了,所以我帶了……」。只猜下一個 token,模型可能依次處理「一」「把」「傘」;較粗的便條則可以先表示「接下來和雨具有關」。這不代表模型真的擁有人的概念,而是多了一個跨數個 token 的訓練訊號。
研究動機是:純 NTP 每一步都受到細粒度文字形式約束,而語意常跨越多個 token。NCP 嘗試讓模型在兩種尺度一起學習。不過,較漂亮的訓練 loss 並不自動等於每個能力都更好;理解 scaling law 與評測怎麼讀,正是避免被單一數字牽著走的第一步。
Next Concept Prediction 的 5 個零件
① Token Encoder:先把文字讀成隱藏狀態
輸入仍先經 tokenizer 變成 token。16 層 Encoder 把每個位置轉成 4,096 維隱藏狀態。你可把它想成逐字做筆記:每個位置都記下「到目前為止,我讀到了什麼」。
② Mean pooling:每 4 個 token 合成一張草稿
模型把連續 4 個 token 的狀態取平均,壓成一個 chunk 表示。四個一組是這個 checkpoint 的設定,不是所有「概念模型」都必須遵守的自然定律。
③ VQ 支線:替連續空間建立離散參考點
4,096 維向量被切成 32 段,每段 128 維;每段再到各自擁有 128 個 codeword 的 codebook 中找最近代表。這條 product quantization(乘積量化)支線用 VQ loss 把 codeword 拉向連續表示。它不是把一段話硬翻成「天氣」或「金融」標籤;而且 NCP loss 的 target 仍是下一個連續 mean-pooled 向量,不是這 32 個硬索引。
④ Concept Module:預測下一組潛在表示
8 層 Concept Module 根據前面的 chunk,預測下一個 chunk 在各 codebook 的分數,組成連續潛在向量,再以 MSE 對齊下一個 mean-pooled continuous target。論文公式把分數經 softmax 後做加權組合;但截至 2026 年 9 月 13 日,公開 checkpoint 設定是 raw_logits,其 standalone inference 程式直接用 logits 與 codebook 做運算。這是公開 artifact 層面的差異;現有資料尚未說明它是匯出表示、訓練/推論差異,還是算法變更。
⑤ Token Decoder:把粗粒度線索送回逐 token 生成
預測出的概念向量會對齊回 token 位置,與 Encoder 資訊一起交給 16 層 Decoder,最後仍由詞彙表上的機率分布選出下一個 token。換句話說:概念路徑提供額外線索,token 路徑負責真正輸出文字。

走一次例子:從「下雨」到下一組潛在表示
假設 tokenizer 把一句話切成「今天/下雨/所以/我」與「帶了/一把/雨傘/出門」兩組。這只是方便理解的假想切法,不是該 tokenizer 的實際輸出。
- Encoder 為第一組四個 token 產生四個隱藏向量。
- 模型把四個向量平均成連續 concept;VQ 支線另把它分成 32 段,各自找最近 codeword。
- Concept Module 讀取因果位置上可見的過去連續 chunk 表示(不是離散索引),預測下一組的 codeword 分數。
- 分數組合成下一個連續潛在向量,往右移後交給 Decoder,避免偷看到答案。
- Decoder 仍一次產生一個 token,例如先產生「帶」,再繼續生成。
關鍵在第 4 步的 causal shift:若模型能把正在預測的那組答案直接送給 Decoder,訓練分數會很好看,實際生成卻是在作弊。
20 行內看懂「平均+量化」:不需 GPU 的玩具程式
下面只示範 NCP 中最容易觀察的兩步:把四個 token 狀態平均,再選最近的 codeword。它不是 8.94B 模型,也不含 Transformer、32 組乘積量化、NCP loss 或文字生成。
token_states = [(0.9, 0.1), (0.7, 0.3),
(0.8, 0.2), (0.6, 0.4)]
codebook = {"A": (0.75, 0.25),
"B": (0.20, 0.80),
"C": (0.50, 0.50)}
pooled = tuple(
round(sum(state[i] for state in token_states) / len(token_states), 2)
for i in range(2)
)
def squared_distance(a, b):
return sum((x - y) ** 2 for x, y in zip(a, b))
winner = min(codebook, key=lambda name:
squared_distance(pooled, codebook[name]))
print("pooled =", pooled)
print("nearest codeword =", winner, codebook[winner])
將上一段程式另存為 toy_vq.py 後執行 python3 toy_vq.py,你會得到 pooled = (0.75, 0.25) 與 nearest codeword = A (0.75, 0.25)。真正模型的 VQ 支線會對 32 個子向量各找最近 codeword;Concept Module 不做硬選,而是預測各 codebook 的權重/分數,組成下一個連續潛在向量。
怎麼檢查 8.94B Stage-1 checkpoint?
先做「不下載權重」的 inspection。以下命令把 metadata inspection 固定在 revision d642…;只讀 JSON 與索引:
MODEL='ArchSpace-Collection/NCP_ArchPreview_dolma3_8.9B_Stage1'
REV='d642693c0efaca7329e544076397105238bda3bf'
curl -fsSL "https://huggingface.co/api/models/$MODEL/revision/$REV?blobs=true" |
jq '{sha, safetensors,
weight_shards:[.siblings[] |
select(.rfilename | test("^model-[0-9]+-of-[0-9]+\\.safetensors$")) |
{file:.rfilename, bytes:.size}]}'
curl -fsSL "https://huggingface.co/$MODEL/resolve/$REV/config.json" |
jq '{architectures, hidden_size, num_hidden_layers,
conceptlm_encoder_layers, conceptlm_special_layers,
conceptlm_decoder_layers, conceptlm_chunk_size,
conceptlm_v22_vq_num_codebooks,
conceptlm_v22_vq_codebook_size,
max_position_embeddings, torch_dtype}'
curl -fsSL "https://huggingface.co/$MODEL/resolve/$REV/model.safetensors.index.json" |
jq '{metadata, tensor_keys:(.weight_map|length),
shards:(.weight_map|to_entries|map(.value)|unique)}'
Hugging Face API 報告 8,938,363,792 個 BF16 參數;pinned index 列出 842 個 tensor key、5 個權重分片與 17,876,727,586 bytes 的 tensor data(約 16.65 GiB)。這只是權重大小,實際載入還要留給 KV cache、activation 與 runtime,因此不能把「檔案放得下」當成「一定跑得動」。想先估自己的硬體預算,可搭配 本機 LLM 硬體與成本教學。
官方 model card提供 Transformers 的單張 CUDA GPU、BF16、trust_remote_code=True 載入範例。這個參數會執行 repository 內的自訂 Python;實務上應像上面一樣固定 revision,先讀過 modeling_ncp_olmo3.py 再執行。
公開 runtime 證據的邊界很窄:evaluation repository 記錄公開 HF exports 的載入與非空續寫 smoke test,不是 benchmark 分數或 native backend parity 證明。Checkpoint config 將 standalone HF backend 標為 parity_candidate;conversion_manifest.json 另標示 parity_validated=false。官方 evaluation repository 也明確表示不主張它與原生 Megatron runtime 已達嚴格數值同等。
「1.95 倍更快」該怎麼讀?拆成 4 個問題
1. Training-token convergence:成立,但只談 token 預算
報告稱,在同一套 Dolma-3 訓練資料上,NCP 用 OLMo-3-7B 51.3% 的訓練 token,就到達後者最終 pretraining loss;換算是 1.95× 的 token-to-loss convergence。它不是 1.95× wall-clock、吞吐、電費或硬體成本。
2. Analytical compute:85% 有指定分母
論文把 NCP 算成 34 個標準 block 的分析運算量,拿來比較的是參數對齊的 40-block vanilla 模型,所以得到 34 ÷ 40 = 85%。實際 OLMo-3-7B baseline 是 32 個 block;用同一套簡化口徑看,NCP 的 34 並沒有比 32 少。這組受控消融只跑到前 200B tokens,也不能代替完整 5.73T 訓練的同規格硬體計時。
3. Quality:Stage 1 平均上升,不代表每一格都贏
作者報告的 Stage-1「Overall AVG」由 46.59 升至 49.04,增加 2.45 個百分點;GSM8K 增加 5.99 點。這個 Overall AVG 是 26 個異質 benchmark 結果的未加權平均。到了 Stage 2,平均差距縮到 +0.59;其中 HumanEval 低 3.69 點,code-domain average 低 0.65 點。完整規模比較還同時改了參數量與 optimizer,不能把全部差距只歸因於 NCP 目標。比較合理的結論是「有值得追蹤的訊號」,不是「所有能力都更強」。
4. Wall-clock 與硬體成本:這份證據還沒有回答
不同 optimizer、kernel、記憶體流量、跨卡通訊與利用率,都會改變實際時間和價格。官方 model card 也明確把 1.95× 限定為 token-to-reference-loss,並說它不代表 wall-clock 或 inference throughput。因此,看到「1.95×」時先問分母:它回答的是 token 收斂,不是你的帳單。
NCP、NTP、diffusion、cellular automata 差在哪?
- NTP:逐位置學下一個 token;標準自回歸 LLM 的基本目標。
- NCP-ArchPreview:NTP 照常保留,另外預測每 4-token chunk 的 codebook 加權潛在表示,輸出仍逐 token 生成。
- Diffusion language model:D3PM 等方法從被破壞或遮罩的序列反覆去噪,生成軌跡和 NCP 不同。可參考 DiffusionGemma 的 token canvas 實驗與 speculative diffusion 教學。
- Cellular automata:Neural Cellular Automata在 cell 格子上反覆套用共享局部規則;這不是 arXiv 2609.10715 所描述的架構。
最容易記錯的一點是:NCP-ArchPreview 的主模型仍是多尺度自回歸語言模型;NCP 目標本身不是 diffusion 式平行生成機制。這也解釋了為什麼它仍可以接到 speculative decoding 研究;若你想理解 drafter 與 target 的分工,可接著讀 vLLM speculative decoding A/B 教學。
名稱相近但獨立的 Training Language Models via Neural Cellular Automata,是把 NCA 軌跡做成合成 pre-pretraining data;它和本文的 Next Concept Prediction 不是同一個專案,不能混用架構與結論。
目前最值得注意的 6 個限制
- 它是 base model:沒有經過聊天對齊,不應用聊天模型的口吻期待它。
- 「概念」未必可解釋:官方卡明確說單一 concept code 不保證具有人類可讀語意。
- 公開訓練資產仍不完整:截至 2026 年 9 月 13 日,model card 的 Training code 欄仍標示
coming soon;公開的 inference/evaluation 程式不等於完整 NTP+NCP+VQ 從零訓練流程。 - paper 與公開 standalone inference 實作的合併口徑待對齊:論文公式以 softmax 權重組合 codebook;pinned HF config 設為
raw_logits,standalone inference code 直接以 logits 加權 codebook。由於 config/conversion manifest 分別標示parity_candidate/parity_validated=false,這不能反推出私人訓練 graph 的實際行為。 - context 證據邊界是 8,192:不要從 tokenizer 的巨大 sentinel 值誤讀成超長上下文能力。
- 目前證據以作者自報為主:論文附錄 A.2 說 few-shot 選例與生成使用 global random seed 42;主表呈現作者的 point estimates,因此應視為作者報告結果,而不是獨立重現。
另外,報告中的 NCPFlash「+4.17%」指 mean accepted length,不是端到端速度。同一研究團隊後續的 pinned validation,在 vLLM 0.13.0、一組 H200、Stage-2 target+DFlash segmented_kv_approx 的連續佇列設定中,排除 load/warmup 後報告 286.14 對 409.16 tok/s(1.43×);但載入由 26.05 秒增至 40.87 秒,近似路徑的 GSM8K 與 HumanEval 分別低 0.91、4.27 點。這不是獨立重現,也不應外推成所有環境的固定加速。
你現在該做什麼?三種讀者的決策
- AI 初學者:先記住「NTP+每四個 token 一張潛在便條」,不用急著下載 17 GB 權重。
- 模型研究者:先用 pinned revision 對照 paper、config 與 model code,再把 softmax/raw logits、baseline optimizer、200B 消融邊界列進實驗紀錄。
- 想部署的人:先把它視為研究 checkpoint。量測你自己的首 token 延遲、tokens/s、VRAM、輸出品質與失敗率,再決定是否值得進入服務。
如果你的真正目標是建立可重複的模型評估流程,先從 可觀察的 LLM 實驗方法開始,會比直接追逐一個總平均更有用。
FAQ:Next Concept Prediction 常見問題
1. NCP 是 Neural Cellular Automata Programs 嗎?
不是。arXiv 2609.10715 與官方 model card 都把 NCP 展開為 Next Concept Prediction;細胞自動機是另一類方法。
2. NCP-ArchPreview 有取代 next-token prediction 嗎?
沒有。在這個已公開架構中,NTP、NCP 與 VQ 共同訓練,最後仍由 token decoder 自回歸輸出。
3. 一個 concept 就是一句話的主題嗎?
不一定。NCP target 是 mean-pooled 連續潛在表示;VQ 支線另有離散 codeword,預測端則組合 codebook 向量。單一 code 沒有被保證對應人類可讀標籤。
4. 1.95× 代表訓練時間減半嗎?
不能這樣解讀。1.95× 是到達指定 loss 所需 token 數的比值,沒有直接給出 wall-clock、GPU-hours 或費用倍數。
5. 8.94B checkpoint 可以在 16 GB 顯卡跑嗎?
不要只看參數檔就下結論。BF16 權重已約 16.65 GiB,執行時還有其他記憶體需求;官方 quick start 只寫需要「足夠記憶體」的 CUDA GPU,沒有給數字,所以本篇不猜最低 VRAM。
6. 這是聊天模型嗎?
不是。官方卡將目前 checkpoint 定位為 base completion model,而不是 instruction/chat 對齊模型。
7. 現在能從零重跑完整訓練嗎?
本篇不提供這個 walkthrough。截至查核日,官方卡仍將完整 training code 標為 coming soon;checkpoint、推論程式與評測工具已公開,但範圍不同。
8. 現在適合把 NCP 放進正式產品嗎?
先做自己的驗收再決定。它目前最有價值的用途是研究多尺度目標、量化潛在表示與 serving 相容性;正式上線仍要看你的延遲、成本、品質與維運門檻。
給新手的 5 個重點
- NCP 在這篇研究中只代表 Next Concept Prediction。
- 它是 NTP 加上一條每 4-token chunk 的連續潛在表示預測路徑。
- NCP target 是 mean-pooled 連續向量;VQ 支線才做離散指派,預測端以 codeword 組合向量。
- 1.95× 是 training-token convergence;85% 是相對 40-block 參數對齊 baseline 的分析運算口徑。
- 較穩妥的動手方式,是先鎖定 revision 檢查 config、索引與程式碼,再依硬體條件決定是否載入。
接著閱讀
左右滑動查看更多推薦
結語:先驗證名詞,再驗證數字
回到最初那句話:NCP-ArchPreview = NTP +每四個 token 預測下一組連續的潛在便條。這個設計讓「下一個概念」成為可訓練、可檢查的數值目標;但它沒有把 Transformer 變成細胞自動機,也沒有讓 1.95× 自動變成更便宜的帳單。
你現在最值得做的下一步,是依序跑本文三段 inspection 命令,確認 revision、架構與權重規模,再讀一次 paper 的比較分母。想把這套「先拆主張、再設驗收」的方法延伸到更多 AI 工具,可逛 AlphaLab AI 專區,或到 課程頁建立一套可重複的實作流程。






