社員ブログ

印刷

学習済のニューラルネットワークを組込装置で動かす(その2)

連載第1回の振り返り

本連載の「第1回」は2018年11月でした。まさに光陰矢の如しです...。

本連載の目標

本連載では、以下のようなツール(図中の橙色部分)の完成を目標にしたのでした。
目標

  • 学習済のニューラルネットワークをC言語に変換する
  • OSなしの小規模な組込装置でも動作可能なC言語を生成できる
  • 主要な機械学習フレームワークに対応する
事前調査の再実施

第1回は事前調査でしたが、その後状況が変化しているので再実施しました。

【事前調査1(再)】機械学習フレームワークの動向調査

第1回の時点(2018年11月)ではTensorFlowが一番人気でした。
現在(2019年11月)の状況をあらためて調査した結果、「この記事」によれば、
TensorFlowとPyTorchの2強が突出しており、PyTorchが優勢になりつつあるようです。

グラフ
(図は「The State of Machine Learning Frameworks in 2019」より引用)

図中の各系列(eccv、nipsなど)は、主要なAI系学会の名称です。
縦軸は、TensorFlow/PyTorchのいずれかを使った論文の数に対する、PyTorchを使った論文の数の割合です。
ただし、TensorFlow/PyTorch両方とも使った論文と、Google/Facebook関係者の論文は除外されています。
この割合が50%を下回ればTensorFlow優勢、50%を上回ればPyTorch優勢と判断できます。

2019年を境に(研究の領域は)PyTorchが優勢になったことが見て取れます。
記事では「応用の領域は依然としてTensorFlow優勢だが、その状況も長く続かないだろう」と推測されています。

【事前調査2(再)】学習済モデル保存ファイル形式の動向調査

第1回の時点(2018年11月)では「ONNX」が優勢でした。
現在もこの状況に変化はありません。

突然ですが、深層学習コンパイラについて

第1回の時点では知識不足で知りませんでしたが、「深層学習コンパイラ」と呼ばれるものがあります。
簡単に言えば、学習済モデルをハードウェアで実行できる形式に変換するもので、
本連載の目標と非常に近い関係にあります。

最近では、OSなしの小規模な組込装置に対応できそうなものも出てきています。
当初は深層学習コンパイラに相当する部分を自作する想定でしたが、以下の理由により既存のものから選定して利用する作戦に変更します。

  • 深層学習コンパイラを自作するだけのリソースがない
  • 深層学習コンパイラは既に良いものが多数ある
連載予定変更について

連載の再開にあたって調査した結果を踏まえて、以下のように方向修正します。

  • 【第1回】事前調査
  • 【第2回】学習済モデル読込機能の作成 -> 深層学習コンパイラの調査と選定
  • 【第3回】C言語変換機能の作成 -> 深層学習コンパイラのバックエンド対応
  • 【第4回】動作検証

第1回の振り返りが長くなってしまいました。
以降から第2回の本題に入ります。

深層学習コンパイラの調査

深層学習コンパイラ(Deep Learning Compiler)とは、簡単に言えば、学習済モデルをハードウェアで実行できる形式に変換するものです。
「この資料」がとても参考になりました。

資料のp11の一覧に記載されている深層学習コンパイラの中から、ONNXに対応しているものに候補を絞り、
人気度(GitHubのStar数)とOSなし小規模組込の対応状況を調査した結果を以下に示します。

名称GitHubのStar数(※1)OSなし小規模組込の対応状況
ONNC 270 (※3)
TVM 4,514 μTVM(※4)
Glow 1,777 (※3)
XLA 137k(※2) TensorFlow Lite for Microcontrollers
nGraph 1,104 (※3)

※1 GitHubのStar数は、2019年10月29日の値。
※2 XLAはTensorFlowのリポジトリに含まれるためXLA単独のStar数ではない。TensorFlowのStar数。
※3 これらは、現時点でOSなし小規模組込の対応が困難と判断した。
※4 μTVMは、現在開発中の模様。

深層学習コンパイラの選定

調査結果を踏まえて、以下の理由によりTVMを選定しました。

  • ONNXに対応している(主要な機械学習フレームワークに対応できる)
  • 非常に人気がある(良いものに違いない)
  • OSなし小規模組込に対応できそう(バックエンド対応も比較的簡単そう)
  • μTVMに興味を感じる(すみません、個人的な主観です)

次回は、【第3回】深層学習コンパイラのバックエンド対応を予定しています。
不定期連載ですので、いつになるかは不明です。まさか、また1年後になるのでしょうか?
(いやいや、それは許されないでしょう...!)

Written by 澤田

PAGE TOP