大きなモデルが必ずしも良いモデルとは限らない。小さな機械学習こそが未来だ

大きなモデルが必ずしも良いモデルとは限らない。小さな機械学習こそが未来だ

NASA の推進により、電子機器の小型化は消費者向け製品産業全体に広がりました。ベートーヴェンの全作品をピンバッジにつけて、ヘッドホンで聴くことができるようになりました。

--ニール・ドグラース・タイソン、天体物理学者、科学評論家

超低電力組み込みデバイスの普及と、マイクロコントローラ向けの TensorFlow Lite などの組み込み機械学習フレームワークの導入により、AI 駆動型 IoT デバイスの大量導入が可能になります。

--ハーバード大学准教授、ヴィジェイ・ジャナパ・レッディ


組み込みデバイス向けTinyML

この記事の目的は、小規模機械学習の概念とその将来の可能性を読者に紹介することです。このシリーズの今後の記事では、特定のアプリケーション、実装、チュートリアルについて詳しく説明します。

導入

過去 10 年間、プロセッサ速度の向上とビッグデータの出現により、機械学習アルゴリズムのサイズが指数関数的に増加しました。当初、このモデルは、中央処理装置 (CPU) の 1 つ以上のコアを使用してローカル コンピューター上で実行できるほど小さいものでした。

その後すぐに、より大きなデータセットを処理するためにグラフィックス プロセッシング ユニット (GPU) を使用したコンピューティングが必要となり、SaaS プラットフォーム (Google Colaboratory など) や IaaS (Amazon EC2 インスタンスなど) などのクラウドベースのサービスの導入により、より容易に利用できるようになりました。この時点では、アルゴリズムはまだ 1 台のコンピューターで実行できます。

最近、テンソル プロセッシング ユニット (TPU) と呼ばれる特殊な特定用途向け集積回路 (ASIC) が開発され、約 8 個の GPU に相当する処理能力を実現できるようになりました。これらのデバイスは、より大きなモデルを構築するために、複数のシステムに学習を分散する機能が強化されています。

これは最近、GPT-3 アルゴリズム (2020 年 5 月公開) のリリースで最高潮に達しました。このアルゴリズムのネットワーク アーキテクチャには、驚異的な 1,750 億個のニューロンが含まれており、これは人間の脳のニューロン数 (約 850 億) の 2 倍に相当します。これは、これまでに作成された2番目に大きいニューラルネットワークであるTuring-NLG(2020年2月にリリースされ、約175億のパラメータを含む)のニューロン数の10倍以上です。ある推定によれば、このモデルのトレーニングには約1,000万ドルの費用がかかり、約3GWhの電力(原子力発電所1時間の出力の約3時間分)が使用されたという。

GPT-3 と Turing-NLG の成果は称賛に値するものですが、当然ながら、AI 業界の二酸化炭素排出量の増大について業界内から批判の声が上がっています。しかし、これはまた、AI コミュニティにおける、よりエネルギー効率の高いコンピューティングへの関心を高めることにも役立ちました。より効率的なアルゴリズム、データ表現、計算などのアイデアは、一見無関係な分野であるマイクロ機械学習で注目を集めています。

Tiny Machine Learning (tinyML) は、機械学習と組み込み IoT (モノのインターネット) デバイスの交差点です。この分野は、多くの産業に革命を起こす可能性を秘めた新興の工学分野です。

tinyML の主な業界受益者は、エッジ コンピューティングとエネルギー効率の高いコンピューティングです。 TinyML は、モノのインターネット (IoT) の概念から生まれました。 IoT の従来の考え方は、ローカル デバイスからクラウドにデータを送信して処理することです。このコンセプトに関して、プライバシー、レイテンシー、ストレージ、エネルギー効率など、いくつかの懸念を表明する人もいます。

エネルギー効率。データの送信(有線または無線経由)は、オンボード計算(具体的には、乗算累算ユニット)よりも約 1 桁高い、非常に大きなエネルギーを消費します。独自のデータ処理を実行できる IoT システムを開発することが、最もエネルギー効率の高いアプローチです。 AI の先駆者たちは、「データ中心」のコンピューティング (クラウド モデルの「コンピューティング中心」とは対照的) というアイデアについて議論してきましたが、現在、それが実現し始めています。

プライバシー。データを送信するとプライバシーが侵害される可能性があります。このようなデータは悪意のある人物によって傍受される可能性があり、クラウドなどの単一の場所に保存されている場合は本質的に安全性が低くなります。これにより、データが主にデバイス上に保持され、通信が最小限に抑えられるため、セキュリティとプライバシーが向上します。

ストレージ。多くの IoT デバイスでは、取得したデータは役に立ちません。建物の入り口を 24 時間記録する防犯カメラを想像してください。その日のほとんどの時間、何も起こらなかったためカメラのレンズは役に立たなかった。必要なときにのみアクティブになるよりスマートなシステムを導入することで、必要なストレージ容量が少なくなり、クラウドに転送する必要があるデータの量も削減されます。

潜伏中。 Amazon Alexa などの標準的な IoT デバイスの場合、これらのデバイスはデータをクラウドに送信して処理し、アルゴリズムの出力に基づいて応答を返します。その意味では、このデバイスは、ユーザーと Amazon のサーバー間の伝書鳩のように、クラウド モデルへの便利なゲートウェイにすぎません。このデバイスは非常に扱いにくく、結果を出すにはインターネットの速度に完全に依存します。インターネット接続が遅い場合、Amazon Alexa も遅くなります。自動音声認識機能を搭載したスマート IoT デバイスの場合、外部通信への依存度が減るため、遅延を減らすことができます (特に必要がない限り)。

これらの問題により、エッジ デバイス (クラウドの「エッジ」にあるデバイス) で処理アクティビティを実行するというアイデアであるエッジ コンピューティングが開発されました。これらのデバイスは、メモリ、計算、機能の点でリソースが非常に制限されているため、より効率的なアルゴリズム、データ構造、計算方法の開発につながります。

このような改善はより大規模なモデルにも適用され、モデルの精度を損なうことなく機械学習モデルの効率を数桁向上させることができます。

たとえば、Microsoft が開発したアルゴリズムは 2 KB と小さいですが、一般的な 40 MB の kNN アルゴリズムや 4 MB のニューラル ネットワークよりもパフォーマンスが優れています。この結果は大したことではないように思えるかもしれませんが、1/100,000 サイズのモデルで同じ精度が得られるというのは印象的です。このような小さなモデルは、2 KB の RAM を搭載した Arduino Uno で実行できます。つまり、このような機械学習モデルを 5 ドルのマイクロコントローラーで構築できるようになりました。

私たちは、機械学習がコンピューティング中心のコンピューティングとデータ中心のコンピューティングという 2 つのコンピューティング パラダイムの間で分岐している興味深い岐路に立っています。コンピューティング中心のパラダイムでは、データはデータセンター内のインスタンスによって保存および分析されますが、データ中心のパラダイムでは、処理はデータの元の場所で行われます。コンピューティング中心のパラダイムの上限に急速に近づいているように見えますが、データ中心のパラダイムに関する作業はまだ始まったばかりです。

IoT デバイスと組み込み機械学習モデルは、現代の世界でますます一般的になりつつあります (2020 年末までに 200 億台を超えるアクティブ デバイスが見込まれています)。それらの多くは、気づかないかもしれません。スマートドアベル、スマートサーモスタット、スマートフォンはすべて、いくつかの単語を言うか、電話を取るだけで「起動」できます。この記事の残りの部分では、tinyML の仕組みと、その現在および将来のアプリケーションについてさらに詳しく説明します。


クラウド階層

TinyMLの例

以前は、デバイスがさまざまなアクションを実行するには複雑な回路が必要でした。現在、機械学習により、このハードウェアの「インテリジェンス」をソフトウェアに抽象化することが可能になり、組み込みデバイスはよりシンプル、軽量、柔軟になっています。

組み込みデバイスでの機械学習が直面する課題は非常に大きいですが、この分野では驚異的な進歩が遂げられています。マイクロコントローラにニューラル ネットワークを導入する際の主な課題は、メモリ フットプリントの小ささ、電力の制限、計算能力の制限です。

おそらく、TinyML の最も明白な例はスマートフォンです。これらのデバイスは、「ウェイクワード」を継続的に積極的にリッスンします。

Android スマートフォンの「Hey Google」や iPhone の「Hey Siri」など。最新の iPhone では 1.85 GHz で動作するスマートフォンのメインの中央処理装置 (CPU) でこれらのアクティビティを実行すると、わずか数時間でバッテリーが消耗します。このレベルの劣化は、1 日に数回しか使用しないほとんどの人にとっては受け入れられません。

この問題に対処するために、開発者は小型電池 (たとえば、リング型の CR2032「コイン」電池) で電力を供給できる特殊な低電力ハードウェアを作成しました。これらの機能により、CPU が動作していないとき (基本的には画面がオンになっていないとき) でも回路がアクティブに保たれます。

回路の消費電力はわずか 1 mW で、標準の CR2032 電池を使用して最大 1 年間電力を供給できます。

それは正しいことではないと思われるかもしれませんが、重要なことです。多くの電子機器ではエネルギーが制限要因となります。主電源を必要とするデバイスは配線のある場所に限られますが、同じ場所にデバイスが 12 個以上あるとすぐに過負荷になる可能性があります。主電源も非効率で高価です。主電源電圧 (米国では約 120 V) を一般的な回路電圧範囲 (通常は約 5 V) に変換すると、大量のエネルギーが浪費されます。ノートパソコンの充電器を持っている人なら、プラグを抜くときにこれを知っているでしょう。充電器内部の変圧器によって発生する熱は、電圧変換プロセスで無駄になるエネルギーです。

バッテリーを搭載したデバイスでもバッテリー寿命には限りがあるため、頻繁にドッキングする必要があります。多くの消費者向けデバイスは、バッテリーが 1 日中持続するように設計されています。 TinyML デバイスはコインサイズのバッテリーで 1 年間動作し続けることができるため、遠隔環境に設置して、必要なときだけ通信することで電力を節約できます。

ウェイクワードは、スマートフォンにシームレスに組み込まれている唯一の TinyML ではありません。加速度計のデータは、誰かが携帯電話を手に取ったかどうかを判断するために使用され、これにより CPU が起動し、画面がオンになります。

明らかに、これらは TinyML の唯一の応用ではありません。実際、TinyML は、企業や愛好家に、よりスマートな IoT デバイスを作成するための多くの刺激的な機会を提供します。データの重要性がますます高まっている世界では、機械学習リソースを遠隔地のメモリに制約のあるデバイスに配布する機能は、農業、天気予報、地震などのデータ集約型産業に大きなメリットをもたらす可能性があります。

エッジデバイスにデータ駆動型処理能力を持たせることで、産業プロセスにパラダイムシフトがもたらされることは間違いありません。たとえば、作物を監視し、土壌水分、特定のガス(リンゴは熟すとエタンを放出するなど)、特定の大気条件(強風、低温、高湿度など)などの特性を検出できれば、作物の成長が大幅に促進され、収穫量も増加します。

別の例として、スマートドアベルには、顔認識を使用して誰がいるのかを判断できるカメラが搭載されている場合があります。これはセキュリティ目的で使用したり、誰かがいるときにドアベルのカメラの映像を家の中のテレビに映して、住人が誰がドアの前にいるかを知るために使用することもできます。

現在、tinyML の主な焦点領域は次の 2 つです。

  • キーワードの発見。ほとんどの人はこのアプリケーションをすでに知っています。 「Hey Siri」や「Hey Google」はキーワードの例です(多くの場合、「ホットワード」や「ウェイクワード」と同義語として使用されます)。このようなデバイスは、マイクからの音声入力を継続的に聞き、学習したキーワードに対応する特定の音のシーケンスにのみ反応するようにトレーニングされます。これらのデバイスは自動音声認識 (ASR) アプリケーションよりもシンプルで、それに応じて使用するリソースも少なくなります。 Google スマートフォンなどの一部のデバイスでは、セキュリティを確保するためにスピーカー認証を使用しています。
  • 視覚的な目覚ましの言葉。ウェイクワードには、ビジュアルウェイクワードと呼ばれる画像ベースの類似物があります。存在か不在かを示す画像に対するバイナリ分類と考えてください。たとえば、スマート照明システムは、人の存在を検出すると点灯し、人が立ち去ると消灯するように設計できます。同様に、野生動物写真家は特定の動物がいるときに写真を撮るためにこれを使用でき、防犯カメラは人を見つけたときに写真を撮るために使用できます。

TinyML の現在の機械学習の使用例の概要を以下に示します。


TinyML の機械学習ユースケース

TinyMLの仕組み

TinyML アルゴリズムは、従来の機械学習モデルとほぼ同じように動作します。通常、モデルはユーザーのコンピューター上またはクラウド内でトレーニングされます。トレーニング後、ディープ コンプレッションと呼ばれるプロセスで、実際の tinyML 作業が始まります。


ディープラーニングモデル圧縮フローチャート

モデルの蒸留

トレーニング後、モデルはよりコンパクトな表現を持つモデルを作成するように変更されます。剪定と知識蒸留は、この目的のために使用される 2 つの手法です。

知識蒸留の基本的な考え方は、大規模なネットワークには内部にスパース性または冗長性があるというものです。大規模なネットワークは表現能力が高くなりますが、ネットワーク容量が飽和していない場合は、表現能力の低い小規模なネットワーク (つまり、ニューロンの数が少ないネットワーク) で表現できます。 Hinton ら (2015) は、教師モデルに埋め込まれた情報を「ダーク ナレッジ」と呼び、それを生徒モデルに転送しました。

次の図は、知識蒸留のプロセスを示しています。

深圧縮プロセスの図。この図では、「教師」はトレーニング済みの畳み込みニューラル ネットワーク モデルです。教師の役割は、その「知識」を、より少ないパラメータを持つより小さな畳み込みネットワーク モデル、つまり「生徒」に転送することです。このプロセスは知識蒸留と呼ばれ、同じ知識をより小さなネットワークに収めるために使用され、メモリが制限されたデバイスでも使用できるようにネットワークを圧縮する方法を提供します。

この図では、「教師」はトレーニングされたニューラル ネットワーク モデルです。教師の役割は、その「知識」を、より少ないパラメータを持つより小さなネットワーク モデル、つまり「生徒」に転送することです。このプロセスは、同じ知識をより小さなネットワークに含めるために使用され、知識表現を圧縮してニューラル ネットワークのサイズを縮小し、メモリ制約の厳しいデバイスでも使用できるようにします。

同様に、プルーニングはモデルの表現をよりコンパクトにするのに役立ちます。大まかに言えば、プルーニングは出力予測にほとんど役に立たないニューロンを削除しようとします。これは通常、より小さなニューラル ウェイトに関連付けられますが、推論中に重要度が高いため、より大きなウェイトが保持されます。次に、ネットワークはプルーニングされたアーキテクチャ上で再トレーニングされ、出力を微調整します。


モデルの知識表現を抽出するための剪定

定量化

蒸留後、モデルはトレーニング後に量子化され、組み込みデバイスのアーキテクチャと互換性のある形式になります。

なぜ量子化が必要なのでしょうか? 8 ビット演算を使用する ATmega328P マイクロコントローラを使用する Arduino Uno を想像してください。 Uno でモデルを実行するには、モデルの重みを理想的には 8 ビットの整数値として保存する必要があります (多くのデスクトップやラップトップでは 32 ビットまたは 64 ビットの浮動小数点表現が使用されます)。モデルを量子化することで、重みのストレージ サイズが 4 分の 1 に削減され (32 ビット値から 8 ビット値への量子化の場合)、精度への影響は通常はごくわずかです (通常は 1 ~ 3% 程度)。


8 ビットエンコード中の量子化誤差の図解(これは 32 ビット浮動小数点数を再構築するために使用される)

量子化プロセスで一部の情報が失われる可能性があるためです (たとえば、浮動小数点表現の 3.42 の値は、整数ベースのプラットフォームでは 3 に切り捨てられる可能性があります)。この問題に対処するために、代替手段として量子化考慮 (QA) トレーニングも提案されています。 QA トレーニングでは基本的に、トレーニング中にネットワークを制限して、量子化されたデバイスで使用可能な値のみを使用します。

ハフマン符号化

エンコーディングはオプションのステップであり、データを可能な限り効率的に保存することでモデルのサイズをさらに縮小するためによく使用されます。

コンパイル

モデルが量子化されエンコードされると、何らかの軽量ニューラル ネットワーク インタープリタで解釈できる形式に変換されます。最も一般的なのは、おそらく (サイズが約 500 KB) と (サイズが約 20 KB) です。次に、モデルは C または C++ コード (ほとんどのマイクロコントローラでメモリを効率的に使用するために使用されている言語) にコンパイルされ、インタープリターによってデバイス上で実行されます。


TInyMLアプリケーションのワークフロー

tinyML のスキルのほとんどは、マイクロコントローラーの複雑な世界を扱うことから生まれます。 TF Lite と TF Lite Micro は、不要な機能がすべて削除されているため、非常に小さくなっています。残念ながら、これにはデバッグや視覚化などの便利な機能が含まれています。つまり、展開中に何か問題が発生した場合、何が起こっているのかを把握するのが困難になる可能性があります。

さらに、モデルはデバイスに保存される必要がありますが、モデルは推論を実行できる必要もあります。つまり、マイクロコントローラには、(1) オペレーティングシステムとライブラリ、(2) ニューラルネットワークインタープリター (TF Lite など)、(3) 保存されたニューラルウェイトとニューラルアーキテクチャ、(4) 推論中の中間結果を実行できる十分な大きさのメモリが必要です。その結果、量子化アルゴリズムのピーク時のメモリ使用量は、メモリ使用量、乗算累算ユニット (MAC) の数、精度などとともに、tinyML の研究論文で頻繁に引用されています。

デバイス上でトレーニングしてみませんか?

機器のトレーニングにはさらなる複雑さが伴います。数値精度が失われるため、適切なネットワークトレーニングに必要なレベルの精度を維持することが非常に困難になります。標準的なデスクトップ コンピューターでの自動微分法は、機械の精度とほぼ同等の精度です。 10^-16 の精度で微分を計算するのは素晴らしいことですが、8 ビット値に自動微分を使用すると、結果は劣ってしまいます。バックプロパゲーション中に、これらの導関数が合成され、最終的にニューラル パラメータを更新するために使用されます。数値精度がこのように低いと、そのようなモデルの精度は低くなる可能性があります。

そうは言っても、ニューラル ネットワークは 16 ビットと 8 ビットの浮動小数点数の両方を使用してトレーニングされてきました。

ディープラーニングにおける数値精度の削減に関する最初の論文は、2015 年に Suyog Gupta 氏とその同僚によって発表されました。この論文の結果は興味深いもので、32 ビットの浮動小数点表現を精度をほとんど損なわずに 16 ビットの固定小数点表現に縮小できることを示しています。ただし、平均的には偏りのない結果が生成されるため、これが使用される唯一のケースです。

2018年、Naigang Wang氏とその同僚は論文「8ビット浮動小数点数の使用」で、8ビット浮動小数点数を使用してニューラルネットワークをトレーニングしました。推論ではなく 8 ビットの数値を使用してニューラル ネットワークをトレーニングすることは、バックプロパゲーション中に勾配計算の忠実度を維持する必要があるため (自動微分化を使用する場合に機械の精度を有効にする)、達成するのが非常に困難です。

計算はどれくらい効率的ですか?

モデルをカスタマイズして、計算効率を高めることもできます。 MobileNetV1 や MobileNetV2 など、モバイル デバイスに広く導入されているモデル アーキテクチャがその良い例です。これらは本質的に畳み込みニューラル ネットワークであり、畳み込み演算を再形成して計算効率を高めています。このより効率的な形式の畳み込みは、深さ方向に分離可能な畳み込みと呼ばれます。および を使用してレイテンシを最適化することもできます。

次なるAI革命

リソースが制限されたデバイス上で機械学習モデルを実行できることにより、多くの新しい可能性が開かれます。この開発により、標準的な機械学習のエネルギー効率が向上し、データサイエンスが環境に与える影響についての懸念が軽減される可能性があります。さらに、tinyML により、組み込みデバイスは、予防保守から森林での鳥の鳴き声の検出まで、あらゆる用途に使用できるデータ駆動型アルゴリズムに基づく新しいインテリジェンスを備えることができます。

機械学習の専門家の中には、モデルのサイズを拡大し続ける人もいることは間違いありませんが、新たなトレンドとしては、メモリ、コンピューティング、エネルギー効率の高い機械学習アルゴリズムへの移行が進んでいます。 TinyML はまだ初期段階にあり、この分野の専門家はほとんどいません。この分野は急速に成長しており、今後数年間で産業界における AI の新たな重要な応用分野となるでしょう。

<<:  人工知能技術は民族言語の保護に大きな可能性を秘めている

>>:  李開復氏、ペントランド氏と会談:AIはワンマンショーではない、AI冷戦は避けるべき

ブログ    
ブログ    

推薦する

ChatGPTは自分で質問することを学習し、複数のファイルのアップロードをサポートしています

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

ディープラーニングは本当にゼロから始められるのでしょうか?

[[203908]]誰かが尋ねたディープラーニング — どこから始めればよいですか?今はTenso...

産業用ロボットの 4 つのプログラミング技術のうち、いくつ知っていますか?

1. 概要現在、ロボットは溶接、組み立て、ハンドリング、塗装、研磨などの分野で広く利用されており、...

3 つの AIOps プラクティス: 可視化、自動化からインテリジェンスまで

2018年5月18日〜19日、51CTO主催のグローバルソフトウェアおよび運用技術サミットが北京で開...

無人バスは無人タクシーよりも信頼性が高いでしょうか?

バスがプラットフォームに到着するのを待って、バスに乗り、カードをスワイプします。いつもの朝の通勤風景...

SQLデータベースに基づくアルゴリズムを学ぶ

データベースは、データを保存し、大規模な計算を実行する場所です。現実世界の問題を解決するために、デー...

IoT、エッジコンピューティング、AIプロジェクトが企業にもたらす利益

[[385209]]ビル・ホームズは、象徴的なフェンダー・ストラトキャスターとテレキャスターのギター...

現代のサイバーセキュリティに人工知能が必要な理由

ダイヤルアップ インターネットの時代よりずっと以前、ウイルスが感染したフロッピー ディスクを介して拡...

半導体市場における人工知能の可能性と重要性

人工知能プロセッサは世界の半導体産業を活性化させており、少なくとも1つの市場調査会社は、AIチップの...

WPS AI公式サイトがオンラインになりました: 経験者資格の申請、WindowsとAndroidのダウンロードをサポート

写真1 ▲WPS AI公式サイトのスクリーンショット7月6日、Kingsoft OfficeはWPS...

...

...

...

...

Java プログラミング スキル - データ構造とアルゴリズム「非再帰的バイナリ検索」

[[396063]]基本的な紹介1. バイナリ検索は、順序付けられたシリーズ(数字や文字など)の検...