我微调了 Gemma 4 12B,使工具调用效果提升了2.7倍,因为我无法在16GB的VRAM中舒适地运行其他任何模型。
摘要
一个通过QLoRA训练优化的微调版 Gemma 4 12B,适用于配备16GB VRAM的消费级GPU,可将工具调用可靠性提高2.7倍。
查看缓存全文
缓存时间: 2026/08/23 03:23
TheOneWhoWill/Coding-Monkey-Gemma-GGUF · Hugging Face
来源:https://huggingface.co/TheOneWhoWill/Coding-Monkey-Gemma-GGUF
Coding Monkey Gemma
许多人称赞 Gemma 4 26B 的编码能力,这确实有其道理。然而,这个模型实在太大了,要在消费级 GPU 上舒适运行,就必须进行大幅度的量化妥协。因此,我转向了 12B 变体,却发现它甚至在基本编码任务上也会失败,因为它不理解如何正确利用智能体框架中的工具。所以,这个模型是对 Gemma 4 12B 进行了微调,使其具备了可靠的工具调用能力。结果不言自明:在一个包含 102 个保留提示的测试集上,精确工具调用的可靠性达到了 71%(意味着正确的 ChatML 语法和参数位置)。与基础模型仅有 26.5% 的精确工具调用可靠性相比,这是一个巨大的提升。我还看到模型实际发出的工具调用次数增加了 16%,这意味着模型更有可能使用它可访问的工具,这对于编码任务至关重要。对于任何想要进行本地编码但显存紧张的人来说,这个模型都很棒。
| 指标 | 基础版 -it | 微调版 | Δ 变化 |
|---|---|---|---|
| 格式有效性 | 0.824 | 0.980 | +0.157 |
| 精确准确性 | 0.265 | 0.706 | +0.441 |
| 发出调用比例 | 0.824 | 0.980 | +0.157 |
测试集包含 n = 102 个保留提示,训练中从未见过。这个集合比之前的 67 项评估更难,因为它现在包含了需要精确匹配的多参数数据库、知识图谱和 shell 任务。
训练细节
训练这个模型时,我使用了 QLoRA 方法和一张 16GB 的 5070 Ti 显卡。训练耗时 3 小时 48 分钟完成(480 步),但之前的原型设计总计花费了 30 小时。训练损失从 1.695 降至 0.120,保留集的评估损失为 0.206。我本可以训练更长时间,但在之前的尝试中遇到了过拟合问题,因此我决定在一个小而精的数据集上训练是最佳选择。训练数据集由 5,211 个高质量的智能体/工具调用样本组成,每个样本都按照 Gemma 4 自己的聊天模板格式化。glaiveai 数据集构成了数据的主体,但我也包含了 AgentInstruct 样本,因为它们包含真实的 bash 和终端操作。我将这些原始的 ReAct 轨迹(bash、SQL、web 和知识图谱操作)转换成了真实的、结构化的 Gemma 工具调用,而非纯文本。我将数据按 98/2 的比例划分为 5,107 个训练样本和 104 个保留验证样本,评估集仅由验证集部分构建,因此 102 个评分提示在训练中从未见过,防止了数据污染。
按来源的划分如下:
| 来源 | 样本数 |
|---|---|
glaiveai/glaive-function-calling-v2 | 3,347 |
zai-org/AgentInstruct — alfworld | 336 |
zai-org/AgentInstruct — webshop | 351 |
zai-org/AgentInstruct — os | 195 |
zai-org/AgentInstruct — mind2web | 120 |
zai-org/AgentInstruct — db | 538 |
zai-org/AgentInstruct — kg | 324 |
| 总计 | 5,211 |
其中约 5,161 个是实际的工具调用样本(约占总数的 99%),使用 QLoRAr=16/alpha=32,学习率 2e-4 余弦退火,有效批大小为 32,训练了 3 个 epoch。
量化
该模型提供 fp16、Q8_0、Q6_K、Q5_K_M 和 Q4_K_M 量化版本,格式为 gguf。您可以在本仓库中找到它们:(https://huggingface.co/TheOneWhoWill/Coding-Monkey-Gemma-GGUF)
用法
llama.cpp
要使用 llama.cpp 来运行此模型,您可以像这样使用 gguf 文件:
llama-server \
-m gemma-coder-Q4_K_M.gguf \
-c 32768
Ollama
Ollama 需要为每个 gguf 创建一个模型文件,您可以创建如下文件:
FROM ./gemma-coder-Q4_K_M.gguf
PARAMETER num_ctx 32768
然后,您可以在与 gguf 文件相同的目录下使用 Modelfile 运行它:
ollama create coding-monkey -f Modelfile
相似文章
昨天在我的3090上跑了gemma 4 12b,我觉得本地模型领域已经变了
一位用户报告称,通过GGUF量化在单张RTX 3090上本地运行了谷歌的Gemma 4 12B模型,发现其性能强劲,包括真实的256k上下文、多模态能力以及函数调用功能,在编码任务上甚至优于更大的70B模型。
@analogalok: Gemma 4 12B QAT(密集)在8GB显存和120k上下文下实现超过1000 tokens/秒的预填充速度 Gemma 4 12B QAT(密集),TurboQ…
Gemma 4 12B QAT(密集)使用TurboQuant在8GB RTX 4060上实现超过1000 tokens/秒的预填充速度,支持120k上下文,实现完整的GPU层卸载。相比之前的方法,预填充速度提升了42%。
Gemma 4 12B 是我的新主力
作者分享了从 Qwen 3.6 切换到 Gemma 4 12B(Unsloth Q5_K_XL)进行本地编程的体验,称赞其即插即用的设置、更好的语法准确性以及可控的 VRAM 使用,尽管在速度上略有取舍。
@analogalok: 在8GB显存上以20+ token/秒运行Gemma 4 26B MoE,支持250k上下文。如果你有8GB显存显卡,停下你正在做的事……
Alok演示了使用Unsloth的QAT量化以及llama.cpp中的-cmoe标志,在8GB显存上运行Gemma 4 26B MoE,实现了250k上下文下20 token/秒的速度,这标志着廉价本地AI的一个重要里程碑。
Gemma 4 视觉
Gemma 4 的视觉表现受默认 token 预算过低拖累;在 llama.cpp 中将 --image-max-tokens 提到 2240,可解锁顶尖 OCR 与细节识别,代价是额外占用约 14 GB 显存。