Gemma 4 E2B Hybrid: 信頼度に基づくクラウド・ハンドオフを備えたオンデバイスLLM
Gemma 4 E2B Hybrid: 信頼度に基づくクラウド・ハンドオフを備えたオンデバイスLLM
Cactus Computeは、自身の不確実性をシグナルとして示すようにポストトレーニングされた、最小のGemmaモデルのバージョンである Gemma 4 E2B Hybrid を発表しました。モデルのチェックポイント内に内部プローブを組み込むことで、システムはすべての回答に対して構造化データとして0から1の間の信頼度スコアを割り当てます。これにより、開発者は信頼度の低いクエリをより大規模で高性能なクラウドモデルにルーティングし、信頼度の高いクエリはローカルで処理することが可能になります。
ハイブリッド・ルーティングのパフォーマンス
Gemma 4 E2B Hybridは、クエリのわずかな割合のみを大規模モデルにルーティングすることで、いくつかのベンチマークにおいてGemini 3.1 Flash-Liteのパフォーマンスに匹ねることができます。Flash-Liteのパフォーマンスに匹敵するためにハンドオフが必要なクエリの割合は、量子化レベルによって異なります:
| ベンチマーク | Flash-Liteに匹敵するためのハンドオフ (FP16) | 4-bitの場合 | 3-bitの場合 |
|---|---|---|---|
| ChartQA | 15–20% | 25–30% | 40–50% |
| MMBench | 30–35% | 40–45% | 50–55% |
| LibriSpeech | 25–30% | 35‐40% | 55–65% |
| GigaSpeech | 30–35% | 40–45% | 50–55% |
| MMAU | 30–35% | 35‐40% | 50–55% |
| MMLU-Pro | 45–55% | ~90% | n/a |
ルーティングの品質とモダリティへの非依存性
ルーティングの正確性はAUROC(Receiver Operating Characteristic曲線の下面)によって測定され、1.0は正解と不正解の完璧な分離を表します。Gemma 4 E2B Hybridは、平均AUROC 0.814 を達成しており、トークンエントロピー(平均 0.549)を大幅に上回っています。
特筆すべきは、信頼度プローブはオーディオデータを使用せずにトレーニングされているにもかかわらず、4つのオーディオベンチマーク(0.789から0.876の範囲)において高いAUROCスコアを維持している点です。これは、プローブがトレーニングデータからのパターン記憶に頼るのではなく、モデルの隠れ状態(hidden states)の中からモダリティに依存しない正解シグナルを特定していることを示しています。
| Hold-out | モダリティ | Cactus Hybrid AUROC | Token Entropy AUROC |
|---|---|---|---|
| MMLU | text MCQ | 0.770 | 0.697 |
| MMLU-Pro | text MCQ | 0.771 | 0.692 |
| ARC-Easy | text MCQ | 0.888 | 0.655 |
| ARC-Challenge | text MCQ | 0.834 | 0.646 |
| GSM8K (3-shot) | text gen | 0.782 | 0.731 |
| MMBench-EN-Dev | vision MCQ | 0.840 | 0.435 |
| ChartQA | vision QA | 0.779 | 0.615 |
| DocVQA | vision QA | 0.781 | 0.512 |
| MMAU | audio MCQ | 0.789 | 0.517 |
| GigaSpeech | audio | 0.876 | 0.343 |
| Earnings-22 | audio | 0.839 | 0.323 |
| LibriSpeech | audio | 0.822 | 0.427 |
実装と統合
Cactus Hybridは、複数のデプロイメントフレームワークをサポートしています。Transformersユーザーにとって重要な実装上の詳細として、プローブが標準的な forward() パスの外側で生成スコアを読み取るため、device_map="auto" ではなく、明示的な .to(device) 呼び出しを使用してモデルをロードする必要があります。
Cactus Bindings
cactus-compute ライブラリを使用すると、開発者はモデルを初期化し、結果オブジェクトから直接信頼度スコアを取得できます:
from cactus.bindings.cactus import cactus_complete, cactus_init
from cactus.cli.download import download_bundle
lm = cactus_init(str(download_bundle("Cactus-Compute/gemma-4-E2B-it")))
result = cactus_complete(
lm,
[{"role": "user", "content": "What is the capital of France?"}],
json.dumps({"max_tokens": 512, "auto_handoff": False}),
None,
lambda *_: None,
)
print(result["confidence"])
MLX
MLXの場合、モデルは trust_remote_code=True を指定してロードされます。信頼度スコアは model.last_confidence を介してアクセス可能です:
model, tokenizer = load(
"Cactus-Compute/gemma-4-e2b-it-hybrid-mlx",
tokenizer_config={"trust_remote_code": True},
)
#... generation logic...
print(model.last_confidence)
llama.cpp
llama.cpp との統合には、APIレスポンスで信頼度フィールドを有効にするために、エンジンにコンパイルされるカスタムパッチが必要です。
コミュニティの議論
リリースを巡る技術的な議論は、LLMにおける「自己認識」の性質に集中しました。一部のユーザーは、モデルは自分が間違っていることを「知って」いるのではなく、不確実性や不整合性を示しているだけであると主張し、用語に疑問を呈しました。
間違っていることを知ることはできません。不確実であること、あるいは矛盾していることだけを知ることができます。完全に確信していても間違っていることがあり、不確実であっても正しいことがあります。
他の貢献者は、コードの品質(例:「clean」対「crufty」)やその他の活性化ステアリング(activation steering)の概念など、隠れ状態から他のシグナルを抽出する可能性についても探求しました。