Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IoTデバイスでMLモデルを動かす技術

 IoTデバイスでMLモデルを動かす技術

More Decks by Hirofumi Nakagawa/中河 宏文

Other Decks in Technology

Transcript

  1. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    自己紹介 中河 宏文 • スパイスコード株式会社CEO • 会社代表としては珍しく?現役でコードも書 いている • エンジニアとしてはデバイスドライバ開発か ら、フロントエンド開発までやる何でも屋 Twitter: hnakagawa14 GitHub: hnakagawa ※写真は10年前
  2. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    会社紹介 2019年08月15日 東京都中央区銀座に当社設立 2019年10月15日 0.2億円の資金調達 2020年02月30日 0.6億円の資金調達 2020年03月15日 調達・購買管理システムリリース 会社名 代表取締役 中河 宏文 所在地 東京都中央区銀座 6丁目13番16号銀座 Wallビル UCF5階 スパイスコード株式会社 事業内容 飲食店向けのプラットフォーム事業 2021年02月08日 2.0億円の資金調達 資本金 2億7,600万円 従業員 11名 2021年08月20日 農林水産省の実証実験に採択(補助金 :0.3億円) 2021年09月01日 FC向けのプラットフォームリリース 2021年11月01日 東京都の実証実験に採択(補助金 :0.1億円) 株主 Coral Capital (500 Startups)、STRIVE (GREE Ventures)、食の未来ファンド (Kemuri Ventures)、他
  3. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    私たちのミッション 美味しい料理は人を幸せにします。それは、言葉や文化の壁を簡単に超える力を持っています。それら を担い、支える産業がフード産業です。しかし、そのフード産業を取り巻く環境は現在、目紛しく変化して います。 外食業界は慢性的な人手不足の状況からコロナの影響によって、業界そのもの自体の存続性が問わ れる状況に陥り、その煽りを受けるように多くの卸売業や生産者たちは、多くの在庫を抱え新たな販路 を開拓する必要に迫られるなど、非常に苦しい状況に陥っています。 そんな中で、我々はテクノロジーの力を使って消費者起点のなめらかで、無駄のない食料生産・供給 ネットワークを社会実装し、飲食店様、強いては「食」の社会インフラを担っていらっしゃる皆様が、より 誇りと自信を持って価値を発揮できる環境を創出したいと考えています。 MISSION フード産業を持続可能な仕組みへアップデートする
  4. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    IoTデバイスでMLモデルを動かす技術とは? • TensorFlow Lite • Pytorch Mobile • ONNX Runtime • etc… 現在、EdgeデバイスでDNNモデル(computation graph)を動かす為の様々な runtimeが存在します
  5. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    NAS(neural architecture search)と リアルタイム処理の話をします。
  6. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    何故NASなのか? • IoT(Edge)デバイスでMLモデルを走らせ る上で様々なトレードオフ問題が存在し ます。 ◦ Accuracy ◦ Latency ◦ Energy consumpition ◦ Model size • 目的のUXを達成するためには、アルゴリ ズム、エンジニアリング両方でそれらの バランスを考慮する必要がある Image credit[1] Image credit[1] オペレーションによって計算コストが違う mobile deviceでサポートしている GPUインターフェースのシェア Image credit[2]
  7. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    Landscape of execution environment ※Facebookのレポートからの引用 如何に目的のUXを実現できるデバイスのカバレッジを広げるか? Image credit[2] Image credit[2]
  8. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    Designing efficient networks Mobile Nets V1, V2 and V3 - Depthwise separable conv を使用し計算量を 低減 - Inverted residual with linear bottleneckを使用 しメモリアクセス量を低減 - 活性化関数にh-swishを使用 - squeeze & excitationを使用した channelのattention - 軽量なfinal blockの採用 etc… Image credit: [4] Image credit: [5] Image credit: [6] Efficient Net - NASを使用して開発 - ネットワークの階層,ネットワークの幅,入力画像のサイズを説明変数とし、 FLOPS,メモリ使用量を制約 とした最適化問題として探索 Image credit: [7]
  9. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    そこでNASを使いデバイスに 最適化されたモデルを生成します
  10. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    Designing efficient networks: Automated ways - 通常のモデルトレーニング - アーキテクチャ・サーチで探索 &トレーニング デバイス向けでは、探索時にLossにlatency等のペナルティ項を追加するなどして、 ターゲットデバイスにfitしたモデル、acuraccyとlatencyのバランスが取れたモデルを 探索
  11. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    NAS手法例 MnasNet[8] (RL-Based) Image credit: [8] Image credit: [9] FBNet[9] (Differentiable) - 探索空間から数千のmodelをsamplingする - 巨大な探索空間から探索できるが、巨大な 計算機リソースが必要になる - DARTSベースの探索手法 - differentiableベースの探索のため探索は軽量 だが、スーパーネットをGPUメモリに載せる 必要がある為、GPUメモリの使用量が問題と なりbatch sizeを上げられない - Binary Gateを挟むことによってGPUメモリ使用 量問題を解決 - Binary Gateはαパラメータを元にサンプリングを 行い決定 ProxylessNAS [10] (Differentiable)
  12. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    前半まとめ • IoT(Edge)デバイス上ではlatencyなどaccuracy以外の要素も重要となる • 目的のUXを実現するために、accuracyやlatency等のバランスを取る必要が ある ◦ 必ずしもAccuracyが最優先ではない • 個々のデバイス特性に合わせてDNNモデルを作るのは大変 ◦ NASで探索を行うと良い
  13. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    MediaPipeとは • リアルタイム処理を行う為の cross platformなPipeline framework • PipelineをGraphとして記述 • 効率良くPipelineを動作させる為の様々な 仕組みをサポート Image credit: [10]
  14. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    何が良いのか? カメラ入力 リサイズ等の 前処理 物体認識 画面描画 処理の流れ 33ms以上時間がかかる処理 30fpsで動作 • 通常カメラの入力スピード(例: 30fps)よりその後の処理 の方が時間がかかる • 愚直にシーケンシャル処理を行うとリアルタイム処理がで きない Image credit: [10]
  15. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    パイプライン・並列処理 カメラ入力 リサイズ等の 前処理 物体認識 画面描画 処理の流れ • 各工程の処理をパイプライン制御 • 並列処理はパイプライン・スケジューラが管理 ◦ パイプラインが詰まらないように後段の処理優先度を高く制御 • 処理が間に合わない場合は適当にデータを捨てる処理をパイプラインに入れ る事ができる カメラ入力 リサイズ等の 前処理 物体認識 画面描画 カメラ入力 リサイズ等の 前処理 物体認識 画面描画
  16. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    フレームワーク・アーキテクチャ パイプラインはGraphとして定義され以下の要素から構成さ れる • Nodes ◦ 処理が行われる所、入出力portを持つ ◦ 実装上はCalculatorと呼ばれる • Packet ◦ Graphを流れるデータを表す単位 ◦ Timestampによって順序が管理される • Streams ◦ Graphのedgeを表す ◦ PacketのTimestampを元にした 所謂priority queueな実装 • Side packets ◦ Timestampを考慮しないedge • Packet Ports ◦ Nodeの入出力port ◦ Nodeを結ぶ型情報が定義された物 Image credit: [11]
  17. © 2021 Spicescode All rights reserved.  © 2021 Spicescode All rights reserved. 

    まとめ DNNモデル (再掲) • IoT(Edge)デバイス上ではlatencyなどaccuracy以外の要素も重要となる • 目的のUXを実現するために、accuracyやlatency等のバランスを取る必要が ある ◦ 必ずしもAccuracyが最優先ではない • 個々のデバイス特性に合わせてDNNモデルを作るのは大変 ◦ NASで探索を行うと良い リアルタイム処理 • MediaPipeが強力なフレームワーク • パイプライン並列処理を簡単に記述できる • 実践的にはNASなんかよりこっちが重要