Rust、何もわからない... #2 https://estie.connpass.com/event/246429/ 登壇資料です
RustとCADDi AI LabとMLRust、何もわからない... #22022/05/19CADDi AI Lab Tech LeadShunsuke Kawai
View Slide
I AM• CADDi, inc. AI Lab Tech LeadM3, inc. Engineering FellowDevelopers Guild Bolder’s Owner• OSS• XGBoost、LightGBM、Rust wrapper• gokart• xonshShunsuke Kawai (@vaaaaanquish)
AGENDA1. CADDi AI LabでのRust2. RustとCV/ML3. まとめ
CADDi AI Lab × Rust
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/
WHY CADDi AI Lab × Rust• 図面における画像処理• 2Dでも非常に大きいA1,2サイズも、8000*6000pxとか• 非常にスパース• 速度、並列化、計算量意識がMust• 情報が潰れないよう捜査、ベクタライズ• 3Dデータについては言わずもがな
MEMBERSPdM/EMex-PFN,NTT,Venture CTODataEngex-Yahoo!DataAnalystAlgorithmEng2D/3D ImageProcessingAtCoder RankerMLEngex-DeNA, M3,MackinseyKaggle MasterGrand Master
from: Tech Talk slide for external audienceshttps://speakerdeck.com/caddi_eng/deiputoarugogatatuguwozu-mu-kiyadeitu-mian-jie-xi-falsetekufalserozinipo-ru-caddiDeepLearningCASE: Image Processing to DNN• 図面を捜査し”矢印”候補を検出する• precisionが高くなるよう調整• DeepLearningモデルでの0/1判定へ• Rustでの実現• Pythonで学習したモデルをONNX形式へ• tract-ONNXでの推論• rayonで全体を並列化
CASE• 他にもCASE色々• nalgebra等を用いた画像処理アルゴリズム• Next.js, wasm-bindgenを利用したアノテーションツール、Viwer• CLIツール• tokio APIサーバ「はじめてのディープラーニング」をモブプロでRustで再実装してみたり言語としてMLE/DEも学ぶ環境を用意している
RustとML
AWESOME RUST MACHINE LEARNING• Rustにおける機械学習モデルや画像処理、自然言語処理に関する実装、論文、ブログをまとめたrepogitory• 470starくらい• 応用事例は大体書いてあると思うhttps://github.com/vaaaaanquish/Awesome-Rust-MachineLearning
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によるプラットフォームの拡大
HOW• 独自のモデルファイル形式を通す• tch-rs• tensorflow/rust• ONNXを介す• ONNX:Microsoft、Facebookが提案したDeepLearningモデル用のファイルフォーマット及び周辺ツール• CADDiでも利用 (tract-ONNX)https://vaaaaaanquish.hatenablog.com/entry/2021/09/07/141531https://github.com/dskkato/rust-machine-learning-api-example
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/tracthttps://www.reddit.com/r/rust/comments/s0vi54/wonnx_deep_learning_on_webgpu_using_the_onnx/
tract / wonnxtract wonnx
まとめ
SUMMARY• CADDi AI Labが今面白い• Rust x MLの活用事例の多くが推論に寄っている• ONNX関連のツールを紹介.o0(rust wasmでwebGL CAD作る実験を個人的にしてるので、そこに載ると面白いだろうなあ…誰か手伝ってくれないかなあ…)
~ 未来を作ろう ~Twitterを今すぐフォロー!