niceeval exp 后,还没等它跑完就想看已经出来的结果,或者想知道运行中途被打断时哪些结果还算数。这一页说明 Runner 怎样把一次运行变成可以查看的结果。
Run 在开始时就定下要跑什么
Runner 为每个选中的 Experiment 创建一个 Run。创建时,它记下runId、这次运行的 invocationId,以及这次计划要跑的所有 Attempt。之后这份计划不会再变,所以通过率的分母在开始时就确定了。
每个 Attempt 跑完就单独发布
一个 Attempt 跑完、结果全部写好后,会单独发布。发布后它马上可以被查看、比较、在下次运行中沿用,或用niceeval accept 明确采用,即使所在的 Run 仍是 active。
还没发布的 Attempt、尚未算完的汇总,以及晚到的写入,都不会出现在任何查看命令里。所以你在运行中途看到的每条结果都是完整的,不会读到写了一半的数据。
运行结束时拿到这次的 Run ID
niceeval exp 结束时,终端的 NEXT 面板会列出这次新建的 Run,并给出两条查看命令:
--json 时,最后一行是这次运行的 receipt,里面的 createdRunIds 列出新建的 Run,publicationCutoff 标记这次运行结束时已发布到哪里。publicationCutoff 不要解析,原样传给后续命令。脚本和 CI 先运行 niceeval query discover 找到可用的查询,再发送完整 request。
浏览器页面不会自己跳到新结果
niceeval view 打开时,固定读取当时已发布的结果。之后又有新的 Attempt 发布时,页面会提示刷新;你确认后,页面才切换到最新结果。这样你在对比数据时,页面不会中途变化。
Runner 不会把数据库、执行时的工作目录或尚未发布的记录交给查看命令。查看时选哪些结果、缺了什么、用什么证据、怎样比较,都由 NiceEval 内置的固定查询决定,见运行结果的数据流。