返回

文章详情

展示HN:Cactus Hybrid:我们教Gemma 4知道何时错误

Hacker News2026年7月22日 17:56

一个小型的设备模型快速而私密,但有时会错误。在Cactus,我们的后期训练模型使其知道何时错误:我们在检查点内部发送探针,以0到1之间的置信度评分每个答案,并将其作为结构化数据返回(永远不解析输出文本)。当置信度高时,在设备上回答;当置信度低时可以重新路由到更大的模型:如果置信度 < 0.85:答案 = ask_a_bigger_model(提示)。我们以Gemma 4 E2B Hybrid开始推广,所有构建都位于Hugging Face上的Cactus Hybrid集合中。Gemma 4 E2B hybrid是最小的Gemma模型,在大多数基准测试中通过仅将15%–35%的查询路由到Gemini 3.1 Flash-Lite并自己处理其余部分来匹配Gemini 3.1 Flash-Lite。基准切换匹配Flash-Lite (FP16):在4位时,在3位时的ChartQA为15-20%及25-30%及40-50%。在30-35%及40-45%及50-55%的MMBench及25-30%、35-40%及55-65%的LibriSpeech及30-35%、40-45%及50-55%的GigaSpeech,及30-35%、35-40%及50-55%的MMAU及45-55%及约90%及n/a的MMLU-Pro。注意:量化质量在执行良好的均匀量化的Cactus Quants上进行测量。建议开发者独立基准测试Unsloth、GGUF和MLX量化。Cactus # pip install cactus-compute import json 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" : "法国的首都是什么?" }], json . dumps ({ "max_tokens" : 512 , "auto_handoff" : False }), None , lambda * _ : None , ) print ( result [ "response" ]. strip ()) print ( "confidence:" , result [ "confidence" ]) MLX # pip install mlx-lm import re from mlx_lm import load , generate model , tokenizer = load ( "Cactus-Compute/gemma-4-e2b-it-hybrid-mlx" , tokenizer_config = { "trust_remote_code" : True }, ) messages = [{ "role" : "user" , "content" : "法国的首都是什么?" }] answer = generate ( model , tokenizer , prompt = tokenizer . apply_chat_template ( messages , add_generation_prompt = True ), max_tokens = 512 , ) # 检查点给出答案前推理;仅保留最终答案 answer = re . split ( r"<?channel?" , answer )[ - 1 ] answer = re . sub ( r"^(thought|final)\b\s*" , "" , answer ). strip () print ( answer ) print ( "confidence:" , model . last_confidence ) Transformers # pip install "transformers>=5.5.4,<5.6" torch (5.14+在此检查点上出现段错误) import torch from transformers import AutoModelForCausalLM , AutoTokenizer model_id = "Cactus-Compute/gemma-4-e2b-it-hybrid" device = "cuda" if torch . cuda . is_available () else "mps" if torch . backends . mps . is_available () else "cpu" tokenizer = AutoTokenizer . from_pretrained ( model_id , trust_remote_code = True ) model = AutoModelForCausalLM . from_pretrained ( model_id , trust_remote_code = True , dtype = "auto" ). to ( device ) messages = [{ "role" : "user" , "content" : "法国的首都是什么?" }] inputs = tokenizer . apply_chat_template ( messages , add_generation_prompt = True , return_tensors = "pt" , return_dict = True ). to ( device ) out = model . generate ( ** inputs , return_confidence = True , max_new_tokens = 512 ) print ( tokenizer . decode ( out . sequences [ 0 ][ inputs [ "input_ids" ]. shape [ - 1 ]:], skip_special_tokens = True )) print ( "confidence:" , out . confidence ) 用显式的 .to(device) 加载模型,而不是 device_map="auto" : 探头在模块 forward() 路径外评分生成,因此加速卸载的权重(留在元设备上)崩溃置信度读取。llama.cpp llama.cpp 是 C++,因此探头是一个你编译到引擎中的补丁(见补丁/llama.cpp/)。只需构建补丁服务器一次:git clone https://github.com/cactus-compute/cactus-hybrid && cd cactus-hybrid ./patches/llama.cpp/install.sh && rehash 然后像任何 llama-server 一样服务和查询 — 响应携带顶级置信度字段: llama-server -hf Cactus-Compute/gemma-4-e2b-it-hybrid-GGUF:Q4_K_M --jinja curl -s http://localhost:8080/v1/chat/completions -d ' {"messages":[{"role":"user","content":"法国的首都是什么?"}],"max_tokens":512} ' | jq ' {answer: .choices[0].message.content, confidence} ' 路由质量(AUROC) Gemma 4 E2B Hybrid AUROC衡量多少儿童将错误答案与正确答案分开(越高越好,0.5是随机的,1.0是完美的):持有方式Cactus Hybrid令牌熵MMLU文本MCQ 0.770 0.697 MMLU-Pro文本MCQ 0.771 0.692 ARC-Easy文本MCQ 0.888 0.655 ARC-Challenge文本MCQ 0.834 0.646 GSM8K(3-shot)文本gen 0.782 0.731 MMBench-EN-Dev视觉MCQ 0.840 0.435 ChartQA视觉QA 0.779 0.615 DocVQA视觉QA 0.781 0.512 MMAU音频MCQ 0.789 0.517 GigaSpeech音频0.876 0.343 Earnings-22音频0.839 0.323 LibriSpeech音频0.822 0.427 平均值0.814 0.549 最强的结果:探头在零音频数据上进行训练,然而在四个音频基准上达到了0.79–0.88 AUROC。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡