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
RustとPyTorchで作る推論サーバー
Search
Yudai Hayashi
November 19, 2024
11
6.8k
RustとPyTorchで作る推論サーバー
UV Study : Rust LT会で発表した内容になります
https://uniquevision.connpass.com/event/335781/
Yudai Hayashi
November 19, 2024
Tweet
Share
More Decks by Yudai Hayashi
See All by Yudai Hayashi
Wantedly Visitにおけるフリーワード検索時の推薦のオンライン化事例紹介
yudai00
1
67
BigQueryで作る簡単なFeature Store
yudai00
2
300
プロダクトのコードをPandasからPolarsへ書き換えた話
yudai00
8
3.2k
データサイエンティストになって得た学び
yudai00
1
190
社内での継続的な機械学習勉強会の開催のコツ
yudai00
2
710
会社訪問アプリ「Wantedly Visit」における新規ユーザーの行動量に基づいた推薦方策の選択
yudai00
0
1.5k
Polarsを活用した機械学習ジョブの高速化
yudai00
1
290
Voyagerを利用した宿画像の最近傍探索による候補生成
yudai00
1
220
推薦データ分析コンペに参加して得た知見
yudai00
2
430
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.5k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
YesSQL, Process and Tooling at Scale
rocio
170
14k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
A Philosophy of Restraint
colly
203
16k
Facilitating Awesome Meetings
lara
51
6.2k
Documentation Writing (for coders)
carmenintech
67
4.5k
Thoughts on Productivity
jonyablonski
68
4.4k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
Transcript
© 2024 Wantedly, Inc. RustとPyTorchで作る推論サーバー UV Study: Rust LT会 Nov.
19 2024 - Yudai Hayashi
© 2024 Wantedly, Inc. INTERNAL ONLY 自己紹介 林 悠大 • 経歴:
◦ 東京大学工学系研究科でPh.D取得 ◦ 2022年にウォンテッドリーにデータ サイエンティストとして新卒入社。 推薦システムの開発を行う • X: @python_walker • Rust初心者
© 2024 Wantedly, Inc. INTERNAL ONLY なぜデータサイエンティストがRustの話をする?
© 2024 Wantedly, Inc. INTERNAL ONLY PythonコミュニティーにとってのRust 色々なRustで書かれたライブラリやツールが広くPythonで使われるようになってきている https://github.com/pola-rs/polars https://docs.astral.sh/uv/
https://docs.astral.sh/ruff/ • Polars ◦ 構造化データを扱うためのライブラリ • Ruff ◦ linter & code formatter • uv ◦ パッケージマネージャー Rustで書かれた高機能かつ高速なツール がどんどん登場している
© 2024 Wantedly, Inc. INTERNAL ONLY RustとPythonの親和性 RustとPythonは親和性が高い(と自分は思っている) PyO3を使ってpythonでも使える ようなバインディングを生成、
matrurinを使ってbuild→pypiにパ ブリッシュ… みたいなことが簡単にできる RustとPythonを使って機械学習モデルのサービングはどれくらい簡単にできるのだろう?
© 2024 Wantedly, Inc. INTERNAL ONLY 作ったもの Request Response Data
Model file Train Model Serve Model モデルの学習はPython側で行い、モデルを使った推論をRustで行う構成
© 2024 Wantedly, Inc. INTERNAL ONLY 使うライブラリ コードはREADMEから抜粋 • tch-rsを使ってRust側からPyTorchのモデルを利用
• PythonのPyTorchを似たような使用感 • libtorchを入れてパスを通せば使えるようになる ◦ 自分はDockerコンテナ内で “system-wide libtorch” を入れて動かして いたが、Python側で入れたPytorchを利用することもできるらしい
© 2024 Wantedly, Inc. INTERNAL ONLY モデルの学習とtch-rsでの利用 Python側 Rust側 学習したモデルはJITコ
ンパイル テンソルにしてモデルに入力
© 2024 Wantedly, Inc. INTERNAL ONLY モデルの学習とtch-rsでの利用 Python側 Rust側 学習したモデルはJIT
コンパイル 出力は後段で 扱いやすいよ うにベクトル などに変換
© 2024 Wantedly, Inc. INTERNAL ONLY 実験結果 実行環境 レスポンスタイム Rust
(actix-web) 1.75 ms Python (FastAPI) 2.87 ms curl -w “${time_total} ...” で実行時間を計測 Rustのサーバーの方が40 %高速! → 入力データの前処理の部分で差がついた と考えられる パフォーマンス 感じた課題 入力値の前処理では、ちゃんとした変換処 理を書くにはPython側からパラメーター を伝搬させる方法を考える必要がありそう
© 2024 Wantedly, Inc. INTERNAL ONLY まとめ GitHub https://github.com/Hayashi-Yudai/rust-inference-server •
RustでPyTorchのモデルをロードして推論する方法を紹介 • Rustで推論からレスポンスまで返すことで、Pythonで書いた 時よりも40 %の性能改善を実現できる • モデルに入力する前のデータの処理は、現状Rust側では実装 コストが高い部分もありそう