
2026/09/29 5:23
ジェフ - ホームで学習した Jev 互換の 08B 意思決定モデル、約 30ms
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
「Jeff」スートは、Qwen3.5およびGemma 4アーキテクチャに基づく独立したファインチューニング済みモデルの集合であり、テキスト生成や外部パースなしで超高速なゼロショット分類を可能にします。これらの Apache 2.0 ライセンス付きモデル(NVIDIA GPU/PyTorch または Apple silicon MLX 経由の
uv で入手可能)は、単一のフォワードパスで校正された確率を返し、ハイエンド消費者向けハードウェア上での意思決定時間は約22–30ms(より大きな独立したプロジェクトに比べて著しく高速)です。従来の手法とは異なり、TypeSafe Jev エコシステムとは互換性を持つが affiliated ではないリクエストフォーマットを用いて、ローカルコードに直接スロットリングします。ベンチマークでは、Jeff モデルが分類やグラウンディングタスクにおいて未トレーニングのベースモデルと同等かそれ以上に優ることが示されています(例:Jeff-Qwen3.5-2B のスコアは 83.1 で、Jev の 83.0 を上回っています)が、小さいパラメータ数においては推論能力には限界があります。重要な点は、成功は特定のプロンプトフォーマットに依存しており(標準的な Jev プロンプトでは機能せず、結果の文言を明記する必要がある)、選択肢の構造が一貫していることです。このスートは軽量パイプライン向けの展開で独自の利点を提供し、一部のバリエーションはファインチューニングを通じて特定のゲーム様態タスクにおいてより大きなモデルを上回るパフォーマンスを示しますが、開発者は 2B バリエントにおける潜在的なリスク回避傾向や、高いベンチマークスコアが必ずしもプレイアビリティの信頼性を保証するわけではないという注意点に対処する必要があります。本文
Qwen3.5 と Gemma 4 のファインチューニングによるゼロショット分類:Jeff
Jeff は、Jev と同等のリクエスト形式をコードに組み込むことで実現された、迅速な意思決定モデルです。
- 動作原理: 状況を記述し、選択肢を平易な言葉でリストアップするだけで、単一のフォワードパスを通じて各選択肢に対して校正された確率値を返します。
- 特徴: 生成されたテキストやパース処理は一切不要です。
- 処理速度 (1 回決定):
- RTX PRO 6000 で約 22 ms
- Apple M4 Max(MLX)で約 28 ms
基本概念
ゼロショット分類
トレーニングデータにカテゴリが含まれていなくても、記述するだけで適切に選択します。
- サポートキュー
- ユーザーの意図
- モデレーションラベル
- 音声コマンド
- ゲームの手順
モデルの性質
- 軽量: ローカル環境でのコード統合が容易です。
- 性能: ベンチマークにおいて Jev に迫り、場合によっては凌駕しますが、推論能力自体は大幅に大きなモデル(Jev)には及びません。
- 精度向上: ゼロショットでの精度を満たさない場合は、ご自身の例題を使った短期間のファインチューニングで改善可能です。
- 例:音声ナビゲーション用のファインチューニングでは、1 つの GPU で半時間以内に保持外データの精度を 31.7% から 95.8% へ向上。
構築環境と独立性
- 完全にローカル: クラウド GPU は使用せず、トレーニングデータにも閉鎖モデルの出力は含まれていません(合成データの品質確認用としてのみ使用)。
- 学習環境:1 つの RTX PRO 6000 ワークステーション GPU。
- トレーニング時間:0.8B モデル約 2 時間、2B モデル約 3.5 時間。
- 独立したプロジェクト: Jev と同じリクエスト形式を採用していますが、Jev の開発元である TypeSafe 社とは関係ありません。トレーニングコードはオープンソースの AutoJev レシピからスタート。
Hugging Face で入手可能なモデル
クイックスタート
環境同期とモデルのダウンロード:
uv sync uv run hf download mstrasser/Jeff-Qwen3.5-0.8B --local-dir checkpoints/jeff-0.8b
サーブ起動方法
NVIDIA GPU または CPU(PyTorch)
JEFF_CHECKPOINT=checkpoints/jeff-0.8b PORT=8765 uv run jeff-serve
Apple Silicon(MLX:Mac 用専用、Qwen モデルのみ対応)
uv sync --extra mac JEFF_BACKEND=mlx JEFF_CHECKPOINT=checkpoints/jeff-0.8b PORT=8765 uv run jeff-serve
API 使用例
リクエストへの回答には、選択肢ごとの確率、選択されたオプション、信頼度が含まれます。
: 最大 255 オプションから 1 つを選択choice
: 是/否(確率として返る)noul
: 指定したスケール上の点数score
複数の独立した質問をまとめて回答可能です。
curl -s localhost:8765/v1/systemone \ -H 'content-type: application/json' \ -d '{ "model": "jeff-latest", "state": "Refund request: the customer says the parcel arrived crushed and wants their money back.", "questions": { "route": {"type": "choice", "instructions": "Which team should handle this?", "criteria": {"1": "Refunds and payments", "2": "Damaged or lost parcels", "3": "Account and login problems"}}, "angry": {"type": "noul", "instructions": "Is the customer angry?"} } }'
ベンチマーク結果
5 つの公開ベンチマークおよび JevBench のハードモード(105 アイテム)を対象としました。
| ベンチマーク | Qwen3.5-0.8B (未学習) | Jeff-Qwen3.5-0.8B | Qwen3.5-2B (未学習) | Jeff-Qwen3.5-2B | Gemma 4 E2B (未学習) | Jeff-Gemma4-E2B | Jev (公開値) | AutoJev-27B (公開値) |
|---|---|---|---|---|---|---|---|---|
| 全体 (5 つのベンチマーク) | 45.3 | 79.1 | 46.5 | 83.1 | 62.5 | 81.6 | 83.0 | 84.9 |
| BBH | 39.5 | 64.0 | 46.0 | 68.0 | 51.3 | 66.4 | 94.3 | 82.8 |
| Financial PhraseBank | 36.0 | 96.4 | 53.4 | 96.3 | 86.0 | 96.1 | 77.0 | 84.2 |
| JudgeBench | 56.6 | 62.6 | 57.4 | 64.6 | 46.9 | 60.6 | 78.6 | 78.9 |
| RAGTruth | 49.1 | 86.1 | 35.9 | 88.9 | 63.8 | 87.4 | 77.3 | 88.9 |
| WinoGrande | 49.2 | 68.6 | 52.2 | 79.0 | 51.0 | 77.4 | 90.7 | 83.3 |
| JevBench hard (別スコア) | 36.2 | 47.6 | 45.7 | 53.3 | 41.0 | 48.6 | 73.3 | 70.3 |
- 太字: Jeff が各行で Jev を上回るモデル。
- 斜体太字: その行ですべてのモデルの中で最良な AutoJev-27B(RAGTruth では Jeff-Qwen3.5-2B と並)。
分析:
- Jeff の全体スコアは分類およびグラウンディングタスクで大型モデルと同等かそれ以上の性能を示します。
- 推論が重要なベンチマーク(BBH、JudgeBench、JevBench)では、この規模のモデルであることを考えると予期通り、大型モデルに比べて低いスコアになります。
ゲームによるゼロショットテスト
公開されていないタスクでの性能をテストするため、Jeff にゲームをプレイさせました。
- 条件: 各ターンにおいて、コードは状況と合法的な手(選択肢)を言葉で記述し、モデルが 1 つを選択します。どの手が正しいかは示されません。
- 評価指標: 20 エピソード(シード 1234)に基づいています。
M4 Max でゼロショット条件下のプレイ結果
| モデル | Doom (殺害数) | Frogger (渡河回数) | Pac-Man (収集したドット: 98/100) |
|---|---|---|---|
| ランダムな手 | -0.05 | 0 | 11.2 |
| ハンドコードされたルールボット | 6.55 ▶ | 10.25 ▶ | 94.1 ▶ |
| Qwen3.5-0.8B (未学習) | 5.0 ▶ | 1.0 ▶ | 25.8 ▶ |
| Jeff-Qwen3.5-0.8B | 6.55 ▶ | 10.3 ▶ | 57.0 ▶ |
| Qwen3.5-2B (未学習) | 0.55 ▶ | 0.05 ▶ | 72.1 ▶ |
| Jeff-Qwen3.5-2B | -0.9 ▶ | 6.0 ▶ | 41.2 ▶ |
| Gemma 4 E2B (未学習) | -0.55 ▶ | 0 ▶ | 3.2 ▶ |
| Jeff-Gemma4-E2B | 0.55 ▶ | 0.15 ▶ | 53.2 ▶ |
| Jev (公開値、Doom) | 6.55 (目標指向ルール) −0.60 (指定なし) | — | — |
- Jeff-0.8B は M4 Max で 1 手あたり 29–49 ms で決定。
- Jev の公開 Doom プレイは API を通じて 212 ms/コールかかりました(両者は同一ハードウェア上の測定ではありません)。
ゲームを実際にプレイするコマンド:
uv sync --extra games # Doom プレイ uv run python -m jeff.games --game doom --player jeff --criteria situation --url http://127.0.0.1:8765 --video --out runs/games/doom.json # Frogger プレイ uv run python -m jeff.games --game frogger --player jeff --criteria outcomes --url http://127.0.0.1:8765 --out runs/games/frogger.json # Pac-Man プレイ uv run python -m jeff.games --game pacman --player rule --out runs/games/pacman-rule.json
速度とサイズ比較
ベンチマーク質問(約 200 トークン入力)の中央値時間です。
| モデル | パラメータ | ウェイト (16-bit) | NVIDIA RTX PRO 6000 | Apple M4 Max (MLX) | CPU (32 スレッド) |
|---|---|---|---|---|---|
| Jeff-Qwen3.5-0.8B | 0.8B | 1.7 GB | 22 ms | 28 ms | 463 ms |
| Jeff-Qwen3.5-2B | 2B | 4.2 GB | 24 ms | 60 ms | 708 ms |
| Jeff-Gemma4-E2B | 2B 効 (4.6B 保存) | 9.3 GB | 29 ms | — (MLX は Qwen 専用) | 1.0 s |
| AutoJev-27B | 27B | ~54 GB | 非公開 | — | — |
| Jev | 非開示 | API 専用 | 公開値で 114–212 ms (ネット含む) | — | — |
効果的な活用法
- コード内で推論し、Jeff で判断する: Jeff は分類器でありプランナーではありません。各選択肢がもたらす結果(例:「この手は車に衝突させる」)を明記してください。
- 表現方法の重要性: 選択肢を一貫した言葉で記述します。Frogger のゴールとなる選択肢に、他と異なる言葉を付けると渡河回数が向上しました。
- 短いオプションキーと説明的テキスト:
のように使用し、長い ID は時間を無駄にします。{ "1": "Engagement letter" } - 複数の独立した質問を 1 リクエストで同時処理: 並列して回答可能です。
- ファインチューニングの活用: ゼロショットでは不十分な場合はファインチューニングを行ってください(例:音声ナビゲーション用で保持外精度を 95.8% に向上)。
ご自身のモデルのトレーニング
uv run autojev-mix ... # トレーニングセット構築 scripts/train.sh RUN data/mix/public.jsonl data/mix 5e-6 40 Qwen/Qwen3.5-0.8B <revision> --epochs 1 uv run autojev-evaluate --data data/panel.jsonl --local --checkpoint checkpoints/RUN/selected --output runs/eval/RUN.json
- パイプライン詳細は
を参照。scripts/train_all.sh - データソースとライセンスは
を参照。docs/data-sources.md
トレーニングレシピ: フルウェイトファインチューニング、1 エポック、バッチサイズ 256、クロスエントロピー、校正用調整温度。チェックポイントは開発セットに基づき、ベンチマークパネルからは選ばれません。
注意点(Caveats)
- 小型モデルは推論できません: 高速な選択には期待しますが、多段階推論には期待しないでください。
- Jeff-2B の弱点: Jeff-0.8B よりゲームプレイヤーとして弱いです。未学習の 2B モデルはリスク回避傾向が強く、トレーニングで悪化している可能性があります。
- ベンチマークスコアとゲームプレイの不一致: 未学習の Gemma 4 E2B がベンチマークでは優れていますが、ゲームプレイでは最悪の結果を示しました(信頼性なし)。Pac-Man は改善されましたが、Doom や Frogger の成績は unchanged です。
- プロンプトの厳格さ: Jev 独自の Doom プロンプト(生ベアリング番号など)は機能しません。結果を言葉で記述した選択肢のみ有効です。
- 言語対応: 英語およびテキスト専用。
沿革とライセンス
沿革
- MIT ライセンスのオープンレシピ「AutoJev」(Denis Yarats 氏)のフォークとして始まりました。
- Qwen3.8-27B をファインチューニングして Jev 風の意思決定を実現。
- 当社は以下を構築:小型モデル(Qwen 0.8B/2B, Gemma 4 E2B)、ローカル合成データパイプライン、ドメインファインチューニング用プロンプト、Apple Silicon 用 MLX サービング、ゲームテスト、トレーニングダッシュボード。
ライセンス
- コード: MIT(AutoJev を含む)。
- モデルウェイト: Apache 2.0。
- Doom ハサンス:
(MIT) から改編。jev-plays-doom - トレーニングデータ: データセットカードを参照してください(一部のソースは共有同一条件 CC BY-SA など)。コードとウェイトのみ公開しています。