Slide 1

Slide 1 text

© 2023 Wantedly, Inc. 機械学習プロジェクトでのPythonアップデー トの難しさと得られた知見 みんなのPython勉強会#99 Nov. 15 2023 - Yudai Hayashi

Slide 2

Slide 2 text

© 2023 Wantedly, Inc. 自己紹介 林 悠大 ● 経歴: ○ 東京大学工学系研究科でPh.D取得 ○ 2022年にウォンテッドリーにデータサイ エンティストとして新卒入社 ● Twitter(X): @python_walker ● 趣味: ○ 読書 ○ 音楽聴くこと ○ ウイスキー Twitter

Slide 3

Slide 3 text

© 2023 Wantedly, Inc. Pythonアップデートをどのような順番で進めていくべきか Poetryで管理しているプロジェクト pyproject.toml Pythonと一緒にライブラリのアップデートも必 要になることが多い ● メインライブラリに破壊的変更が入る ● Linterの挙動が変わる ● ライブラリがメンテされてない 発生しうる問題 どこから始めたら効率的にPythonをアッ プデートできる? 機械学習周りだと破壊的変更やメンテス トップは頻繁に見られる

Slide 4

Slide 4 text

© 2023 Wantedly, Inc. Step 1:Warningを消していく ● FutureWarning: 将来廃止されたり挙動が変わったりするという警告 ● DeprecationWarning: 将来廃止される予定であるという警告 e.g. Warning系はライブラリをアップデートすることで動かなくなる原因になりやすいのでアップ デート前に潰せるものは潰しておく

Slide 5

Slide 5 text

© 2023 Wantedly, Inc. Step 2:Dev dependenciesのバージョンを上げる 返り値の型がAとBで違う と怒られる (mypy) typing.Selfが使えるのは 3.11から... Linterライブラリはバージョンアップデートで挙動が変わることがある

Slide 6

Slide 6 text

© 2023 Wantedly, Inc. Step 3:main dependenciesのバージョンを上げる メインの依存ライブラリのバージョンを上げていく ● PyPIで公開されていてPythonを上げてもサポートが続いているライブラリ ● 自前で管理しているライブラリ ● 外部が管理しているがメンテが止まっているライブラリ 自前で管理しているライブラリ メンテが止まっているライブラリ ● 頑張ってバージョン制約を上げる ● tagをつけて他のリポジトリに影響が出 ないように気をつける ● 乗り換えを考える ● 頑張って.whlをビルドする ここまでできたらPythonのバージョンを上げる

Slide 7

Slide 7 text

© 2023 Wantedly, Inc. Pythonのバージョンを上げた後は... BigQuery Looker モデルに意図しない変化が生じていないか、継 続的にモニタリングする体制が重要

Slide 8

Slide 8 text

© 2023 Wantedly, Inc. まとめ ● Pythonのバージョンを上げるときには 落とし穴があちこちにあるので小さく進 めていくのが重要 ● 機械学習の場合にはアップデートでモ デルの性能に意図しない変化が生じる 可能性がある。継続的に性能をモニタ リングする体制を作ることが重要 バージョンを上げたときの Issue