Google Edge TPU用に最適化されたTensorFlowモデルのトレーニングと展開

エッジコンピューティングデバイスは、ディープラーニングモデルを実行する論理的な目的地になりつつあります。パブリッククラウドはトレーニングに適した環境ですが、推論用のモデルを実行するのはエッジです。ほとんどのエッジデバイスには、使用可能なCPUおよびGPUリソ​​ースという形式の制約があるため、推論を高速化するために設計された専用のAIチップがあります。これらのAIアクセラレータは、推論に関係する計算を高速化することでCPUを補完します。これらは、エッジに配置されたニューラルネットワークの前方伝播を最適化するように設計されています。

![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3434383531312f35346234383061342d313038332d313535652d386231662d3162633163396639646530612e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448511/4ba662db-42f1-0b25-c7e2-b54a7398eeff.png)

- Google Coral Edge TPU,オンラインで購入するにはこちらをご覧ください:  https://store.gravitylink.com/global

Google Edge TPUは、推論モードでTensorFlowモデルを実行するために高度に最適化された市場のAIアクセラレーターの1つです。開発者は、[Google Coral Dev Board](https://store.gravitylink.com/global/product/DevBoard) および[Coral USB Accelerator](https://store.gravitylink.com/global/product/UsbAccelerator) を通じてEdge TPUを開始できます。これら2つのデバイスの構成と仕様の詳細については、以前の記事を参照してください。

CPU、TPU、およびTPUでトレーニングされた典型的なTensorFlowモデルは、Edge TPUに直接展開できません。 Edge TPUが提供する高速化を最大限に活用するには、モデルを変換して最適化する必要があります。

TensorFlow開発者は、モバイル、組み込み、IoTデバイスでTensorFlowモデルを変換および実行するためのツールキットであるTensorFlow Liteに精通しています。 TensorFlow Liteは、リソースに制約のあるモバイルデバイスや組み込みデバイスでモデルを効率的に実行するように設計されています。既存のTensorFlowモデルをTF Liteに変換するワークフローには、Python SDKまたはCLIの使用が含まれます。 SavedModelディレクトリ、フリーズグラフ、Keras HDF5形式のモデルは、SDKまたはCLIを使用してTF Liteに簡単に変換できます。変換されたモデルは、TF Liteインタープリターを備えたモバイルデバイスまたは組み込みデバイスに展開して実行できます。

TensorFlow Liteインタープリターは、モデルファイルを受け取り、入力データに対して定義した操作を実行し、出力へのアクセスを提供するライブラリです。このインタープリターは複数のプラットフォームで機能し、Java、Swift、Objective-C、C ++、PythonからTensorFlow Liteモデルを実行するためのシンプルなAPIを提供します。

残念ながら、Edge TPUは推論用のTF Liteモデルをサポートしていません。開発者は、Edge TPUのTF Liteモデルをさらに最適化することが期待されています。 Googleは、Edge TPU用にTensorFlowモデルを変換および最適化するコマンドラインツールを出荷しました。

TensorFlowは、量子化と呼ばれるモデル最適化手法をサポートしています。これは、Edge TPUで必要です。モデルの量子化とは、基本的にすべての32ビット浮動小数点数（重みやアクティベーション出力など）を最も近い8ビット固定小数点数に変換することを意味します。この手法により、モデルはより小さく、より高速になります。これにより精度が低下しますが、モデルは依然として許容可能なレベルの精度を維持します。

Edge TPUはディープフィードフォワードニューラルネットワークを実行するため、完全に8ビットで量子化されてからEdge TPU用に特別にコンパイルされたTensorFlow Liteモデルのみをサポートします。

この記事では、TensorFlowモデルをEdge TPUでトレーニング、最適化、展開する2つの特定のメカニズムについて説明します。

### Google Cloud Auto ML Vision
AutoMLは、大部分のステップを自動化することにより、モデルのトレーニングプロセスの高速化を試みます。 ユーザーはデータセットをアップロードし、予測が利用可能になるのを待つことが期待されます。 機能エンジニアリングからハイパーパラメーター調整まで、AutoMLはパイプラインの最も複雑なステップに取り組みます。

Googleは、ビジョンコンピューティングにAutoMLを提供する最初の企業の1つです。 Cloud AutoML Visionは、Cloud Storageバケットにアップロードされた画像データセットにアクセスし、推論の準備ができているモデルをトレーニングします。 トレーニングされたモデルは、クラウドでホストしてオンラインで予測したり、エッジで展開してオフラインで推論したりできます。 Cloud AutoML Visionの使用に関する詳細なガイドについては、以前に公開したチュートリアルに従ってください。

Cloud AutoML Visionは、Raspberry Piなどのモバイルデバイスに展開できる標準のTensorFlow Liteモデルを生成できます。 また、Edge TPU用に高度に最適化されたモデルの生成もサポートしています。

![1-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448511/7a165d16-0b1d-c6bb-acd0-3e5a3deddb0b.jpeg)

モデルがトレーニングされると、ターゲット推論環境向けにさらに最適化できます。 以下のスクリーンショットは、サポートされているデバイスを示しています。

![1-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448511/b0a6fb35-bf0c-192f-7811-fd02eb24d8e5.jpeg)

このサービスは、Edge TPUに最適化されたTF LiteモデルをCloud Storageバケットにアップロードします。CloudStorageバケットは、ダウンロードして推論のために展開できます。

![1-3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448511/6274aebf-b220-6ab4-4dd8-8b694d54577d.jpeg)

もう1つのオプションは、標準のTF Liteモデルをトレーニングし、次のセクションで説明するEdge TPU用にコンパイルすることです。

Cloud AutoML Visionサービスを使用する最大のメリットは、モデルをトレーニングおよび生成するためのコードなしのアプローチです。 データセットのサイズに応じて、モデルは数時間で準備できます。 Googleは、AutoML VisionサービスとEdge TPUを接続する素晴らしい仕事をしました。

### Edge TPU SDKおよびCLIと組み合わせた転移学習
もう1つの方法は、強力な転送学習プロセスを使用してモデルをトレーニングし、Edge TPU用にモデルを最適化することです。このアプローチにより、ニューラルネットワークアーキテクチャとハイパーパラメーターの調整をより適切に制御できます。

畳み込みニューラルネットワークをゼロからトレーニングするには、数日から数週間の計算時間がかかり、大量のトレーニングデータが必要になります。しかし、転移学習により、開発者は、同様のタスクについて既にトレーニングされた既存のニューラルネットワークアーキテクチャから開始し、さらにトレーニングを実行して、より小さなトレーニングデータセットを使用して新しいデータポイントを分類するモデルを教えることができます。モデル全体を再トレーニングすることでこれを行うことができます（ネットワーク全体で重みを調整します）が、分類を実行する最終レイヤーを削除するだけで非常に正確な結果を達成し、新しいクラスを認識するために新しいレイヤーをトレーニングすることもできます。

たとえば、既存のMobileNetモデルを使用して再利用し、犬の画像をいずれかの品種に分類するモデルをトレーニングできます。ニューラルネットワークアーキテクチャの90％は同じままなので、トレーニングは数分で完了します。

モデルが転送学習ベースのトレーニングから生成されると、Edge TPU用に最適化されたTF Liteモデルに簡単に変換できます。

![1-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448511/a07724bc-4aac-33bd-58ec-1419ce6466a4.png)

Googleは、Edge TPU用に最適化された人気モデルをダウンロード可能にしました。 これらのモデルは、転移学習を実行するためのベースラインとして使用できます。 これらのモデルの一部は、クラウドまたは強力なコンピューティング環境を使用せずに、トレーニングプロセス全体がGoogle Coral Dev Kitで実行されるデバイス上のトレーニングにも使用できます。 Dev Kitには十分な処理能力があるため、転送学習を通じて、より小さなデータセットに基づいてモデルをトレーニングするために活用できます。

GoogleはCloud TPUをエッジに拡張しただけでなく、開発者がEdge TPU用にTensorFlowモデルを変換および最適化することも簡単にしました。