Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Unit testしてますか?
Search
tsho
July 12, 2023
Programming
1
600
Unit testしてますか?
2023/7/12 MLOps 勉強会 LT 発表
tsho
July 12, 2023
Tweet
Share
More Decks by tsho
See All by tsho
25/04/12 - Build with AI Hands-on Appendix
tsho
1
42
Other Decks in Programming
See All in Programming
remix + cloudflare workers (DO) docker上でいい感じに開発する
yoshidatomoaki
0
130
PHP で学ぶ OAuth 入門
azuki
1
130
Making TCPSocket.new "Happy"!
coe401_
1
130
Youtube Lofier - Chrome拡張開発
ninikoko
0
2.4k
国漢文混用体からHolloまで
minhee
1
170
Django for Data Science (Boston Python Meetup, March 2025)
wsvincent
0
320
Kamal 2 – Get Out of the Cloud
aleksandrov
1
180
AHC 044 混合整数計画ソルバー解法
kiri8128
0
330
新しいPHP拡張モジュールインストール方法「PHP Installer for Extensions (PIE)」を使ってみよう!
cocoeyes02
0
340
Chrome Extension Techniques from Hell
moznion
1
160
Agentic Applications with Symfony
el_stoffel
2
270
Deoptimization: How YJIT Speeds Up Ruby by Slowing Down / RubyKaigi 2025
k0kubun
0
500
Featured
See All Featured
A designer walks into a library…
pauljervisheath
205
24k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
104
19k
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
Documentation Writing (for coders)
carmenintech
69
4.7k
Code Review Best Practice
trishagee
67
18k
How to train your dragon (web standard)
notwaldorf
91
6k
Raft: Consensus for Rubyists
vanstee
137
6.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Transcript
Unit testしてますか?
自己紹介 名前:tsho (Sho Tanaka) 都内の IT 会社で日本や APAC を中心に ML
のコンサル タントやソリューションを提供。MLOps 勉強会の運営の1 人。 本発表は所属する組織とは関係なく、 個人の見解と調べたことを発表いたします。
話すこと & 対象 初心者 中級者 上級者 データサイエンティスト ◯ ◯ ✕
MLエンジニア/ ソフトウェアエンジニア ◯ △ ✕ エンジニア中級者などは退屈かもしれません。 最近 Python で unittest 書き始めた人の簡単な紹介 (Rspec で test 書い たことあるマン) 最新の話とかではない古くからある話をします。
なんでこの話をするのか? テストの話が本勉強会で少ないな 懇親会とかで話していてテストの話を知らない人が意外といるかな と思ったから
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
テストのおおまかな種類 継続的にモデルを作り、デプロイしてビジネスに使うためにもテストは必要 大まかなテストの種類 - 単体テスト(Unit test) - 結合テスト(統合テスト) - E2Eテスト
*テストの分け方は人や定義によって多少ことなることが多いです。今回は分け方の議論はしないのでここでこれ以上の話はい たしません
単体テスト(Unit Test) クラスや関数などのプログラムの単位ごとにテストのこと ML systemでいうと - 前処理 - モデリング -
予測 など 上記部分で機能テストをすることに該当します。 テストの種類と技法 - Qiita
Python における Unit Test 標準 library に unittest が入っている -
Pytest など 3rd party の library もありますがここでは触れません。 • Test 用の Python ファイルを作る • Test の関数は ‘test_’ で始める 参考 https://docs.python.org/ja/3/library/unittest.html
〜 〜 実際の例(githubのコードより) 参考 https://github.com/google/gps_building_blocks/blob/master/py/gps_building_blocks/ml/preprocessing/vif_test.py
数ヶ月実施してみて 世間で言われているとおり導入コストは高い ただ、コードが増えていくにつれ、Unite testがあるときにありがたみを感じる(ないとつ らい....)。 テストするためにコードをまとめる癖がつくので可読性もあがる(気がしている)。
補足 同じデータでも必ずしもアウトプットが一致する場合でないケースがあります。 例:モデルの byte データが変わる etc. そういった場合は、mock などを使って、該当の関数、method が呼び出されたか確認 することもできます。
もちろんアウトプットの確認よりゆるいテストになるので、アウトプットの確認ができるなら されたほうがよいと思います。
さいごに MLに限らず、大規模なプロダクトや改善が多いプロダクトで品質を保証するためにUnit testは重要です。 しかし、実装コストは高いのですべての人に薦めるやり方ではありません。 もし興味があれば、すでにつかっているライブラリの単体テストに使えるメソッドなどを確 認して使うのをおすすめします(例、pandas や numpy などの assert
など)。
参考 第21回 MLOps 勉強会 普通のプロダクトのテストと機械学習を含んだプロダクトのテス トの違い Python pandas テストの書き方についてメモ -
c-bata web