Skip to content

ガイド

比較ルール

候補をベースラインと比較する ではワークフローを紹介しています。このページは、比較の判定に使われるルールのリファレンスです。どの種類があるか、それぞれが何を問うか、マージンが何の単位で測られるか、そしてルールが読む区間を何が動かすかを説明します。

3 つの種類

比較ルールは kind とメトリクスを指定します。min や max は決してとりません。差はしきい値から推論されるものではないからです。

種類問いとるもの
superiority候補はベースラインより優れているかマージンなし
non_inferiority候補はベースラインよりマージンを超えて劣っていないかmargin、および任意で direction
equivalence候補は両方向ともベースラインのマージン内にあるかmargin

マージンはメトリクス自身の単位で表します。割合であれば 0.05 は 5 パーセントポイント、レイテンシの分位点であれば 5 は 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

2 つの候補に対する同じルール

ラベル付きの質問が 200 件あります。ベースラインはそのうち 20 件のラベルを誤ります。以下の各候補は同じスイートで実行され、上のファイルを使ってそのベースラインと比較されました。

ベースラインとまったく同じように振る舞う候補です。

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)

その 20 件を修正した候補です。

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)

2 つのゲートを並べて読んでください。どちらもブロックしますが、理由は正反対です。1 つ目の候補は同等であることが示され、優れていることは示されていません。2 つ目の候補は優れていることが示され、それゆえ同等であることは示されていません。1 つのメトリクスに 3 種類すべてを課すポリシーは、両立しない 2 つの問いを立てており、そのうち 1 つは常に答えが出ません。自分が主張しようとしている内容を表すルールを選んでください。

方向

non_inferiority のデフォルトは direction: min です。値が高いほど良く、ルールは候補がベースラインをマージン以上下回らないことを求めます。direction: max は、レイテンシ、トークン数、コストのように低いほど良いメトリクスのためのものです。この場合ルールは増加量の上限として読まれ、ターミナルにもそのように表示されます: maximum increase 5 ms。

superiority と equivalence は方向をとりません。同等性はもともと両側を制約しており、優越性は差がメトリクス自身の意味でゼロを上回るかどうかを問うからです。

区間を動かすもの

比較は対応があります。各ケースの候補の結果は、そのケース自身のベースラインの結果と突き合わされます。その結果の区間を広げるものは 2 つあり、どちらもあなたが加えた変更ではありません。

どちらかの側で欠測したケース

どちらかの実行でエラーになったケースはペアから欠測となり、落とされるのではなく範囲として扱われます。区間は、欠測したケースがどれもどちらに転んでもよいことを許容します。より小さなスイートで、ok という基準を持つ例です。34 件の対応するケースにわたる同じ 4 件の不一致を、まず欠測ケースなしで、次に両方の実行でエラーになったケースがさらに 4 件ある場合で示します。

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

推定値は同じです。両側で観測されたケースから計算されるからです。区間は同じではありません。誰も見ていない 4 件のケースは、それぞれ差をケース 1 件分まるごと動かしえたからです。ケースを追加する前にエラーを修正してください。同じエラー率のままケースを増やしても、この差は埋まりません。

2 つのモデルバージョン間の ROC-AUC のような、対応のあるランキングの差は、欠測行をこの方法で範囲に収めることができません。両側がスコアを付けた行を比較するからです。これに対するルールは、max_missing_fraction、つまりランダムに欠測したものとして受け入れる欠測行の割合を宣言するまで、missingness_unbounded と表示されます。

手法

割合の差に対するデフォルトの区間は、ケースごとの差に対する有界平均の区間です。ポリシーでは代わりに条件付き正確法を指定できます。

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

上で 10 ポイント優れていた候補は、デフォルトでは [+4.6, +17.9]、正確法では次のようになります。

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

どちらも一様に狭いわけではありません。そのため手法は、エビデンスを読む前にポリシーの中で選ばれ、エンジンがデータから選ぶことは決してありません。これは割合の差にのみ適用されます。

ルールが判定できないとき

INSUFFICIENT_EVIDENCE となった比較ルールには、何があれば判定できるかを述べる行がその下に付くことがあります。欠測のない 34 件のケースの比較です。

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 は同じ行を、追加のケースにかかる時間とともに表示します。

ペアが欠測している場合、サイズは提示されません。欠測ペアは最悪の場合で範囲に収められており、ケースを増やしても解消されないからです。4 件のペアが欠測した同じ比較では助言の行は表示されず、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

次に読むページ