Skip to content

指南

比较规则

将候选与基线进行比较 展示了工作流程。本页是比较判定所依据规则的参考:有哪些种类、每种规则问的是什么、容许界值以什么单位度量,以及哪些因素会改变规则所依据的区间。

三种规则

比较规则指定一个 kind 和一个指标。它从不接受 min 或 max:差异不是由阈值推断出来的。

种类问题参数
superiority候选是否优于基线?无容许界值
non_inferiority候选比基线差的程度是否不超过容许界值?margin,以及可选的 direction
equivalence候选在两个方向上是否都处于基线的容许界值之内?margin

容许界值使用指标自身的单位。对于比率,0.05 表示五个百分点;对于延迟分位数,5 表示五毫秒。

version: 1
rules:
  - id: not-worse
    kind: non_inferiority
    metric: exact_label
    margin: 0.05
  - id: same-quality
    kind: equivalence
    metric: exact_label
    margin: 0.05
  - id: better
    kind: superiority
    metric: exact_label
  - id: not-slower
    kind: non_inferiority
    metric: latency_p50
    direction: max
    margin: 5

比较规则放在单独的文件中,通过 --policy 传入,因为 release.yaml 判定的是单个运行,而阈值规则和比较规则读取的是不同的证据。

oloproof compare CANDIDATE_RUN_ID BASELINE_RUN_ID --policy compare.yaml

同一组规则作用于两个候选

两百个带标签的问题。基线对其中二十个标注错误。下面每个候选都在同一个测试套件上运行,并使用上面的文件与该基线进行比较。

一个行为与基线完全相同的候选:

Comparison sha256:7d2396c475b94028925930d4e52ae070d9a216a4558e22646169db492757c4de of run_01M3C44TVGT0X067W2H0BZ6GC9 against run_01M3C44SWMXMSQJE17SYHV87PW · 200 paired cases
exact_label: +0.0 points [-2.7, +2.7] · 200 paired · 0 missing · 0 excluded
latency_p50: -0.067 ms [-0.113, -0.001] ms · p50 of per-case differences · 200 paired · 0 missing
Decisions
  not-worse  exact_label  non-inferiority, margin 5.0 points  PASS  lower_bound_above_margin
  same-quality  exact_label  equivalence, margin ±5.0 points  PASS  interval_within_margins
  better  exact_label  superiority  INSUFFICIENT_EVIDENCE  interval_overlaps_zero
  not-slower  latency_p50  maximum increase 5 ms  PASS  lower_bound_above_margin
Gate: BLOCK (exit 3)

一个修正了这二十个错误的候选:

Comparison sha256:1e36f48662cbbc0af20217a2c69248f90b473bbf0873dc6dd222ccb1895bb33a of run_01M3C44VQ0TFFNW4FRM5Z2D12R against run_01M3C44SWMXMSQJE17SYHV87PW · 200 paired cases
exact_label: +10.0 points [+4.6, +17.9] · 200 paired · 0 missing · 0 excluded
latency_p50: -0.038 ms [-0.089, +0.009] ms · p50 of per-case differences · 200 paired · 0 missing
Decisions
  not-worse  exact_label  non-inferiority, margin 5.0 points  PASS  lower_bound_above_margin
  same-quality  exact_label  equivalence, margin ±5.0 points  INSUFFICIENT_EVIDENCE  interval_overlaps_margins
  better  exact_label  superiority  PASS  difference_above_zero
  not-slower  latency_p50  maximum increase 5 ms  PASS  lower_bound_above_margin
Gate: BLOCK (exit 3)

把这两个门控结果放在一起看。两者都被阻止,原因却恰好相反。第一个候选被确立为等效,但未被确立为更优;第二个候选被确立为更优,因此未被确立为等效。对同一个指标同时设置这三种规则的策略是在问两个互不相容的问题,其中总有一个得不到回答。请选择能表述你所主张结论的那条规则。

方向

non_inferiority 默认为 direction: min:越高越好,规则要求候选低于基线的幅度不超过容许界值。direction: max 用于越低越好的指标,例如延迟、token 数或成本。此时规则表示对增加量设置上限,终端也是这样打印的:maximum increase 5 ms。

superiority 和 equivalence 不接受方向参数。等效性本身已经约束了两侧,而优效性问的是差异在该指标自身意义上是否大于零。

哪些因素会改变区间

比较是配对的:每个用例的候选结果都与其自身的基线结果对照。有两种因素会使所得区间变宽,而它们都不是你所做的变更。

任一侧缺失的用例

在任一运行中出错的用例会从配对中缺失,它会被约束而不是被丢弃:区间允许每个缺失用例朝任一方向变化。一个更小的测试套件,判据名为 ok:在三十四个配对用例上同样有四处不一致,先是没有缺失用例,然后再加上在两个运行中都出错的四个用例:

ok: +11.8 points [-7.2, +34.3] · 34 paired · 0 missing · 0 excluded
ok: +11.8 points [-24.8, +44.7] · 34 paired · 4 missing · 0 excluded

估计值相同,因为它是根据两侧都观测到的用例计算的。区间却不同,因为四个没人看到结果的用例,每一个都可能让差异移动一整个用例的量。请先修复错误再增加用例:在相同错误率下增加更多用例并不能缩小这一差距。

配对的排序差异,例如两个模型版本之间的 ROC-AUC,无法用这种方式约束缺失行:它比较的是两侧都打过分的行。针对它的规则会显示 missingness_unbounded,直到它声明 max_missing_fraction,即它接受为随机缺失的缺失行比例。

方法

比率差异的默认区间是基于每个用例差异的有界均值区间。策略也可以改为指定条件精确方法:

version: 1
difference_method: conditional_exact_paired_difference@1
rules:
  - {id: not-worse, metric: exact_label, kind: non_inferiority, margin: 0.05}

上面那个好十个百分点的候选,在默认方法下显示为 [+4.6, +17.9],在精确方法下显示如下:

exact_label: +10.0 points [+3.5, +15.8] · 200 paired · 0 missing · 0 excluded

两者都不是一致地更窄,这就是为什么方法要在策略中、在读取任何证据之前选定,而绝不由引擎根据数据来选择。它仅适用于比率差异。

当规则无法判定时

一条 INSUFFICIENT_EVIDENCE 的比较规则下方可能会附带一行,说明什么能够让它作出判定。没有任何缺失的三十四用例比较:

Decisions
  not-worse  ok  non-inferiority, margin 5.0 points  INSUFFICIENT_EVIDENCE  interval_overlaps_margin
    about 5 more paired cases would decide it, if the difference holds (39 in total at 12% discordance)
Gate: BLOCK (exit 3)

该估计假设随着更多用例到来,差异以及不一致用例的比例都保持不变。oloproof plan COMPARISON_ID 会打印同样的一行,并附上额外用例所需的时间。

当存在缺失的配对时,不会给出任何样本量,因为缺失的配对按最坏情况约束,增加用例也无法解决它们。同一个比较在有四个缺失配对时不会打印建议行,plan 会说明原因:

oloproof plan COMPARISON_ID
Comparison sha256:22c1aa4fddc4e96ca77e0509ac9835c2a377ed237ca80556bbf1a54a172239bd: no sample size can be computed for a rule that did not decide.
  not-worse: 4 missing pairs are bounded at their worst, and the advice does not size under missingness; resolve them and compare again

而当差异本身位于容许界值的错误一侧时,更多用例只会证实这一点,因此建议会改为说明这一点:

  overall  ok  non-inferiority, margin 5.0 points  INSUFFICIENT_EVIDENCE  interval_overlaps_margin
    no sample size would make this PASS: the difference itself (-5.0 points) is outside the margin, so more cases would move it toward FAIL

下一步

  • 将候选与基线进行比较 介绍工作流程以及对区间的初步解读。
  • 聚类用例 介绍用例之间不独立的测试套件,比较目前尚不对这类套件作出判定。
  • 切片 介绍作用范围限于测试套件某一部分的规则。