登录

写Verilog、调CUDA,总翻车?工业代码大模型开始学会「先想后写」了


速读:但工业代码场景有个特殊问题:很多时候,单靠语言层面的思考并不够。 GPU、芯片、嵌⼊式、3D建模等任务,都在对应的真实工具链中验证。
2026年04月14日 16:57

代码大模型会写代码,这件事已经不新鲜了。

真正新的问题是:它会不会在写之前先想清楚,这段代码一旦进入真实系统,会发生什么?

这个问题在工业场景里尤其关键。因为工业代码和普通编程不 一 样,它不是 “语法通顺、功能差不多” 就算过关,而是要面对真实硬件、真实工具链和真实约束。 一 个 Verilog 模块可能语法没问题,却在仿真或综合阶段直接失败; 一 个 CUDA kernel 可能逻辑上说得通,却在 grid 配置、索引映射或显存约束上出错;⼀个嵌入式程序也可能因为寄存器顺序或中断逻辑不对,根本跑不起来。

所以,工业代码大模型真正缺的,往往不是 “写” 的能力,而是 “想” 的能力。

最近,北航联合多家单位提出的  InCoder-32B Thinking ,瞄准的正是这个问题。它不是简单把代码模型再做大,也不是只给模型加⼀层通用的长链推理,而是试图让模型学会:在工业环境里,代码为什么会错,错了之后环境会给出什么反馈,下⼀步又该怎么改。

一 、它不是普通的 thinking model

而是面向工业代码的 thinking model

这几年,thinking model 很火。大家已经习惯了让模型 “先想⼀想,再回答”。

但工业代码场景有个特殊问题:很多时候,单靠语言层面的思考并不够。因为工业任务的难点,不只是逻辑推理,还包括对工具链行为、硬件约束和执行反馈的理解。你可以在纸面上分析很多步,但如果根本不知道 GPU 的 shared memory 限制,不知道 Verilog 综合器如何报错,不知道几何建模中的非法结构意味着什么,再长的 reasoning 也可能是空转。

InCoder-32B Thinking 的不同之处,就在于它不是把 “思考” 当作纯文本技巧,而是直接建立在工业环境之上。它试图让模型的 reasoning,天然绑定真实执行反馈,而不是脱离系统的 “自洽解释”。

换句话说,它不是⼀个 “更会说” 的模型,而是⼀个 “更接近工程实际” 的 thinking model。

二、真正的新意

是让模型从 “报错 — 修复” 里学会思考

InCoder-32B Thinking 的核心设计之一,是  Error-driven Chain-of-Thought(ECoT) 。

它的关键点在于:模型的 thinking,不是人为写出来的,而是从一轮轮 “生成 — 执行 — 报错 — 修复” 的过程中提炼出来的。模型学习的,不只是最终答案,而是工程师如何一步步定位问题、修复错误、再验证结果。

这在工业代码中尤为重要。因为很多问题并不是 “不会写”,而是 “哪⾥写错了”。比如 GPU kernel 越界,本质可能是 shape 和索引映射不一致;RTL 编译失败,可能是端口声明或位宽不规范。

ECoT 做的事情,就是把这些真实失败和修复过程中的 reasoning 保留下来,让模型学会从错误中思考,而不是只记住正确答案。

三、让模型先 “预判结果”

再去写代码

如果说 ECoT 让模型学会 “如何改错”,那么另⼀个关键设计 Industrial Code World Model(ICWM),则让模型学会 “提前预判”。

可以把 ICWM 理解为⼀个工业代码的 “世界模拟器”:给定任务环境和候选代码,它会预测这段代码在真实工具链中的结果 —— 是通过、编译失败、运行报错,还是性能不达标,并生成相应的诊断信息。

这带来的变化很关键:模型不再只是写代码,而是开始 预估代码进入真实系统后的后果 。

论文显示,ICWM 在多个工业场景中的结果预测准确率达到 96.7%,多轮轨迹⼀致性达到 94.4%。这意味着,它已经能够在相当程度上替代真实执行环境,用于大规模数据生成和推理训练。

更重要的是,这也改变了训练数据的来源。

InCoder-32B Thinking 的 reasoning 数据,不是人工构造的解释,而是通过真实执行流程 “跑出来的”:任务生成 → 代码执行 → 收集报错 → 多轮修复 → 记录完整轨迹。

GPU、芯片、嵌⼊式、3D 建模等任务,都在对应的真实工具链中验证。

最终保留下来的,不只是正确答案,而是完整的错误 — 修复路径。这种数据天然包含工业系统最关键的信息: 代码在真实环境中的行为反馈 。

四、工业代码不是统⼀模板能解决的

它需要 “自适应思考深度”

主题:问题|工业代码|InCoder-32BThinking|工业代码大模型