Тестирование модели

Сквозное машинное обучение

Joshua Stapleton

Machine Learning Engineer

Развёртывание

  • Следующий этап жизненного цикла ML
  • После обучения и оценки
  • Предоставление модели для использования

Этап развёртывания в жизненном цикле машинного обучения

Сквозное машинное обучение

Тестирование

  • Тестирование:
    • Модель не завершается с ошибкой
    • Возвращает разумные результаты при инференсе
    • Возвращает результаты за приемлемое время

Этап развёртывания в жизненном цикле машинного обучения

Сквозное машинное обучение

Unittest

  • Тестирование
    • Выявление аномальных и неожиданных событий.
    • Проверка ожидаемого поведения модели.

 

  • unittest
    • Встроенная библиотека Python для написания тестов.
    • Тест-кейс: охватывает тип теста.
    • Метод тест-кейса: отдельный тест для одного аспекта.
Сквозное машинное обучение

Использование unittest

import unittest


class TestModelInference(unittest.TestCase):
def setUp(self): self.model = fitted_model self.X_test = X_test
def test_prediction_output_shape(self): y_pred = self.model.predict(self.X_test) self.assertEqual(y_pred.shape[0], self.X_test.shape[0])
if __name__ == '__main__': unittest.main()
Сквозное машинное обучение

Использование unittest (продолжение)

 

    def test_input_values(self):
        print("Running test_input_values test case")

        # Get inputs (each row in testing set)
        for input in X_test: 
            for value in input:
                # if value is cholestrol, for example:
                self.assertIn(value, [0, 500])
Сквозное машинное обучение

Тестирование на Python

Сквозное машинное обучение

Что делать и чего избегать при тестировании

Лучшие практики

  • НЕ СТОИТ...
    • Писать слишком много тестов
    • Писать дублирующиеся тесты
    • Тестировать высоконадёжные компоненты.

 

  • СТОИТ...
    • Писать тесты для повышения надёжности.
    • Писать тесты для проверки и контроля ожиданий.
    • Писать тесты для новой функциональности.
Сквозное машинное обучение

Преимущества тестирования

Преимущества TDD

  • Уверенность в разработке
    • Стабильные итерации
    • Меньше беспокойства об ошибках
  • Производительность
    • Надёжность
    • Готовность к production
Сквозное машинное обучение

Давайте потренируемся!

Сквозное машинное обучение

Preparing Video For Download...