エッジMLシステムを�C/C++からRustへ移行した事例
はじめに
2
※本日話すのは、開発中の内容です
自己紹介
3
4
DRIVE CHART
5
6
我々のエッジMLシステム開発の特徴
7
参考:言語以外での工夫などは以下で話しました
C/C++開発での課題
8
Rustへの移行
9
AI技術をスピーディにデバイスに載せるためにRustを選択
10
リファクタがしやすく
インクリメンタルな開発がしやすい
11
リファクタがしやすくインクリメンタルな開発がしやすい
12
エコシステムは十分で、
本質的な実装に注力できた
13
エコシステム
14
rs_tracingのExapmle
Chromeで閲覧できる
タスクランナーcargo makeを利用したCI
15
Makefile.toml
既存のC/C++ライブラリをbindingできる
16
RustでDeep Learningをデバイスに実装するには?
17
別言語で書かれた
別のシステムと結合しやすい
18
Python bindingでR&Dや評価プラットフォームとつなぐ
Python binding(pyo3)してx86ビルドで組み込み、評価・検証を行う
19
R&D
edge ai library
(C++ → Rust)
target hardware
vendor middleware (C++)
integration test
edge application
Python binding
Rust binding
C API
※ これはC++でもやってはいました (pybind11)
Rustと他言語のI/Fにprotocol buffers(rust-protobuf)を利用
20
他の言語bindingも同様
参考:RustとPythonのI/Fをprotobufにするサンプル
↓バイト列でやりとりし、serialize/deserializeしている
C/C++開発での課題、はRust移行でどうなった?(1/2)
21
C/C++開発での課題、はRust移行でどうなった?(2/2)
22
まとめ:エッジMLシステムをC/C++からRustへ移行した事例
23
::std::process::exit(0);
24