Skip to main content
你把公司的基础镜像从旧仓库迁到了新仓库,镜像内容一字节没变,只是 Experiment 里的镜像地址换了。NiceEval 看到配置变了,不会自动沿用上次的结果,--dry 显示整批都要重跑。可你知道这次改动不影响任何一道题,整批重跑却要花真钱。 这时用 niceeval accept 明确接受那些旧结果。NiceEval 不会仅凭你的确认就放行,它会自己验证这次变化确实不影响结果。只有两种变化能通过验证:
  • Experiment 改了名,其它都没变。改名还可以直接用 niceeval exp rename,见 CLI 参考。
  • 官方 dockerSandbox 的镜像引用换了地址,但新旧两个引用都写明了同一个 @sha256: digest 和完整的 platform。只写 tag 的镜像不行,因为 tag 指向的内容可能已经变了。
模型、flags、Judge、任务、断言或分值的任何变化都会被拒绝,返回 accept-ineligible。这些变化可能真的改变结果,应该重跑。

从运行计划找到可以接受的旧结果

先预览当前要跑的 Experiment:
因为配置变化而不能自动沿用的旧结果,会显示完整的 Attempt locator,并附一条可以直接复制的 accept 命令。你写进命令的 locator 就是这次接受的全部范围;NiceEval 不会顺带接受同一个 Run 或同一个 Experiment 的其它结果。 如果整批旧结果都来自同一个 Run、都能被接受,--dry 会改为建议 niceeval accept --run <run-id> --dry,一次预览整个 Run。

接受前先核对旧结果

用完整 locator 在终端打开这个旧 Attempt:
核对判定、断言、用量、耗时和证据,确认这就是你想沿用的结果。需要看它当时所在的整个 Run 时,再打开那个 Run:

接受需要的结果

同一个 Experiment 有多个结果要接受时,把所有 locator 写进同一条命令:
想先看会发生什么、不真正写入时,加 --dry。 NiceEval 会先检查全部输入。任何一个 locator 无效、不符合条件或和另一个输入冲突时,整条命令都不会写入任何结果,不会只接受一半。 成功后,NiceEval 新建一个 Run,在对应位置引用原来的 Attempt,并记下这是你明确接受的。原 Attempt、它所在的 Run 和它的 locator 都保持不变,结果也不会被复制一份。

核对新建的 Run

成功反馈会显示新 Run 的 ID。打开它确认结果:
这个 Run 的分母仍是当前 Experiment 计划要跑的全部 Attempt。你接受的位置显示为 accepted,没有接受的位置显示为 not-dispatched。只接受了一部分时,报告会如实显示结果不全。 每次 accept 都新建一个 Run,不会修改或合并上一次的接受。想让一批结果出现在同一个 Run 里,就把它们写进同一条命令。

常见失败

自动沿用和强制重跑怎样选择,见修改后只重跑受影响的评估。