Skip to content

가이드

비교 규칙

후보를 기준선과 비교하기는 워크플로를 보여 줍니다. 이 페이지는 비교의 결정 기준이 되는 규칙에 대한 참조 문서입니다. 어떤 종류가 있는지, 각각 무엇을 묻는지, 마진은 어떤 단위로 측정되는지, 그리고 규칙이 읽는 구간을 무엇이 움직이는지를 다룹니다.

세 가지 종류

비교 규칙은 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

같은 규칙을 두 후보에 적용하기

레이블이 붙은 질문 이백 개가 있습니다. 기준선은 그중 스무 개에 레이블을 잘못 붙입니다. 아래의 각 후보는 같은 스위트에서 실행되었고, 위의 파일로 그 기준선과 비교되었습니다.

기준선과 정확히 똑같이 동작하는 후보는 다음과 같습니다.

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는 지연 시간, 토큰, 비용처럼 낮을수록 좋은 지표를 위한 것입니다. 이때 규칙은 증가량의 상한으로 읽히며, 터미널도 그렇게 출력합니다: maximum increase 5 ms.

superiority와 equivalence는 방향을 받지 않습니다. 동등성은 이미 양쪽을 모두 제한하고, 우월성은 지표 자체의 의미에서 차이가 0보다 큰지를 묻습니다.

구간을 움직이는 것

비교는 짝지어집니다. 각 케이스의 후보 결과는 그 케이스 자신의 기준선 결과와 대조됩니다. 결과로 나오는 구간을 넓히는 요인은 두 가지이며, 어느 것도 여러분이 만든 변경이 아닙니다.

어느 한쪽에서 누락된 케이스

어느 한 실행에서 오류가 난 케이스는 짝에서 누락되며, 버려지는 대신 경계로 처리됩니다. 구간은 누락된 모든 케이스가 어느 쪽으로든 갔을 가능성을 허용합니다. 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처럼 짝지은 순위 차이는 이런 방식으로 누락된 행을 경계 처리할 수 없습니다. 양쪽이 모두 점수를 매긴 행을 비교하기 때문입니다. 이런 지표에 대한 규칙은 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인 비교 규칙 아래에는 무엇이 있으면 결정되는지를 알려 주는 줄이 붙을 수 있습니다. 누락이 없는 서른네 케이스 비교의 경우입니다.

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는 추가 케이스에 걸릴 시간과 함께 같은 줄을 출력합니다.

짝이 누락된 경우에는 크기를 제시하지 않습니다. 누락된 짝은 최악의 경우로 경계 처리되며, 케이스를 늘려도 해소되지 않기 때문입니다. 누락된 짝이 네 개인 같은 비교는 조언 줄을 출력하지 않으며, 계획이 그 이유를 설명합니다.

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

다음 단계

스위트에 대해 결정을 내리지 않습니다.

  • 슬라이스는 스위트의 한 부분으로 범위를 한정한 규칙을 다룹니다.