Skip to content

Panduan

Irisan (slice)

Rasio global dapat tetap stabil sementara satu bagian suite runtuh. Irisan adalah bagian suite yang dinyatakan, diukur tersendiri, sehingga keruntuhan itu terlihat. Irisan disertai dua disiplin, karena melihat banyak bagian suite adalah cara sebuah evaluasi menemukan noise lalu menyebutnya temuan.

Menyatakan irisan

Irisan disebut di oloproof.yaml. Jenis yang umum membaca sebuah key dari metadata setiap kasus:

slices: [metadata.lang, metadata.topic]
min_slice_support: 30
{"id": "c000", "input": {"lang": "en", "topic": "billing", "hard": false, "n": 0}, "expected": {"label": "yes"}, "metadata": {"lang": "en", "topic": "billing"}}

Setiap jenis irisan yang diterima file tersebut:

IrisanMengelompokkan kasus menurutMemerlukan
metadata.<key>nilai key itu dalam metadata kasuskey tersebut pada kasus
relevant_positionposisi pengambilan passage relevan pertama: top_k, beyond_top_k atau not_retrievedsistem RAG dan expected.relevant
context_truncatedapakah anggaran token membuang passage dari kontekssistem RAG dengan token_budget
first_tooltool yang pertama kali dipanggil agenrecord agent_trajectory/v1
repeated_actionapakah agen mengulang panggilan yang identikrecord agent_trajectory/v1
routeagen-agen yang memegang kendali, ditulis triage>billingrecord agent_trajectory/v1 yang langkah-langkahnya menyebut agennya
trajectory_length:4,8jumlah langkah, dikelompokkan pada batas yang Anda nyatakanrecord agent_trajectory/v1
confidence:0.5skor yang diberikan model pada baris itu, dikelompokkan pada batas yang Anda nyatakanblok predictive:

Nama yang tidak dikenali file tersebut ditolak sebelum apa pun dijalankan:

Configuration error: unknown slice 'lang'; declare metadata.<key>, relevant_position, context_truncated, first_tool, repeated_action, route, trajectory_length:<bounds> or confidence:<bounds>

Irisan melapor dan tidak pernah menjadi gerbang

Sebuah eksekusi mencetak irisannya di bawah judulnya sendiri. Kandidat yang memperbaiki bahasa Inggris dan merusak bahasa Prancis:

│ metadata.lang=de       │ ok     │ 100.0%   │ [95.4%, 100.0%] │ 80 / 80 observed · 0 missing · 0 excluded · exploratory · support 80    │
│ metadata.lang=en       │ ok     │ 100.0%   │ [95.4%, 100.0%] │ 80 / 80 observed · 0 missing · 0 excluded · exploratory · support 80    │
│ metadata.lang=fr       │ ok     │ 32.5%    │ [22.4%, 43.9%]  │ 26 / 80 observed · 0 missing · 0 excluded · exploratory · support 80    │
│ metadata.topic=account │ ok     │ 88.3%    │ [81.2%, 93.5%]  │ 106 / 120 observed · 0 missing · 0 excluded · exploratory · support 120 │
│ metadata.topic=billing │ ok     │ 66.7%    │ [57.4%, 75.1%]  │ 80 / 120 observed · 0 missing · 0 excluded · exploratory · support 120  │

Judul tabel itu berbunyi Slices (exploratory; never gated), dan memang begitu maksudnya. Rasio global eksekusi itu 77.5% dan gerbangnya mengizinkan rilis, dengan bahasa Prancis di sepertiga angka itu. Aturan rilis pada sebuah eksekusi menyebut metrik global, dan aturan yang cakupannya irisan dari satu eksekusi ditolak:

Configuration error: release rule 'fr-floor' targets slice/metadata.lang=fr; a run's slice results are exploratory, and only a comparison rule gates a slice, inside a family with a correction

Itulah disiplin pertama. Suite yang diiris sepuluh cara memiliki sepuluh peluang untuk menunjukkan selisih secara kebetulan, dan gerbang yang membaca irisan akan memblokir rilis karena noise. Irisan berguna untuk menemukan di mana harus melihat.

Irisan mana yang menonjol

Eksekusi juga memeringkat irisannya terhadap rasio eksekusi itu sendiri dan menandai yang berbeda, dengan prosedur Benjamini-Yekutieli sehingga porsi tanda yang keliru tetap terkendali bagaimanapun irisan saling tumpang tindih. Tabel irisan di terminal menampilkan masing-masing di kolom BY mark — marked, not marked, atau kosong untuk irisan yang terlalu tipis untuk diuji — beserta p-value yang dipakai untuk memeringkatnya. Hasil ini juga disimpan dalam eksekusi dan diekspor di run.json pada bundle-nya:

jq -c '.run.slice_metrics[] | {scope, estimate, fdr_marked, fdr_p_value}' .oloproof/bundles/RUN_ID/run.json
{"scope":"slice/metadata.lang=de","estimate":1.0,"fdr_marked":true,"fdr_p_value":0.0001}
{"scope":"slice/metadata.lang=en","estimate":1.0,"fdr_marked":true,"fdr_p_value":0.0001}
{"scope":"slice/metadata.lang=fr","estimate":0.325,"fdr_marked":true,"fdr_p_value":0.0001}
{"scope":"slice/metadata.topic=account","estimate":0.8833333333333333,"fdr_marked":true,"fdr_p_value":0.0037003540039062493}
{"scope":"slice/metadata.topic=billing","estimate":0.6666666666666666,"fdr_marked":true,"fdr_p_value":0.008582189941406249}

Irisan yang tidak ditandai tidak berarti terbukti sesuai dengan eksekusi; ia hanya tidak ditandai. Tanda mengarahkan perhatian dan tidak pernah mencapai gerbang.

Dukungan

min_slice_support adalah jumlah kasus paling sedikit yang diperlukan sebuah irisan sebelum mendapat interval. Di bawahnya, estimasi ditampilkan dan interval ditahan. Dari proyek yang menetapkannya ke 4:

│ metadata.topic=account          │ answer_correct  │ 100.0%   │                 │ 1 / 1 observed · 0 missing · 0 excluded · exploratory · support 1 │
│                                 │                 │          │                 │ < 4, no interval                                                  │

Nilai bawaannya 30. Suite kecil yang menurunkannya mendapat interval pada irisan yang tipis, dan interval itu cukup lebar untuk menunjukkannya sendiri.

Gerbang pada irisan, dalam perbandingan

Jika sebuah irisan benar-benar tidak boleh mengalami regresi, aturan perbandingan dapat dicakupkan padanya. Cakupannya adalah nama irisan dengan awalan slice/, dan aturan itu menyatakan dukungan yang diperlukannya sebelum bukti apa pun dibaca:

version: 1
rules:
  - {id: overall, metric: ok, kind: non_inferiority, margin: 0.05}
  - {id: fr-not-worse, metric: ok, kind: non_inferiority, margin: 0.05, scope: slice/metadata.lang=fr, min_support: 30}
  - {id: en-not-worse, metric: ok, kind: non_inferiority, margin: 0.05, scope: slice/metadata.lang=en, min_support: 30}
  - {id: de-not-worse, metric: ok, kind: non_inferiority, margin: 0.05, scope: slice/metadata.lang=de, min_support: 30}
families:
  - {id: languages, correction: holm, rules: [fr-not-worse, en-not-worse, de-not-worse]}

Jika ditulis tanpa awalan, cakupannya ditolak:

Configuration error: rule 'fr-not-worse' has unknown scope 'metadata.lang=fr'; a comparison rule decides on the global scope or on slice/<name>=<value>

Dengan awalan, kandidat di atas terhadap baseline-nya:

oloproof compare CANDIDATE_RUN_ID BASELINE_RUN_ID --policy compare.yaml
Comparison sha256:cd2693b505e645919d397e8d7a87eaf0a841ab0c11c0b95484912363381b72e0 of run_01M3C46CYA163JSMSA5QZ6KAZA against run_01M3C46B3PSNP1ZTC8X05AG0GE · 240 paired cases
ok: -5.0 points [-15.2, +4.9] · 240 paired · 0 missing · 0 excluded
ok [slice/metadata.lang=de]: +8.8 points [-0.5, +21.5] · 80 paired · 0 missing · 0 excluded · exploratory · support 80
ok [slice/metadata.lang=en]: +18.8 points [+7.0, +34.4] · 80 paired · 0 missing · 0 excluded · exploratory · support 80
ok [slice/metadata.lang=fr]: -42.5 points [-60.3, -26.8] · 80 paired · 0 missing · 0 excluded · exploratory · support 80
ok [slice/metadata.topic=account]: +7.5 points [+0.9, +17.1] · 120 paired · 0 missing · 0 excluded · exploratory · support 120
ok [slice/metadata.topic=billing]: -17.5 points [-35.0, -0.1] · 120 paired · 0 missing · 0 excluded · exploratory · support 120
Decisions
  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
  fr-not-worse  ok  non-inferiority, margin 5.0 points  FAIL  upper_bound_below_margin
  en-not-worse  ok  non-inferiority, margin 5.0 points  PASS  lower_bound_above_margin
  de-not-worse  ok  non-inferiority, margin 5.0 points  PASS  lower_bound_above_margin
Family languages: Holm over 3 rules; adjusted levels 0.01667
Gate: BLOCK (exit 1)

Itulah disiplin kedua. Aturan yang cakupannya irisan hanya menjadi gerbang di dalam entri families:, yang mencantumkan aturan-aturan yang kegagalan kelirunya dikendalikan bersama. holm adalah koreksinya: aturan dalam family yang gagal diuji ulang pada level yang lebih ketat, disesuaikan dengan jumlah aturan dalam family, sehingga tiga peluang untuk gagal secara kebetulan tidak menjumlah menjadi tiga kali risikonya. Pada level kepercayaan 0.95 dan tiga aturan, kegagalan terkuat diuji ulang pada 0.05 / 3, berikutnya pada 0.05 / 2, dan terakhir pada 0.05. Hanya kegagalan yang diuji ulang: kelulusan bukanlah penolakan dan tidak memerlukan koreksi. Di sini satu aturan gagal, diuji ulang pada 0.01667, dan bahasa Prancis tetap gagal. Aturan global tidak dapat memutuskan, dan saran di bawahnya menyatakan bahwa lebih banyak kasus hanya akan menggesernya ke arah FAIL.

Aturan irisan di luar family mana pun ditolak:

Configuration error: slice rule 'fr-not-worse' belongs to no family; slice rules multiply the chances of a false FAIL, so they gate only inside a family with a correction

Langkah selanjutnya

Classifier dan regressor menggunakan irisan non-metadata.