SlideShare a Scribd company logo
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との連携はできない

More Related Content

What's hot

Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Sugawara Genki
 
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみたJupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Satoshi Yazawa
 
GR-ROSEとAzureでつっこみロボをつくる
GR-ROSEとAzureでつっこみロボをつくるGR-ROSEとAzureでつっこみロボをつくる
GR-ROSEとAzureでつっこみロボをつくる
taroumame
 
Raspberry Piで 初心者が 半日でできる電子工作 を考えてみた
Raspberry Piで 初心者が 半日でできる電子工作 を考えてみたRaspberry Piで 初心者が 半日でできる電子工作 を考えてみた
Raspberry Piで 初心者が 半日でできる電子工作 を考えてみた
VirtualTech Japan Inc./Begi.net Inc.
 
ラジコンをROSで制御してみた
ラジコンをROSで制御してみたラジコンをROSで制御してみた
ラジコンをROSで制御してみた
shohaga
 
はじめて翻訳記事を書いたら300ブクマ超えた話
はじめて翻訳記事を書いたら300ブクマ超えた話はじめて翻訳記事を書いたら300ブクマ超えた話
はじめて翻訳記事を書いたら300ブクマ超えた話
Aki Ariga
 
RubyConfの話の続きのおはなし
RubyConfの話の続きのおはなしRubyConfの話の続きのおはなし
RubyConfの話の続きのおはなし
yamanekko
 
210728 mpy
210728 mpy210728 mpy
210728 mpy
Takuya Nishimoto
 
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
わしわし的おすすめ  .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会わしわし的おすすめ  .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
Yukinori KITADAI
 
Jupyterで運用やってみた
Jupyterで運用やってみたJupyterで運用やってみた
Jupyterで運用やってみた
Satoshi Yazawa
 
ロボットシステム学2015年第13回
ロボットシステム学2015年第13回ロボットシステム学2015年第13回
ロボットシステム学2015年第13回
Ryuichi Ueda
 
スクリプトエンジンをつくる話
スクリプトエンジンをつくる話スクリプトエンジンをつくる話
スクリプトエンジンをつくる話
すずしめ
 
Raspberry pisym
Raspberry pisymRaspberry pisym
Raspberry pisym
openrtm
 
Py datameetup1
Py datameetup1Py datameetup1
Py datameetup1
shiroyagi
 
Burp Suite Japanユーザグループ紹介
Burp Suite Japanユーザグループ紹介Burp Suite Japanユーザグループ紹介
Burp Suite Japanユーザグループ紹介
abend_cve_9999_0001
 
SnapDishの事例
SnapDishの事例SnapDishの事例
SnapDishの事例
Fumikazu Kiyota
 
mpld3でInteractiveデータ可視化
mpld3でInteractiveデータ可視化mpld3でInteractiveデータ可視化
mpld3でInteractiveデータ可視化
monochrojazz
 
第23回東京ブロガーミートアップ「動画について」
第23回東京ブロガーミートアップ「動画について」第23回東京ブロガーミートアップ「動画について」
第23回東京ブロガーミートアップ「動画について」
Tanaka Yuji
 
おうちハックナイト
おうちハックナイトおうちハックナイト
おうちハックナイト
Hirotaka Niisato
 
Rubyでオリジナルプログラムをつくろう
RubyでオリジナルプログラムをつくろうRubyでオリジナルプログラムをつくろう
Rubyでオリジナルプログラムをつくろう
K K
 

What's hot (20)

Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Gitを使ったRoute53の管理
Gitを使ったRoute53の管理
 
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみたJupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
 
GR-ROSEとAzureでつっこみロボをつくる
GR-ROSEとAzureでつっこみロボをつくるGR-ROSEとAzureでつっこみロボをつくる
GR-ROSEとAzureでつっこみロボをつくる
 
Raspberry Piで 初心者が 半日でできる電子工作 を考えてみた
Raspberry Piで 初心者が 半日でできる電子工作 を考えてみたRaspberry Piで 初心者が 半日でできる電子工作 を考えてみた
Raspberry Piで 初心者が 半日でできる電子工作 を考えてみた
 
ラジコンをROSで制御してみた
ラジコンをROSで制御してみたラジコンをROSで制御してみた
ラジコンをROSで制御してみた
 
はじめて翻訳記事を書いたら300ブクマ超えた話
はじめて翻訳記事を書いたら300ブクマ超えた話はじめて翻訳記事を書いたら300ブクマ超えた話
はじめて翻訳記事を書いたら300ブクマ超えた話
 
RubyConfの話の続きのおはなし
RubyConfの話の続きのおはなしRubyConfの話の続きのおはなし
RubyConfの話の続きのおはなし
 
210728 mpy
210728 mpy210728 mpy
210728 mpy
 
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
わしわし的おすすめ  .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会わしわし的おすすめ  .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
 
Jupyterで運用やってみた
Jupyterで運用やってみたJupyterで運用やってみた
Jupyterで運用やってみた
 
ロボットシステム学2015年第13回
ロボットシステム学2015年第13回ロボットシステム学2015年第13回
ロボットシステム学2015年第13回
 
スクリプトエンジンをつくる話
スクリプトエンジンをつくる話スクリプトエンジンをつくる話
スクリプトエンジンをつくる話
 
Raspberry pisym
Raspberry pisymRaspberry pisym
Raspberry pisym
 
Py datameetup1
Py datameetup1Py datameetup1
Py datameetup1
 
Burp Suite Japanユーザグループ紹介
Burp Suite Japanユーザグループ紹介Burp Suite Japanユーザグループ紹介
Burp Suite Japanユーザグループ紹介
 
SnapDishの事例
SnapDishの事例SnapDishの事例
SnapDishの事例
 
mpld3でInteractiveデータ可視化
mpld3でInteractiveデータ可視化mpld3でInteractiveデータ可視化
mpld3でInteractiveデータ可視化
 
第23回東京ブロガーミートアップ「動画について」
第23回東京ブロガーミートアップ「動画について」第23回東京ブロガーミートアップ「動画について」
第23回東京ブロガーミートアップ「動画について」
 
おうちハックナイト
おうちハックナイトおうちハックナイト
おうちハックナイト
 
Rubyでオリジナルプログラムをつくろう
RubyでオリジナルプログラムをつくろうRubyでオリジナルプログラムをつくろう
Rubyでオリジナルプログラムをつくろう
 

Similar to rustdef: Rust on jupyter notebook

Rustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミングRustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミング
yoshrc
 
Node-RED x Lazurite 3分で作るIoTシステム
Node-RED x Lazurite 3分で作るIoTシステムNode-RED x Lazurite 3分で作るIoTシステム
Node-RED x Lazurite 3分で作るIoTシステム
Naotaka Saito
 
20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う
Ryo Nagai
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
三七男 山本
 
小ゼミ進捗 0601
小ゼミ進捗 0601小ゼミ進捗 0601
小ゼミ進捗 0601
robo_lab
 
jupyter notebook (jupyterhub) で ruby とグラフ
jupyter notebook (jupyterhub) で ruby とグラフjupyter notebook (jupyterhub) で ruby とグラフ
jupyter notebook (jupyterhub) で ruby とグラフ
Koichi Shimozono
 
@nukokusa_botを支える技術
@nukokusa_botを支える技術@nukokusa_botを支える技術
@nukokusa_botを支える技術
Joe_noh
 
20201102 postgresql unconference_debility
20201102 postgresql unconference_debility20201102 postgresql unconference_debility
20201102 postgresql unconference_debility
Satoshi Hirata
 
統計用言語Rの使い方
統計用言語Rの使い方統計用言語Rの使い方
統計用言語Rの使い方Ak Ok
 

Similar to rustdef: Rust on jupyter notebook (9)

Rustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミングRustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミング
 
Node-RED x Lazurite 3分で作るIoTシステム
Node-RED x Lazurite 3分で作るIoTシステムNode-RED x Lazurite 3分で作るIoTシステム
Node-RED x Lazurite 3分で作るIoTシステム
 
20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
 
小ゼミ進捗 0601
小ゼミ進捗 0601小ゼミ進捗 0601
小ゼミ進捗 0601
 
jupyter notebook (jupyterhub) で ruby とグラフ
jupyter notebook (jupyterhub) で ruby とグラフjupyter notebook (jupyterhub) で ruby とグラフ
jupyter notebook (jupyterhub) で ruby とグラフ
 
@nukokusa_botを支える技術
@nukokusa_botを支える技術@nukokusa_botを支える技術
@nukokusa_botを支える技術
 
20201102 postgresql unconference_debility
20201102 postgresql unconference_debility20201102 postgresql unconference_debility
20201102 postgresql unconference_debility
 
統計用言語Rの使い方
統計用言語Rの使い方統計用言語Rの使い方
統計用言語Rの使い方
 

More from emakryo

MediaPipeの紹介
MediaPipeの紹介MediaPipeの紹介
MediaPipeの紹介
emakryo
 
Customizing cargo for cross compiling
Customizing cargo for cross compilingCustomizing cargo for cross compiling
Customizing cargo for cross compiling
emakryo
 
Feature Store in DRIVE CHART
Feature Store in DRIVE CHARTFeature Store in DRIVE CHART
Feature Store in DRIVE CHART
emakryo
 
Feature StoreをRustで実装した話
Feature StoreをRustで実装した話Feature StoreをRustで実装した話
Feature StoreをRustで実装した話
emakryo
 
なぜRustか?
なぜRustか?なぜRustか?
なぜRustか?
emakryo
 
Cargo makeを使ってみた話
Cargo makeを使ってみた話Cargo makeを使ってみた話
Cargo makeを使ってみた話
emakryo
 
Machine Learning on Graph Data @ ICML 2019
Machine Learning on Graph Data @ ICML 2019Machine Learning on Graph Data @ ICML 2019
Machine Learning on Graph Data @ ICML 2019
emakryo
 
Neural networks for Graph Data NeurIPS2018読み会@PFN
Neural networks for Graph Data NeurIPS2018読み会@PFNNeural networks for Graph Data NeurIPS2018読み会@PFN
Neural networks for Graph Data NeurIPS2018読み会@PFN
emakryo
 

More from emakryo (8)

MediaPipeの紹介
MediaPipeの紹介MediaPipeの紹介
MediaPipeの紹介
 
Customizing cargo for cross compiling
Customizing cargo for cross compilingCustomizing cargo for cross compiling
Customizing cargo for cross compiling
 
Feature Store in DRIVE CHART
Feature Store in DRIVE CHARTFeature Store in DRIVE CHART
Feature Store in DRIVE CHART
 
Feature StoreをRustで実装した話
Feature StoreをRustで実装した話Feature StoreをRustで実装した話
Feature StoreをRustで実装した話
 
なぜRustか?
なぜRustか?なぜRustか?
なぜRustか?
 
Cargo makeを使ってみた話
Cargo makeを使ってみた話Cargo makeを使ってみた話
Cargo makeを使ってみた話
 
Machine Learning on Graph Data @ ICML 2019
Machine Learning on Graph Data @ ICML 2019Machine Learning on Graph Data @ ICML 2019
Machine Learning on Graph Data @ ICML 2019
 
Neural networks for Graph Data NeurIPS2018読み会@PFN
Neural networks for Graph Data NeurIPS2018読み会@PFNNeural networks for Graph Data NeurIPS2018読み会@PFN
Neural networks for Graph Data NeurIPS2018読み会@PFN
 

Recently uploaded

JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 

Recently uploaded (14)

JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 

rustdef: Rust on jupyter notebook

  • 1. rustdef: Rust on Jupyter notebook @Shinjuku.rs 2020/03/24 Ryosuke Kamesawa
  • 2. 自己紹介 亀澤諒亮 Ryosuke Kamesawa - Twitter: @cruelturtle - Rust 歴 1年 - 仕事で使い始めて半年 - エッジデバイス向けの機械学習モデルの開発 - 趣味 - ボルダリング - 競プロ
  • 3. Rust on Jupyter notebook??? Jupyter notebook - Pythonのブラウザベースの実行環境 - 画像やグラフ、表の表示が簡単で 機械学習やデータ解析に使われる - 普段Jupyterしか触らないPythonエンジニアにも Rustを普及させたい! → Jupyter上で簡単にRustを動かしたい! (Rust ライブラリのPython wrapperを書くのが面倒)
  • 4. rustdef 作った https://github.com/emakryo/rustdef - Jupyter の拡張機能として実装 - Jupyter の magic cellを使ってRustの関数を定義 - 定義した関数をPythonから実行 - ユースケース - Pythonで遅い場合のピンポイントでの高速化 - Rustのライブラリを手軽に Python binding
  • 5. デモ - 手元にPython環境, Rust環境 (nightly) (Linux or Mac) がある人は $ pip install jupyter rustdef $ jupyter notebook - https://github.com/emakryo/rustdef/blob/master/examples/Get%20started.ipynb
  • 6. 使い方 - %%rustdefで始まるセル内でRustの関数、構造体などが定義できる - #[pyfunction] マクロのついた関数がpythonから呼び出せるようになる - 型の対応 (Python : Rust) (PyO3に準拠) - int : {i32, i64, isize, u32, u64, usize} - float : {f32, f64} - str : {&str, String} - list : {Vec<_>, &[_]} - dict : HashMap<_, _>
  • 7. How does it work? 1. magic cell 1つにつきセル内のコードが埋め込まれたcrateを1つ生成 2. maturinを使ってpython package (wheel) を生成 3. python packageをインストール 4. pyfunction マクロのついた関数をpythonの名前空間にインポート
  • 8. 最後に - rustdef - Jupyter notebook上でRustの関数を定義、実行できる拡張機能 - TODO - Rustの構造体をPythonのクラスとしてexport - rustdef cell内での実行 - 依存クレートの指定オプションの追加 - ぜひ使ってみてください - Issue/PR お待ちしています
  • 9. PyO3 / Maturin PyO3 https://github.com/PyO3/pyo3 - PythonのC FFI向けにRustをコンパイルするための便利ライブラリ - 型変換やexternな関数の生成をやってくれる Maturin https://github.com/PyO3/maturin - PyO3を使って書かれたcrateをpython package(wheel)にビルドするツール
  • 10. 類似ツール Evcxr https://github.com/google/evcxr - Jupyter notebookのkernel (実行エンジン) をRustにする - Rust only rust-magic https://pypi.org/project/rust-magic - magic cellを使ってRustを実行 - Pythonとの連携はできない