训练 RTL 生成模型,数据多了,成绩就一定更好吗?同一类电路反复换写法,或让含混的指令配上看似正确的代码,都可能增加条数,却没有增加同等的学习价值。训练之前,先决定哪些数据值得留下。
近日,预印本论文 VeriSelector 报告了一组反直觉结果:在其 Verilog 代码生成实验中,只使用原始训练集的 20%—25%,平均评测成绩超过全量数据训练。以 Qwen2.5-Coder 7B 为例,平均 Pass@1 从 37.20% 升至 44.08%。这是一项作者报告的 benchmark 结果,论文仍在审稿。
方法将仿真、指令匹配和结构分布接起来:先判断样本能否通过测试,再评估指令是否帮助生成答案,最后按硬件结构分组抽样。它提出的工程问题很具体:给定训练预算,应当保留哪些有效且有代表性的 RTL 样本?
![]()
先把118%读明白
论文采用 RTLCoder-27k 作为筛选对象,包含 27,532 对自然语言指令与 Verilog 代码。主实验使用三个代码模型,并在 VerilogEval、RTLLM 和 ResBench 上评估。这些数据和任务共同限定了结果的适用范围。
其中,Pass@1 衡量单个生成候选通过评测测试的概率。论文中的性能保留率 PRR,则是筛选子集训练后的成绩除以全量数据训练后的成绩。PRR 超过 100%,表示前者在相应评测中更好。
Qwen 的 44.08% 除以 37.20%,约为 118.49%。绝对成绩增加 6.88 个百分点,相对提升约 18.49%。把 118.49% 当成代码正确率,或者将相对提升写成增加 18.49 个百分点,都会误读结果。
还要看同预算的筛选方法能做到什么。论文报告 Qwen 对照基线 Cherry 的平均 Pass@1 为 43.49%,VeriSelector 为 44.08%,差距是 0.59 个百分点。全量训练和精心筛选的差距,与不同筛选方法之间的差距,回答的是两个问题。
与全量训练比较,可以观察删减数据后的变化;与等量筛选比较,才能判断多做这些步骤是否划算。两种比较应同时摆在桌面上。
仿真通过,还要检查指令是否有用
第一步是生成 testbench 并执行编译与仿真。论文让 GPT-4o 根据指令和代码生成测试环境,保留通过测试的样本。这会把明显的编译失败和被测试暴露的功能错误挡在训练之前。
测试环境的质量决定这道门的作用。代码和 testbench 如果沿用了同一处误解,就可能一起通过。工程上仍须检查测试激励、预期输出与规格是否一致;单次仿真通过,只对应当前测试覆盖到的行为。
第二步引入 IFD,即指令跟随难度评分。论文比较同一答案在“有指令”和“无指令”条件下的生成损失,并用前者除以后者。如果指令提供了有效帮助,比值就会小于 1;作者据此剔除 IFD 大于或等于 1 的样本。
IFD 没有直接测量电路复杂度。一个结构简单的模块也可能因为描述含混而得高分;一个复杂模块则可能因描述明确而更容易生成。IFD 反映的是模型视角下的指令与答案关系。
通过这道筛选以后,论文在每个簇内优先选择 IFD 较高、但仍小于 1 的样本,保留有一定学习难度的任务。不能把流程简化成“IFD 越低越好”,也不能理解成“最难样本全部留下”。先排除失配,再排序抽样,两个动作各有作用。
109维特征,给硬件结构一个位置
仅看指令文本,很容易把措辞差异当成设计差异。VeriSelector 将文本表示与 109 维结构特征结合,分别从抽象语法树 AST、控制流图 CFG 和综合网表观察代码。
AST 对应代码由哪些语法节点组成;CFG 描述过程块里的分支与路径;网表补充综合后的单元及连接关系。论文分别采用 57、28 和 24 维特征,用 PyVerilog 提取前两类,用 Yosys 综合提取网表特征。
三种表示提供互补视角,但结构特征不能代替时序分析或 PPA 评估。统计了节点、连接与逻辑单元,并不等于已经知道目标工艺、约束下的实现结果。它们在这里负责帮助分组。
论文将文本与结构特征分别标准化,再拼接并聚类,默认分为 100 个簇。随后按各簇在质量过滤后数据池中的比例分配抽样额度,在簇内按 IFD 排序选择样本,得到最终微调子集。
分组以后再挑样本,改变了筛选的顺序。只按全局分数选,某类容易得高分的设计可能占满预算;分簇后分配额度,则给不同设计模式保留了位置。
不过,按比例保留也会继承数据池原有的分布。企业若特别关心复位行为、参数边界或某类状态机,应另外核对这些任务在训练集和评测集中的位置。保留分布与覆盖业务重点,需要分别验收。
省下的时间,要算到筛选之前
筛选本身要花时间:生成测试、训练用于评分的先验模型、计算 IFD、提取结构、聚类,之后才进入最终微调。评估效率时,把这些步骤排除在外,会高估收益。
这篇论文给出了两张成本表。作者报告预处理约 61 分钟;端到端表则明确合并预处理与微调。Qwen 的全量训练为 15.1 小时,VeriSelector 为 2.7 小时,按表中数字计算减少约 82.1%。因此,超过 80% 的降幅有端到端计时口径支撑。
读这张时间表,也要看训练怎样结束。论文固定训练轮数,而非将所有方法训练到同一目标成绩。数据减少,会减少模型看到的样本及相应训练工作;收益中既有计算量下降,也有样本选择的作用,需要通过对照拆开。
企业还要计算 GPU 时间以外的账。外部模型调用、CPU 解析与综合、失败重试、人工抽检、数据变更后的重建,都可能影响一次实际训练的总成本。把数据、工具执行和人工 review 放进可追溯的研发流程,才能让筛选结果成为可复用的知识资产。论文计时提供参照,费用和组织工时则应在本地记录。
筛选结果若能跨多次训练复用,前期成本有机会摊薄。若规格、代码或工具版本频繁变化,就要确认哪些结果还能复用。缓存应绑定输入版本和筛选配置,不能仅凭文件名判断有效。
谁来决定哪些数据值得留下
模型团队负责训练与对照,应同时保留全量、随机等量抽样和策略筛选结果。否则,很难判断提升来自去掉错误样本、减少重复,还是硬件结构分组带来的补充价值。
验证团队要抽检 testbench 与规格的关系,尤其是测试是否真正会判错。可以选择已知错误样本或人为注入缺陷的版本,检查测试能否识别它们;这是一种建议的验收动作,不是论文已报告的企业案例。
CAD 与数据团队则应保存解析、综合、聚类及样本去留记录。某类合法设计如果因为工具兼容问题持续被排除,模型学到的任务范围也会改变。失败率要按任务类型拆开看,不能只报成功处理的总数。
研发负责人要把结果放回独立任务中:复位、位宽、边界输入和状态跳转是否处理得更好,人工 review 与修复时间是否下降。榜单上的平均值有参考意义,项目所需的行为仍应单独检验。
VeriSelector 给 RTL 模型训练提供了一套可检验的筛选思路:用测试检查行为,用 IFD 检查指令匹配,用硬件结构帮助保留不同设计模式,再把筛选成本计入总账。
对准备做领域微调的团队,可以先限定一批语料与一组独立任务,比较样本有效性、任务代表性和端到端成本。评测中还应区分平均成绩与关键任务退化,避免为了整体指标删除少见但重要的设计。
下一次训练能复用什么,取决于团队是否保存了数据的去留理由。知道哪些样本被筛掉、哪些设计被保留,以及这种选择在新任务上是否仍然有效,下一次训练才有可复用的依据。
作者:麒芯
本文依据截至2026年10月11日的公开资料撰写。实验数字为预印本作者报告的benchmark结果;工程分析与验收建议不代表独立实测或项目收益承诺。
参考资料:
Shen等:Quality over Quantity: Diversity-Aware Data Selection for Efficient Verilog Code Generation(arXiv预印本v1)
作者项目仓库:syhstudy/VeriSelecter(项目入口)
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.