$30 off During Our Annual Pro Sale. View Details »

RustとCADDi AI LabとML

RustとCADDi AI LabとML

Rust、何もわからない... #2 https://estie.connpass.com/event/246429/ 登壇資料です

vaaaaanquish
PRO

June 10, 2022
Tweet

More Decks by vaaaaanquish

Other Decks in Technology

Transcript

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

    View Slide

  2. 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)

    View Slide

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

    View Slide

  4. CADDi AI Lab × Rust

    View Slide

  5. 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/

    View Slide

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

    View Slide

  7. 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

    View Slide

  8. 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で全体を並列化

    View Slide

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

    View Slide

  10. RustとML

    View Slide

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

    View Slide

  12. 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によるプラットフォームの拡大

    View Slide

  13. 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

    View Slide

  14. 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/

    View Slide

  15. tract / wonnx
    tract wonnx

    View Slide

  16. まとめ

    View Slide

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

    View Slide

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

    View Slide