モデルのテスト

End-to-End Machine Learning

Joshua Stapleton

Machine Learning Engineer

デプロイ

  • MLライフサイクルの次段階
  • 学習と評価の後
  • モデルを利用可能にする

機械学習ライフサイクルのデプロイ段階

End-to-End Machine Learning

テスト

  • テスト
    • モデルがクラッシュしない
    • 推論時に妥当な出力を返す
    • 妥当な時間で出力を返す

機械学習ライフサイクルのデプロイ段階

End-to-End Machine Learning

unittest

  • テスト
    • 異常・想定外の事象を検知
    • 期待どおりの性能か確認

 

  • unittest
    • テスト作成用のPython標準ライブラリ
    • テストケース:テストの種類を網羅
    • テストケースメソッド:一側面を検証する個別テスト
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の利点

  • 開発の自信
    • 安定した反復
    • バグの不安減
  • パフォーマンス
    • 信頼性
    • 本番品質
End-to-End Machine Learning

練習しましょう!

End-to-End Machine Learning

Preparing Video For Download...