Upgrade to Pro — share decks privately, control downloads, hide ads and more …

機械学習プロジェクトでのPythonアップデートの難しさと得られた知見

Yudai Hayashi
November 15, 2023
180

 機械学習プロジェクトでのPythonアップデートの難しさと得られた知見

みんなのPython勉強会#99 で発表した資料です
https://startpython.connpass.com/event/300831/

Yudai Hayashi

November 15, 2023
Tweet

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide