組み込みアプリケーション向けのAIの最適化
以前のブログで、AIベースのインターフェースの需要がほぼ避けられなくなったことについて話しました。face-idのようなAIベースのインターフェースを追加して、マシンへのアクセスを許可することは、最初は大きな飛躍のように思えるかもしれませんが、そうではありません。あなたが思うかもしれないほど難しいです。利用可能なAIプラットフォームが豊富にあり、トレーニングオプションがたくさんあり、face-idの例のようなオープンソースアプリケーションもあります。 PCで実行できるプロトタイプを使用すると、非常に迅速に稼働してテストできます。
(出典:CEVA)
制約
トレーニング済みのネットワークを組み込みアプリに移行することは、もう1つの大きなハードルのように思えるかもしれません。 PCまたはクラウドでトレーニングされたネットワークは、メモリ使用量や電力をあまり最適化しません。ネットワーク計算に浮動小数点またはダブルワードを使用する場合があり、画像上でスライディングウィンドウを処理するときに、オフチップメモリアクセスに大きく依存します。これは、壁の電源に接続された高性能PCで実行されているプロトタイプでは問題になりませんが、パフォーマンスを損なうことなく、エンドアプリケーションを大幅に節約する必要があります。
最適化の要点
最適化の重要なステップの1つは、量子化と呼ばれます。重みを浮動小数点から固定小数点に切り替え、固定小数点のサイズを、たとえば32ビット浮動小数点から8ビット整数に減らすと、重みのサイズだけでなく、中間計算値にも影響します。これだけでもメモリフットプリントを大幅に削減でき、ほとんどの場合、認識品質に目立った影響はほとんどありません。
2番目の操作は、精度への影響を最小限に抑えながら、重みのスパース性を活用することです。この方法では、ゼロに近い重みを利用し、精度への影響を綿密に追跡しながら、それらをゼロに丸めます。重みは、部分和の乗算に使用されます。これは、因子の1つがゼロの場合は無意味な演習であるため、操作を実行する必要はありません。
実際の実装では、画像は段階的に処理されるため、計算ウィンドウが画像上を移動するときに重みを更新する必要があります。それは多くの更新と多くのトラフィックを生み出す可能性があります。重みの大部分を強制的にゼロにすることで、重み配列を圧縮でき、配列のすべてまたは大部分をオンチップSRAMに格納して、オンデマンドで解凍することができます。これにより、メインメモリに移動する必要性が最小限に抑えられるため、パフォーマンスが向上し、電力が削減されます。また、ウェイトをロードする際のオンチップトラフィックも偶発的に減少します。トラフィックの競合が少ないということは、スループットが高いことを意味します。
もう1つの要因を考慮する必要があります。ほとんどの複雑なアプリケーションと同様に、ニューラルネットは高度なライブラリに依存しています。マイクロコントローラー環境で使用するために設計されたライブラリーと、選択したプラットフォームへのコンパイラーを使用する必要があります。出発点としては、TensorFlow Liteなどのオープンソースライブラリが適していますが、マイクロコントローラーを最大限に活用するには、専用のカスタマイズされたソリューションが必要になります。
もちろん、あなたがしなければならないことを知っていることはそれを容易にしません。次に、これらの操作を合理化し、ハードウェアに最適化されたライブラリを提供するプラットフォームを見つける必要があります。
これを使いやすいフローにするにはどうすればよいですか?
必要なのは、特定のプラットフォーム(TensorFlowなど)でトレーニングしたネットワークを利用して、いくつかの基本的な要件をダイヤルする以外の介入なしに、これを組み込みソリューションに直接コンパイルできるフローです。もちろん、オプションでさらに手動で最適化できるようにする必要もあります。おそらく、さまざまな平面でさまざまなレベルの量子化を設定できます。おそらく、重みのしきい値とオンチップのメモリサイズを試してみてください。また、ライブラリをハードウェアに最適化し、ハードウェアをライブラリに最適化する必要があります。
CEVAのCDNNのような実績のあるAIプラットフォームは、このタイプのフローを提供するように設計されています。 CDNNは、量子化およびランタイムタスク生成用のオフラインプロセッサツールセットと、CEVADSPおよび顧客ユーザーのハードウェアアクセラレータ用に調整されたランタイムライブラリを提供します。 CEVAのソリューションは、TensorFlow Lite、ONNX、Caffeなどを含むすべての一般的なAIモデル形式をサポートしています。
>
関連コンテンツ:
- 組み込みAIの習得
- AIモデルをマイクロコントローラーに圧縮する
- 組み込みシステムに機械学習を適用する
- マイクロコントローラーアーキテクチャはAI向けに進化します
- エッジでAIモデルをトレーニングする
- マイクロコントローラーアーキテクチャはAI向けに進化します
- AIが組み込まれたビッグデータをスマートデータに変換する
Embeddedの詳細については、Embeddedの週刊メールニュースレターを購読してください。
埋め込み