跳到主要内容
返回时间线
arXiv来源发表:

大模型写的量子测试几乎都能跑:最好的生成器在QHack上测试质量0.71,Qiskit上只有0.34

导语

大模型为量子程序写的测试几乎都能运行,但区分正确与错误实现的能力明显落后:最好的生成器在QHack上测试质量0.71,在Qiskit HumanEval上只有0.34,可执行性本身会高估测试质量。

Source-provided article image: QTestBench: A Test Framework for Evaluating LLM-Generated Quantum Code
Fig. 2 · arXiv

正文

量子代码的测试质量现在可以单独打分,而不是只看模型能否写出正确解法。QTestBench 让模型为每个任务写 pytest 测试模块,再把候选解在运行时注入进去,用基准自带的检查器给候选解贴标签,最后比较测试的判定与检查器的标签是否一致。 此前的量子基准,如 Qiskit HumanEval、QHackBench 和 QuanBench,衡量的是模型能否生成正确的量子解法,没有衡量它写的测试能否把正确实现和错误实现分开。 在八个 PennyLane QHack 挑战和十个 Qiskit HumanEval 任务上,五个模型生成的测试套件几乎总能执行,但最好的生成器测试质量只有 0.71(QHack)和 0.34(Qiskit HumanEval)。

测试被分成三类分别生成:语法测试只检查结构和入口点,语义测试在官方输入上执行候选解并做数值比较,行为测试走端到端流程。 三类测试对应三种不同的判定依据,语法测试不执行电路,语义测试比对官方输入输出值,行为测试在 QHack 上调用候选解自带的 run()/check() 辅助函数,在 Qiskit 上直接调用注入的入口点。 验证分三组进行:A 组只探测可信参考解,隔离可执行性与对正确代码的接受度;B 组加入独立生成的模型解法作为自然错误探针;C 组在自然错误解不足时注入经检查器确认错误的合成变异体。

当自然错误解太少时,合成变异体可以把错误检测的估计重新变得可测。 十个 Qiskit 任务中有三个在 B 组下收集不到任何错误解,此时错误检测分数、测试质量分数和综合质量分数都记为不适用,而不是记为零。 C 组对可信参考解施加确定性变异,只保留官方检查器判定为错误的变异体,每个任务最多尝试十二个候选、保留前三个错误探针,使每个任务的错误检测分数都有定义。

接下来

这套评测覆盖八个 PennyLane QHack 挑战和十个 Qiskit HumanEval 任务,任务在生成前固定为易、中、难混合,五个模型各生成一次测试,不做修复或重试。它面向关心量子代码生成与软件测试可信度的研究者,以及需要判断生成测试能否守住量子代码的工程师。材料把带执行反馈的迭代改进列为自然的下一步。

评测限定在固定温度、单次生成且无修复循环、十个选定的 Qiskit 任务,以及各基准自带的检查器作为真值。Qiskit 侧分数更低且任务间差异大,部分原因是许多检查器可提取的字面量很少,例如 Deutsch–Jozsa 任务。绝对测试质量分数依赖探针组成,因此错误检测分数需要与探针数量一起读,在队列中没有错误探针时记为不适用。

来源