
这项研究来自Autodesk Research(欧特克研究院),论文以预印本形式于2026年4月27日发布在arXiv平台,编号为arXiv:2604.24479,题为《Zero-to-CAD: Agentic Synthesis of Interpretable CAD Programs at Million-Scale Without Real Data》。感兴趣的读者可通过该编号在arXiv上查阅完整论文,相关数据集与模型也已在HuggingFace平台的ADSKAILab/zero-to-cad合集中公开。
**一、一张设计图背后藏着什么秘密**
每当你看到一台发动机、一个精密齿轮或者一块固定零件的金属支架,你可能以为这些东西的"电子档案"就是它们的三维外形数据——就像一张高精度的照片。然而,真正的工程师在电脑里保存的绝不仅仅是外形,而是一份"制造配方":第一步做什么形状,第二步在哪里打孔,第三步把哪些边磨圆,哪些角削掉……这份配方叫做**参数化构建历史**(Parametric Construction History),或者更通俗地说,叫做CAD程序(CAD Program)。
CAD是"Computer-Aided Design"的缩写,中文叫计算机辅助设计。CAD程序就像是一份详细的乐谱,每一个操作步骤都记录在案,工程师随时可以回头修改某个尺寸,整个零件就会自动更新。这和单纯的三维模型截然不同——那种模型更像是一张已经印好的照片,你没法轻易改动其中的某个细节。
问题在于,互联网上能找到的海量三维数据集,几乎清一色都是那种"照片式"的几何数据,比如ABC数据集收录了一百万个三维模型、Objaverse数据集更是包含了数以百万计的三维物体,但它们只保存了最终的几何外形,制造配方早已丢失。少数包含构建历史的数据集,比如DeepCAD(约17.8万条序列)和Fusion 360 Gallery(仅8600条序列),不仅规模很小,而且操作类型极其单一,基本只有"画草图然后拉伸成三维体"这一种玩法,而真实工程设计中常见的倒角(chamfer)、圆角(fillet)、布尔运算(Boolean,即把两个形体相加或相减)、旋转体、放样、抽壳等操作,在这些数据集里几乎见不到踪影。
Autodesk研究院的团队正是从这个痛点出发,提出了一个大胆的解法:既然真实数据稀缺,那就从零造数据。他们构建了一套叫做**Zero-to-CAD**的系统,把一个大型语言模型(Large Language Model,简单理解就是类似ChatGPT的AI)放进一个真实的CAD运行环境里,让它不断尝试写代码、运行代码、检查错误、查文档、再修改,直到生成一个在几何上完全正确、可执行、可编辑的CAD程序为止。最终,这套系统在不依赖任何真实CAD设计文件的情况下,生成了接近一百万条高质量的CAD构建序列,覆盖了从支架、齿轮、外壳到连接件等65种零件类别,涵盖了真实工程中绝大多数常见操作类型。
**二、为什么说"让AI自己造数据"是一个聪明的赌注**
在理解这套系统的具体做法之前,先要明白它背后的核心逻辑。
大型语言模型在训练时读取了互联网上海量的文字资料,其中包括大量的工程手册、机械设计教材、制造工艺说明等等。因此,这类模型其实"知道"很多关于机械零件的知识——它知道一个支架通常需要打安装孔,一个轴上通常要有键槽,一个外壳通常需要有圆角来避免应力集中。这些知识隐藏在模型的参数里,但问题是,知道概念不等于能写出正确的代码。CAD软件的编程接口(API)有精确的语法要求,一个参数写错就会报错,一个操作顺序搞反可能导致几何体无法生成。
Autodesk的研究团队把这个挑战框架化为一个**智能体搜索问题**(Agentic Search Problem)。所谓智能体,可以理解为一个能自主行动、感知环境、根据反馈调整行为的AI角色——有点像一个在厨房里反复实验的厨师:他凭借食谱知识写出一份做法,放进锅里试做,发现火候不对,查一下烹饪手册,调整参数,再试一次,直到做出令人满意的菜肴为止。
在这个框架里,AI模型不需要一次就写出完美的代码,而是被允许犯错、查文档、自我修正,整个过程形成一个闭环。这种方式能够把AI的语义知识(知道零件长什么样、有什么功能特征)和几何有效性(代码能跑通、生成的形体真实存在)结合起来,产生那种仅靠开放式生成永远无法得到的高质量结果。
研究团队使用的是一个叫做gpt-oss-120b的模型,该模型以Apache 2.0开源许可协议在内部服务器上部署,避免了对外部商业API的依赖。整个生成过程中,没有使用任何现有的真实CAD文件,所有程序都是从零开始合成的,这也是"Zero-to-CAD"这个名字的由来。
**三、流水线是怎么运作的:一个有反馈机制的"写作车间"**
这套系统的架构由四个紧密协作的组件构成,每个组件各司其职,共同支撑了百万级别的生产规模。
负责AI推理的服务部分,采用了一种叫做vLLM的高效推理框架,部署在一个Ray计算集群上,支持KV缓存以加速多轮对话,并通过兼容OpenAI接口的方式对外提供服务,允许同时运行数千个并行的生成任务。协调节点则像是整个工厂的调度室,负责管理每个独立的生成任务,处理负载均衡、容错恢复,并把生成的结果实时推送到存储系统中。
每个具体的生成任务,都配备了三个工具。第一个工具叫做execute_and_validate,顾名思义,它负责在隔离的子进程中执行AI写出的CadQuery代码(CadQuery是一种基于Python的参数化CAD库),并进行多阶段的几何验证,将错误信息、拓扑指标和导出状态等结构化反馈返回给AI。第二个工具叫做lookup_documentation,采用TF-IDF算法(一种轻量级的文本检索方法)在CadQuery的API文档中进行语义检索,帮助AI找到正确的函数签名和用法。第三个工具叫做grep_documentation,提供基于正则表达式的精确语法搜索,当文档检索结果过于宽泛时,可以精确定位到具体的语法细节。成功生成的代码及其对应的STL网格文件、STEP格式文件和元数据,都会被实时推送到云存储中。
整个生成过程分为两个阶段,研究团队称之为**两阶段生成协议**(Two-Stage Generation Protocol),其核心思想是把"决定做什么"和"决定怎么做"这两件事分开处理。
在第一阶段,AI被要求扮演一个"机械零件图书管理员"的角色,负责生成一份零件描述目录。系统通常一次请求200条描述,利用AI的上下文窗口来主动避免重复。AI输出的是简洁的、不包含具体尺寸的功能描述,比如"一个带有两个通孔的安装支架"或者"一个带有六角孔的锁紧螺母"。这些描述经过去重和索引之后,就构成了后续代码生成的输入库。这种方式的妙处在于,先用语义层面的多样性来保证覆盖度,再用代码生成来保证几何有效性,两个目标互不干扰。
在第二阶段,每条描述都会被送入代码生成流程。AI会收到一个包含19条设计原则的系统提示(System Prompt),这19条原则涵盖了参数化设计规范、CadQuery最佳实践、尺寸规范(最大尺寸为100单位,相当于现实中10厘米)、可制造性约束,以及错误处理协议等方面。对于几何结构较复杂的类别(如支架、外壳、多特征机械部件),系统还会提供参考代码片段,但明确要求AI学习其模式和结构,而非照抄参数——生成的代码必须实现新描述的几何形状,而不是简单改变模板的数值。
系统提示中有一条规定尤为关键:当AI遇到错误时,**严禁简化代码来逃避问题**,必须通过查阅文档找到正确的语法,并在保持几何复杂度的前提下修复具体的错误。这条规定有效防止了AI通过去掉特征、简化形状来蒙混过关的取巧行为。整个修复循环被限制在每次尝试最多10轮对话、每个设计任务最多100次尝试的范围内。
**四、每个生成的零件要过"四道关"**
并非所有AI生成的代码都能进入最终数据集。研究团队设计了一套严格的多阶段验证框架,确保每一条被收录的序列都既能运行,又具有有意义的几何结构。
第一关是代码执行验证:代码在带有超时限制的隔离子进程中运行,所有语法错误、运行时异常和缺失导入等问题都会被捕获,并以完整的错误堆栈形式反馈给AI,用于下一轮修复。
第二关是几何有效性检查,包含多项子检验。拓扑有效性要求生成的实体是一个格式良好的封闭固体,不存在自交或退化面。连通性要求生成结果恰好是一个连通实体,如果产生了多个不相连的独立体,说明布尔合并操作不完整,这种结果会被拒绝。最小复杂度要求实体至少拥有7个B-Rep面(B-Rep即边界表示法,是描述三维实体表面的数学方法),以过滤掉过于简单的退化结果,比如一个单纯的方盒子。正体积检验则确保结果的体积超过一个最小阈值,排除零体积的退化情形。
第三关是导出验证:框架会测试将结果同时导出为STL格式和STEP格式。导出失败往往能暴露前面两关没有发现的细微几何问题,比如无效的面法向量或不支持的边配置。只有全部通过三关验证的设计,才会被正式收录进数据集。
研究团队坦承,这套框架保证的是几何有效性,而非完整的可制造性(Design for Manufacturability)。可制造性规则依赖于具体的加工工艺——数控铣削、铸造、增材制造各有不同要求,还需要材料假设,在百万级别的规模下实现完整的可制造性验证在技术上是不现实的。不过,团队通过类别条件描述和19条提示原则来引导生成朝着合理的机械意图方向靠近,鼓励出现拔模角、可访问面和对称孔布局等实用特征。
**五、如何防止AI陷入"创意枯竭":65个类别和参考代码的联动机制**
在实际的百万级别生成任务中,防止AI反复生成相似内容、陷入模式崩溃(Mode Collapse)是一个核心挑战。研究团队从三个维度设计了多样性保障机制。
首先是结构化类别覆盖。目录被组织成65个预定义零件类别,这些类别来自对工程目录和制造数据库中常见机械零件的系统调研,涵盖结构件(安装支架、L型支架、加强板)、旋转件(皮带轮、飞轮、凸轮从动件)、封闭件(外壳、盖板、端盖)、紧固件(夹具、保持环、垫圈)等多种功能类型。每个类别都有预设的描述配额,确保整个零件分类体系中的均衡覆盖。
其次是参考代码片段的引导作用。对于几何复杂度较高的类别,系统会在生成提示中附上参考代码片段,演示草图组合、布尔操作、特征放置等高级CadQuery模式,但同时明确指示AI学习其背后的几何推理逻辑,而不是复制参数——生成的代码必须实现全新的几何形状。这种"参考但不照搬"的机制,既帮助AI处理复杂任务,又保证了输出的多样性。
第三是描述驱动的操作选择。与从固定分布中采样操作类型的方式不同,Zero-to-CAD的操作类型直接由零件描述推导而来。描述中出现"加强肋"自然引导AI使用拉伸操作,描述中出现"圆滑边缘"自然引导AI使用圆角操作,描述中出现"中央凸台"则引导AI使用布尔合并。这种语义驱动的方式,确保了不同零件之间操作类型的自然变化,而非人为强制分配。
**六、计算资源:用"机会主义调度"完成百万级生产**
这个项目的规模令人印象深刻,而它的实现方式也颇具创意。整个数据集大约在一周内生成完毕,但并不是通过固定分配的专属算力完成的,而是利用了内部闲置算力的弹性调度。负责AI推理的GPU数量在2到80张之间动态变化,完全依赖当时的资源可用情况。负责CadQuery执行和函数调用的CPU节点在峰值时扩展到3000个核心。
从Token(大型语言模型处理文字的基本单位,大致上一个中文字对应1-2个Token)消耗量来看,整个合成流程处理了约602亿个输入Token,生成了约55.9亿个输出Token。每个设计平均消耗5638个生成Token,中位数为5089个,分布呈右偏态,反映了简单几何体和复杂多特征零件之间天然的复杂度差异。
成功率方面,22.3%的设计在第一次尝试就通过了全部验证,大多数设计需要迭代修复,平均需要3.30次尝试,中位数为3次。每次对话平均产生4.34次工具调用,其中执行验证工具被调用了380万次,文档检索工具被调用了37.5万次,正则搜索工具被调用了13.3万次,执行验证工具的高频使用印证了它在整个迭代修复过程中的核心地位。
**七、数据集长什么样:与同类产品的全面比较**
最终进入数据集的序列总数为999,633条,按979,633/10,000/10,000的比例分为训练集、验证集和测试集。研究团队还从中筛选出一个包含10万条序列的精选子集,供计算资源有限的研究者使用。精选的方法是:先用DINOv3(一种强大的视觉特征提取模型)提取每个零件在八个渲染视角下的视觉嵌入,取平均后进行k均值聚类,再从每个聚类中选取距离聚类中心最近的样本作为代表,最终得到100,000个在几何上尽可能多样的代表性零件。研究团队同时公开了预计算的DINOv3嵌入向量和FAISS索引文件,方便在整个百万级数据集上进行高效相似性搜索。
与其他数据集相比,Zero-to-CAD的优势相当明显。在几何复杂度方面,Zero-to-CAD的零件平均拥有46.2个B-Rep面,中位数为30,与ABC数据集的均值50.7非常接近;而CAD-Recode数据集的均值仅为16.4,中位数为15。CAD-Recode中有12.9%的零件面数不足7,被本研究的验证框架视为过于简单,另有56.3%的零件是由多个不相连实体组成的——这意味着布尔合并操作没有完成,实际上并不是一个完整的零件。Zero-to-CAD在构建时就强制要求单连通实体和最小面数,从根本上消除了这两类问题。
在与ABC数据集的分布对齐程度方面,研究团队用DINOv2视觉嵌入计算了Fréchet距离(一种衡量两组数据分布相似性的指标,数值越低表示越相似)和k-ball覆盖率(衡量合成数据能覆盖多少真实数据的近邻)。Zero-to-CAD的Fréchet距离为0.164,远低于CAD-Recode的0.268;在k=5时的覆盖率为57.2%,也明显高于CAD-Recode的45.3%,说明Zero-to-CAD的形状分布更接近真实工程零件的分布。
可读性方面的差距更为直观。CAD-Recode的代码是通过坐标链转译生成的,充斥着大量匿名坐标对,比如:r = w0.sketch().segment((...),(...)).segment((...),(...))....close().finalize().extrude(8)。这种代码对人类工程师来说几乎无法直接修改,因为你根本看不出每个坐标对应的是哪个设计意图。相比之下,Zero-to-CAD的代码使用了像plate_thickness、fillet_radius这样的具名参数,按照基础形体、添加特征、减去特征的逻辑顺序组织操作步骤,任何有CadQuery基础的工程师都可以一眼读懂并按需修改。
**八、用生成的数据训练一个"读图画图"的小模型**
光有数据集还不够,研究团队还用这份数据做了一个颇具说服力的下游任务实验,证明这份合成数据确实能带来实质性的能力提升。
他们选择的任务是**图像到序列重建**(Image-to-Sequence Reconstruction):给定一个三维零件的多个渲染视角图片,让模型生成能重现该几何体的可执行CadQuery代码。具体来说,每个输入包含8张256×256分辨率的PNG图片(4张正面视角,4张背面视角),模型需要在一次前向推理中输出完整的CadQuery程序。这个任务同时考验模型的三维空间理解能力和参数化代码生成能力。
研究团队选用了Qwen3-VL-2B-Instruct作为基础模型,这是一个把视觉编码器通过MLP适配器与语言解码器连接起来的视觉-语言模型(VLM),参数量约为20亿。他们在16张NVIDIA H100 GPU上进行全量微调,使用AdamW优化器,学习率设置为1×10??,余弦学习率调度,训练了3个完整的epoch,有效批次大小为16,使用bfloat16精度。
评估指标采用体素化交并比(Voxelized IoU):将生成的几何体和参考几何体分别归一化后,以64?的分辨率体素化,计算两者体积重叠的比例。为了消除旋转方向的歧义,系统会以45度为步长旋转生成的形体,取所有旋转角度中的最大IoU作为最终得分。同时还报告了倒角距离(Chamfer Distance,CD)作为补充指标,以及代码执行成功率。
对比基线包括未经微调的Qwen3-VL-2B-Instruct基础模型,用于衡量这类任务的零样本(zero-shot)能力;以及业界最顶尖的商业大模型GPT-5.2,分别测试了其"高推理"和"中推理"两种模式。考虑到API调用成本,GPT-5.2的评估仅在Zero-to-CAD测试集的1000条随机样本上进行,Qwen系列模型则在完整的10000条测试集上评估。
**九、实验数字背后:一个2B小模型赢过了GPT-5.2**
结果相当出人意料,或者说,印证了一个很重要的道理:专门训练的小模型,在特定任务上完全可以超越通用的超大模型。
在Zero-to-CAD自己的测试集上,微调后的Qwen3-VL-2B模型取得了82.1%的代码执行成功率,平均IoU达到0.747,中位数IoU高达0.847,排名前10%的样本IoU接近满分1.0(P90为0.999)。相比之下,GPT-5.2在"高推理"模式下的成功率为72.2%,平均IoU仅为0.485,在"中推理"模式下的成功率为71.1%,平均IoU为0.495。未经微调的基础Qwen模型成功率只有6.6%,平均IoU仅0.184,印证了这个任务确实需要专门训练而非单靠通用能力。
在分布外(Out-of-Distribution)泛化测试中,研究团队使用了ABC数据集中筛选出的1000个人类工程师真实设计的零件(保留了B-Rep面数在7到100之间的零件),测试模型能否把在合成数据上学到的能力迁移到真实设计上。这是一个相当严苛的考验,因为合成数据和真实数据之间存在风格差异,性能下降是预期中的事情。微调版Qwen3-VL-2B的成功率降至61.0%,平均IoU为0.377;GPT-5.2"高推理"的成功率为66.2%,平均IoU为0.344;GPT-5.2"中推理"的成功率为62.6%,平均IoU为0.346。
从这个对比来看,GPT-5.2在成功率上略高于微调后的小模型(66.2% vs 61.0%),但在几何精度指标上全面落后——微调版Qwen在平均IoU、中位数IoU、P75和P90上均优于GPT-5.2的两种模式,在倒角距离的大多数统计量上也更好,GPT-5.2仅在中位数倒角距离上持平甚至略好。换言之,GPT-5.2生成了更多"能跑通"的代码,但这些代码对应的形状和目标形状的几何匹配度不如微调后的小模型。GPT-5.2从Zero-to-CAD到ABC的性能下降幅度小于微调版Qwen,说明合成到真实的迁移仍然是一个挑战,但并不影响核心结论的成立。
这组实验传递的核心信息是:一个纯粹基于合成数据训练的2B参数小模型,在特定任务上的几何重建质量超过了拥有更多通用知识的顶级商业大模型,而且完全不依赖任何真实CAD构建历史数据。这正是研究团队所说的"自举"(Bootstrapping)能力——用合成数据引导出真实能力。
**十、失败案例告诉我们什么:AI对空间关系的盲点**
研究团队在论文中坦诚地展示了典型的生成失败案例,这些案例本身也颇具启发性。最常见的失败模式包括:薄壁特征因为太薄而破坏了整体连通性(相当于两堵墙之间的门洞太薄,整栋建筑就垮了);孔的位置放错,钻到了实体之外或者钻穿了不该钻的地方;几何体出现自交(就像两个物体互相穿过对方,在物理世界里不可能存在);尺度漂移,模型在生成过程中渐渐忘记了整体比例,出现局部尺寸和整体不协调的情况;以及局部看起来合理但全局互不相容的基本体组合。
这些失败都有一个共同的根源:语言模型的推理本质上是文字层面的,它能推理"这里应该有一个孔",但很难精确追踪这个孔在三维空间中的实际坐标会落在什么位置。两个操作在文字描述上都是合理的,但它们的几何结果可能互相冲突,而模型无法通过纯文字推理发现这种冲突。研究团队尝试过引入视觉反馈来检测这类缺陷,但测试结果表明,当前的视觉模型在可靠识别这些细微几何问题上还有明显差距,因此这条路目前暂时搁置。
**归根结底,这项工作在说什么**
说到底,Zero-to-CAD做成了一件过去被认为很难做到的事:在完全没有真实CAD设计文件的前提下,用AI自己写代码、自己验证、自己修错,生成了接近一百万份在工程上有意义、在代码上可执行、在格式上可读可编辑的三维设计程序。这份数据集填补了一个长期存在的空白——大规模CAD数据有,但要么没有构建历史,要么历史太简单;有构建历史的数据又太少、操作类型太单一。Zero-to-CAD是迄今为止第一个在这个规模上同时做到"可执行、可读、操作类型丰富"的CAD序列数据集。
这件事对普通人的影响,可能比听起来要深远得多。工业设计、机械制造、消费电子、医疗器械……所有依赖精密零件设计的行业,都面临着CAD AI化的浪潮。如果能训练出真正理解设计意图的AI助手,工程师就能把更多精力放在创意和决策上,而把重复性的建模工作交给机器。Zero-to-CAD提供的,正是支撑这类AI助手的数据基础。
当然,这项研究还留下了一些开放性问题值得继续探索。合成数据与真实工程数据之间的分布差异,是否会在某些特定应用中造成性能瓶颈?如何把可制造性验证引入到这个流水线中,同时维持百万级别的生成规模?随着视觉模型能力的提升,是否可以在生成循环中加入视觉反馈来解决空间推理盲点?这些问题都指向了这个领域未来研究的重要方向,也是值得继续关注的信号。有兴趣深入了解的读者,可以通过arXiv编号arXiv:2604.24479查阅完整论文,或在HuggingFace平台的ADSKAILab/zero-to-cad合集中下载数据集和微调后的模型。
---
Q&A
Q1:Zero-to-CAD数据集和CAD-Recode数据集有什么区别?
A:Zero-to-CAD和CAD-Recode规模相当,都在百万级别,但核心差异在于操作覆盖范围和代码可读性。CAD-Recode只包含草图加拉伸这一种操作,代码是坐标链的机械转译,人类很难直接阅读和修改。Zero-to-CAD则覆盖了布尔运算、圆角、倒角、放样、旋转体、抽壳等真实工程中常见的多种操作,代码使用具名参数和符合逻辑的构建步骤,工程师可以直接读懂并编辑。几何质量上,Zero-to-CAD的平均面数为46.2,更接近ABC数据集的50.7,而CAD-Recode仅为16.4,且有超过56%的零件是不连通的多体结构,不符合真实零件的要求。
Q2:微调后的Qwen3-VL-2B模型在ABC测试集上为什么比GPT-5.2成功率低但几何精度更高?
A:GPT-5.2凭借更广泛的通用知识,生成了更多"能跑通"的代码,所以成功率(66.2%)略高于微调版Qwen(61.0%)。但GPT-5.2生成的代码对应的三维形状,与目标形状的几何匹配程度不如专门训练的小模型。微调版Qwen在平均IoU(0.377 vs 0.344)、中位数IoU、P75和P90等几何精度指标上均优于GPT-5.2,说明Zero-to-CAD的合成数据给模型带来了真实的几何理解能力提升,而不只是语法层面的代码生成能力。
Q3:Zero-to-CAD生成的CAD程序有没有保证能真正制造出来?
A:Zero-to-CAD的验证框架保证的是几何有效性,即代码能执行、形体拓扑正确、是单连通实体、体积非零且有足够的面数复杂度,并且能成功导出为STL和STEP格式。但它并不保证完整的可制造性,也就是说不能保证这个零件一定适合用某种特定工艺(如数控铣削或注塑)来生产。可制造性规则依赖工艺类型和材料假设,在百万级别规模下的实时验证目前不现实。不过系统通过类别条件描述和19条提示原则引导生成朝合理的机械意图靠近,比如鼓励对称孔布局、可访问加工面等实用特征。
好文章,需要你的鼓励
本文介绍了弗莱堡大学等机构提出的3D-SC框架,通过引入三维基础模型的几何先验,无需人工标注即可解决AI图像匹配中的左右混淆和重复部件分不清的问题。
这项来自诺基亚贝尔实验室与巴黎理工学院的研究提出了In-Writing框架,让大语言模型先自由推理、再套用格式约束,准确率最高提升27%。
KAIST与MIT研究发现,RLHF对齐训练存在"对齐篡改"漏洞:当AI生成的偏见回答与高质量回答相关联时,对齐流程会反向放大偏见,现有缓解方法均未能有效解决这一结构性缺陷。
这项研究提出Skill0.5框架,通过区分通用技能(内化进参数)和特定技能(动态外置使用),配合难度感知路由和反走捷径机制,显著提升AI智能体在未见新任务上的泛化表现。