Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
rustdef: Rust on Jupyter Notebook
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryosuke Kamesawa
March 24, 2020
Programming
84
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
rustdef: Rust on Jupyter Notebook
Jupyter notebook上でRustを実行できる拡張機能rustdefの紹介です。
Ryosuke Kamesawa
March 24, 2020
More Decks by Ryosuke Kamesawa
See All by Ryosuke Kamesawa
推論エンジンMAXの紹介
emakryo
1
670
ニューラルネットワークの量子化手法の紹介
emakryo
3
3.8k
MediaPipeの紹介
emakryo
0
130
Customizing Cargo for Cross Compiling
emakryo
0
61
Feature Store in DRIVE CHART
emakryo
0
120
Feature StoreをRustで実装した話
emakryo
0
69
なぜRustか?
emakryo
0
97
Cargo-makeを使ってみた
emakryo
0
630
Machine Learning on Graph Data @ICML2019
emakryo
0
70
Other Decks in Programming
See All in Programming
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
golang-bob.pdf
iwatsukayura
0
130
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
950
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
contenteditable と日本語入力に向き合う
colorful12
0
200
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
ActionController meets Protocol Buffers
sorah
0
580
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
33k
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
270
Railsバージョンを4倍にした話
optim
0
470
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
660
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
800
How STYLIGHT went responsive
nonsquared
100
6.3k
Building an army of robots
kneath
307
47k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Mobile First: as difficult as doing things right
swwweet
225
10k
Six Lessons from altMBA
skipperchong
29
4.5k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
A Modern Web Designer's Workflow
chriscoyier
699
190k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
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との連携はできない