Тестування моделі

End-to-End Machine Learning

Joshua Stapleton

Machine Learning Engineer

Розгортання

  • Наступний крок у життєвому циклі ML
  • Після навчання та оцінювання
  • Зробити модель доступною для використання

Етап розгортання в життєвому циклі машинного навчання

End-to-End Machine Learning

Тестування

  • Тестування:
    • Модель не падає
    • Повертає адекватні результати під час інференсу
    • Повертає результати за прийнятний час

Етап розгортання в життєвому циклі машинного навчання

End-to-End Machine Learning

Unittest

  • Тестування
    • Позначайте аномальні/неочікувані події.
    • Перевіряйте, що модель працює як очікується.

 

  • unittest
    • Вбудована бібліотека Python для написання тестів.
    • Test case: охоплює тип тесту.
    • Метод test case: окремий тест для одного аспекту кейсу.
End-to-End Machine Learning

Використання 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()
End-to-End Machine Learning

Використання 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])
End-to-End Machine Learning

Тестування в Python

End-to-End Machine Learning

Що робити і чого не робити в тестуванні

Найкращі практики

  • НЕ…
    • Пишіть надто багато тестів
    • Пишіть дублювальні тести
    • Пишіть тести для дуже надійних компонентів

 

  • ТАК…
    • Пишіть тести, щоб підвищити надійність.
    • Пишіть тести для перевірки/управління очікуваннями.
    • Пишіть тести для нової функціональності.
End-to-End Machine Learning

Переваги тестування

Переваги TDD

  • Впевненість у розробці
    • Стабільні ітерації
    • Менше занепокоєння щодо багів
  • Продуктивність
    • Надійність
    • Рівень production
End-to-End Machine Learning

Давайте потренуємось!

End-to-End Machine Learning

Preparing Video For Download...