Kev-0.5B — プロトタイプ(後継に置き換え済み)
Kev-0.5B は意思決定モデルです。1 つの文書(状態)と型付きの質問群を受け取り、質問ごとに確率分布を一度のフォワードパスで返します。テキスト生成は行いません。
これは Qwen/Qwen2.5-0.5B 上の LoRA アダプタと小さなポインタヘッドです。Archer Hume が Jev’s Architecture Unmasked で TypeSafe の Jev について推測したアーキテクチャを再現し、TypeSafe の公開 /v1/systemone API コントラクトを提供します。
このチェックポイントは元のプロトタイプで、機構が機能することを示すために 2026 年 9 月にノート PC で訓練されました。これは Kev-0.8B、Kev-4B、Kev-9B に取って代わられました。それらは Qwen3.5 ベース、凍結されチェックサム付きのスイート、そして約 110 回の管理された試行を通じて見つけたレシピを使います。同じ域外項目(transfer-v4 dev)で、このモデルは 0.561 を記録し、0.643 / 0.794 / 0.812.620 / 0.790 / 0.796 に対してそうなっています。参照と再現性のために Hub に残しています。それ以外の用途には現行ファミリーを使ってください。
- Hub: jaredpalmer/kev-0.5b(タグ
v0.1) - コード、訓練レシピ、評価、デモ: github.com/jaredpalmer/kev
- 重み: GitHub リリース
v0.1.0、kev-0.5b.tar.gz(38 MB。LoRA アダプタadapter_model.safetensors、ヘッドhead.pt、トークナイザファイル、eval.json、訓練ログ)。SHA-25615639f79…6e12f8、完全なダイジェストはサイドカー.sha256にあります。runs/kev/に展開してください。重みは git にコミットされていません。
モデルの詳細
| 開発 | Jared Palmer、Devin(Cognition)と共同 |
| モデル種別 | 因果トランスフォーマー、prefill-only、ブロック因果分岐マスク、ポインタ読み出し |
| ベースモデル | Qwen/Qwen2.5-0.5B(4 億 9,400 万パラメータ、凍結) |
| アダプタ | LoRA ランク 16、alpha 32、dropout 0.05、q_proj k_proj v_proj o_proj gate_proj up_proj down_proj 上(全 24 層) |
| ヘッド | 2 つの線形写像 896 → 256(query は <decide> から、key は各 </opt> から)、スケール付き内積、選択肢上の softmax |
| 訓練可能パラメータ | 930 万(LoRA 880 万 + ヘッド 46 万)、バックボーンの 1.9% |
| 精度 | fp32(Apple MPS での訓練と提供) |
| 訓練で使う文脈 | 状態トークン ≤ 384、質問分岐あたり ≤ 1,024 トークン |
| 提供時に許す文脈 | 分岐あたり 8,192(バックボーンは 32k をサポート) |
| 質問種別 | noul(はい/いいえ)、choice(2–255 選択肢)、score(2–255 の順序付き段階) |
| 言語 | 英語 |
| ライセンス | アダプタとヘッドは Apache-2.0。ベースモデルは Qwen ライセンス(Qwen2.5-0.5B は Apache-2.0)。データセットはそれぞれ独自のライセンスを持ちます。 |
| バージョン | Kev-0.5B v0.1、2026-09-17 訓練 |
想定用途
想定。 意思決定モデルの研究: 直接的な確率読み出しの較正、共有状態/独立質問の attention、選択肢順序への感度、TypeSafe の System One コントラクトとの API レベルでの互換性。ローカルデモと教育。
想定外。 人に影響するあらゆる本番の意思決定: モデレーション、不正検知、与信、採用、医療・法務の振り分け。このモデルの知識は 0.5B のバックボーンに限られ、その較正は訓練分布でのみ検証されており、なじみのないタスクでの出力は測定されていません。
モデルの使い方
入力は 1 つのパックされたトークン列です:
<state> …state… <q> instr <opt> o1 </opt> <opt> o2 </opt> … <decide> <q> … <decide> …
- attention マスクにより、質問のトークンは状態と自分の分岐だけを見られます。質問同士は互いを見られません。
- 各分岐は状態の後で位置 ID を再開します。
- 各質問について、ヘッドはすべての
</opt>隠れ状態を<decide>隠れ状態に対して採点し、softmax を適用します。 - アプリケーションコードは分布を API の答えに変換します: Choice では
choice/confidence、Noul ではp(yes)、Score では期待段階です。
予約トークンは既存の Qwen 特殊トークンです(<|fim_prefix|>、<|fim_middle|>、<|box_start|>、<|box_end|>、<|fim_suffix|>)。ユーザーテキストは、それらを生成できないようサニタイズされます。
python -m kev.serve --run runs/kev で提供し、POST /v1/systemone を呼び出すか、base_url="http://127.0.0.1:8009" で typesafe-sdk を使ってください。
訓練データ
6 つの公開データセットを TypeSafe の形のリクエストに変換し、提供時と同じコード経路(api.to_record())で描画しました。標準の train 分割からソースごとに 1,500 レコードをサンプリングし、9,000 レコード、13,500 質問(Choice 4,500、Noul 6,000、Score 3,000)を得ました。
| ソース | 分割 | 変換先 | 注記 |
|---|---|---|---|
| Banking77 | train | Choice, K = 77 | 意図名を選択肢キーに。テンプレート化した説明、50% null |
| BoolQ | train | Noul | 文章を状態に。40% は true/false の criteria 付き |
| AG News | train | Choice K = 4 + 2 Noul | トピック質問と一緒に詰めた派生の yes/no 質問 |
| MNLI | train | Choice K = 3 | 前提を状態に、仮説を instructions に |
| SST-5 | train | Score, 5 levels | |
| Yelp Review Full | train | Score 5 levels + Noul | テキストは 220 語に切り詰め。recommend = stars ≥ 4 |
変換時に適用した描画のばらつき: 約 30% の null 選択肢説明、約 10% の構造化 {"what": …} 説明、約 15% の構造化 {"question", "focus"} instructions、約 32% の状態をオブジェクトまたは配列として包んだもの({"document"}、{"ticket": {"channel","body"}}、[{"role","content"}])。
エンコード前にレコードごとに 1 回適用した拡張: 選択肢順序のシャッフル。確率 0.10 で正解選択肢を other: None of the above に置換。確率 0.15 で無関係なディストラクタ選択肢を追加。
LLM 生成データはありません。元のデータセットを超える人手注釈もありません。
訓練手順
| 目的関数 | 選択肢上の交差エントロピー、レコード内の質問で平均 |
| オプティマイザ | AdamW、lr 2e-4、weight decay 0.01、OneCycle スケジュール(10% ウォームアップ) |
| バッチ | 1 ステップあたり 1 レコード、勾配蓄積 8、勾配クリッピング 1.0 |
| エポック | 2(2,250 オプティマイザステップ) |
| ハードウェア | Apple M5、32 GB ユニファイドメモリ、PyTorch 2.8 MPS バックエンド |
| 実時間 | 約 1 時間 45 分(レコードあたり約 0.29 秒) |
| シード | 0 |
| 最終訓練損失 | 0.27 |
このチェックポイントは、現在 kev/train.py で既定になっている 2 つの損失項より前のものです: Score の順序項(--ord_w)と Choice の置換一貫性 KL(--perm_kl)です。このチェックポイントを正確に再現するには:
uv run python -m kev.train --n_per_source 1500 --epochs 2 --accum 8 --perm_kl 0 --ord_w 0 --out runs/kev
拡張はエンコード時に固定されるのではなく、現在は毎エポック再適用されるため、再実行はビット単位では同一にならない点に注意してください。
評価
同じ 6 ソースのホールドアウトされた test / validation 分割、ソースごとに 150 レコード、1,350 質問、シード 1。完全な結果は runs/kev/eval.json にあります。
精度と較正
| ソース | K | zero-shot base | zero-shot Instruct | Kev-0.5B |
|---|---|---|---|---|
| acc / ECE | acc / ECE | acc / ECE / NLL | ||
| banking77 | 77 | – | – | 0.860 / 0.057 / 0.56 |
| agnews | 4 | 0.813 / 0.069 | 0.787 / 0.160 | 0.940 / 0.028 / 0.22 |
| agnews yes/no | 2 | 0.780 / 0.103 | 0.853 / 0.062 | 0.960 / 0.017 / 0.10 |
| boolq | 2 | 0.427 / 0.274 | 0.607 / 0.084 | 0.753 / 0.136 / 0.63 |
| mnli | 3 | 0.460 / 0.225 | 0.433 / 0.390 | 0.747 / 0.100 / 0.63 |
| sst5 | 5 | 0.373 / 0.083 | 0.447 / 0.344 | 0.533 / 0.121 / 1.17 (MAE 0.59 levels) |
| yelp | 5 | 0.313 / 0.043 | 0.353 / 0.078 | 0.553 / 0.118 / 0.95 (MAE 0.54 levels) |
| yelp yes/no | 2 | 0.833 / 0.129 | 0.833 / 0.066 | 0.887 / 0.084 / 0.33 |
| all | 0.799 / 0.065 |
ベースライン: Qwen/Qwen2.5-0.5B(生)と Qwen/Qwen2.5-0.5B-Instruct(チャットテンプレート)、同じ描画済みテキスト、選択肢文字 A–H 上の次トークン logits。K = 77 では実行していません。ECE は top 確率に対して等幅 10 ビンを使います。
温度スケーリング
偶数インデックスのレコードでフィットし、奇数インデックスでテスト: T = 1.47。ホールドアウト NLL 0.505 → 0.481、ECE 0.057 → 0.031。このモデルはスケーリング前はやや過信気味です。
機構のテスト
| テスト | 結果 |
|---|---|
| 独立性(兄弟質問内/欠落/状態内の秘密) | p = 0.03 / 0.03 / 0.99 |
| パック時と分離時の最大絶対確率差 | 3.7e-6(パックは 2.0× 高速、リクエストあたり約 2.7 問) |
| 置換、4 順序、Choice K ≥ 3 | argmax 反転 7.4%、p(correct) の平均広がり 0.065、p90 0.25 |
| IIA、無関係な選択肢を 1 つ追加 | top-2 の平均 |Δ log-odds| = 0.13、p90 0.34 |
| 境界偽造、偽の区切り文字を含む選択肢テキスト | 選択肢数は不変、偽造選択肢の p ≤ 0.09 |
限界
- 分布内のみ。 上のすべての数値は訓練データセットのホールドアウト分割上のものです。このチェックポイントでは、ソース外への汎化は測定されていません。
- 小さなバックボーン。 0.5B パラメータ。TypeSafe ドキュメントの構造化 criteria の例では、モデルは
return_policyを選び、Jev はreturn_statusを選びます。読解(BoolQ 0.75、MNLI 0.75)は最先端には遠く及びません。 - タスク被覆が狭い。 6 つのデータセットと約 10 の命令テンプレート。コード、表、マルチターンのチャット、算術、多段の条件は訓練されていません。
- 順序への感度は残ります。 選択肢の並べ替えで 7% の argmax 反転と p90 確率広がり 0.25。決定境界付近のしきい値は行動を変えうる。
- Score の信頼度 は提供コードが計算するもので、チェックポイントのものではありません。このカードを書いた時点では
1 − E|level − mode| / (L − 1)でした。現在はmax(0, 1 − E|level − mode| / D)で、D は段階上の一様分布の平均絶対偏差です(TypeSafe の参照アダプタsystem-one-adapter0.2.1 と同様)。 - 較正は保証ではありません。 これらのソースで温度スケーリング後の ECE 0.03 は、新しいワークフローでの較正について何も言いません。適切なスコアリング規則は正しいインセンティブを与えますが、結果データの必要性をなくしません。
- 継承した限界 は Qwen2.5-0.5B とデータセットから来ます。ラベルノイズ、人口統計的な偏り(例: Yelp、銀行の意図)、英語のみの被覆を含みます。
バイアス、リスク、推奨
訓練セットはそのソースのバイアスを帯びます: 米国中心のニュースカテゴリ、英語の銀行用語、レストランのレビュー、クラウドソースの NLI ラベル。モデルはそれらを映し出します。
直接の確率出力は権威的に見えます。このモデルの confidence: 0.92 は、3 つの選択肢上の自分自身の分布についての統計であり、正しい確率が検証されたものではありません。重大な決定でこれにしきい値をかける前に、自分のラベル付き結果で較正を測定してください。
質問独立性の性質は実際の安全機能であり(ある質問のテキストが別の質問の答えを操作できない)、検証済みです。区切り文字偽造の防御は 5 つの予約トークンについて検証済みです。状態テキストを経由するその他のプロンプトインジェクション経路は研究されていません。
環境への影響
訓練 1 回: 単一の Apple M5 ノート PC SoC で約 1.75 時間、おおよそ 30–40 W、つまり約 0.06 kWh。評価とスモーク実行で同程度が加わります。これは小さいです。
引用
@software{kev2026,
title = {kev: a laptop-scale reconstruction of a Jev-style decision model},
author = {Palmer, Jared},
year = {2026},
url = {https://github.com/jaredpalmer/kev}
}
@misc{hume2026jev,
title = {Jev's Architecture Unmasked},
author = {Hume, Archer},
year = {2026},
url = {https://archerhume.com/posts/jevs-architecture-unmasked}
}
連絡先
github.com/jaredpalmer/kev で issue を開いてください。