Как прокачать надёжность ML системы
Тезисы
Всем нам хорошо известно, что одним из аспектов надёжности является тестирование. За годы разработки в индустрии сформировались практики тестирования классических детерминированных сервисов, где мы можем точно предсказать результат выполнения алгоритма/бизнес логики.

А что делать, если ваша система — ML сервис? Результат модели непредсказуем до тех пор, пока не передашь на вход данные и не получишь результат. Но даже зная, как себя поведёт конкретная модель на конкретном датасете, после дообучения мы попадаем вновь в начальную точку, когда мы не можем предсказать результат модели на известном наборе данных из-за изменившихся весов. Ситуация усугубляется, если у вас цепочка моделей, где результат каждой последующей зависит от предыдущей, а значит и ошибка, вносимая одной моделью, заведомо вносит ошибку в последующие модели.

Как гарантировать бизнесу высокое качество в столь неопределенной среде? Взяв в качестве примера одну из систем виртуального ассистента Салют, я расскажу, какую эволюцию мы прошли, какие новые приёмы и метрики придумали для того чтобы гарантировать качество ML системы.

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

Слушатели смогут открыть для себя новый подход к тестированию ML системы, который позволит повысить её качество и надёжность.
Всем нам хорошо известно, что одним из аспектов надёжности является тестирование. За годы разработки в индустрии сформировались практики тестирования классических детерминированных сервисов, где мы можем точно предсказать результат выполнения алгоритма/бизнес логики.

А что делать, если ваша система — ML сервис? Результат модели непредсказуем до тех пор, пока не передашь на вход данные и не получишь результат. Но даже зная, как себя поведёт конкретная модель на конкретном датасете, после дообучения мы попадаем вновь в начальную точку, когда мы не можем предсказать результат модели на известном наборе данных из-за изменившихся весов. Ситуация усугубляется, если у вас цепочка моделей, где результат каждой последующей зависит от предыдущей, а значит и ошибка, вносимая одной моделью, заведомо вносит ошибку в последующие модели.

Как гарантировать бизнесу высокое качество в столь неопределенной среде? Взяв в качестве примера одну из систем виртуального ассистента Салют, я расскажу, какую эволюцию мы прошли, какие новые приёмы и метрики придумали для того чтобы гарантировать качество ML системы.

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

Слушатели смогут открыть для себя новый подход к тестированию ML системы, который позволит повысить её качество и надёжность.
Видеозапись доклада
Информация о спикере
Денис Усачёв
Руководитель Python разработки на ML системах, Сбердевайсы
Последние 5 лет занимаюсь развитием виртуальных ассистентов. Активно продвигаю подходы принятия решения, основанных на данных. Люблю автоматизировать рутинную работу и создавать большие и сложные системы играючи.
  • Денис Усачёв
    Руководитель Python разработки на ML системах, Сбердевайсы
    Последние 5 лет занимаюсь развитием виртуальных ассистентов. Активно продвигаю подходы принятия решения, основанных на данных. Люблю автоматизировать рутинную работу и создавать большие и сложные системы играючи.
Все доклады секции