Slide 1

Slide 1 text

RustとCADDi AI LabとML Rust、何もわからない... #2 2022/05/19 CADDi AI Lab Tech Lead Shunsuke Kawai

Slide 2

Slide 2 text

I AM • CADDi, inc. AI Lab Tech Lead M3, inc. Engineering Fellow Developers Guild Bolder’s Owner • OSS • XGBoost、LightGBM、Rust wrapper • gokart • xonsh Shunsuke Kawai (@vaaaaanquish)

Slide 3

Slide 3 text

AGENDA 1. CADDi AI LabでのRust 2. RustとCV/ML 3. まとめ

Slide 4

Slide 4 text

CADDi AI Lab × Rust

Slide 5

Slide 5 text

CADDi, inc. • Webアプリケーション開発 async-graphql, axum, diesel, tonic ...etc • アルゴリズム開発 tract-onnx, rayon, tokio, wasm-bindgen ...etc • speakerdeckをチェック! https://caddi.connpass.com/event/239652/ https://caddi.connpass.com/event/243143/

Slide 6

Slide 6 text

WHY CADDi AI Lab × Rust • 図面における画像処理 • 2Dでも非常に大きい A1,2サイズも、8000*6000pxとか • 非常にスパース • 速度、並列化、計算量意識がMust • 情報が潰れないよう捜査、ベクタライズ • 3Dデータについては言わずもがな

Slide 7

Slide 7 text

MEMBERS PdM/EM ex-PFN, NTT, Venture CTO DataEng ex-Yahoo! DataAnalyst AlgorithmEng 2D/3D Image Processing AtCoder Ranker MLEng ex-DeNA, M3, Mackinsey Kaggle Master Grand Master

Slide 8

Slide 8 text

from: Tech Talk slide for external audiences https://speakerdeck.com/caddi_eng/deiputoarugogatatuguwozu-mu-kiyadeitu-mian-jie-xi-falsetekufalserozinipo-ru-caddi Deep Learning CASE: Image Processing to DNN • 図面を捜査し”矢印”候補を検出する • precisionが高くなるよう調整 • DeepLearningモデルでの0/1判定へ • Rustでの実現 • Pythonで学習したモデルをONNX形式へ • tract-ONNXでの推論 • rayonで全体を並列化

Slide 9

Slide 9 text

CASE • 他にもCASE色々 • nalgebra等を用いた画像処理アルゴリズム • Next.js, wasm-bindgenを利用したアノテーションツール、Viwer • CLIツール • tokio APIサーバ 「はじめてのディープラーニング」をモブプロでRustで再実装してみたり 言語としてMLE/DEも学ぶ環境を用意している

Slide 10

Slide 10 text

RustとML

Slide 11

Slide 11 text

AWESOME RUST MACHINE LEARNING • Rustにおける機械学習モデルや画像処理、 自然言語処理に関する実装、論文、ブログ をまとめたrepogitory • 470starくらい • 応用事例は大体書いてあると思う https://github.com/vaaaaanquish/Awesome-Rust-MachineLearning

Slide 12

Slide 12 text

VOGUE • CV、NLP、検索エンジンが盛り上がっている • CV/MLは大きくDeep Learningの流行が続く • tch-rs, tensorflow/rust • 推論系のフレームワーク開発が継続/活発 • tract, orkhon, wonnx, onnxruntime-rs • こと”学習”においてはDeep Learning周辺の多くがPythonないし Pythonをターゲットにしたツール(DNNフレームワーク, GPU回り, ...) • C/C++、OpenCL、OpenGLがあり学習面では恩恵を受けづらい • 推論の高速化、省メモリ化、wasmによるプラットフォームの拡大

Slide 13

Slide 13 text

HOW • 独自のモデルファイル形式を通す • tch-rs • tensorflow/rust • ONNXを介す • ONNX: Microsoft、Facebookが提案した DeepLearningモデル用の ファイルフォーマット及び周辺ツール • CADDiでも利用 (tract-ONNX) https://vaaaaaanquish.hatenablog.com/entry/2021/09/07/141531 https://github.com/dskkato/rust-machine-learning-api-example

Slide 14

Slide 14 text

ONNX in Rust ● tract ○ CPUに特化したONNXでの推論フレームワーク群 ○ 独自のNNEF拡張な中間表現であるtract-oplを定義 ■ trainingに関連する機能の削除 (decluttering) ■ scan operatorによるユニットの繰り返し処理の削減 ● orkhon ○ ONNX or PythonランタイムをPyO3経由で叩く形式をサポートした推論フレームワーク ○ tract, rayonにより高速な推論を実現 ● onnxruntime-rs ○ microsoft/onnxruntimeのrust wrapper ○ Multi platform、WebGLによるGPU上での推論 ● wonnx ○ GPUをターゲットにしたPure RustなONNX推論ランタイム ○ Vulkan/Metal/DX12を利用して各PlatformのGPU上で推論 https://github.com/sonos/tract https://www.reddit.com/r/rust/comments/s0vi54/ wonnx_deep_learning_on_webgpu_using_the_onnx/

Slide 15

Slide 15 text

tract / wonnx tract wonnx

Slide 16

Slide 16 text

まとめ

Slide 17

Slide 17 text

SUMMARY • CADDi AI Labが今面白い • Rust x MLの活用事例の多くが推論に寄っている • ONNX関連のツールを紹介 .o0(rust wasmでwebGL CAD作る実験を個人的にしてるので、そこに載ると面白いだろうなあ…誰か手伝ってくれないかなあ…)

Slide 18

Slide 18 text

~ 未来を作ろう ~ Twitterを今すぐフォロー!