RuC: HDL-Agnostic Rule Completion Benchmark Generation
本文介绍了 RuC,这是一个由语法驱动且与语言无关的框架,它通过掩码语法区域来生成可扩展且细粒度的 RTL 代码补全基准测试,从而系统地评估大语言模型在硬件设计任务中的性能。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在尝试教一个非常聪明但略显死板的机器人如何编写硬件计算机代码(例如手机或超级计算机内部的芯片)。这个机器人是一个“大型语言模型”(LLM),它擅长写故事或回答问题,但我们需要知道它是否真的能够构建功能电路。
本文介绍了一种测试这些机器人的新方法,称为RuC(基于规则的补全)。以下是通过简单类比对其工作原理的解释:
问题:“全有或全无”的测试
在 RuC 出现之前,测试这些机器人就像玩一个“猜缺失部分”的游戏,只有两个极端选项:
- “整栋房子”测试:你隐藏房子的整个房间,要求机器人仅根据外面的走廊从头重建它。这太难了;机器人必须猜测太多内容。
- “砖块”测试:你只隐藏墙中的一块砖,要求机器人猜测它的颜色。这太简单且随机;这块砖甚至可能对结构无关紧要。
这两种方法都无法确切告诉我们机器人对构建硬件的具体规则理解得有多好。
解决方案:“语法谜题”
作者创建了 RuC,它就像一个智能谜题生成器。RuC 不使用随机单词或整个房间进行猜测,而是利用硬件语言(SystemVerilog)的“语法”(官方规则手册)来创建谜题。
将硬件代码想象成语言中的句子。RuC 可以选择隐藏:
- 句子的主语(例如,导线的名称)。
- 动词(例如,导线执行的动作)。
- 整个从句(例如,整个逻辑规则)。
这使得研究人员能够创建任意难度的谜题。根据测试需求,他们可以要求机器人填充一个微小、简单的部分,或者一个复杂的多步骤逻辑块。
测试如何运作
- 设置:RuC 获取真实存在的硬件设计(例如"Tiny Tapeout"穿梭机和"CVE2"处理器核心),并将其分解为语法部分。
- 掩码:它选择一个特定规则(例如“连续赋值”或“案例语句”)并将其隐藏,替换为空白(
<MASK>)。 - 提示:它向机器人展示空白前后的代码,要求它填充缺失的部分。
- 类比:想象阅读句子“猫坐在___上”。机器人必须猜出“垫子”。RuC 也这样做,但处理的是复杂的硬件逻辑。
- 检查:一旦机器人写出答案,RuC 不仅查看文字。它使用两项严格检查:
- 语法检查:句子在语法上是否通顺?(代码是否有效?)
- 功能检查:句子的含义是否与原始内容相同?(电路的实际工作方式是否相同?)他们使用“镜像”测试:并行运行机器人的代码和原始代码,查看是否产生不同结果。如果完全匹配,机器人即通过测试。
他们的发现
研究人员在这些谜题上测试了世界上几个最好的开源 AI 模型。他们发现了以下内容:
- “中间填充”技巧:当测试设置为“中间填充”(FIM)谜题时,机器人的表现最佳。这就像给机器人句子的开头和结尾,要求它填充中间部分,而不是让它写一个全新的段落。事实证明,机器人正是以这种方式训练的,因此它们更擅长此道。
- 规模很重要(但不总是):通常,更大的机器人(更大的模型)得分更高。然而,如果特定谜题符合其优势,较小的机器人有时能击败较大的机器人。
- 难度各异:某些规则对机器人来说很容易(例如定义简单输入),而其他规则则非常困难(例如复杂的“如果 - 那么”逻辑块)。这证明你不能只说“机器人擅长编码”。你必须说“机器人擅长 X,但不擅长 Y"。
为什么这很重要
论文结论指出,要真正理解 AI 是否能帮助工程师设计芯片,我们需要灵活且精确的测试。我们不能仅仅要求 AI“编写芯片”或“猜测一行代码”。我们需要测试语言的具体规则,就像驾驶考试分别检查你是否能平行停车、并入高速公路以及在红灯前停车,而不是仅仅看你是否会开车。
RuC 提供了这种灵活的、逐规则的测试环境,确保当我们最终使用 AI 协助构建硬件时,我们确切地知道它能做什么、不能做什么。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。