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
12
7.3k
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
ジョブマッチングプラットフォームにおける推薦アルゴリズムの活用事例
yudai00
0
32
ユーザーのプロフィールデータを活用した推薦精度向上の取り組み
yudai00
0
620
MCP Clientを活用するための設計と実装上の工夫
yudai00
1
1.1k
人とシゴトのマッチングを実現するための機械学習技術
yudai00
1
43
MCPを理解する
yudai00
16
12k
データバリデーションによるFeature Storeデータ品質の担保
yudai00
1
180
「仮説行動」で学んだ、仮説を深め ていくための方法
yudai00
8
1.9k
相互推薦システムでのPseudo Label を活用したマッチ予測精度向上の取り組み
yudai00
1
900
Wantedly Visitにおけるフリーワード検索時の推薦のオンライン化事例紹介
yudai00
1
290
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Balancing Empowerment & Direction
lara
3
610
Documentation Writing (for coders)
carmenintech
74
5k
Being A Developer After 40
akosma
90
590k
We Have a Design System, Now What?
morganepeng
53
7.8k
Thoughts on Productivity
jonyablonski
70
4.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Rails Girls Zürich Keynote
gr2m
95
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
111
20k
Designing Experiences People Love
moore
142
24k
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側では実装 コストが高い部分もありそう