跳至主要內容

工具與應用

Perplexity 開源輕量多模態決策模型 pplx-decider-flash-v1.2:以七分之一體積保留 27B 核心決策能力

Perplexity AI 在 Hugging Face 釋出輕量級多模態決策模型 pplx-decider-flash-v1.2,基於 Qwen3.5-4B 架構透過全機率分佈知識蒸餾,以約 9 GiB VRAM 需求提供高效率結構化決策能力。

Perplexity 開源輕量多模態決策模型 pplx-decider-flash-v1.2:以七分之一體積保留 27B 核心決策能力

摘要:Perplexity AI 在 Hugging Face 釋出輕量級多模態決策模型 pplx-decider-flash-v1.2,基於 Qwen3.5-4B 架構,透過知識蒸餾與模型權重平均(Model Souping)技術,從 27B 規模的 pplx-decider-v1.2 蒸餾而成。該模型支援文字與最高 1.6 MP 的圖像輸入,僅需約 9 GiB 的 BF16 顯示記憶體即可部署,適合對延遲與推論成本高度敏感的分類、路由與評分場景。

模型定位與核心架構

在實際生產環境中,將龐大的生成式語言模型用於分類、客服工單路由、工具檢索或內容審核,往往面臨延遲過高與算力成本昂貴的問題。Perplexity AI 推出的 pplx-decider-flash-v1.2 專為結構化決策任務設計,採用 Apache 2.0 授權條款開放權重。

pplx-decider-flash-v1.2 是 pplx-decider-v1.2(基於 Qwen3.8-27B)的小型化版本,參數規模約為 5B(基於 Qwen3.5-4B-Base 與 Qwen3.5-4B 微調),體積僅為 27B 版本的七分之一左右。模型具備以下四項核心設計特點:

  • 全機率分佈知識蒸餾:學生模型在訓練過程中直接學習 27B 教師模型在訓練請求上的完整機率分佈,而非僅學習單一正確答案標籤,使小模型在未見過的決策任務(Held-out Tasks)上也具備良好的泛化能力。
  • 權重平均(Model Souping):模型結合了多次訓練運行的權重進行平均,在各項基準測試之間取得穩健的平衡。
  • 分離式決策讀取頭(Readout Head):模型不使用傳統的完整詞表語言模型頭(lm_head),而是配置一個 BF16 格式、維度為 [255, 2560] 的專屬決策讀取頭(readout.safetensors),並在每個問題結尾的 <|fim_suffix|> 標記位置直接讀取最多 255 個選項的 Logits。
  • 混合注意力機制:完整注意力層(Full-attention layers)在整個請求序列上採用非因果(Noncausal)雙向注意力,而線性注意力層(Linear-attention layers)則維持原生因果行為。因此,一般預設的因果推論框架無法直接重現該模型的結果,需搭配官方提供的 pplx_decider 套件執行。

基準測試表現:Decision Index 0.3 與視覺能力

根據官方公布的 Decision Index 0.3 公開基準測試與視覺決策測試結果,pplx-decider-flash-v1.2 在大幅縮減參數量的同時,保留了 27B 模型大部分的分類與多模態判斷能力,在工具調用(Tools)與檢索(Retrieval)項目上表現尤為接近。

評估類別 (Decision Index 0.3)pplx-decider-flash-v1.2 (合併請求)pplx-decider-flash-v1.2 (單題獨立請求)pplx-decider-v1.2 27B (合併請求)
Knowledge (知識)42.041.456.3
Language (語言)63.365.072.8
Retrieval (檢索)64.865.268.4
Tools (工具)76.780.984.4
Arts (藝術與人文)46.846.856.2
Overall Decision Index (總分)58.8860.0568.09
Vision Decision Index 0.3 (最高 1.6 MP 圖像)72.5372.5377.43

官方同時在致謝中提及,模型有相當比例的效能提升來自於 tasksource 資料集框架(LREC-COLING 2024)。

三種結構化問題類型與 API 介面

pplx-decider-flash-v1.2 與 27B 版本共用相同的 API 與請求結構。每個請求包含一段上下文狀態(state,支援字串、字典或列表,非字串會自動序列化為 JSON)、選填的圖片列表(images),以及一個或多個問題(questions)。模型支援三種決策題型:

問題類型 (type)條件設定 (criteria)回傳結果 (Answer)典型應用場景
choice (單選/多類別){選項名稱: 描述或 None},支援 1 至 255 個選項最優選項 (choice)、各選項機率分佈 (probabilities)、信心度 (confidence)客服工單分派、意圖識別、多選一路由
noul (二元是非題)選填 {"true": 描述, "false": 描述}為真機率 noul = P(true)(排序時建議使用 true - false 的 Logit 差值以避免機率飽和)緊急程度判斷、合規過濾、垃圾訊息偵測
score (等級評分)2 至 255 個由低至高的等級描述列表期望等級指標 (score)、各等級機率 (probabilities)、圖例 (legend)、信心度 (confidence)客戶情緒評估、內容品質打分、風險分級

關鍵實務建議:何時該合併問題(Joint Requests)?

雖然模型支援將同一個 state 下的多個問題打包進同一個序列中一次讀取(Joint Requests),但官方測試顯示,對於輕量版的 pplx-decider-flash-v1.2 而言,預設每次請求只發送一個問題(One question per request)是更安全的做法。

由於完整注意力層是非因果的,同一個請求中的所有問題都會互相注意(Attend)到彼此。只有當多個問題屬於同一個決策的緊密耦合面向時,合併請求才會帶來正面效益;若將相互獨立的候選項目放在同一個請求中評分,準確率反而會明顯下降:

測試任務問題性質合併請求 vs. 單題獨立請求得分差異
SATA-Bench (多選題)每個選項作為一個問題+6.6
Home appliance simulator同一任務的多個步驟+3.4
FinEntity (金融實體識別)同一文本中的各個實體+2.9
PhishNChips (釣魚郵件檢測)同一封訊息的多個特徵面向+2.0
BRIGHT (推理密集型檢索)每個候選文件一個問題-4.2
ToolRet (工具檢索)每個候選工具一個問題-7.5
BFCL (函式調用)每個候選調用一個問題-15.4
ACOS (面向類別情感分析)每個類別一個問題-20.1

因此,在實務部署上建議遵循兩個原則:

  • 獨立候選項目分開請求:對檢索文件、工具候選或函式調用進行排序時,請將每個候選項目拆分為獨立請求。搭配官方的 Fast Path(fast=True)無填充序列打包(Padding-free packing)機制,大量小型獨立請求依然能維持極低的運算成本。
  • 僅在多標籤或單一路由步驟時合併:只有在處理「選出所有符合項目(Select all that apply)」或單一決策的多個子步驟時,才將問題合併於同一請求。

硬體需求、Fast Path 加速與長文本限制

根據 pplx-decider-flash-v1.2 官方文件,部署與推論的關鍵技術規格如下:

  • 硬體與環境需求:需要 Python 3.12 以上版本,以及具備約 9 GiB BF16 權重空間加上工作記憶體的 CUDA GPU(相較之下,27B 版本需要約 52 GiB 顯示記憶體)。該儲存庫為 Private 狀態,下載時需設定具備存取權限的 Hugging Face Access Token。
  • 溫度校準(Temperature Calibration):decision_config.json 內建在保留校準集上擬合的溫度參數(此檢查點為 1.554)。在 1,497 題開發集上,套用溫度校準後的準確率為 88.8%,預期校準誤差(ECE)由 0.057 降至 0.021,Brier Score 由 0.173 優化至 0.163。
  • 圖像處理規格:圖片會置於文字請求之前,所有問題皆可讀取圖片內容。每張圖片會維持長寬比縮放至最高 1,638,400 像素(1.6 MP,約佔用 1,600 個序列位置),小於此尺寸的圖片則維持原狀(下限為 65,536 像素)。
  • 上下文長度與自動切分:骨幹網路的位置上限(max_length)預設為 262,144 tokens,實際訓練序列長度約為 32k tokens。官方抽樣測試顯示,在單張 NVIDIA GB200 上從長達 243k tokens 的日誌中檢索單一事實,正確率 P(correct) 超過 0.999,峰值顯示記憶體約為 39 GiB(Reference Path,耗時約 1 分鐘)或 54 GiB(Fast Path,耗時約 20 秒)。當請求超過 max_length 時,系統不會截斷輸入,而是自動將問題列表遞迴對半切分,並保留完整的 state 與圖片。
  • Fast Path 編譯加速:啟用 Decider.from_pretrained(..., fast=True) 後,系統會將多個請求打包為無填充序列、編譯 Decoder 層並重播 CUDA Graphs(需安裝 requirements-fast.txt 與 flash-linear-attention)。建議在服務啟動時呼叫 decider.warmup() 預先完成編譯。

快速上手程式碼範例

安裝官方儲存庫中的相依套件後,即可透過以下 Python 程式碼載入模型並同時執行單選分派(choice)、是非判斷(noul)與情緒評分(score):

import sys
from pathlib import Path
from huggingface_hub import snapshot_download

checkpoint = Path(snapshot_download("perplexity-ai/pplx-decider-flash-v1.2"))
sys.path.insert(0, str(checkpoint / "source" / "src"))

from pplx_decider import Decider

decider = Decider.from_pretrained(checkpoint, device="cuda")

response = decider.decide({
    "state": "My integration keeps failing with a 401 since we rotated our API key. Please help.",
    "questions": {
        "team": {
            "type": "choice",
            "instructions": "Which team should handle this request?",
            "criteria": {
                "billing": "Charges and refunds",
                "support": "Technical integration errors",
                "sales": "Questions about buying a product",
            },
        },
        "urgent": {
            "type": "noul",
            "instructions": "Is the customer blocked right now?"
        },
        "frustration": {
            "type": "score",
            "criteria": ["calm", "mildly annoyed", "frustrated", "angry"]
        },
    },
})

print(response["answers"]["team"]["choice"], response["answers"]["urgent"]["noul"])

常見問題(FAQ)

1. pplx-decider-flash-v1.2 與 pplx-decider-v1.2 (27B) 該如何選擇?

當應用場景對推論延遲、吞吐量或 GPU 顯示記憶體成本(9 GiB vs. 52 GiB)有嚴格限制時,優先選擇 pplx-decider-flash-v1.2。它在工具檢索(單題請求得分 80.9 vs. 27B 的 84.4)與視覺決策(72.53 vs. 77.43)上保留了絕大多數的準確度;若任務需要較複雜的跨領域知識推理(Knowledge 類別 42.0 vs. 56.3),則建議使用 27B 版本的 pplx-decider-v1.2。

2. 為什麼直接使用 Hugging Face Transformers 的預設因果推論無法重現模型表現?

因為 pplx-decider-flash-v1.2 的完整注意力層採用非因果(Noncausal)注意力機制,且輸出並非透過標準 lm_head 在最後一個 token 生成,而是在每個 <|fim_suffix|> 標記位置透過專屬的 [255, 2560] 讀取頭(readout.safetensors)提取機率。部署時必須使用內附的 pplx_decider 套件或支援非因果注意力與標記讀取的推論系統。

3. 可以使用 v1.1 版本的單題 Prompt 格式嗎?

不行。pplx-decider-flash-v1.2 採用 joint-question-inline-readout-v1(Version 3)協議,必須透過 pplx_decider 建構請求格式,直接沿用 pplx-decider-v1.1-27b 的舊版 Prompt 會產生不一致的結果。

相關連結

謝謝你,讀到這裡。

保持好奇,明天繼續探索。

© 2026 Communeify. All rights reserved.