本連載の[第2回]は2019年11月でした。
また1年以上経過しています。まさに光陰矢の如しです...。
本連載では、以下のようなツール(図中の橙色部分)の完成を目標にしたのでした。
第2回から1年経過しているため再調査しました。
先日[2020 Kaggle ML & DS Survey]の[サマリー]が公開されたので、その情報も参考にしています。
第2回の時点(2019年11月)では、研究分野で[PyTorch]が一番人気、応用分野で[TensorFlow]が一番人気でした。現在もこの状況から大きく変化していません。
なお、[第2回で引用した記事]では、主要なAI系学会の論文中にPyTorch、TensorFlowが引用される度合いを数値化し、その経時変化を見ていました。
最新の状況は[ここ]で確認できます。
第2回の時点(2019年11月)では[ONNX]が優勢でした。
現在もこの状況から大きく変化していません。
第2回の時点(2019年11月)では[TVM]を選定しました。
現在も良い選択であり方向修正は不要です。
TVMのOSなし小規模組込向けの機能拡張は[µTVM]と呼ばれています。
なお、今回の再調査では[この論文]も参考にしました。
今回からµTVMのバックエンド対応を試行しています。
本当なら試行を完了させて今回の記事にしたかったのですが、まだ完了していません。
ですが、本連載は最低でも年1回のペースを維持したいですし、
TVMの近況など紹介したいトピックも出てきましたので、連載の予定を以下のように修正します。
第2回の振り返りは以上です。第3回の本題に入ります。
µTVMの概要を知るには[この記事]が参考になります。
これによればバックエンド対応の要件は4つあります。
一般的な組込向けマイコンは、1と2の要件を既に満足しているはずで、
残りの3と4を満足するのは簡単だ、と書かれています。
確かに簡単そうだと感じましたが、実際やってみると想像以上に大変でした。
理由はいくつかあります。
目下、試行錯誤中です。
Cソースコードを生成するところまではたどり着きました。(この工程まではバックエンド対応とあまり関係ないので)
[ONNX Model Zoo]から入手した[super-resolution-10.onnx]をC言語に変換してみた例を少しだけお見せします。
TVMの近況について、いくつかトピックをご紹介します。
TVMは[Apache Incubator]の支援を受けていましたが、
2020/11/30にトップレベルプロジェクトに昇格したと[発表]がありました。
TVMを個人的に応援している自分としても喜ばしい出来事です。
[TVM Conference 2020]が12/2~12/4に開催されました。
COVID-19に配慮してバーチャルイベントだったので、自分もオンラインで参加できました。
旅費をかけずに現地の最新情報に触れることができて得した気分です。
時差があって聴講は大変でしたが、Andrew Reusch氏によるµTVMのチュートリアルは参考になりました。
特に実機デモは興味深かったです。
発表の様子は[Twitter]でも投稿されていました。
デモ用プロジェクトのgithubリポジトリは[ここ]です。
その中に[スライドのPDF]も含まれています。
次回は【第4回】µTVMのバックエンド対応(その2)を予定しています。
バックエンドの題材としてどのマイコンを選ぶか、まだ迷いがあり決めていません。
日本人の自分としてはルネサス社の製品から選びたい気持ちですが、果たしてどうなるでしょうか...。
次は1年経たずに掲載できるように頑張ります。
Written by 澤田
Copyright © Hokkaido Electronics Corporation.