OpenJevがブラウザでのローカル意思決定モデル推論を実現
OpenJevはデバイス上でのJev形式の意思決定推論を可能にします
OpenJevは、ブラウザ内でローカル言語モデルを実行し、生のロジットを読み取るか、モデルにJSON形式の分布を出力させることで、選択肢の確率を問い合わせることができるWebデモです。このデモはバックエンドや待機リストを必要とせず、すべての重みと入力はクライアントサイドに保持されます。
直接的なロジット読み取りとJSON生成の比較
直接的な読み取りは、提供された選択肢に対するモデルの選択ロジットを読み取り、正規化し、トークンデコードなしで確率ベクトルを返します。JSON生成は、モデルに同じ分布をJSONオブジェクトとして書き出すよう要求し、トークンを1つずつストリーミングします。これら2つの手法は、読み込まれた同じモデル上で順次実行されるため、GPUリソースを奪い合うことはありません。
モデルカタログとパフォーマンス数値
| モデル | サイズ | Authored % | Perturbed % | TypeSafe % |
|---|---|---|---|---|
| Qwen3 0.6B | 639 MB | 44.0 | 52.8 | 40.7 |
| MiniCPM5 2B (デフォルト) | 1.56 GB | 68.6 | 69.3 | 63.7 |
| Qwen3.5 4B | 3.01 GB | 81.3 | 76.6 | 84.5 |
| Published Jev (ホスト版) | – | – | – | 88.3 |
重みはHugging Faceから取得され、ブラウザにキャッシュされます。初回読み込みには、特に4 Bモデルの場合、数分かかることがあります。
数値の意味
- 条件付き確率のみ – 直接的なスコアは表示された選択肢に対するソフトマックスであり、調整済みの信頼度スコアではなく、モデルが優先する可能性のある代替案は無視されます。
- モデル階層のトレードオフ – 最小のモデルはスマートフォンでも動作しますが、精度が犠牲になります。MiniCPM5はデスクトップのデフォルトですが、4 Bモデルは大幅に多くのメモリを必要とし、低スペックのデバイスでは動作しない可能性があります。
- 実環境のタイミング – セットアップ、ウォームアップ、プロンプト準備、直接実行、最初の生成トークン、および完全な生成は
performance.now()で測定されます。既製のベンチマークは使用されていません。 - 量子化された重み – このデモでは
wllamaを介した固定GGUFビルドを使用しており、量子化は速度と品質の両方に影響を与える可能性があります。
コミュニティの反応とよくある質問
「AuthoredとPerturbedの違いは何ですか?」 – この表は、元の(Authored)データセットのスコアと、堅牢性テストに使用される摂動を加えた(Perturbed)バージョンのスコアを区別しています。
「これはJevの独自サービスと同じですか?」 – OpenJevはJevのインターフェースパターン(ランタイム定義のセマンティックな意思決定)を再現していますが、オープンウェイトモデル上で実行されます。Jevのクローズドモデルやトレーニングデータは使用していません。
「なぜスマートフォンでは遅く感じるのですか?」 – 0.6 Bモデルであっても、モバイルハードウェアでは0.5秒から数秒かかる場合があります。このデモはリモートAPI呼び出しよりは高速ですが、ローカルの計算能力とWebGPUの利用可能性に依存します。
「Hugging Faceアカウントなしでこれを実行できますか?」 – デモはHugging Faceから直接重みをダウンロードします。ファイアウォールの背後にいるユーザーは、ミラーサイトや手動ダウンロードが必要になる場合があります。
「Jevは商標ですか?」 – 複数のコメント投稿者が「Jev」は商標登録されたサービスであり、OpenJevという名称が混乱を招く可能性があると指摘しています。
実装に関する技術的洞察
OpenJevは SGLang(または同様の推論バックエンド)を活用して共有プロンプトプレフィックスをキャッシュし、各選択肢に対して個別のリクエストを発行します。ワークフローは概ね以下の通りです。
- 共有状態を含む使い捨てリクエストを送信する。
- 推論エンジンのプレフィックスキャッシュを利用して、共有部分の再計算を回避する。
- 選択肢ごとにリクエストを発行し、それぞれで共有プレフィックスを繰り返す。
- 全語彙から少数の特別な回答トークンのスコアを抽出する。
- それらのスコアを正規化された確率に変換する。
より洗練されたアプローチとして、推論エンジンをフォークして共有プロンプトを一度だけ実行し、選択肢ごとに内部状態をクローンして関連するトークンのみをスコアリングする方法があります。これは eider などのカスタムエンジンで実証されており、llama.cpp、vLLM、その他のランタイムへの今後のパッチで登場することが期待されています。
制限事項と未解決の問題
- GPUアダプターがない – 一部のブラウザではWebGPUが存在すると報告されていても、アクセス可能なGPUアダプターが不足しており、デモがCPUにフォールバックする原因となります。
- 部分ダウンロードのサポート – モデルのダウンロードを中断すると、部分的にキャッシュされたファイルが破棄されます。再開可能なダウンロードがあればユーザビリティが向上します。
- 法的な曖昧さ – 「Jev」という名称の使用は元のサービスの商標を侵害している可能性があり、オープンな実装はJevの独自モデルを複製するものではありません。
- ベンチマークの透明性 – デモは生のタイミングを報告しますが、クローズドなJevサービスに対する標準化されたレイテンシや精度のベンチマークは提供していません。
まとめ
OpenJevは、Jev形式の意思決定推論がオープンウェイトLLMを使用してブラウザ内で完全に再現可能であることを示しており、生のロジットアクセスと構造化されたJSON出力の両方を提供します。このプロジェクトは、モデルサイズ、速度、精度の間のトレードオフを浮き彫りにし、高速でトークン不要な意思決定APIの将来のオープンソース実装に向けた概念実証として機能します。
Sources
- HNOpenJev
関連
- Dispatch
- Dispatch
- プロジェクト
- プロジェクト
- Dispatch