ニューラル ネットワーク トレーニングに関して言えば、誰もが GPU サーバー クラウド プラットフォームを第一印象に持つでしょう。メモリのオーバーヘッドが大きいため、従来のトレーニングはクラウドで実行されることが多く、エッジ プラットフォームは推論のみを担当します。しかし、そのような設計では、AI モデルが新しいデータに適応することが困難になります。結局のところ、現実世界は動的で変化し、発展するシナリオです。1 つのトレーニングですべてのシナリオをカバーできるでしょうか?
モデルが新しいデータに継続的に適応できるようにするために、エッジでトレーニング (オンデバイス トレーニング) を実行して、デバイスが継続的に独自に学習できるようにすることはできますか?この作業では、オンデバイス トレーニングの実装に使用したメモリは 256KB 未満であり、オーバーヘッドは PyTorch の 1/1000未満でした。ビジュアル ウェイク ワード タスク (VWW) で優れた結果を達成 クラウド トレーニングの精度を達成しました。このテクノロジーにより、モデルが新しいセンサー データに適応できるようになります。ユーザーはデータをクラウドにアップロードすることなく、カスタマイズされたサービスを利用できるため、プライバシーが保護されます。
オンデバイス トレーニングにより、事前トレーニングされたモデルを展開後に新しい環境に適応させることができます。モバイル上でローカルにトレーニングして適応させることで、モデルの結果を継続的に改善し、ユーザーに合わせてモデルをカスタマイズできます。たとえば、言語モデルを微調整すると、入力履歴から学習できるようになり、視覚モデルを調整すると、スマート カメラが新しいオブジェクトを継続的に認識できるようになります。トレーニングをクラウドではなく端末に近づけることで、特に医療データや入力履歴などの個人情報を処理する場合に、ユーザーのプライバシーを保護しながらモデルの品質を効果的に向上させることができます。
ただし、小型 IoT デバイスでのトレーニングはクラウド トレーニングとは本質的に異なり、非常に困難です まず、AIoT デバイス (MCU) の SRAM サイズは通常制限 (256KB) です。このレベルの記憶では、トレーニングはおろか、推論を行うことも非常に困難です。さらに、最終層分類子 (最後の FC) のみをトレーニングし、バイアス項のみを学習するなど、既存の低コストで高効率の転移学習アルゴリズムは、多くの場合精度が満足のいくものではなく、現代のアプリケーションはおろか、実際に使用することもできません。一部の深層学習フレームワークは、これらのアルゴリズムの理論上の数値を節約の測定値に変換することができません。最後に、最新のディープ トレーニング フレームワーク (PyTorch、TensorFlow) は通常、クラウド サーバー用に設計されており、小規模モデル (MobileNetV2-w0.35) のトレーニングには、バッチ サイズが 1 に設定されている場合でも大量のメモリが必要です。したがって、スマート端末デバイス上でトレーニングを実現するには、アルゴリズムとシステムを共同設計する必要があります。
オンデバイス トレーニングには 2 つの特有の課題があることがわかりました。(1) モデルはオンデバイス上にあります。エッジデバイス 定量的です。真に量子化されたグラフ (以下に示すように) は、低精度のテンソルとバッチ正規化層の欠如により最適化が困難です。(2) 小型ハードウェアの限られたハードウェア リソース (メモリと計算) では、完全な逆伝播が可能ではありません。使用量はマイクロコントローラーの SRAM の制限を簡単に (1 桁以上) 超える可能性がありますが、最後の層のみが更新される場合、最終的な精度は必然的に満足のいくものではなくなります。
#最適化の難しさに対処するために、さまざまなテンソルの勾配を自動的にスケーリングする量子化認識スケーリング (QAS) を提案します。ビット精度 (以下を参照) を左側に示します)。 QAS は、勾配とパラメーター スケールを自動的に一致させ、追加のハイパーパラメーターを必要とせずにトレーニングを安定させることができます。 8 つのデータ セットでは、QAS は浮動小数点トレーニングで一貫したパフォーマンスを達成できます (下の右の図)。
バックプロパゲーションに必要なメモリ フットプリントを削減するために、重要度の低いレイヤーとサブシートの勾配計算をスキップするスパース更新を提案します。最適な更新スキームを見つけるための寄与分析に基づいた自動手法を開発します。以前のバイアスのみの最後の k 層の更新と比較して、調査したスパース更新スキームでは 4.5 倍から 7.5 倍のメモリが節約され、8 つのダウンストリーム データ セットの平均精度はさらに高くなっています。
アルゴリズムの理論上の削減量を実際の数値に変換するために、Tiny Training Engine (TTE) を設計しました。コンパイル時に自動微分を行い、codegen を使用して実行時のオーバーヘッドを削減します。また、実際の節約と高速化のためのグラフの枝刈りや並べ替えもサポートしています。スパース アップデートはフル アップデートと比較してピーク メモリを 7 ~ 9 倍効果的に削減し、並べ替えを行うことで合計メモリの節約をさらに 20 ~ 21 倍に改善できます。 TF-Lite と比較して、TTE の最適化されたカーネルとスパース更新により、全体のトレーニング速度が 23 ~ 25 倍向上します。
#結論この記事では、単一のチップ コンピューター トレーニング ソリューション (256KB RAM と 1MB フラッシュのみを使用)。当社のアルゴリズム システムの共同設計 (システムとアルゴリズムの共同設計) により、トレーニングに必要なメモリ (PyTorch に対して 1000 回) とトレーニング時間 (TF-Lite に対して 20 回) が大幅に削減され、ダウンストリーム タスク レートの精度が向上します。 Tiny Training は、多くの興味深いアプリケーションを強化できます。たとえば、携帯電話はユーザーの電子メールや入力履歴に基づいて言語モデルをカスタマイズでき、スマート カメラは新しい顔やオブジェクトを継続的に認識でき、インターネットに接続できない一部の AI シナリオも継続できます。学ぶこと(農業など)、海洋、産業組立ライン)。私たちの取り組みにより、スモールエンドデバイスは推論だけでなくトレーニングも実行できるようになります。このプロセス中に個人データがクラウドにアップロードされることはないため、プライバシーのリスクはありません同時に、AI モデルは動的に変化する世界に適応するために継続的に学習することができます。
以上が256KB 未満のメモリでエッジ トレーニングを実装し、コストは PyTorch の 1,000 分の 1 未満ですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。