Перейти к содержимому

Evals как инфраструктура: CI, датасет, гейты

В обычной разработке качество защищают тесты, в ML — validation sets. Для AI-систем эту роль играют evals, только сложнее: поведение вероятностное, среда динамическая, а «правильно» часто не бинарно. Поэтому evals нужна статистическая дисциплина, а не true/false.

В зрелых командах evals — не research-артефакт, а CI/CD-слой: выбор модели, регрессионное тестирование, изменения промптов, архитектурные решения, safety-ревью, оптимизация стоимости, релизные гейты. Владение и развитие evals должно быть такой же рутиной, как поддержка unit-тестов.

ЧастьЧто этоПризнак, что её нет
ДатасетВерсионированный набор задач с ожидаемым поведениемКейсы живут в переписке и в голове владельца
РаннерЗапуск системы на датасете в изолированной средеПрогон делается вручную и не воспроизводится
ОценщикиДетерминированные проверки, рубрики, судьяРезультат читается глазами
РазбивкаМетрики по компонентам, а не один процентНепонятно, что чинить после падения
ОтчётностьИстория прогонов, сравнение версийНельзя ответить, стало ли лучше
ГейтыПравила блокировки релизаДеградация уезжает в прод
ВладелецЧеловек, отвечающий за набор и его актуальностьНабор заброшен после запуска
БюджетЛимит на прогоны и токеныПолный набор перестали запускать из-за цены
ТриггерЧто запускаетсяРешение
Pull requestSmoke: 20–50 кейсов, быстрые проверкиБлокирует merge при регрессии
НочьПолный набор, длинные сценарии, судьяЗаводит задачу на разбор
РелизПолный набор + execution-based на критичных путяхБлокирует выпуск
Изменение промпта или моделиСравнение с базовой версией на одном датасетеТребует явного решения
ПостоянноOnline-метрики и трассировкаПоднимает сигнал
КварталRed teaming и human-разметка выборкиОбновляет критерии

Гейт должен быть один и понятный. Если релиз блокируется по пяти разным метрикам без приоритета, команда научится обходить гейт, а не чинить причину.

Датасет — главный актив, а не приложение к нему. OpenAI прямо называет eval-датасет «differentiated, context-specific dataset that is hard to copy»: его нельзя скачать вместе с весами модели.

Практика ведения:

  • Golden set от экспертов. Небольшой набор пар «вход → желаемый выход», принятый как эталон суждения команды. Он задаёт критерий, по которому калибруются остальные оценки.
  • Production-сбои. Каждый разобранный инцидент становится кейсом с типом проверки. Это единственный источник, который отражает вашу систему, а не представление о ней.
  • Версионирование. Датасет меняется вместе с системой; сравнение прогонов имеет смысл только на одинаковой версии набора.
  • Баланс сложности. Если все кейсы лёгкие, набор даёт 100% и ничего не измеряет. Если все провальные — не показывает прогресс.
  • Защита от контаминации. Публичные тест-сеты годами лежат в открытом доступе и попадают в обучение; высокий балл может быть выучен, а не заработан.
  • Старение. Задачи, которые легко решает текущая модель, перестают что-либо измерять. Набор нужно пересматривать, а не только пополнять.
  • Принимать ранг в лидерборде за качество продукта. Лидерборд отвечает про модель, а не про вашу систему.
  • Мерить только финальный успех. Один процент не показывает, где сломалось, и провоцирует менять всё сразу.
  • Менять инструменты, данные, промпт и модель одновременно. После такого изменения невозможно понять, что помогло.
  • Игнорировать стоимость и задержку. Улучшение на 2 п.п. при росте счёта в 5 раз — ухудшение продукта.
  • Слепо доверять судье. Без калибровки он измеряет сходство с собственными предпочтениями.
  • Винить модель, когда сломан eval. Самая коварная ошибка. На CORE-Bench Opus 4.5 подскочила с 42% до 95% после исправления багов грейдера, неоднозначных формулировок и слишком строгого scoring, который считал «96.12» ошибкой при ожидании «96.124991…». Модель не менялась.

Правило: прежде чем делать вывод про систему, проверьте, не сломан ли измерительный прибор. Прогоните несколько кейсов вручную, посмотрите на промежуточные значения, убедитесь, что эталон достижим.

Evals — необходимая опора, но не гарантия.

  • Модели замечают, что их тестируют, и на тесте ведут себя иначе, чем в работе. Поведенческие evals не равны поведению в проде.
  • Пройденные behavioral-evals не означают безопасность. Система может остаться уязвимой к джейлбрейкам и adversarial-запросам, которые не входили в набор.
  • Часть критериев не формализуется. Вкус, уместность, репутационный риск остаются за человеком.
  • Область развивается. Методологии меняются быстрее, чем успевают закрепиться практики.

Поэтому на по-настоящему рискованных кейсах решение подстраховывает живой человек — независимо от результатов прогона.

УровеньЧто естьЧто это даёт
0Демо и впечатленияНичего не воспроизводится
1Golden set и ручные прогоныЕсть эталон, но регрессии ловятся поздно
2Offline smoke в CIРегрессии блокируются до merge
3Покомпонентные проверки и разбивкаВидно, где именно сломалось
4Полный набор, гейты, online-метрики, red teamingКачество управляется как инфраструктура

Переход с уровня 1 на 2 даёт больше, чем любой апгрейд модели: именно он превращает обсуждение «стало лучше» в проверяемое утверждение.

  • Кто владеет набором. Если владельца нет, набор устареет за месяц.
  • Запускается ли он на PR. Ручной прогон перед релизом ловит слишком поздно.
  • Есть ли версия датасета. Иначе сравнение прогонов бессмысленно.
  • Попадают ли инциденты в набор. Это главный источник роста качества.
  • Проверен ли сам eval. Сломанный грейдер выглядит как слабая модель.