InCoder-32B:面向工业场景的代码基础模型 InCoder-32B: Code Foundation Model for Industrial Scenarios
首个统一芯片设计/GPU优化/嵌入式等工业代码智能的32B模型
前置知识
工业代码智能
工业代码智能是指将大语言模型应用于芯片设计(Verilog/RTL)、GPU内核优化(CUDA/Triton)、嵌入式固件(C/C++ for MCU)、编译器优化和3D建模(CadQuery)等专业工业领域的代码生成与理解。与通用编程任务不同,工业代码需要推理硬件语义、时序约束、资源限制和严格的正确性验证方法论,这些场景在公开代码数据中严重稀缺。
理解工业代码智能与通用代码智能的本质区别是把握本文核心贡献的关键——现有模型在工业任务上表现急剧下降,本文正是为弥合这一鸿沟而提出的。
Simulation-Grounded Verification(仿真验证)
工业代码的正确性只能在真实部署环境中验证:Verilog模块需要RTL仿真,GPU内核需要在实际硬件上执行并验证数值正确性,嵌入式固件需要在微控制器上运行,CAD脚本需要生成可制造的几何体。本文构建了四类工业仿真环境(Icarus Verilog/Verilator/Yosys用于芯片设计,nvcc/Triton编译链用于GPU,Renode模拟器用于嵌入式,OpenCascade/CadQuery用于3D建模),使训练信号直接源于工业生产标准。
这是本文训练数据质量的根本保障——不使用简化代理环境,而是复现与工程师生产环境完全一致的工具链和执行语义,确保生成的训练数据具有工业级可靠性。
Three-Stage Code-Flow Pipeline(三阶段训练流水线)
本文提出的核心训练框架包括三个阶段:(1) 预训练与退火(Pre-training & Annealing),在4096个GPU上使用自回归语言建模和Fill-in-the-Middle完成目标,结合精心策划的工业代码数据;(2) 中期训练(Mid-training),通过合成工业推理QA、智能体轨迹和代码工件,逐步将上下文长度从8K扩展到32K再到128K;(3) 后训练(Post-training),基于执行反馈构建250万样本的SFT数据,包含直接解、缺陷修复和性能优化三类样本。
该流水线是模型成功的架构基础,每个阶段解决不同层次的能力需求——从领域知识习得到长上下文推理再到工业级执行验证,理解它才能理解模型为何能在工业任务上取得突破。
Mixture-of-Experts (MoE) vs Dense模型
MoE架构通过激活部分专家网络来扩展模型容量(如Qwen3.5-397B-A17B激活17B参数),而Dense模型所有参数在每次推理时都参与计算。InCoder-32B采用32B Dense架构,在参数效率和推理开销之间取得平衡。论文中对比的基线模型涵盖了从6B到671B的Dense模型以及多种MoE架构,包括Qwen3-Coder-480B-A35B、DeepSeek-V3.2(37/671B)等。
理解Dense与MoE的区别有助于评估InCoder-32B作为32B Dense模型在工业基准上超越众多更大MoE模型的意义——这表明精心设计的领域适配训练比单纯扩大模型规模更有效。
SWE-bench与工业代码基准
SWE-bench是评估代码智能体解决真实GitHub issue能力的主流基准,SWE-bench Verified是经过人工验证的高质量子集。工业代码基准包括VeriScope(568个Verilog生成问题,5个难度级别)、RealBench(基于真实IP核的生产级Verilog生成)、KernelBench(250个PyTorch ML工作负载的GPU内核优化)、TritonBench(Triton算子生成)、CAD-Coder(文本到参数化CAD脚本生成)等,覆盖芯片设计、GPU优化、嵌入式和3D建模四大领域。
这些基准是评估本文模型性能的核心标尺,理解它们的评估维度和难度层次才能准确解读实验结果的含金量。
研究动机
尽管近年来代码大语言模型(如Qwen3.5、DeepSeek-V3.2、Claude-4.6)在通用编程任务上取得了显著进展,前沿模型甚至在竞赛编程中达到金牌水平,但在工业场景中的表现却严重退化。具体而言,现有最强模型在Triton算子生成任务上仅达到28.80%的G-call成功率和41.57%的T-call成功率,在Verilog代码生成中仅33.3%的生成代码能通过仿真验证并失败于形式等价性检查。这些工业场景——包括CUDA内核优化、Verilog硬件描述、嵌入式固件编程和编译器优化——要求模型推理硬件语义、专用语言构造和严格资源约束,这与传统软件工程有本质区别。例如,CUDA内核需要理解GPU网格维度的硬件限制(如gridDim.y的65535上限),Verilog设计需要满足时序和面积约束,嵌入式代码需要正确配置寄存器和中断优先级。当前代码LLM主要在GitHub和StackOverflow等公开数据上训练,这些数据几乎不包含工业领域的专业代码和开发上下文,导致模型将工业编程任务视为分布外样本。
本文的目标是本文的目标是构建第一个专门面向工业代码智能的32B参数大语言模型InCoder-32B(Industrial-Coder-32B),统一覆盖芯片设计、GPU内核优化、嵌入式系统、编译器优化和3D建模五大工业编程领域。模型需要在保持通用编程竞争力的同时,在工业代码基准上建立强有力的开源基线。具体性能目标包括:在SWE-bench Verified上达到74.8%以上的通过率,在LiveCodeBench上达到49.14%,在BFCL上达到60.99%的通用代码能力,同时在9个工业基准(涵盖VeriScope、RealBench、KernelBench、TritonBench、CAD-Coder、EmbedCGen、SuperCoder等)上全面超越现有开源模型。
与已有工作不同的是,本文的独特切入角度在于三个关键洞察。首先,不同于以往每个模型或基准只解决单一工业子领域的碎片化做法(如VeriGen专注Verilog、Kevin专注CUDA),InCoder-32B首次将多个工业编程领域统一在一个模型中,实现跨领域知识迁移。其次,本文发现工业代码的正确性必须在与生产环境完全一致的仿真环境中验证——简化代理环境无法捕获硬件层面的微妙错误(如寄存器配置错误、中断优先级冲突),因此构建了四类真实的工业仿真环境(Icarus Verilog/Verilator/Yosys、nvcc/Triton编译链、Renode模拟器、OpenCascade/CadQuery),而非发明简化代理。第三,本文通过消融实验揭示了关键的技术发现:仓库转换数据优于静态快照用于规划信号,中期训练轨迹数据是分布偏移下鲁棒性的关键支架,基于执行反馈的多轮轨迹训练能解锁标准SFT中不存在的能力——这些发现为工业代码训练提供了新的方法论指导。
核心方法
InCoder-32B的训练采用三阶段Code-Flow流水线,其核心直觉是:工业代码能力需要从领域知识习得(预训练)→长上下文推理能力构建(中期训练)→执行验证驱动的能力对齐(后训练)逐步递进。在预训练阶段,模型在4096个GPU上使用自回归语言建模和Fill-in-the-Middle(FIM)完成目标,学习工业领域的基础语法、API和代码模式。中期训练阶段通过合成工业推理QA、智能体轨迹(Thought-Action-Observation循环)和代码工件(测试台、时序约束、综合脚本等),将模型上下文从8K逐步扩展到128K,使其能够处理扩展的调试会话和仓库级代码理解。后训练阶段则构建了250万基于执行验证的SFT样本,涵盖硬件设计、GPU内核开发、系统编程和嵌入式固件四大领域,每个任务都分解为包含自然语言需求、接口约束、目标平台和验证脚本的结构化指令,并通过反馈驱动的修复机制生成包含失败和成功解的闭环修复轨迹。
本文的核心创新在于将工业代码的执行验证深度整合到训练流程中,而非仅作为评估指标。与现有方法的本质区别体现在三个层面:第一,在数据层面,本文不是简单地从GitHub爬取工业代码(这些数据极其稀缺且缺乏执行上下文),而是构建了四类完整的工业仿真环境——芯片设计(Icarus Verilog + Verilator + Yosys)、GPU优化(nvcc + Triton编译链运行在A100节点上)、嵌入式系统(arm-none-eabi-gcc + Renode模拟器完整复制STM32F407的GPIO、UART、SPI、I2C、定时器、ADC+DMA和中断控制器)、3D建模(CadQuery + OpenCascade,与FreeCAD/KiCad相同版本)——在这些真实环境中合成和验证训练数据。第二,在训练策略上,本文提出渐进式上下文扩展(8K→32K→128K),结合工业领域特定的中间训练数据(包括测试台、时序约束、综合脚本、GPU性能分析trace、内存消毒器日志等),而非直接在长上下文上训练。第三,在后训练中,本文不仅包含成功解,还将执行反馈(编译器错误、运行时日志、反例输入、波形差异、性能瓶颈)与失败解一起构成闭环修复轨迹,模仿有经验工程师的调试工作流。
方法步骤详情
该方法分为三个主要阶段,每个阶段有明确的输入、输出和操作: 第一阶段:预训练与退火(Pre-training & Annealing)。输入是收集的工业代码数据,来源于公共仓库、技术文献和领域特定网页数据。数据收集采用三步召回策略增加工业代码覆盖率,并使用OCR从技术文献中提取高质量代码片段。数据清洗包括许可证过滤、PII移除、文件级验证,以及精确哈希匹配、token级近重复检测、仓库级fork合并和跨源去重的多级去重。数据精炼则进行表面格式规范化和结构化注解,所有样本通过AST比较和重新编译验证正确性。输出是工业领域基础能力的模型权重。 第二阶段:中期训练(Mid-training)。输入包括三类数据流:(1) 合成工业推理QA——通过工业场景规范(咨询实践工程师)→种子代码生成(反映真实硬件设计模式)→QA对合成与自动验证的三步流程生成;(2) 智能体轨迹——遵循Thought-Action-Observation循环,捕获来自硬件模拟器、综合工具、C/C++编译器和形式化验证引擎的工具反馈闭环推理;(3) 工业代码工件——包括硬件测试台(SystemVerilog/UVM)、时序约束(SDC)、综合脚本、GPU性能分析trace和内存消毒器日志。操作上分两个子阶段:先从8K扩展到32K(聚焦文件级任务如RTL模块完成),再扩展到128K(解锁长上下文能力如扩展调试会话)。输出是具备工业感知长上下文推理能力的模型。 第三阶段:后训练(Post-training)。输入是250万样本的SFT数据集。每个任务被分解为结构化指令(自然语言需求描述、接口约束、目标平台和工具链、依赖配置、验证脚本)。通过模板扰动和跨语言迁移等互补采样生成多样候选解,然后在真实执行环境中验证。对于执行失败的解,捕获完整反馈上下文(编译器错误、运行时日志、反例输入、波形差异、性能瓶颈),附加到失败解上生成修复解,形成闭环修复轨迹。最终通过可执行性、稳定性和信息密度过滤,将样本分为直接解、缺陷修复和性能/结构优化三类。输出是最终的InCoder-32B模型。
技术新颖性
InCoder-32B的技术新颖性体现在多个维度。首先,这是第一个将多个工业编程领域统一在单一代码LLM中的工作——此前的VeriGen、RTL-Coder只覆盖Verilog,Kevin只覆盖CUDA,AscentKernelGen只覆盖NPU内核,每个模型只能处理一个子领域,而InCoder-32B同时覆盖芯片设计、GPU内核优化、嵌入式系统、编译器优化和3D建模五大领域。其次,本文构建了迄今最全面的工业代码评测体系,包含14个通用基准和9个工业基准,涵盖4个专业领域,这在工业代码领域是前所未有的评测广度。第三,本文的训练数据合成方法论具有原创性:不是简单地使用GPT-4等通用模型生成数据,而是在真实的工业仿真环境中(与生产环境完全一致的工具链)合成和验证数据,这确保了训练信号直接转移到实际部署。第四,本文通过消融实验揭示了三个重要的技术发现:仓库转换数据(repository transition data)优于静态快照用于规划能力训练、中期训练轨迹数据是分布偏移下鲁棒性的关键支架、基于执行反馈的多轮轨迹训练能解锁标准SFT中不存在的能力。第五,本文的闭环修复轨迹(包含失败解和成功解及执行反馈)模仿了有经验工程师的调试工作流,这是一种新颖的SFT数据构造范式。
实验结果
InCoder-32B在通用和工业代码基准上均展现了强劲表现。在通用代码基准上,作为32B Dense模型,InCoder-32B在SWE-bench Verified上达到74.8%(排名所有开源模型第一),在Mind2Web上达到55.8%(开源第一),在τ2-bench上达到70.0%(开源第一,甚至超越DeepSeek-V3.2的63.8%)。在代码生成任务上,HumanEval达到94.5%、MBPP+达到78.3%、BigCodeBench Hard达到31.1%,与Qwen3-Coder-480B-A35B(35/480B参数)和Kimi-K2(32B/1T参数)等更大模型持平。在代码推理上,CruxEval Input-COT达到62.4%、Output-COT达到73.9%,LiveCodeBench V5达到49.14%。 在工业代码基准上,InCoder-32B建立了全面的开源最强基线:芯片设计方面,RealBench Module-level Syn@1达到74.8%(第二名Kimi-K2-Instruct仅50.1%)、Func@1达到62.7%(第二名23.1%),VeriScope达到80.7%(与Kimi-K2-Instruct的82.4%接近),VeriRepair Fix达到10.0%。3D建模方面,CAD-Coder编译成功率达到82.0%(超越Claude-Sonnet-4.6的77.0%),IoU达到53.5%(超越Claude的32.4%),这是开源模型首次在CAD建模上超越闭源商业模型。GPU优化方面,KernelBench L1达到22.2%、L2达到36.0%、L3达到14.0%(均超越Claude-Sonnet-4.6的11.1%/28.0%/2.0%),TritonBench G-call达到18.5%、T-call达到93.8%。嵌入式方面,EmbedCGen Main达到35.2%,SuperCoder Acc达到91.0%。这些结果表明,精心设计的领域适配训练(32B Dense)可以超越参数量大10倍以上的通用模型在工业任务上的表现。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| SWE-bench Verified | Pass@1 (%) | 74.8 | Kimi-K2-Thinking: 71.3, Qwen3-Coder-480B: 67.0 | 开源模型第一,超越所有同规模和更大规模开源模型 |
| τ2-bench Airline | Accuracy (%) | 85.1 | DeepSeek-V3.2: 81.1, Qwen3-Coder-480B: 77.5 | 超越671B参数的DeepSeek-V3.2约4个百分点 |
| RealBench Module Syn@1 | Syn@1 (%) | 74.8 | Kimi-K2-Instruct: 50.1, Qwen3.5-397B: 35.2 | 大幅领先第二名约25个百分点 |
| CAD-Coder | IoU (%) | 53.5 | Claude-Sonnet-4.6: 32.4, Kimi-K2-Thinking: 20.0 | 超越闭源Claude-Sonnet-4.6约21个百分点 |
| KernelBench L1/L2/L3 | fast1 (%) | 22.2 / 36.0 / 14.0 | Claude-Sonnet-4.6: 11.1 / 28.0 / 2.0 | 三个级别均超越Claude-Sonnet-4.6 |
| EmbedCGen | Main (%) | 35.2 | GLM-4.7: 20.0, Kimi-K2.5: 46.0 | 在开源模型中表现中等,低于Kimi-K2.5 |
| TritonBench G-call | G-call (%) | 18.5 | Qwen3-Coder-480B: 20.1, DeepSeek-V3.2: 19.6 | 与更大模型接近 |
| SuperCoder | Accuracy (%) | 91.0 | GLM-5: 90.2, GLM-4.7: 89.6 | 超越所有开源基线,仅次于Claude-Sonnet-4.6的88.0% |
局限与改进
尽管InCoder-32B在工业代码基准上取得了全面的开源最强结果,但论文通过详细的错误分析揭示了模型仍然存在的系统性失败模式。作者对全部9个工业基准中的1882个失败案例进行了人工检查,归纳出五类主要错误主题。 首先,编译和语法错误是最普遍的失败类别——在Verilog生成任务中尤为突出:RealBench 71%的失败涉及格式错误的字面量、不正确的端口声明或位宽不匹配,ArchXBench有51%的语法错误(包括原始门上命名端口的误用和不定宽度有符号字面量)。TritonBench中33%为NameError、24%为TypeError,源于不正确的Triton API使用。VeriScope 46%的失败是输出格式不可解析,模型完全忽略了要求的结构化格式。这表明模型虽已获得广泛的领域词汇,但尚未完全内化工业语言的精确语法规则和库约束。 其次,当代码编译通过后,功能正确性成为主要瓶颈。VeriRepair中79%的失败产生可编译但测试用例失败的代码,指向修复推理中的细微逻辑错误而非表面层错误。ArchXBench有49%的功能失败。CAD-Coder的失败几乎全是几何性的(93%),多数源于对欧拉角约定的系统性误解,导致挤出围绕错误轴旋转。 第三,在衡量优化能力的基准上,KernelBench 33%的失败产生功能正确但速度不够快的GPU内核,SuperCoder 83%的失败是模型简单复制输入的x86-64汇编代码而未做任何修改。 此外,论文在消融实验中发现,SFT数据规模从83M增加到250M token时大多数基准持续改善,但RealBench和TritonBench的个别子指标在250M阶段出现小幅回退,暗示验证相关理解可能在较小的高质量SFT数据集上就趋于饱和。
独立分析的弱点
基于论文的实验结果和错误分析,可以识别出InCoder-32B的几个关键弱点: 第一,编译和语法层面的错误占比过高,特别是Verilog生成中71%的失败涉及基本语法问题(位宽不匹配、端口声明错误、字面量格式错误)。这表明预训练阶段对工业语言的精确语法规则学习不足,可能需要在数据清洗阶段增加更严格的语法验证过滤器,或在中期训练中加入更多面向语法正确性的对比学习信号。 第二,模型在优化类任务上表现较弱——SuperCoder 83%的失败是直接复制输入汇编而非进行优化,KernelBench有33%的功能正确但不够快。这反映了模型在"做得更好"而非"做得对"方面的能力不足,可能需要在训练中引入更多性能对比信号(如更快vs更慢的实现对)或使用强化学习优化性能目标。 第三,CAD-Coder中的欧拉角约定系统性误解(93%的失败是几何性的)说明模型在空间推理和数学概念理解上存在深层缺陷,这类错误难以通过增加数据量简单解决,可能需要针对3D几何推理设计专门的训练任务。 第四,嵌入式领域EmbedCGen的47%链接错误(引用未定义或类型不正确的HAL/CMSIS函数)表明模型对嵌入式API的知识覆盖不完整,需要在数据收集中扩大STM32相关代码和文档的覆盖范围。 第五,论文未详细讨论模型的推理效率——32B Dense模型的推理延迟和吞吐量与更大MoE模型相比如何,在工业实时代码辅助场景中是否满足需求,这是一个实际部署中需要关注的重要维度。
未来方向
论文作者在错误分析和消融研究的基础上提出了多个值得探索的未来方向。 首先,作者指出关闭剩余差距需要"针对稀有API和硬件语义的数据策展、训练中引入验证信号的循环、以及对低层性能的显式推理"。这意味着未来工作可以在数据层面进一步扩展工业代码覆盖范围,特别是当前稀缺的领域如FPGA HLS综合、RISC-V自定义扩展、专用加速器编程等。 其次,基于执行反馈的闭环修复轨迹被证明能解锁标准SFT中不存在的能力,这暗示可以将强化学习与执行验证信号更深度地结合——类似于CodeV-R1和VeriReason在芯片设计领域采用的方法,扩展到GPU优化、嵌入式和CAD等更多工业领域。 第三,本文的中期训练阶段展示了仓库转换数据优于静态快照的发现,未来可以进一步探索更丰富的代码上下文表示,如跨文件依赖图、构建系统配置、CI/CD流水线状态等,以增强模型对工业代码仓库全局结构的理解。 第四,论文目前每个工业领域使用统一的模型权重,未来可以探索领域自适应的混合专家架构,在保持统一模型的同时为不同工业领域激活专门的专家子网络。 第五,论文的评测体系(14个通用基准+9个工业基准)为进一步研究提供了完整的基线框架,但当前基准主要关注代码生成正确性,未来可以增加更多衡量代码质量、安全性、可维护性和部署就绪度的评估维度。
复现评估
从复现角度来看,InCoder-32B具有较好的可复现性。模型权重已发布在HuggingFace(Multilingual-Multimodal-NLP/IndustrialCoder2026),源代码发布在GitHub(CSJianYang/Industrial-Coder),这为社区提供了直接使用和进一步研究的基础。论文描述了详细的训练配置:使用4096个GPU进行预训练,遵循与先前工作相同的模型配置,训练数据规模从83M到250M token的消融实验也提供了数据规模的参考。 然而,完全复现存在几个挑战:(1) 论文中的工业仿真环境构建需要配置多个专业工具链(Icarus Verilog、Verilator、Yosys、nvcc、Triton编译器、arm-none-eabi-gcc、Renode、CadQuery/OpenCascade),这些工具的版本兼容性和环境搭建有一定复杂度;(2) 250万SFT样本的构建涉及工业专家咨询(工业场景规范通过与实践工程师商议确定)、种子代码生成、执行验证和闭环修复轨迹生成,这一数据合成流水线的复现需要相当的领域专业知识和计算资源;(3) 论文未提供具体的GPU型号和训练时长信息,4096 GPU的训练规模对大多数研究机构来说门槛较高。 总体而言,模型权重和推理代码的开源使得使用该模型较为容易,但从零复现训练流程需要显著的工程和计算投入。
论文图表
该图对比了Claude和InCoder-32B在处理512×512大空间维度张量的CUDA RMS Normalization时的不同策略。左侧Claude将spatial_size(262,144)直接赋给gridDim.y,超出了CUDA硬件限制的65,535上限,导致运行时错误。右侧InCoder-32B将所有维度展平为1D网格,安全利用gridDim.x限制,避免了硬件约束违规。
这张图生动地说明了工业代码的核心挑战——推理硬件约束,也展示了InCoder-32B在工业场景中相比通用模型的具体优势。
该图展示了对1882个失败案例的人工分类错误分布,按基准分组呈现。错误类型用颜色编码:红/橙色为编译和语法错误,蓝色为功能/逻辑错误,紫色为格式错误,绿色为性能问题。每个基准的中心数字表示总失败数。例如VeriScope失败主要由格式错误(46%)和输出不匹配(29%)组成,RealBench由语法错误(42%)和端口/模块错误(9%)组成,CAD-Coder几乎全是形状错误(IoU<0.1占34%,IoU 0.1-0.5占45%)。
这张图对理解模型的系统性弱点至关重要,为未来改进提供了明确的方向指引。