文件導航

Kev-27B

模型摘要

Kev-27B 是一個決策模型。它讀取一份文件(狀態)和一組關於它的帶型別問題,並在一次前向傳播裡返回每個問題所帶選項上的校準機率分佈,不生成文本。它面向對最多 64k tokens 的文件做分類、路由、分診或檢查、並且需要可以設閾值的機率(例如把不確定的案例送人工複核)的開發者。它實現 TypeSafe 公開的 System One API(POST /v1/systemone),所以 TypeSafe SDK 可以原樣對它使用。本卡描述 version 2,釋出於 2026-09-30:Qwen3.8-27B 的一次完整權重微調,與 version 1 平均。

模型詳情

開發者 Jared Palmer(github.com/jaredpalmer/kev)
模型型別 決策模型:把因果語言模型主幹只做 prefill,配一個在選項上的指標頭
主幹 Qwen/Qwen3.8-27B(revision 1d4bf0f2,Qwen 的後訓練釋出版):64 層,48 個 Gated DeltaNet(線性注意力)和 16 個完全注意力,hidden size 5,120;每個主幹權重都微調過
指標頭 指標頭:兩個 5,120 → 256 投影把每個選項的收尾 token 與問題的末尾 token 打分;softmax 給出機率
參數 主幹 25.6B(視覺塔、LM head 和多 token 預測層不載入),指標頭 2.6M
精度 bf16(一個 51.3 GB 的 checkpoint);以 bf16 服務
上下文 服務最多 65,536 tokens 的 state,另外每個問題至少 8,192 tokens。訓練 state 最多 32,768 tokens。
已驗證上下文長度 65,536 tokens(見 長期文件)
校準 單個溫度,T = 1.32,存在 head.pt 中,載入時施加
語言 英語
許可證 Apache-2.0(權重與指標頭);基座模型為 Apache-2.0
版本 v2 (Kev 1.0),釋出於 2026-09-30,在 jaredpalmer/kev-27b 的 main 上
之前的版本 v1,同一基座上的一個 rank-16 LoRA 介面卡(T = 1.38),在 tag v1-lora;其模型卡是該 tag 上的 README

輸入。 一個 state(文本,或渲染為帶標籤文本的 JSON 物件或陣列)和任意數量的具名問題,每個問題屬於三種類型之一:

型別 選項 輸出
choice 1–255 個具名選項,每個帶可選描述 每個選項一個機率、最可能的選項和一個置信度
score 1–255 個有序檔位 每個檔位一個機率和期望檔位索引
noul 是 / 否,帶可選描述 為是的機率

每個問題都作為它自己的一行作答,從共享 state 續接,所以問題之間不能相互影響;state 只計算一次並快取。

預期用途

  • 文件上的帶型別決策:分類、路由、分診、抽取選擇、政策與資格檢查,以及對照明示判據評判一個提議答案。
  • 依據置信度行動的工作流:自動化有把握的案例、把其餘排隊,閾值在使用者自己工作負載的標註樣本上凍結。
  • 對 System One 端點做自託管、即插即用的替換。

範圍外用途

  • 文本生成、對話、摘要或開放式問答。模型只對它被給出的選項打分。
  • 未經人工複核、對人有法律、醫療、金融、僱傭或類似後果的全自動決策。
  • 答案依賴 state 裡沒有、也非常識的事實的問題(模型無法查任何東西),以及知識密集型考試(見 侷限)。
  • 超過 65,536 tokens 的 state、英語以外的語言,以及小於 80 GB 級 GPU 或約 96 GB 記憶體 Mac 的硬體(見 侷限)。

如何使用

用 Kev 倉庫在一張 B200、H200 或 H100 80 GB GPU 上服務它。權重佔 51 GB,伺服器常駐約 65.5 GB;一個 64k token 的 state 在 H200 上峰值 87.1 GB,一個 32k token 的 state 峰值 78.7 GB,所以最長的 state 需要超過 80 GB。

git clone https://github.com/jaredpalmer/kev.git && cd kev && uv sync --extra serve
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-27b --port 8008          # v2 (this card)
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-27b@v1-lora --port 8008  # v1

在 Apple Silicon 上同一命令會通過 MLX 服務(自動選擇),按儲存的樣子載入完整 bf16 權重,不做任何合併。這條路徑預計能在 96–128 GB 的 Mac 上工作,但尚未在這個規模上執行過(見 侷限)。

from typesafe_sdk import Choice, Noul, TypeSafeClient

client = TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8008", model="kev-latest")
response = client.system_one(
    state="I was charged twice for order 1182. Please refund one of the charges.",
    questions={
        "team": Choice(instructions="Which team should handle this?",
                       criteria={"billing": "Charges and refunds", "shipping": "Deliveries", "returns": "Exchanges"}),
        "urgent": Noul(instructions="Does this need a reply today?"),
    },
)
print(response.choices["team"].choice, response.nouls["urgent"].noul)

校準溫度預設施加;KEV_TEMPERATURE=1.0 返回原始機率。伺服器使用 bf16、融合 DeltaNet 核心和 CUDA graphs;KEV_DTYPE=fp32 選擇用於評測的確切路徑。

訓練資料

在一個私有語料上訓練一個 epoch,145,840 條記錄(337,130 個問題),state 最多 32,768 tokens。只有它的 manifest 是公開的(GitHub 倉庫裡的 evals/sft-v2-r22/manifest.json)。

元件 記錄數 內容與標籤
Kev 語料 78,786 Kev-27B v1 的訓練集(十個公開分類資料集、生成的政策與規則記錄、日期算術與缺失證據案例、埋藏事實的長 state);Kev 的技能(hard-v1)、開發者工具(devtools-v1)和消費投訴(documents-v1)套件的訓練劃分;24 個公開資料集各上限 500 條記錄;七個生成家族(長文件、工具路由、檢索、意圖、rubric 評判、棄答、數值推理)
授權任務家族 24,000 來自一個公開多工集合的 119 個任務家族,其許可證允許商業使用,標籤為原生標籤;家族名單不公開
長 state 3,200 嵌入 8k–32k token 文件的 Kev 語料 state;標籤原樣繼承
長文件 7,617 由程式碼組裝的文件,標籤由程式碼計算
域外決策 7,312 多種領域中生成的決策
語氣 7,544 同一段文本寫成平靜、沮喪或憤怒的最小對
Prompt 注入 2,699 識別間接 prompt 注入(防禦性)
Agent 會話 4,875 關於程式碼生成的 agent 會話日誌的問題
PII 4,152 對程式碼插入的個人資料做分類(全部虛構)
Grounding 5,655 一個主張是否被文件支援

來源與標籤。 公開資料集列在本卡的後設資料裡;兩個開發者工具來源 CodeReviewer 和 FlakeFlagger 來自 Zenodo,CodeReviewer 的 diff 只保留來自寬鬆許可專案。生成的文本與標籤來自程式碼或開放權重模型(GLM-5.3、DeepSeek-V4-Pro、Inkling、Mistral Large 3、gpt-oss-120b、MiMo-V2.6-Pro)。消費投訴標籤來自開放權重模型,由閉源模型評委和裁決過濾。沒有使用任何 Jev(TypeSafe 的託管決策模型)的輸出。

許可證。 24 個有上限的公開資料集裡有四個是 share-alike:ARC(CC-BY-SA-4.0)、HotpotQA(CC-BY-SA-4.0)、Natural Questions(CC-BY-SA-3.0)和 SNLI(CC-BY-SA-4.0);其餘是 CC-BY-4.0、MIT 或 Apache-2.0。CFPB 投訴敘述是美國政府作品。GLM-5.3 的許可是 MIT 風格,對超大型 model-as-a-service 運營者有一條附加條件。逐來源許可證、revision 和署名記錄在元件 manifest 裡。

汙染篩查。 訓練前,每條記錄都對照 102 個評測劃分(76,549 個參考條目)篩查:每個凍結的 Kev 套件、私有評測集、JevBench 公開條目以及下面的僅評測套件。記錄在以下任一條下被移除:歸一化字串精確匹配、詞 8-gram Jaccard 相似度高於 0.2,或包含度至少 0.5;共移除 6,388 條訓練記錄。

訓練流程

  1. 完整權重微調。 從 Qwen/Qwen3.8-27B 起,在 8 張 NVIDIA H200 GPU 上(FSDP2)訓練一個 epoch。AdamW(β 0.9 / 0.999,weight decay 0.01)配 fp32 主權重和矩,主幹用 bf16;主幹學習率 2e-6、指標頭 1e-4,one-cycle 排程帶 10 % 預熱;梯度範數裁剪到 1.0;每個最佳化器步 128 條記錄(每 GPU 8,2 個累積步),共 1,140 步;seed 0。損失是在每個問題的選項上的交叉熵(資料帶軟目標處用軟目標)。選項順序打亂,隨機插入「none of the above」選項和干擾項。四分之一 state 最多 8,192 tokens 的 choice 記錄還會產生一個最小對:帶「none of the above」選項的那個問題,一次把正確選項放進去、一次把它移除。每個 state 只跑一次,其問題從它分支。
  2. 權重平均。 每個主幹張量是 0.85 × 微調權重 + 0.15 × v1 權重(v1 的 LoRA 介面卡以 fp32 合併進基座),以 fp32 計算並一次性舍入到 bf16。保留微調模型的指標頭。該比例是在開發資料上從六個混合方案(0.85 / 0.70 / 0.50,配任一指標頭)中選出的。
  3. 校準。 單個溫度,T = 1.32,在兩個父模型都沒訓練過的留出資料集的 648 個問題上最小化負對數似然:448 個來自 transfer-r3 的校準劃分(六個公開資料集,QNLI、SciQ、TweetEval-offensive、PAWS、MMLU 和 Emotion,加兩個生成的政策記錄留出家族)和 200 個 MMLU-Pro 問題(transfer-v9 開發)。沒有使用任何訓練語料的劃分,一項檢查發現與訓練資料無重疊。

評測

方法。 每次比較都是與 Kev-27B v1 在相同條目上、各模型在其自身釋出溫度下。測試劃分為本 checkpoint 讀過一次;transfer-v4 測試是鎖定的(每個候選讀一次),並對照事先固定的門檻評判(準確率 ≥ 0.886,Brier ≤ 0.165)。區間是 95 % 配對 bootstrap,重取樣整條記錄(2,000 次重取樣),所以共享同一 state 的問題一起移動。差值以百分點(pp)計。套件如下:

  • breadth-v1:五個領域(知識、語言、檢索、工具、藝術)的 14 個留出公開資料集,從未訓練。
  • tasksource-heldout-v1:與授權元件同一個多工集合的 24 個整任務家族,訓練時留出。
  • hard-v1:程式化標註的技能記錄(長政策、權衡、機率、多跳、日期與數字、評判、棄答);測試劃分留出已訓練生成器的模板。
  • devtools-v1:來自經許可證核查的公開來源的開發者工具決策(程式碼評審、commit 訊息、安全、不穩定測試)。
  • documents-v1 / documents-v2:美國消費金融投訴敘述(CFPB);v2 是私有的留出測試集。
  • transfer-v4:來自六個從未訓練的公開來源的域外決策,加上留出的政策結構。
  • longdoc-v1:最多 64k tokens 的 CUAD 商業合同,以及生成的協議包。

頭條面板排除標籤審計(在本 checkpoint 構建之前完成)認為不健全的條目¹;每次排除都會從兩個模型移除相同的行。

對照 v1 的結果(測試劃分)。

面板(問題數) Kev-27B v2 Kev-27B v1 Δ [95 % CI]
留出公開資料集,breadth-v1,10 個數據集(2,489) 0.832 0.820 +1.2 [+0.3, +2.2]
留出任務家族,tasksource-heldout-v1,17 個家族(2,024) 0.795 0.743 +5.3 [+3.7, +6.8]
技能、開發者工具與文件,合併(2,795) 0.889 0.800 +8.9 [+7.5, +10.3]
  hard-v1(1,088) 0.918 0.749 +16.9 [+14.2, +19.8]
  devtools-v1,審計來源(771) 0.825 0.789 +3.6 [+1.3, +5.9]
  documents-v1(936) 0.908 0.869 +4.0 [+2.1, +5.9]
documents-v2,私有留出(953) 0.921 0.881 +4.0 [+2.0, +6.1]
breadth-v1,全部 14 個數據集(3,089) 0.757 0.748 +0.8 [−0.1, +1.8]
域外,transfer-v4 鎖定測試(656):準確率 0.8887 0.8963 −0.8 [−2.0, +0.5]
域外,transfer-v4 鎖定測試:Brier / ≤ 5 % 誤差下的覆蓋率 0.154 / 0.875 0.160 / 0.835 –

與其他決策模型的比較,在 breadth-v1 測試(全部 14 個數據集)上,用社群 Decision Index 0.2 的隨機校正指數打分(每個資料集 (score − chance) / (1 − chance),在每個領域內取平均,然後 100 × 五個領域的均值)。Jev 經 Vercel AI Gateway 查詢,AutoJev-27B(denis-pplx/autojev-27b,同一基座的完整權重微調)經其自己的伺服器查詢,各一次,在同一批條目上。

Kev-27B v2 Kev-27B v1 Jev AutoJev-27B
指數 [95 % CI] 52.3 [49.2, 55.4] 50.2 [47.0, 53.2] 54.0 [51.2, 57.0] 50.0 [47.0, 53.3]

對照 v1 的指數差是 +2.1 [−0.4, +4.6]。沒有計算對 Jev 的配對區間。

長期文件(longdoc-v1 測試裡的 CUAD 合同,按 token 計的 state 長度給出準確率 / ECE):

state 長度(問題數) Kev-27B v2 Kev-27B v1
8k 以下(867) 0.874 / 0.059 0.900 / 0.025
8k–16k(443) 0.880 / 0.052 0.892 / 0.028
16k–32k(442) 0.873 / 0.061 0.882 / 0.019
32k–64k(442) 0.867 / 0.060 0.876 / 0.014
全部(2,194) 0.874 / 0.053 0.890 / 0.007

跨全部長度的準確率差:−1.6 [−3.0, −0.3]。在生成的協議包(2,400 個問題)上兩個模型都得 1.000。

上下文長度。 已驗證上下文長度:65,536 tokens,即服務上限,來自 longdoc-v1 開發(與 8k 桶配對的 CUAD 準確率差,pp [95 % CI]:16k +0.2 [−0.7, +1.2],32k −0.2 [−1.2, +0.7],64k −1.1 [−2.4, +0.0];各 445–447 個問題)。規則與每個 Kev 1.0 規模所用相同:已驗證長度是從 16,384 tokens 起向下的最大桶的名義大小,使得它以及它與 8,192 之間的每個桶都在容差內,即與 8k 桶相比 CUAD 準確率差,在同一合同、重複和問題上配對,其 95 % 下界至少為 −3 pp,且每條記錄都被作答。

校準(期望校準誤差,ECE,按服務狀態;越低越好):

面板 Kev-27B v2 Kev-27B v1
breadth-v1 測試,10 個數據集 0.015 0.013
tasksource-heldout-v1 測試 0.049 0.051
hard-v1 + devtools-v1 + documents-v1 測試 0.014 0.027
transfer-v4 鎖定測試 0.019 0.018
CUAD 合同,longdoc-v1 測試 0.053 0.007

在 648 個擬合問題上,5 折組不相交交叉驗證把 ECE 從 0.048(原始)降到 0.038(折外);兩個區間重疊。該溫度的 90 % bootstrap 區間是 [1.20, 1.45]。在其兩端,頭條面板朝相反方向移動:breadth-v1 ECE 在 T = 1.20 時升到 0.026,tasksource-heldout-v1 ECE 在 T = 1.45 時升到 0.067。

其他結果。

套件 Kev-27B v2 Kev-27B v1
transfer-v4 開發,準確率 / Brier 0.851 / 0.218 0.848 / 0.229
短 state,transfer-r3 測試(1,150) 0.858 0.879
devtools-v1 測試,全部來源(1,071) 0.790 0.711
decision-v7 開發(v1 的訓練分佈) 0.865 0.866
MMLU-Pro,10 個選項(transfer-v9 開發) 0.675 0.665
以 p ≥ 0.9 作答的無法回答條目(越低越好) 0.00 0.00
SemIf(144) / WANLI-v2(1,002) / TypeSafe(89 個已作答行) 0.965 / 0.756 / 0.854 0.972 / 0.745 / 0.865
已訓練生成器的留出領域,準確率 / ECE:ood-v2(4,988) 0.956 / 0.020 0.944 / 0.044
  agents-ood-v1(2,084) 0.988 / 0.032 0.967 / 0.137
  guardrails-ood-v1(4,949) 0.984 / 0.010 0.944 / 0.079

transfer-r3 測試是一個短 state 面板,來自與校準池相同的八個留出來源;decision-v7 是 v1 的訓練分佈;transfer-v9 裝著 MMLU-Pro 和被移除決定證據的條目。SemIf(SemIf 專案的手寫決策)、WANLI-v2(WANLI 測試劃分的自然語言推理對)和 TypeSafe(SemIf 選的 TypeSafe 工作流案例)僅作報告:標籤審計發現它們太小、飽和或有噪聲,無法用來給模型排名。WANLI-v2 和 TypeSafe 於 2026-09-30 作為評測退役(約四分之一的 WANLI 對被其兩位標註者標得不同,gold 取其中之一;TypeSafe 的 gold 是兩個閉源前沿模型的平均答案,問題太少,無法區分 checkpoint);它們的數字作為記錄保留。

服務一致性(H200,bf16 配融合核心和 CUDA graphs,200 條 decision-v7 開發記錄 / 280 個問題):

檢查 結果
服務 vs fp32 評測路徑,最大 |Δp| 0.0223,沒有答案改變
單個問題 vs 完整請求,最大 |Δp| 0.0039,沒有答案改變
8k / 32k / 64k-token state 下服務 vs 評測,最大 |Δp| 0.0064 / 0.0095 / 0.0017,沒有答案改變
64k-token state 的模型時間,新 state / 快取 state 9.4 s / 733 ms
常駐記憶體 / 從熱快取載入時間 65.5 GB / 17.6 s
1 / 64 個併發客戶端下的吞吐 21.1 / 36.4 請求/s

¹ 從頭條面板中排除:四個 breadth-v1 資料集(routerbench,其 state 缺少所問的資訊;cfcolor 和 humicroedit,對每個系統都處於隨機水平;chessbench,對每個系統都處於下限);七個標籤無效或無法恢復的 tasksource-heldout-v1 家族(名字不公開);以及兩個 state 無法決定其標籤的 devtools-v1 任務(flakeflagger、commit 變更型別)。transfer-r3 的 emotion 來源(遠端關鍵詞標籤)從 侷限 裡的短 state 面板中排除。

侷限與取捨

  • 選擇。 釋出的 checkpoint 是在已知一個更早候選的測試結果後選出的,並在同一批測試集上確認。把測試餘量當作偏樂觀。
  • 短 state 上沒有增益。 它在短輸入上不比 v1 更好:鎖定的 transfer-v4 測試 −0.8 pp [−2.0, +0.5],短 state 開發面板(transfer-v4 開發加不含 emotion 的 transfer-r3 測試)−0.9 pp [−2.0, +0.1],整個 transfer-r3 測試 −2.1 pp [−3.5, −0.8]。
  • 在長合同上更差且過度自信。 在 CUAD 上它比 v1 低 1.6 pp 準確,且 ECE 在每個長度上都是 v1 的 2 到 4 倍(總體 0.053 對 0.007)。CUAD 的問題裡有一些錯誤或有爭議的 gold 標籤,但差距在各長度上是一致的。做合同審查時,在你自己的標註文件上重擬合溫度(python -m kev.calibrate),或改用 v1。
  • 分佈內增益。 hard-v1、devtools-v1 和 documents-v1 的訓練劃分就在訓練資料裡,而 ood-v2、agents-ood-v1 和 guardrails-ood-v1 套件是也產生了訓練資料的生成器的留出領域。那裡的增益測的是已訓練家族的留出條目,不是到新任務的遷移。
  • 基座訓練未知。 基座是 Qwen 的後訓練釋出版;其訓練資料不為人知,所以無法排除它與任何評測的重疊。
  • 知識。 知識由基座決定:MMLU-Pro 是 0.675,對 Jev 在同一批條目上的 0.840。
  • 未訓練的長度。 32k–64k tokens 的 state 經過評測(longdoc-v1)但未訓練。
  • 退役套件。 一個用來選 v1 的支援工單套件(scienthoon)在 v2 構建前作為不健全退役,所以 v2 在它上面沒有結果。v2 未平均的微調父模型在那裡比 v1 低 5.5 pp [−7.8, −3.2]。
  • 溫度不確定性。 溫度的區間([1.20, 1.45])讓測試 ECE 移動最多約 0.02。
  • 硬體。 它需要一張 80 GB 級資料中心 GPU(最長的 state 需要超過 80 GB)。經 MLX 在 Apple Silicon 上:v2 的完整 bf16 權重需要約 51 GB 加工作記憶體,所以 64 GB Mac 是邊界,96–128 GB Mac 應該能裝。這是從更小模型上的測量推斷的,尚未在大 Mac 上測量:通過同一路徑載入完整權重 Kev-4B 的峰值就是其權重大小(8.4 GB),其答案與 fp32 評測路徑相差在 0.015 以內(runs/mlx-full-4b)。v1(LoRA 介面卡,tag v1-lora)由外部貢獻者在一臺 128 GB M5 Max 上通過 MLX 服務(PR #175):transfer-v4 開發上準確率 0.849,對釋出的 0.848,介面卡合併時穩態 52 GB、峰值 97 GB。

偏見、風險與倫理考量

  • 校準機率可能製造不當的信任。溫度是在公開留出資料集上擬合的,不遷移到每個工作負載;在設閾值之前,先在你自己的標註樣本上測量準確率與校準。
  • 準確率和校準會隨領域變化而偏移(例如在長合同上)。請監控生產錯誤率,而不是依賴上面的數字。
  • 未經人工複核,不要用它做關於人的有後果的自動決策。基座模型和訓練資料的偏見(包括其他模型產生的標籤)未被測量。
  • state 可能包含個人或機密資料。自託管把輸入留在你自己的硬體上;除非設定了 KEV_API_KEY,伺服器是開放的,所以請應用你自己的訪問控制與資料處理策略。

算力

  • 微調:8 × NVIDIA H200,16.2 h 訓練時間(129 GPU-hours),不含重啟和評測。
  • 權重平均:CPU 上約 6 分鐘。
  • 評測與服務檢查:Modal 上的單張 H200 GPU。

溯源與可復現性

  • 程式碼、套件與評測報告:github.com/jaredpalmer/kev。釋出數字:runs/release/kev-27b-r23.json(scripts/release_numbers.py --release kev-27b-r23)。
  • 微調:第 22 輪試驗 r22-27b-lr2e6/00-trial-0(experiments/round22/lr2e6.json),權重 sha256 3fa0182a…。混合:第 23 輪臂 27b-k-w85(scripts/interpolate_checkpoint.py --toward;Hub 倉庫裡的 interpolation.json),選擇規則和確認階段在 experiments/rounds/r23.json;結果在 runs/r23-readout/、runs/r23-verdict/、runs/r23-breadth-report/、runs/serving-27b-r23*/。
  • 混合來源:v1 在 jaredpalmer/kev-27b@01b81998(試驗 r6-27b-v2/01-trial-1),現 tag v1-lora。
  • 釋出的權重 sha256 d27af6ab2be16824166ac639907b4dba40979ff338599c2872721aa6c5072022;head.pt sha256 7968f17b03479c1ef9d1c0f3ab8a15e31ecb441cf40691b07ee945ab554d45ad(T = 1.3195)。權重發佈於 Hub commit 28be62e9。
  • 驗證:在 H200 上從 Hub 匿名載入,它在 252 個 SemIf 行中的 252 個和 764 個 transfer-v4 開發行中的 764 個上精確復現了釋出前評測的 logits(runs/release/kev-27b-r23-published.json、runs/release/kev-27b-r23-staging.json)。

引用

@misc{palmer2026kev27b,
  title        = {Kev-27B: a calibrated decision model on Qwen3.8-27B},
  author       = {Palmer, Jared},
  year         = {2026},
  howpublished = {\url{https://huggingface.co/jaredpalmer/kev-27b}},
  note         = {Version 2, released 2026-09-30}
}

聯絡

問題與 issue:github.com/jaredpalmer/kev/issues。