# Gemma 4 E2B Hybrid: 基于置信度的云端交互的设备端 LLMs
Gemma 4 E2B Hybrid: 基于置信度的云端交互的设备端 LLMs
Cactus Compute 已经推出 Gemma 4 E2B Hybrid,这是最小的 Gemma 模型的后训练版本,旨在发出其自身不确定性的信号。通过在模型检查点内部携带内部探针,系统将每个响应作为结构化数据分配一个介于 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(接收者操作特征曲线下面积)来衡量,其中 1.0 表示正确答案和错误答案的完美分离。Gemma 4 E2B Hybrid 的平均 AUROC 为 0.814,显著优于令牌熵(平均 0.549)。
值得注意的是,置信探针是在零音频数据上训练的,但它在四个音频基准测试中保持了较高的 AUROC 分数(范围从 0.789 到 0.876)。这表明该探针在模型的隐藏状态中识别了一种与模态无关的正确性信号,而不是依赖于训练数据中的模式记忆。
| 保留集 | 模态 | Cactus 混合 AUROC | 令牌熵 AUROC |
|---|---|---|---|
| MMLU | 文本选择题 | 0.770 | 0.697 |
| MMLU-Pro | 文本选择题 | 0.771 | 0.692 |
| ARC-Easy | 文本选择题 | 0.888 | 0.655 |
| ARC-Challenge | 文本选择题 | 0.834 | 0.646 |
| GSM8K (3-shot) | 文本生成 | 0.782 | 0.731 |
| MMBench-EN-Dev | 视觉选择题 | 0.840 | 0.435 |
| ChartQA | 视觉问答 | 0.779 | 0.615 |
| DocVQA | 视觉问答 | 0.781 | 0.512 |
| MMAU | 音频选择题 | 0.789 | 0.517 |
| GigaSpeech | 音频 | 0.876 | 0.343 |
| Earnings-22 | 音频 | 0.839 | 0.323 |
| LibriSpeech | 音频 | 0.822 | 0.427 |
实现与集成
Cactus Hybrid 为多种部署框架提供支持。对于 Transformers 用户来说,一个关键的实现细节是使用显式的 .to(device) 调用来加载模型,而不是使用 device_map="auto",因为探针在标准 forward() 路径之外读取生成分数。
Cactus 绑定
使用 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\n)))
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 响应中启用置信字段。
社区讨论
围绕此次发布的技术讨论集中在 LLMs 中的“自觉”性质上。一些用户质疑该术语,认为模型并不知道它们错了,而是在发出不确定性或不一致的信号。
你不能知道自己何时错了。你只能知道自己何时不确定或不一致。你可以绝对确定却仍然错了,也可以不确定却仍然正确。
其他贡献者探索了从隐藏状态中提取其他信号的潜力,例如代码质量(例如,“干净” vs “臃肿”)或其他激活引导概念。