모델 테스트

엔드 투 엔드 Machine Learning

Joshua Stapleton

Machine Learning Engineer

배포

  • ML 라이프사이클의 다음 단계
  • 학습과 평가 이후
  • 모델을 사용 가능하게 배포

머신러닝 라이프사이클의 배포 단계

엔드 투 엔드 Machine Learning

테스트

  • 테스트:
    • 모델이 중단 없이 실행됨
    • 추론 시 합리적 출력 반환
    • 합리적 시간 내 출력 반환

머신러닝 라이프사이클의 배포 단계

엔드 투 엔드 Machine Learning

Unittest

  • 테스트
    • 이상/예상 밖 이벤트 탐지
    • 모델이 기대대로 동작하는지 확인

 

  • unittest
    • 파이썬 내장 테스트 라이브러리
    • 테스트 케이스: 테스트 유형 단위
    • 테스트 케이스 메서드: 단일 측면을 검증하는 테스트
엔드 투 엔드 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()
엔드 투 엔드 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])
엔드 투 엔드 Machine Learning

파이썬에서의 테스트

엔드 투 엔드 Machine Learning

테스트: 권장/비권장 사항

모범 사례

  • 하지 말 것...
    • 테스트를 과도하게 많이 작성
    • 중복 테스트 작성
    • 매우 신뢰성 높은 구성요소에 대한 테스트 작성

 

  • 할 것...
    • 신뢰성 향상을 위한 테스트 작성
    • 기대치 확인/관리용 테스트 작성
    • 신규 기능에 대한 테스트 작성
엔드 투 엔드 Machine Learning

테스트의 이점

TDD의 이점

  • 개발 신뢰도
    • 안정적 반복
    • 버그 우려 감소
  • 성능
    • 신뢰성
    • 프로덕션급 품질
엔드 투 엔드 Machine Learning

Ayo berlatih!

엔드 투 엔드 Machine Learning

Preparing Video For Download...