文件導航

Kev-9B

模型摘要

Kev-9B 是一個決策模型。它讀取一份文件(狀態)和一組關於它的帶型別問題,並在一次前向傳播裡返回每個問題所帶選項上的校準機率分佈,不生成文本。它面向對文件做分類、路由、分診或檢查、並且需要可以設閾值的機率(例如把不確定的案例送人工複核)的開發者。它實現 TypeSafe 公開的 System One API(POST /v1/systemone),所以 TypeSafe SDK 可以原樣對它使用。它是 Qwen3.5-9B-Base 上的一個 LoRA 介面卡和一個指標頭,能放進一張 24 GB 級 GPU。本卡描述 version 2,釋出於 2026-09-30,包含在 Kev 1.0 中。

模型詳情

開發者 Jared Palmer(github.com/jaredpalmer/kev)
模型型別 決策模型:把因果語言模型主幹只做 prefill,配一個在選項上的指標頭
主幹 Qwen/Qwen3.5-9B-Base(revision 68c46c4b):32 層,24 個 Gated DeltaNet(線性注意力)和 8 個完全注意力,hidden size 4,096;凍結
介面卡 LoRA,rank 16,α 32,作用於注意力、MLP 和 DeltaNet 投影(45.4M 參數)
指標頭 指標頭:兩個投影把每個選項的收尾 token 與問題的末尾 token 打分;softmax 給出機率
精度 用 bf16 autocast 在 fp32 權重上訓練;以 bf16 服務(載入時把介面卡合併進基座);以 fp32 評測
上下文 服務最多 65,536 tokens 的 state,另外每個問題至少 8,192 tokens。訓練 state 最多 7,552 tokens。
已驗證上下文長度 8,192 tokens(見 長期文件)
校準 單個溫度,T = 2.19,存在 head.pt 中,載入時施加
語言 英語
許可證 Apache-2.0(介面卡與指標頭);基座模型為 Apache-2.0
版本 v2 (Kev 1.0):jaredpalmer/kev-9b 的 main,revision b5d8c18e(釋出於 2026-09-30)
之前的版本 v1,同一配方但無 documents 與 skills 階段(T = 2.30),在 tag v1;其模型卡是該 tag 上的 README

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

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

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

預期用途

  • 幾千 token 文件上的帶型別決策:分類、路由、分診、抽取選擇、政策與資格檢查,以及對照明示判據評判一個提議答案。
  • 依據置信度行動的工作流:自動化有把握的案例、把其餘排隊,閾值在使用者自己工作負載的標註樣本上凍結。
  • 在單張 24 GB 級 GPU 上對 System One 端點做自託管、即插即用的替換,以及作為在使用者自己標籤上微調的起點(kev.train --init_from jaredpalmer/kev-9b)。

範圍外用途

  • 文本生成、對話、摘要或開放式問答。模型只對它被給出的選項打分。
  • 未經人工複核、對人有法律、醫療、金融、僱傭或類似後果的全自動決策。
  • 答案依賴 state 裡沒有、也非常識的事實的問題,以及知識密集型考試(見 侷限)。
  • 不使用 KEV_DATE_FACTS=1 前處理器時的日精度日期算術、超過 65,536 tokens 的 state,以及英語以外的語言。

如何使用

用 Kev 倉庫服務它。在 CUDA 上它以 bf16 執行,帶融合 DeltaNet 核心和 CUDA graphs(一張 L40S 或 H100;常駐約 22 GB);在 Apple Silicon 上同一命令會通過 MLX 服務它,自動選擇。

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-9b --port 8008          # v2, Kev 1.0 (this card)
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-9b@v1 --port 8008       # v1
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 返回原始機率。KEV_DTYPE=fp32 選擇用於評測的確切路徑。KEV_DATE_FACTS=1 追加 state 中每一對日期之間的天數,模型被訓練來使用它。超過 65,536 tokens 的 state 會被拒絕,返回 422 並給出其 token 數。

訓練資料

階段 記錄數 內容與標籤
基礎配方(decision-v7) 12,576 來自十個公開分類資料集的 10,000 條記錄(各 1,000,列在本卡的後設資料裡)及其原生標籤;896 條覆蓋九個模板家族的生成的策略最小對;1,680 條來自 60 個隨機生成規則結構的記錄,四種渲染;標籤由程式碼計算
日期與缺失證據 1,425 生成:900 個帶日期的政策案例(普通、帶一句天數計數、或帶 date_facts 欄位);255 個去掉決定句並配均勻目標的案例,外加 270 個完整對照
文件與技能,一個階段 16,539 documents-v1 train:5,219 條美國消費金融投訴敘述(CFPB,最多約 7k tokens),配 7,488 個問題,標籤在兩個開放權重教師與消費者自己的申報一致時才保留。hard-v1 train:6,000 條程式化標註的記錄,分七個技能家族(長政策、權衡、機率、多跳、日期與算術、評判一個提議答案、缺事實棄答),模板 0–3。devtools-v1 train:5,320 條來自 CodeReviewer、CommitPackFT、FlakeFlagger 和 Aegis 的記錄,各用其資料集自身的標籤

兩個微調階段分別回放 decision-v7 的 2,000 和 10,000 條記錄。沒有使用任何 Jev(TypeSafe 的託管決策模型)的輸出。CodeReviewer 和 FlakeFlagger 來自 Zenodo;CFPB 敘述是美國政府作品;逐來源許可證和 revision 記錄在套件 manifest 裡。下面的評測專用套件(breadth-v1、tasksource-heldout-v1、transfer-v4、longdoc-v1,以及 devtools-v1 的 When2Call 和 prompt-injection 來源)從不進入訓練。

訓練流程

  1. 基礎配方。 從基座在 decision-v7 上兩個 epoch:LoRA rank 16,α 32;學習率 5e-5,one-cycle 排程;有效 batch 8(4 × 2 累積);bf16 autocast,梯度 checkpointing。損失是在每個問題的選項上的交叉熵。選項順序打亂,隨機插入「none of the above」選項和干擾項,另有四分之一的 choice 記錄產生一個最小對(帶「none of the above」選項的那個問題,一次把正確選項放進去、一次把它移除)。
  2. 日期與缺失證據。 從階段 1 起一個 epoch,學習率 2e-5,回放 2,000 條記錄。這就是 v1。
  3. 文件與技能。 從 v1 起,在三個訓練集上一起一個 epoch,學習率 2e-5,回放 10,000 條記錄;batch 2 × 4 累積;state 最多 7,552 tokens;seed 1;3,318 個最佳化器步。
  4. 校準。 單個溫度,T = 2.19,在來自留出資料集的 648 個問題上最小化負對數似然:448 個來自 transfer-r3 的校準劃分(六個公開資料集,QNLI、SciQ、TweetEval-offensive、PAWS、MMLU 和 Emotion,加兩個生成的政策記錄留出家族)和 200 個 MMLU-Pro 問題(transfer-v9 開發)。擬合前,該池已對照 checkpoint 的訓練套件檢查過。

評測

方法。 每次比較都是與 Kev-9B v1 在相同條目上、各模型在其自身釋出溫度下(v1:2.30)。比較及其門檻在確認讀數之前註冊;測試劃分為本 checkpoint 讀過一次;transfer-v4 測試是鎖定的(每個候選讀一次)。配對區間是 95 % bootstrap,重取樣整條記錄(2,000 次重取樣),所以共享同一 state 的問題一起移動。差值以百分點(pp)計。Jev(TypeSafe 的託管模型,經 Vercel AI Gateway 查詢)只在與它讀過同一批條目的地方給出。套件如下:

  • breadth-v1:五個領域(知識、語言、檢索、工具、藝術)的 14 個留出公開資料集,從未訓練。
  • transfer-v4:來自六個從未訓練的公開來源的域外決策,加上留出的政策和規則結構。
  • transfer-r3:一個短 state 面板,來自與校準池相同的八個留出來源。
  • hard-v1:上述技能家族;測試劃分留出已訓練生成器的模板。
  • devtools-v1:來自六個經許可證核查的來源的開發者工具決策(四個訓練,兩個僅評測)。
  • documents-v1 / documents-v2:CFPB 投訴敘述;v2 是私有的留出測試集。
  • longdoc-v1:CUAD 商業合同和生成的協議包,state 4k 到 64k tokens。

devtools-v1 頭條面板排除兩個 state 無法決定其標籤的任務(flakeflagger、commit 變更型別);相同的行從雙方移除。

對照 v1 的結果(註冊確認)。

面板(問題數) Kev-9B v2 Kev-9B v1 Δ [95 % CI]
hard-v1 + devtools-v1 開發,審計(1,855) 0.821 0.628 +19.3 [+17.2, +21.6]
documents-v1 開發(920) 0.902 0.833 +7.0 [+4.8, +9.2]
短 state:transfer-v4 開發 + transfer-r3 測試,不含 emotion(1,586) 0.871 0.871 +0.1 [−1.1, +1.2]
hard-v1 + devtools-v1 測試,審計(1,859) 0.822 0.635 +18.7 [+16.7, +20.8]
documents-v1 測試(936) 0.900 0.829 +7.1 [+4.7, +9.2]
域外,transfer-v4 鎖定測試(656):準確率 0.852 0.852 +0.0 [−1.7, +1.8]
transfer-v4 鎖定測試:服務 Brier 0.199 0.224 −0.025 [−0.047, −0.007]

留出資料(從未訓練)。

面板(問題數) Kev-9B v2 Kev-9B v1 Jev
breadth-v1 開發,全部 14 個數據集(3,075) 0.700 0.697 0.757
breadth-v1 測試,全部 14 個數據集(3,089) 0.698 0.692 0.757
breadth-v1 測試,隨機校正指數¹ [95 % CI] 41.0 [38.8, 43.9] 40.0 [38.1, 43.0] 54.0 [51.2, 57.0]
域外,transfer-v4 開發(656):準確率 / Brier 0.820 / 0.262 0.822 / 0.264 0.857 / 0.211
transfer-v4 鎖定測試:ECE / 自信錯誤(p ≥ 0.9 且答錯) / ≤ 5 % 誤差下的覆蓋率 0.034 / 1.4% / 0.742 0.042 / 3.2% / 0.645 –
短 state,transfer-r3 測試(1,150) 0.847 0.847 –
MMLU-Pro,10 個選項(transfer-v9 開發) 0.590 0.515 0.840
以 p ≥ 0.9 作答的無法回答條目(越低越好) 0.00 0.00 0.09

對照 v1,breadth-v1 準確率差在開發上是 +0.3 [−0.7, +1.3],在測試上是 +0.6 [−0.4, +1.6]。tasksource-heldout-v1 開發已為本 checkpoint 讀取,但其讀數尚未完成;這裡不報告。

已訓練家族(留出條目與模板)。

面板(問題數) Kev-9B v2 Kev-9B v1 Jev
hard-v1 開發(1,083) / 測試(1,088) 0.813 / 0.834 0.574 / 0.584 0.777 / –
devtools-v1 開發(1,072) / 測試(1,071),全部來源 0.772 / 0.791 0.631 / 0.637 0.713 / –
documents-v1 開發(920) / 測試(936) 0.902 / 0.900 0.833 / 0.829 0.868 / –
documents-v2,私有留出測試(953) 0.900 0.821 –
decision-v7 開發(1,264) / 鎖定測試(1,200) 0.874 / 0.873 0.872 / – 0.845 / –
生成決策的留出領域,ood-v2(4,988) 0.889 – –

對照 v1 的測試差:hard-v1 +25.0 [+22.0, +28.1],devtools-v1(全部來源)+15.4 [+11.0, +19.4],documents-v2 +8.0 [+5.9, +10.2]。

長期文件。

  • 已驗證上下文長度:8,192 tokens,即訓練長度。16k 桶超出容差:其下界為 −3.7 pp,低於 −3 pp,所以沒有更長的長度被驗證。
  • 規則,讀數之前固定:已驗證長度是從 16,384 tokens 起向下的最大桶的名義大小,使得它以及它與 8,192 之間的每個桶都在容差內。在容差內意味著與 8k 桶(state 6,553–7,618 tokens,即訓練長度)相比 CUAD 準確率差,在同一合同、重複和問題上配對,其 95 % 下界至少為 −3 pp,且每條記錄都被作答。若 16k 桶失敗,已驗證長度為 8,192 tokens。

按名義 state 長度的 CUAD 準確率、ECE 和與 8k 桶的配對差(longdoc-v1 開發):

名義 state 長度 CUAD 問題數 準確率 ECE 相對 8k 的 Δ,pp [95 % CI]
4k 443 0.876 0.049 –
8k 453 0.850 0.051 參考
16k 452 0.839 0.033 −1.4 [−3.7, +0.9]
32k 454 0.819 0.041 −3.6 [−6.4, −0.9]
64k 452 0.801 0.056 −5.2 [−7.9, −2.5]

在釋出溫度 T = 2.19 下的 ECE。Δ 在兩種長度上問及同一合同的 445–447 個問題上配對。4k 桶裝著不同的合同,不是該規則的參考。來源:runs/r28-readout/context.json(第 28 輪註冊的讀數,runs/r29-9b-r18a-longdoc)。

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

面板 Kev-9B v2 (T = 2.19) Kev-9B v1 (T = 2.30)
breadth-v1 測試,全部 14 個數據集 0.034 0.044
transfer-v4 開發 / 鎖定測試 0.041 / 0.034 0.042 / 0.042
hard-v1 測試 0.054 0.075
devtools-v1 測試,全部來源 0.098 0.147
documents-v1 測試 0.017 0.103

該溫度的 90 % bootstrap 區間是 [2.05, 2.41]。v1 的 2.30 是在其自身訓練分佈的開發行上擬合的;v2 是第一個在留出資料集上擬合的溫度下服務的 9B。

其他結果。

套件 Kev-9B v2 Jev
日期算術,deadline 政策(transfer-v9 開發) 0.725 0.95
MMLU,4 個選項(transfer-v9 開發) 0.725 0.90
SemIf(144 個手寫決策;接近飽和,僅報告) 0.917 0.965

服務。 CUDA,bf16 配融合核心和 CUDA graphs;每個請求的模型時間(20 次中位數),新 state / 重複 state,在 v1 上測量(相同架構與介面卡形狀):

GPU 短 state 六個問題 2,200-token state 五個問題 請求/s,64 客戶端
L40S 66.4 / 42.7 ms 235.6 / 57.5 ms 32.7
H100 24.0 / 16.6 ms 88.5 / 26.4 ms 79.5

常駐 GPU 視訊記憶體 21.9 GB。在 280 個問題上,服務的機率與 fp32 評測路徑保持在 0.017 以內,沒有答案改變。在 fp32 評測路徑(H100,v2)上,16k / 32k / 64k token 的 state 用時 5.1 / 10.9 / 25.4 s,權重之上佔用 4.6 / 9.1 / 18.2 GiB。

Apple Silicon(MLX):為 Kev-0.8B 和 Kev-4B 做的長 state 測量沒有在這個規模上做過;在用於它們的那臺 32 GB M5 上,19.3 GB 的 bf16 主幹及其工作集裝不進可用記憶體。

¹ 社群 Decision Index 0.2 的隨機校正指數:每個資料集 (score − chance) / (1 − chance),在每個領域內取平均,然後 100 × 五個領域的均值。Jev 的指數來自對同一批測試條目的單獨一次讀取。

侷限與取捨

  • 選擇。 這個 checkpoint 在更早一輪用開發資料訓練並讀取,在已知那些數字的情況下按更晚的規則重新選出。測試劃分和鎖定讀數(每個只讀一次)是護欄;把開發餘量當作偏樂觀。
  • 它的大增益在分佈內。 hard-v1、devtools-v1 和 documents-v1 的訓練劃分就在其訓練資料裡;那些增益是已訓練家族的留出條目與模板,不是到新任務的遷移。
  • 在新工作上它不比 v1 更好。 breadth-v1 測試 +0.6 pp [−0.4, +1.6],transfer-v4 開發 −0.2 pp [−2.4, +1.8],transfer-r3 測試 +0.0 pp [−1.2, +1.2]。在 breadth-v1 指數上 Kev-27B 領先它 11 個點,Jev 領先 13 個點。
  • 知識由基座決定。 MMLU-Pro 是 0.590,對 Kev-27B 的 0.675 和 Jev 的 0.840。
  • 日期算術是它最弱的家族:在 deadline 政策問題上 0.725,對 Jev 的 0.95;KEV_DATE_FACTS=1 前處理器有幫助。
  • 校準。 devtools-v1 是它校準最差的套件(測試 ECE 0.098)。溫度的區間是 [2.05, 2.41]。溫度是從註冊的池擬合寫進 head.pt 的,並記錄了理由,因為校準指令碼無法列出合併訓練檔案的來源以複查池本身;那一輪自己的檢查已經覆蓋了它。那次檢查不覆蓋 v1 的日期與缺失證據資料,其 manifest 未列出來源;那些記錄是四個生成家族,都不在池裡。
  • 未訓練的長度。 訓練 state 最多 7,552 tokens。更長的 state 可服務到 65,536 tokens;準確率保持多遠就是上面的已驗證上下文長度。
  • 選項順序可能改變答案;問題隔離並不能阻止這一點。

偏見、風險與倫理考量

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

算力

  • 基礎配方與日期階段(v1):單張 NVIDIA H100 GPU。
  • 文件與技能階段:在一張 NVIDIA H200 上 2.6 小時(峰值 74.1 GB)。
  • 評測與服務檢查:Modal 上的單張 H100 / H200 / L40S GPU。

溯源與可復現性

  • 程式碼、套件與評測報告:github.com/jaredpalmer/kev。釋出數字:runs/release/kev-9b-r27.json(scripts/release_numbers.py --release kev-9b-r27);註冊規則與判決 experiments/rounds/r27.json、runs/r27-readout/、runs/r27-verdict/;2026-09-30 家族讀數 runs/fam-9bnew-breadth/、runs/fam-9b-breadth/ 和 runs/fam-breadth-test-report/;ood-v2 runs/r29-9b-r18a-ood/;服務 runs/serve-9b-l40s/、runs/serve-9b-h100/、runs/long-state-9b-h100/。
  • 階段:基礎試驗 q35-9b/01-trial-1(tag v7-base);日期 night2-9b-du/00-trial-0(v1,tag v1);文件與技能第 18 輪臂 (a) r18-9b/00-trial-0(experiments/round18/joint.json),選為並確認為第 27 輪的 9b-r18a。
  • 釋出的權重:Hub commit b5d8c18e;介面卡 sha256 2b2a70cf4ef4440b6c22899e1f72c2f8ea5c6f65b19aa344539b4b8971d1f13d,head.pt sha256 8e1dab2c…(T = 2.1936)。
  • 驗證:從 Hub 匿名載入,在 T = 2.19 下,它在 252 個 SemIf 行中的 252 個和 764 個 transfer-v4 開發行中的 764 個上覆現了釋出前評測的答案(runs/rel9-public/)。

引用

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

聯絡

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