Slide 1

Slide 1 text

Unit testしてますか?

Slide 2

Slide 2 text

自己紹介 名前:tsho (Sho Tanaka) 都内の IT 会社で日本や APAC を中心に ML のコンサル タントやソリューションを提供。MLOps 勉強会の運営の1 人。 本発表は所属する組織とは関係なく、 個人の見解と調べたことを発表いたします。

Slide 3

Slide 3 text

話すこと & 対象 初心者 中級者 上級者 データサイエンティスト ◯ ◯ ✕ MLエンジニア/ ソフトウェアエンジニア ◯ △ ✕ エンジニア中級者などは退屈かもしれません。 最近 Python で unittest 書き始めた人の簡単な紹介 (Rspec で test 書い たことあるマン) 最新の話とかではない古くからある話をします。

Slide 4

Slide 4 text

なんでこの話をするのか? テストの話が本勉強会で少ないな 懇親会とかで話していてテストの話を知らない人が意外といるかな と思ったから

Slide 5

Slide 5 text

ML Systemsにおけるテスト Figure 1. Elements for ML systems. Adapted from Hidden Technical Debt in Machine Learning Systems. https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning

Slide 6

Slide 6 text

テストのおおまかな種類 継続的にモデルを作り、デプロイしてビジネスに使うためにもテストは必要 大まかなテストの種類 - 単体テスト(Unit test) - 結合テスト(統合テスト) - E2Eテスト *テストの分け方は人や定義によって多少ことなることが多いです。今回は分け方の議論はしないのでここでこれ以上の話はい たしません

Slide 7

Slide 7 text

単体テスト(Unit Test) クラスや関数などのプログラムの単位ごとにテストのこと ML systemでいうと - 前処理 - モデリング - 予測 など 上記部分で機能テストをすることに該当します。 テストの種類と技法 - Qiita

Slide 8

Slide 8 text

Python における Unit Test 標準 library に unittest が入っている - Pytest など 3rd party の library もありますがここでは触れません。 ● Test 用の Python ファイルを作る ● Test の関数は ‘test_’ で始める 参考 https://docs.python.org/ja/3/library/unittest.html

Slide 9

Slide 9 text

〜 〜 実際の例(githubのコードより) 参考 https://github.com/google/gps_building_blocks/blob/master/py/gps_building_blocks/ml/preprocessing/vif_test.py

Slide 10

Slide 10 text

数ヶ月実施してみて 世間で言われているとおり導入コストは高い ただ、コードが増えていくにつれ、Unite testがあるときにありがたみを感じる(ないとつ らい....)。 テストするためにコードをまとめる癖がつくので可読性もあがる(気がしている)。

Slide 11

Slide 11 text

補足 同じデータでも必ずしもアウトプットが一致する場合でないケースがあります。 例:モデルの byte データが変わる etc. そういった場合は、mock などを使って、該当の関数、method が呼び出されたか確認 することもできます。 もちろんアウトプットの確認よりゆるいテストになるので、アウトプットの確認ができるなら されたほうがよいと思います。

Slide 12

Slide 12 text

さいごに MLに限らず、大規模なプロダクトや改善が多いプロダクトで品質を保証するためにUnit testは重要です。 しかし、実装コストは高いのですべての人に薦めるやり方ではありません。 もし興味があれば、すでにつかっているライブラリの単体テストに使えるメソッドなどを確 認して使うのをおすすめします(例、pandas や numpy などの assert など)。

Slide 13

Slide 13 text

参考 第21回 MLOps 勉強会 普通のプロダクトのテストと機械学習を含んだプロダクトのテス トの違い Python pandas テストの書き方についてメモ - c-bata web