Slide 1

Slide 1 text

© 2024 Wantedly, Inc. Polarsを活用した機械学習ジョブの 高速化 みんなのPython勉強会#101 Jan. 22 2024 - Yudai Hayashi

Slide 2

Slide 2 text

© 2024 Wantedly, Inc. INTERNAL ONLY 自己紹介 林 悠大 ● 経歴: ○ 東京大学工学系研究科でPh.D取得 ○ 2022年にウォンテッドリーにデータサイ エンティストとして新卒入社。推薦シス テムの開発を行う ● X: @python_walker ● 趣味: ○ 読書 ○ 音楽聴くこと ○ ウイスキー

Slide 3

Slide 3 text

© 2024 Wantedly, Inc. INTERNAL ONLY ジョブを高速化するモチベーション 実験 評価 改善 機械学習のPDCAサイクル ● 機械学習ジョブの実行には長い時間が かかることが多い ● ジョブの待ち時間を減らしてサイクルを 高速に回したい ここではpolarsを使ってテーブルデータの処理を高速化する手法を紹介 実験設計 > 1 h

Slide 4

Slide 4 text

© 2024 Wantedly, Inc. INTERNAL ONLY PolarsとPandas 主にPython Rust シングルコア マルチコア 実装 処理 データの 持ち方 行指向 列指向 インメモリ インメモリ、遅延評価 polarsはpandasと同様、テーブルデータの処理をするためのライブラリ データ型 DataFrame, Series DataFrame, Series 10万 x 100 のDataFrameどうし のinner joinにかかる時間

Slide 5

Slide 5 text

© 2024 Wantedly, Inc. INTERNAL ONLY 実務におけるpolarsによる高速化の効果 日付をintに変換して差を計算 欠損時には欠損を残す when構文を使って条件分岐 結果を格納するカラム名を指定 Pandas Polars ● 50 min → 1 min に 実行時間が短縮 ● applyが不要になった ことで改善幅が大きく なった

Slide 6

Slide 6 text

© 2024 Wantedly, Inc. INTERNAL ONLY 遅延評価によるさらなる高速化・メモリ節約 公式ドキュメントより “...in the lazy API the query is only evaluated once it is 'needed'.” Eager API ここで評価される Lazy API ● 評価を遅らせることで処理速度を最適化 (↑の例だと6 %高速化(10万x100の大 きさのデータ)) ● 必要なデータだけを読み込むので大規模データを扱う際にも有用 上から順番に処理

Slide 7

Slide 7 text

© 2024 Wantedly, Inc. INTERNAL ONLY まとめ ● テーブルデータの処理にPolarsを使うことで高速化する手法を紹介 ● Pandasでapplyを使う必要がある処理はPolarsによる高速化の恩恵が大 きくなる可能性 ● 遅延評価によって大規模データも効率的に扱える