负面结果也值得公开:gemma-4-12b-constraintkit的SFT数据工厂与被放弃的图像转CAD实验

【免费下载链接】gemma-4-12b-constraintkit-GGUF

项目地址:https://ai.gitcode.com/hf_mirrors/jajmangold/gemma-4-12b-constraintkit-GGUF
点击查看免费下载

gemma-4-12b-constraintkit是一个基于 Gemma 4 12B 微调的 text-to-CAD(文本生成 CAD)模型:你用一句大白话描述机械零件或装配体,它就写出一份"零件+参数+配合关系"的小程序,交给 constraint-kit 编译成真实 B-rep 实体并导出 STEP——而不是画一张看起来像 3D 的图。这篇文章想聊两件不太常被展示的事:它的SFT 数据工厂是怎么用约 4 万条样本把"诚实拒绝"训练出来的,以及一个训练完却被丢弃的图像转CAD多模态实验,为什么最终没能上线。

先看懂:这个模型到底做什么 🎯

它的工作流非常"工程化":

  1. 你输入自然语言,比如"3 个外径 12mm、内孔 5mm、高 8mm 的隔套叠放";
  2. 模型先输出一段思考过程,再输出一段 JSON 程序(parts + params + mates);
  3. constraint-kit 用确定性数学求解装配位置,生成精确几何并导出 STEP / GLB。

关键在于:每一座"积木"都可以拿真实几何去校验(体积、包围盒偏差控制在 2% 以内),而不是靠"生成得漂不漂亮"来打分。官方公布的 held-out 测试成绩:

阶段几何校验通过超范围请求诚实拒绝
SFT(bf16)56/60(93%)26/30(87%)
SFT(Q6_K 量化后)55/60(92%)25/30(83%)
SFT + GRPO(本仓库模型)6/6 保持9/10(由 8/10 提升)

对新手来说最值得记住的一点:它"知道自己不会什么"。比如你让它做"重型应用用的螺旋锥齿轮",它不会偷偷给你一个直齿锥齿轮蒙混过关,而是老老实实回答{"unsupported": "only straight bevel gears are modeled"}。这条"诚实规则"(Honesty Rule)就写死在训练用的系统提示词里,可以逐字阅读:train_sys.txt。

SFT 数据工厂:4 万条训练样本是怎么来的 🏭

大多数微调项目最头疼的就是数据:手写太慢,网上抓的又不可靠。这个项目的解法是让 constraint-kit 自己当数据工厂——用自己体系内的零件、参数、配合关系去生成"自然语言 → 推理 → DSL 程序"的完整链路样本,规模约 4 万行。

数据里有三类内容,正好对应模型的三种能力:

  • 正常建件:请求 → 推理 → 零件/参数/配合的 JSON 程序;
  • 诚实拒绝:故意点名词表之外的东西(蜗轮、弹簧、凸轮、花键、活页铰链……),正确答案是{"unsupported": "..."}而不是近似替换;
  • 自纠正轨迹:由诊断信息驱动的错误尝试 → 修正过程,其中坏尝试的部分做了 loss-mask,不让模型"学会犯错"。

训练本身并不重:LoRA r=16(配置见 lora/adapter_config.json,基于unsloth/gemma-4-12b-it),2 个 epoch,单张 RTX PRO 6000 跑了约 10.5 小时,成本大约 7 美元。

有一个很容易被忽视的工程细节:模型只对 train_sys.txt 里这一个系统提示词负责。换一句话的提示词都可能让它"失忆",所以这个文件是仓库里的必备件,推理时必须原样使用。

GRPO 阶段:把 CAD 验证器直接当奖励 ⚡

SFT 之后,项目没有用常见的"奖励模型 + LLM 裁判"那套组合,而是把constraint-kit 的 DSL 验证器当成奖励函数:你的程序能不能通过检查、能不能真正构建、几何签名离目标有多近,直接折算成分数。

  • 混合信号:70% 拒绝样本 + 30% 难建件样本,共 150 步;
  • 效果:静默"建错变体"(该拒绝却偷偷建了个近似的)从 2/10 降到 1/10,正确拒绝升到 9/10,正常建件 6/6 不回退。

整个训练(SFT + GRPO)的租卡总成本约35 美元——对想复现这类工作流的人来说,这是个很有参考价值的数字。

被放弃的实验:图像转 CAD 为什么失败了 🚫

这是仓库里最值得读的一段"负面结果",也是本文标题的由来。

作者另外训练了一个多模态图像→CAD 的 LoRA:给它渲染图,看它能不能还原出对应的 CAD 程序。听起来很美,但测试结果很尴尬:

  • 在确认图片确实被送进模型的前提下,有渲染图时的得分是 52%,没渲染图时是 47%;
  • 5 个点的差距,完全落在噪声范围内——也就是说图片基本没用;
  • 复盘发现:模型无视了画面内容,转而依赖包围盒(bounding box)这种粗粒度线索来猜答案。

结论很直白:这条路暂时走不通,实验报告写进了仓库,但权重不随模型发布。对新手读者,这个案例的价值在于提醒:多模态 ≠ 把图喂进去就行,"输入真的被利用了"必须先被验证,否则你优化的可能只是一个 47% 的基线。

仓库文件清单:拿到的都是什么 📦

文件说明
gemma4-12b-constraintkit-grpo-Q6_K.gguf最终模型(SFT + GRPO),Q6_K 量化,约 9.8 GB,供 llama.cpp 使用
lora/adapter_model.safetensors同款模型的 PEFT LoRA 适配器(r=16),仅 251 MB,可叠加到基座模型上
lora/adapter_config.jsonLoRA 配置:目标模块、alpha、秩等
train_sys.txt训练使用的原版系统提示词,推理时必须原样使用
README.md完整文档:用法、结果表格、训练过程与局限性

如何本地运行:llama.cpp 两步启动 🚀

先获取仓库:

git clone https://gitcode.com/hf_mirrors/jajmangold/gemma-4-12b-constraintkit-GGUF

然后用 llama.cpp 起服务(一行命令):

llama-server -m gemma4-12b-constraintkit-grpo-Q6_K.gguf -c 8192 -ngl 99 --port 8086

推理要点(完整脚本见 README.md):

  • 用原始/completion接口,系统轮以<|think|>模式 token 开头,遇到<turn|>停止生成;
  • 建议temperature 0.2、top_p 0.95,输出取最后一个<channel|>之后的内容(即去掉思考过程,只留 JSON 程序);
  • 拿到 JSON 后发到 constraint-kit 服务校验并构建:POST /dsl/verify、POST /build。

局限性:它明确不会什么 ⚠️

  • 它只认识 train_sys.txt 里的词表:spacer、spur_gear、plate、shaft、washer、nut、bolt、panel、link、housing、sheet_bracket,外加几个"维生素"库零件(NEMA 步进电机、齿条、蜗杆、直齿锥齿轮、指节铰链)——别的应该拒绝,而不是硬凑;
  • 拒绝仍是短板:大约每 10 个不支持的请求里还有 1 个会被建成近似件;
  • 正式使用请永远把输出过一遍 constraint-kit 的验证器再相信几何。

写在最后:负面结果为什么值得公开 💡

gemma-4-12b-constraintkit 给出的样本不大(4 万行 SFT、150 步 GRPO、35 美元成本),但它做对了几件常被跳过的事:

  1. 用确定性验证器当奖励,而不是让模型互相打分;
  2. 把"诚实拒绝"当成一等公民写进数据和训练目标;
  3. 实验失败也记录在案:图像转CAD 的 52% vs 47% 被原样披露,而不是悄悄删掉。

对做 AI + 工程方向的新手来说,这套"数据工厂 + 可验证奖励 + 公开负面结果"的打法,比单看 93% 的通过率更值得抄作业。

Apache-2.0 许可(与 Gemma 4 基座一致),constraint-kit 本身为 MIT。

【免费下载链接】gemma-4-12b-constraintkit-GGUF

项目地址:https://ai.gitcode.com/hf_mirrors/jajmangold/gemma-4-12b-constraintkit-GGUF
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AI教练如何落地羽毛球训练:从动作捕捉到个性化反馈的完整实践

AI教练如何落地羽毛球训练:从动作捕捉到个性化反馈的完整实践

智能羽球这个说法最近一两年越来越热&#xff0c;但真正把AI教练用进日常训练、让每次挥拍都有数据可查的体系&#xff0c;市面上其实并不多见。我接触到这套系统时&#xff0c;第一反应并不是“又多了一个炫技的科技产品”&#xff0c;而是被一个朴素的想法打动&#xff1a;请…

2026/10/20 4:24:39 阅读更多 →
从rea缩写拆解轻量级项目:识别、执行、评估的工程实践

从rea缩写拆解轻量级项目:识别、执行、评估的工程实践

1. 从“rea”这个标题说起&#xff1a;一个被低估的缩写背后藏着什么第一次看到“rea”这个标题的时候&#xff0c;我脑子里蹦出来的第一反应是——这大概率又是一个被缩写玩坏了的项目名。做技术的人都有个通病&#xff0c;喜欢把什么都缩成三四个字母&#xff0c;好像名字越短…

2026/10/20 4:24:39 阅读更多 →
神经网络边权更新:从梯度下降到精准调控的工程实践

神经网络边权更新:从梯度下降到精准调控的工程实践

1. 项目概述&#xff1a;边权更新不是“调参数”&#xff0c;而是神经网络的呼吸节奏“神经网络的训练——边权的更新”&#xff0c;这行字看起来像教科书目录里的一节小标题&#xff0c;但在我带过的十几个实际项目里&#xff0c;它从来不是理论章节&#xff0c;而是每天凌晨三…

2026/10/20 4:24:39 阅读更多 →

最新新闻

AI面试八股文-17_17-AI 编程工具与自主 Coding Agent 面试题

AI面试八股文-17_17-AI 编程工具与自主 Coding Agent 面试题

pdf版下载链&#xff1a;https://pan.quark.cn/s/9cc742e9c2a8 17 AI 编程工具与 Coding Agent&#xff1a;原理、评测与工程实践 更新&#xff1a; 2026-10-12 难度&#xff1a; ⭐⭐⭐⭐ 考点&#xff1a; Coding Agent、Harness、沙箱、权限、Skills、长任务、评测与工具选…

2026/10/20 5:05:58 阅读更多 →
Python vs Go:2026年到底该怎么选

Python vs Go:2026年到底该怎么选

早些年我写项目&#xff0c;常年泡在Python里。写接口、跑数据分析、捣鼓大模型原型&#xff0c;几行代码就能把想法跑通&#xff0c;爽感拉满。但随着服务流量涨上去&#xff0c;麻烦接踵而至&#xff1a;接口延迟忽高忽低、容器冷启动慢吞吞、并发一上来资源开销直接超标。那…

2026/10/20 5:05:58 阅读更多 →
详细描述一个完整RAG系统的详细工作流程?

详细描述一个完整RAG系统的详细工作流程?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 5:05:58 阅读更多 →
windows上安装docker步骤

windows上安装docker步骤

1. 检查是否已开启虚拟化 ctrlshiftesc快捷键&#xff1a; 2. 安装wsl 开启管理权限在cmd中输入以下命令&#xff1a; wsl -l -v查看版本: wsl -l -v输出会显示每个发行版的 NAME、STATE、VERSION&#xff0c;其中 VERSION 为 1 表示 WSL1&#xff0c;2 表示 WSL2 。如果…

2026/10/20 5:05:58 阅读更多 →
一亿数据找Top K,内存仅存k个元素(Top—K问题)

一亿数据找Top K,内存仅存k个元素(Top—K问题)

问题导入&#xff1a;假使有一亿个整数要去排序&#xff0c;从中找出k个最大值和k个最小值&#xff0c;当前的内存仅仅可以保留k个整数应当如何存储内容扩展&#xff1a;1GB1024MB1024*1024KB1024*1024*1024Byte≈10.7亿字节一个整形需要用到4个字节&#xff0c;一亿个整形要用…

2026/10/20 5:05:58 阅读更多 →
Agent稳定运行的工程基石:Harness设计与实践拆解

Agent稳定运行的工程基石:Harness设计与实践拆解

先交代一个背景。我们团队最早做某自动化运维 Agent 时&#xff0c;第一版代码就是一个while True循环里反复调用大模型、执行工具、再喂回模型。前三天跑得挺顺&#xff0c;第四天它突然开始疯狂调用同一个内部接口&#xff0c;把下游服务打到限流。查了半天才发现&#xff0c…

2026/10/20 5:04:57 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →