rtl,与 lm-eval 和 evalscope 并列。
分数落进同一张看板,所以同一个模型的 RTL 分数和 GSM8K 分数在同一行上。
可评的基准
rtl-repo 的指标不能和别的比。 它不跑仿真(没有 testbench),报的是文本相似度;
把它的 exact_match 和 VerilogEval 的 pass@1 放在一张表上排名是错的——两者衡量的
不是同一件事。管理员:镜像里要装什么
两样东西。 仿真器已经在deploy/docker/Dockerfile.evalkit 里了(iverilog + verilator)。
harness 要你自己装。 VerilogEval、RTLLM、CVDP 各自带着题库与 testbench(各自的 GitHub 仓库)。平台不复制它们的题目——上游改题时那份副本就成了另一个基准,而分数还挂着原来的名字。所以平台只定契约:
<目录>/rtl_report.json:
CVDP 的 agent 轨:能接,但不是这条路
CVDP 有两条轨。非 agent 轨就是上面那样:一次生成、判功能,走rtl runner。
agent 轨要求模型在解题过程中反复调工具(读文件、跑仿真、看波形、改代码再试)。它有两个特点决定了接法不同:
- 它要起容器。 官方 harness 为每道题拉一个 Docker 容器做隔离沙箱。而平台的评测作业本身就跑在容器里——在 KubeRay 或 Slurm 上做 Docker-in-Docker 需要特权容器或 sysbox,多数内网集群不给,也不该给。
- 它要一个能调的模型端点,而不是一个权重路径。
1
先部署
把要评的版本部署成一个 Model Deployment,拿到端点与 token。
2
在有 Docker 的机器上跑 harness
CVDP harness 指向那个端点。这台机器要能起容器——通常是一台专门的评测机,
而不是训练集群的节点。
3
分数回灌平台
harness 产出的报告按上面的
rtl_report.json 契约上报,进同一张看板。具体怎么跑
--train-run 不是可选装饰:给了它,这次外部分数才会被门禁与模型注册表认到那次训练头上;不给,它只是一个孤立的数字。
入口只收结构化分数,不解析 harness 的报告文本。 CVDP 产出的是
report.txt
与 composite_report.txt(文本,不是 JSON)。那段转换放在你自己的脚本里——
上游改一行格式,你改脚本;而平台的入口不用动。反过来做的话,上游每次调整格式
都会让回灌链路挂掉。token 的权限只有「上报分数」(scope=benchmark)。它会被贴进评测机的环境变量,
不该顺带能写日志、改作业状态、传产物。