Всем нам хорошо известно, что одним из аспектов надёжности является тестирование. За годы разработки в индустрии сформировались практики тестирования классических детерминированных сервисов, где мы можем точно предсказать результат выполнения алгоритма/бизнес логики.
А что делать, если ваша система — ML сервис? Результат модели непредсказуем до тех пор, пока не передашь на вход данные и не получишь результат. Но даже зная, как себя поведёт конкретная модель на конкретном датасете, после дообучения мы попадаем вновь в начальную точку, когда мы не можем предсказать результат модели на известном наборе данных из-за изменившихся весов. Ситуация усугубляется, если у вас цепочка моделей, где результат каждой последующей зависит от предыдущей, а значит и ошибка, вносимая одной моделью, заведомо вносит ошибку в последующие модели.
Как гарантировать бизнесу высокое качество в столь неопределенной среде? Взяв в качестве примера одну из систем виртуального ассистента Салют, я расскажу, какую эволюцию мы прошли, какие новые приёмы и метрики придумали для того чтобы гарантировать качество ML системы.
Постановка проблемы:
- Обозначаю домен (NLP), на котором возникает проблема
- Вспоминаем основы тестирования
- Цикломатическая сложность
- Проверка всех возможных значений
- Раскрываю, почему тестировать ML систему сложно
Стадия 1 — оценка качества метрикой F1:
- Рассказываю, как ML специалисты оценивают модель
- Пояснение о недостатке метрики F1
Стадия 2 — пишем автотесты на критические фразы:
- Рассказываю, как программисты тестируют модель
- Проблема мигающих тестов
Стадия 3:
- Вводим метрику Очки Проблем
- Оцениваем потенциальный объём данных для тестирования
- Увеличиваем в тысячи раз количество автотестов
- Аугментация — добавляем опечатки, точки и т.п в данные.
- Увеличиваем пропускную способность системы тестирования
- Теневой режим, или как протестировать изменения на проме без влияния на пользователя
Итоги: расскажу, что мы получили перейдя в 3-ю стадию.
Слушатели смогут открыть для себя новый подход к тестированию ML системы, который позволит повысить её качество и надёжность.