書籍『TinyML』 の要点メモ, その1

を読み始めたのでそのメモ。 書籍からの引用が多くなると著作権的にもあれなので、自分があとで読み返せるように要点だけ書きます。

TensorFlow Lite for Microcontroller に関する本です。TensorFlow Liteはスマホなどを対象にしているのに対して、TensorFlow Lite for Microcontroller は、もっとリソース制約の厳しい組込みデバイスで、DeepLearningの推論を実行するフレームワークです。

筆者の方は、Googleで TensorFlow Lite や TensorFlow Lite for Microcontroller を開発してる方のようです。

まだ読んでいる途中ですが、この本で紹介されているサンプルは www.tensorflow.org にあるものと同じもののようです。 21章構成で、1~3章が導入、4~12章で4つのサンプルを説明、13~21章は個々の話題について記載されているようです。 自分で読んだ順に書いているので行ったり来たり、読まない部分があるかもしれません。

また以下のように略記します。 * 機械学習 = ML * Deep Learning = DL * TensorFlow Lite = TFL * TensorFlow Lite for Microcontroller = TFLM

1章: Introduction

  • OK Google は 14kB で動いている
  • TinyML のアイデアや必要性に至った経緯
  • TinyMLの定義は消費電力が1mW以下

2章: Getting Started

  • 対象読者(コマンドラインとエディタが使える。ML/DL、組込み機器の知識は必須ではない)
  • 必要なハードウェア(STM32FやArduinoで動くサンプルもあるけども) www.sparkfun.com
  • 必要なソフトウェア。VSCodeとかTeraTermとか。
  • この本は、勾配とか誤差逆伝搬とかの話にフォーカスするのではなく、スクラッチからモデルを作って、エラーに対処して、新しいデータセットに取り組むモデルをつくるプロセスを示す。

3章: Getting Up to Speed on Machine Learning

機械学習Deep Learningの概要説明なので、上記をほかの書籍で理解している場合は読み飛ばして問題ないと思う(自分は読んでない)。

19章: Porting Models from TensorFlow to TensorFlow Lite

  • TensorFlow Lite はTensorFlowのサブセットなので実装されていない演算もある。all_ops_resolver.ccをみて実装されている演算を確認しよう。 tensorflow/all_ops_resolver.cc at master · tensorflow/tensorflow · GitHub
  • 一般的なDLモデルは、前処理(訓練、教師データの読み込みなど)、コアのニューラルネットワーク、後処理の3段階からなる。コアのニューラルネットワーク以外は無理にTFLで書かずに普通のコードで書くのが理にかなっている。
  • TFLのグラフ構造をみるのにnetronは便利 github.com
  • TFLに実装されていない演算を自分で実装する方法
  • TFLチームの優先度は特定のユースケースから決めているので、あなたのケースが最適化されていない場合がある。これは15章で扱う。
  • モデルを訓練する前にエクスポートしてTFLとの互換性をまず確認しよう

21章: Learning More

各種情報源。