QASenior

Оцінювання AI

Оцінювання AI — це те, як ви дізнаєтесь, чи достатньо добрий вивід моделі, щоб його випускати. Набір оцінок — це фіксована збірка вводів із способом судити кожен вивід, що запускається на кожну зміну й звітується частками. Зібрати такий набір неважко. Важко зібрати той, що каже правду, бо все вирішують два рішення: які кейси в ньому і як оцінюється кожна відповідь. Ця сторінка — про ці два рішення: драбина оцінювачів від безкоштовного точного збігу до дорогої людини, коли модель може судити модель і як читати число, не обманюючи себе.

Корисний набір —
30–100 справжніх збоїв
Оцінюйте на
Найнижчому робочому щаблі
Звітуйте як
Частки, не «пройшло»

Що входить у набір і яким великим він має бути

Інстинкт підказує будувати на покриття: кейс на фічу, кейс на категорію, рівномірно. Виходить набір, що з першого дня дає девʼяносто з чимось відсотків і більше не рухається, — а отже, він більше нічого не може вам сказати. Набір оцінок виправдовує себе тим, що згущений там, де система слабка, тож його склад має бути навмисно незбалансованим.

  • Кейси з продакшну

    Кожна скарга, кожна негативна оцінка, кожна дивна відповідь. Це найцінніше джерело — і єдине, що росте в міру користування продуктом.

  • Кейси, які ніхто не пройде

    Питання, відповіді на які немає в джерелі. Очікувана поведінка — сказати про це, і саме на цій категорії тихо провалюється більшість систем.

  • Кейси, які ламати не можна

    Захищений набір: відмови, регульовані формулювання, точна поведінка, обіцяна клієнту. Будь-яка регресія тут блокує реліз незалежно від середнього.

  • Кілька легких

    Не заради оцінки, а як канарка. Коли починають падати легкі кейси, зламалося щось структурне, і цікаві числа втрачають сенс.

Тридцять–пʼятдесят кейсів — справжня стартова точка, сто — зрілий набір для однієї фічі. Цінність не в кількості, а в тому, що кожен кейс — це те, у чому хтось справді помилився. І набір варто розділити від початку: робочий, на який ви дивитеся й проти якого ітеруєте, і відкладений, який запускають рідше й до якого ніколи не підганяють. Без відкладеного ви зрештою оптимізуєте промпт під оцінювання, а не під користувачів, — і не зможете помітити, що це сталося.

Драбина оцінювачів

Те, як судять відповідь, важить більше, ніж скільки відповідей ви судите. Пробувати варто у чіткому порядку, і дисципліна полягає в тому, щоб підійматися, лише коли щабель нижче справді не може вирішити питання.

Оцінювання відповіді — це проєктне рішення, і пробувати варто у чіткому порядку. Унизу — перевірки, що не коштують нічого й не підлягають суперечці: чи збігається вивід точно, чи парситься він, чи відповідає схемі, чи є мітка однією з чотирьох дозволених. На щабель вище — запустити код на відповіді: перерахувати число, яке вона наводить, перевірити, що цитований фрагмент існує у джерелі й справді містить твердження, підтвердити, що виклик інструмента ніс правильні аргументи. Далі — порівняння з еталонною відповіддю за схожістю: швидко, приблизно й каже менше, ніж здається. І лише потім братися за іншу модель як суддю — вона тягне справді субʼєктивні питання про тон, корисність і те, чи відповідь взагалі відповіла, — за ціну на кейс, із власною варіативністю і з потребою калібрування проти людських оцінок, перш ніж їй можна вірити. Нагорі людина читає сама: найповільніший, найдорожчий і найнадійніший оцінювач, і саме він має визначити, що означає «добре», перш ніж збудують хоч один щабель нижче. Більшість наборів оцінюють значно вище цією драбиною, ніж потрібно, — тобто витрачають гроші, щоб перетворити факт на думку.

Другий щабель заслуговує більшої уваги, ніж зазвичай отримує, бо покриває значно більшу частину справжнього набору, ніж очікують команди. Якщо відповідь наводить число — перерахуйте й порівняйте. Якщо цитує фрагмент — перевірте, що фрагмент існує у джерелі й справді містить твердження. Якщо викликає інструмент — перевірте аргументи. Якщо це резюме — перевірте, що кожна названа в ньому сутність є у вводі. Кожне з цього — детермінований код, що виконується за мілісекунди, не коштує нічого й дає результат, з яким ніхто не посперечається, — а це суттєво інша річ, ніж оцінка.

Як правильно використати модель як суддю

Модель може оцінювати вивід іншої моделі, і це справді корисно для субʼєктивних критеріїв у масштабі, недосяжному для людей. Це також вимірювальний прилад, який треба повірити, перш ніж його показання щось означатимуть, — і саме цей крок більшість команд пропускає цілком.

  • Просіть бінарний вердикт за записаним критерієм, а не оцінку з десяти. «Чи наводить відповідь джерело для кожного фактичного твердження — так чи ні» — питання, на яке можна відповісти повторювано; «оцініть якість від одного до десяти» вічно даватиме сімки й вісімки.
  • Розділіть рубрику на кілька незалежних бінарних перевірок замість одного цілісного судження. Тоді ви знаєте, який вимір зрушив, — а саме заради цього й міряють.
  • Дайте судді довідковий матеріал, потрібний, щоб бути правим: джерельний документ, очікувану відповідь, політику, — а не просіть його знати предметну область.
  • Стежте за позиційним зміщенням при порівнянні двох відповідей: та сама пара в оберненому порядку має дати обернений вердикт, а якщо ні — запускайте обидва порядки й усереднюйте.
  • Не дозволяйте моделі, що згенерувала відповідь, її ж оцінювати. Вона вимірювано добріша до власного виводу, і ви збудували прилад, що звітує про бажане.

Далі — калібрування. Нехай людина розмітить пʼятдесят кейсів за тим самим записаним критерієм, запустіть суддю на тих самих пʼятдесяти й виміряйте, як часто вони збігаються. Нижче грубої згоди суддя міряє не ваш критерій, і рубрику треба переписати; за високої згоди ним можна користуватися в масштабі й перевіряти щокварталу. Звітуйте це число згоди поруч із кожним результатом оцінювання, бо оцінка 0,86 від некаліброваного судді — не вимірювання, а чутка з десятковою комою.

Як читати числа, не обманюючи себе

Оцінювання дає частки, а не вердикти, і частки потребують обережності. Дві речі вирішують, чи означає щось повідомлена різниця: скільки кейсів за нею стоїть і наскільки число гуляє, коли нічого не змінюється.

Число, з яким можна діяти

  • Звітується і за категоріями, і загалом — видно, який тип кейсів зрушив.
  • Виміряне з кількома запусками кожного кейса, тож шум семплінгу видно, а не припущено.
  • Порівняне із записаною базовою лінією покейсно, а не лише як одне середнє проти іншого.
  • Супроводжується згодою судді з людьми, тож ви знаєте, чого вартий прилад.

Число, що вам бреше

  • Один сукупний відсоток з одного запуску, де зсув на два пункти не відрізнити від шуму.
  • Девʼяносто чотири відсотки на наборі з кейсів, які вже проходили, коли його складали.
  • Оцінка, що лише зростає: промпт підганяють під набір.
  • Оцінка від некаліброваного судді за рубрикою, якої ніхто не записав.

Антипатерни, які варто назвати

  • Набір із кейсів, що вже проходять: звітує високе число й не виявляє нічого.
  • Єдина цілісна оцінка з десяти від судді: вона усереднює й ховає той єдиний вимір, що зламався.
  • Без відкладеного набору: промпт підганяють під оцінювання, доки те не перестане щось передбачати.
  • Незакріплена модель судді: наступне оновлення провайдера тихо перемасштабує всі історичні результати.
  • Набір, що ніколи не росте з продакшну: він описує користувачів минулого кварталу й більше нікого.

Коли це застосовувати

Застосовуйте, коли

  • Щойно у фічі є жменя справжніх збоїв, які варто памʼятати: тридцять кейсів кращі за платформу.
  • З найнижчим оцінювачем, здатним вирішити питання, і підйомом лише тоді, коли перевірка справді не може.
  • З моделлю-суддею для субʼєктивних критеріїв — каліброваною проти людських оцінок і зі звітом про згоду.
  • Розділеним на робочий і відкладений набори, щоб відрізнити підганяння від покращення.

Уникайте, коли

  • Оцінки моделлю для всього, що точно вирішує перевірка схеми, перерахунок чи пошук.
  • Висновків з одного сукупного числа з одного запуску, де шум і справжня зміна виглядають однаково.
  • Судді без калібрування проти людських оцінок: некалібрований прилад звітує про бажане.
  • Будувати платформу оцінювання до появи фічі: це куплений процес замість інформації.

Було корисно?

Поділіться з тим, хто працює над тією ж задачею.