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
rustdef: Rust on Jupyter Notebook
Search
Ryosuke Kamesawa
March 24, 2020
Programming
0
29
rustdef: Rust on Jupyter Notebook
Jupyter notebook上でRustを実行できる拡張機能rustdefの紹介です。
Ryosuke Kamesawa
March 24, 2020
Tweet
Share
More Decks by Ryosuke Kamesawa
See All by Ryosuke Kamesawa
推論エンジンMAXの紹介
emakryo
1
410
ニューラルネットワークの量子化手法の紹介
emakryo
3
2.2k
MediaPipeの紹介
emakryo
0
33
Customizing Cargo for Cross Compiling
emakryo
0
24
Feature Store in DRIVE CHART
emakryo
0
34
Feature StoreをRustで実装した話
emakryo
0
34
なぜRustか?
emakryo
0
28
Cargo-makeを使ってみた
emakryo
0
150
Machine Learning on Graph Data @ICML2019
emakryo
0
15
Other Decks in Programming
See All in Programming
カンファレンスの「アレ」Webでなんとかしませんか? / Conference “thing” Why don't you do something about it on the Web?
dero1to
1
120
ヤプリ新卒SREの オンボーディング
masaki12
0
130
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
120
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
2
360
RubyLSPのマルチバイト文字対応
notfounds
0
120
距離関数を極める! / SESSIONS 2024
gam0022
0
300
React CompilerとFine Grained Reactivityと宣言的UIのこれから / The next chapter of declarative UI
ssssota
3
160
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
260
.NET のための通信フレームワーク MagicOnion 入門 / Introduction to MagicOnion
mayuki
1
1.8k
Flutterを言い訳にしない!アプリの使い心地改善テクニック5選🔥
kno3a87
1
210
Amazon Qを使ってIaCを触ろう!
maruto
0
420
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
350
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Gamification - CAS2011
davidbonilla
80
5k
How to train your dragon (web standard)
notwaldorf
88
5.7k
KATA
mclloyd
29
14k
How GitHub (no longer) Works
holman
310
140k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
A Modern Web Designer's Workflow
chriscoyier
693
190k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Being A Developer After 40
akosma
87
590k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Transcript
rustdef: Rust on Jupyter notebook @Shinjuku.rs 2020/03/24 Ryosuke Kamesawa
自己紹介 亀澤諒亮 Ryosuke Kamesawa - Twitter: @cruelturtle - Rust 歴
1年 - 仕事で使い始めて半年 - エッジデバイス向けの機械学習モデルの開発 - 趣味 - ボルダリング - 競プロ
Rust on Jupyter notebook??? Jupyter notebook - Pythonのブラウザベースの実行環境 - 画像やグラフ、表の表示が簡単で
機械学習やデータ解析に使われる - 普段Jupyterしか触らないPythonエンジニアにも Rustを普及させたい! → Jupyter上で簡単にRustを動かしたい! (Rust ライブラリのPython wrapperを書くのが面倒)
rustdef 作った https://github.com/emakryo/rustdef - Jupyter の拡張機能として実装 - Jupyter の magic
cellを使ってRustの関数を定義 - 定義した関数をPythonから実行 - ユースケース - Pythonで遅い場合のピンポイントでの高速化 - Rustのライブラリを手軽に Python binding
デモ - 手元にPython環境, Rust環境 (nightly) (Linux or Mac) がある人は $
pip install jupyter rustdef $ jupyter notebook - https://github.com/emakryo/rustdef/blob/master/examples/Get%20started.ipynb
使い方 - %%rustdefで始まるセル内でRustの関数、構造体などが定義できる - #[pyfunction] マクロのついた関数がpythonから呼び出せるようになる - 型の対応 (Python :
Rust) (PyO3に準拠) - int : {i32, i64, isize, u32, u64, usize} - float : {f32, f64} - str : {&str, String} - list : {Vec<_>, &[_]} - dict : HashMap<_, _>
How does it work? 1. magic cell 1つにつきセル内のコードが埋め込まれたcrateを1つ生成 2. maturinを使ってpython
package (wheel) を生成 3. python packageをインストール 4. pyfunction マクロのついた関数をpythonの名前空間にインポート
最後に - rustdef - Jupyter notebook上でRustの関数を定義、実行できる拡張機能 - TODO - Rustの構造体をPythonのクラスとしてexport
- rustdef cell内での実行 - 依存クレートの指定オプションの追加 - ぜひ使ってみてください - Issue/PR お待ちしています
PyO3 / Maturin PyO3 https://github.com/PyO3/pyo3 - PythonのC FFI向けにRustをコンパイルするための便利ライブラリ - 型変換やexternな関数の生成をやってくれる
Maturin https://github.com/PyO3/maturin - PyO3を使って書かれたcrateをpython package(wheel)にビルドするツール
類似ツール Evcxr https://github.com/google/evcxr - Jupyter notebookのkernel (実行エンジン) をRustにする - Rust
only rust-magic https://pypi.org/project/rust-magic - magic cellを使ってRustを実行 - Pythonとの連携はできない