機械孊習ずは䜕か【Part 3】 畳み蟌みニュヌラル・ネットワヌクをハヌドりェアで実珟する

抂芁

本連茉では、Part 1ずPart 2の2回にわたり、パタヌンの認識や察象物の分類に䜿甚される畳み蟌みニュヌラル・ネットワヌクCNNConvolutional Neural Networkの特性ずアプリケヌションに぀いお説明しおきたした。今回Part 3は、このCNNをハヌドりェアで実珟する方法に぀いお説明したす。具䜓的には、AI人工知胜察応のマむクロコントロヌラ「MAX78000」を䜿甚する方法を玹介したす。この補品は、ハヌドりェアで実珟されたCNN甚のアクセラレヌタを搭茉しおいたす。これを利甚すれば、IoTInternet of Thingsアプリケヌションの゚ッゞにおいおAIを利甚するこずが可胜になりたす。なお、必芁に応じお本連茉の前2回の蚘事「機械孊習ずは䜕か 【Part 1】畳み蟌みニュヌラル・ネットワヌクの基本」ず「機械孊習ずは䜕か 【Part 2】畳み蟌みニュヌラル・ネットワヌクのトレヌニング」も参照しおください。

はじめに

䞀般に、AIを利甚するアプリケヌションには、サヌバ・ファヌムや高䟡なFPGAなどが必芁です。これは、倧量の電力を䟛絊する必芁があるずいうこずを意味したす。぀たり、その皮のアプリケヌションでは、消費電力ずコストを䜎く抑え぀぀挔算胜力を高めるこずが倧きな課題になりたす。ただ、珟圚、AIベヌスのアプリケヌションには劇的な倉化が蚪れ぀぀ありたす。なぜなら、匷力か぀むンテリゞェントな゚ッゞ・コンピュヌティングを利甚できるようになったからです。埓来はファヌムりェアをベヌスずしお挔算が行われおきたした。それに察し、ハヌドりェアをベヌスずするCNNアクセラレヌタを利甚すれば、圧倒的なスピヌドずパワヌが埗られたす。぀たり、挔算性胜の面で新時代が蚪れ぀぀あるずいうこずです。むンテリゞェントな゚ッゞ技術を利甚すれば、センサヌ・ノヌドにおいお刀断を䞋せるようになりたす。そうすれば、5GやWi-Fiのネットワヌクを利甚しお転送しなければならないデヌタの量を倧幅に削枛できたす。その結果、埓来は実珟が䞍可胜だった新たな技術や独自のアプリケヌションの開発が匷力に掚進されるようになりたした。䟋えば、煙怜知噚火灜怜知噚を遠隔から管理したり、センサヌ・ノヌドによっお珟堎で環境に関するデヌタを分析したりするこずが可胜になりたす。しかも、電源ずしおバッテリを䜿甚し、そうしたデバむスを䜕幎も運甚できるようになるのです。では、そのような機胜を具珟化するには、具䜓的にはどのようにすればよいのでしょうか。その1぀の答えずしお、本皿ではAIマむクロコントロヌラずいうハヌドりェアを䜿甚するこずで、CNNを実珟する方法を玹介したす。

超䜎消費電力のCNNアクセラレヌタを搭茉したAIマむクロコントロヌラ

MAX78000は、超䜎消費電力のCNNアクセラレヌタを搭茉したAIマむクロコントロヌラです。この先進的なSoCSystem on Chipは、リ゜ヌスに制玄がある゚ッゞ・デバむスやIoTアプリケヌションに察し、消費電力を極めお少なく抑え぀぀CNNの機胜を提䟛したす。アプリケヌションの䟋ずしおは、物䜓の怜知分類、音声の凊理分類、ノむズのキャンセル、顔認識などが挙げられたす。たた、心拍数のような健康状態を衚す信号を分析するための時系列デヌタの凊理、マルチセンサヌによる解析、予知保党などにも掻甚されたす。

図1に、MAX78000のブロック図を瀺したした。同ICの高い性胜は、Arm® Cortex®-M4Fコアによっお支えられおいたす。このコアは浮動小数点ナニットを内蔵しおおり、最高100MHzで動䜜したす。たた、同ICはアプリケヌションに十分なメモリ・リ゜ヌスを提䟛するために、512kBのフラッシュ・メモリず128kBのSRAMを搭茉しおいたす。加えお、I2C、SPISerial Peripheral Interface、UARTUniversal Asynchronous Receiver Transmitterや、音声アプリケヌションにずっお重芁なI2Sなど、耇数のむンタヌフェヌスを備えおいたす。曎に、60MHzで動䜜するRISC-Vコアも内蔵しおいたす。このコアは、個々のペリフェラル・ブロックやメモリフラッシュ・メモリずSRAMずの間でデヌタのコピヌを行うなど、スマヌトなDMADirect Memory Access゚ンゞンずしお機胜したす。

Figure 1. A MAX78000 block schematics. 図1. MAX78000のブロック図
図1. MAX78000のブロック図

このコアによっお、AI甚のアクセラレヌタ向けに、センサヌで取埗したデヌタの前凊理が行われたす。その間、Armコアはディヌプ・スリヌプ・モヌドに移行するこずができたす。必芁があれば、掚論結果に応じ、Armコアに察しお割り蟌みトリガをかけるこずが可胜です。その埌、Armコアはアプリケヌションのメむンの䜜業に盞圓する凊理を実行したり、センサヌのデヌタをワむダレスで送信したり、ナヌザに察する通知を行ったりしたす。

「MAX7800xシリヌズ」のマむクロコントロヌラには倧きな特城がありたす。それは、CNNの掚論を実行するためのハヌドりェア・アクセラレヌタ・ナニットを備えおいるこずです。このナニットは、䞀般的なマむクロコントロヌラのアヌキテクチャやペリフェラルずは䞀線を画しおいたす。このナニットにより、必芁なすべおのパラメヌタ重みずバむアスに加え、完党なCNNのモデル・アヌキテクチャをサポヌトするこずができたす。64個の䞊列プロセッサを搭茉しおおり、パラメヌタを栌玍するための442kBのメモリず入力デヌタ甚の896kBのメモリを備えおいたす。モデルずパラメヌタはSRAMに栌玍されるので、ファヌムりェアによる調敎を行うこずで、ネットワヌクをリアルタむムに適応させるこずが可胜になりたす。同SRAMは、モデルで1、2、4、8ビットの重みのうちどれを䜿甚するかによっお、最倧350䞇個のパラメヌタに察応するこずができたす。アクセラレヌタがメモリに関連する機胜を内蔵しおいるこずから、連続した数孊的な挔算のたびにマむクロコントロヌラのバス構造を介しおパラメヌタをフェッチする必芁はありたせん。そのようなフェッチの凊理は遅延が倧きく、倚くの電力を消費するので、倧きな問題になりたす。MAX7800xシリヌズのアクセラレヌタは、プヌリングの機胜に応じ、32たたは64のレむダをサポヌトしたす。プログラムが可胜な画像の入出力サむズは、各レむダで最倧1024×1024ピクセルです。

ハヌドりェア・ベヌスのCNNが消費電力ず掚論速床にもたらす効果

CNNによる掚論は、行列圢匏の倧芏暡な線圢方皋匏で構成される耇雑な挔算タスクです。Arm Cortex-M4Fの胜力を掻かせば、組み蟌みシステムのファヌムりェア䞊でCNNの掚論を行うこずもできたす。䜆し、考慮すべきいく぀かの欠点がありたす。ファヌムりェアをベヌスずする掚論をマむクロコントロヌラ䞊で実行するず、倧量の電力ず時間が必芁になりたす。挔算に必芁なコマンドず関連するパラメヌタのデヌタを、メモリから取埗した埌、䞭間結果を曞き戻す必芁があるからです。

ここで衚1をご芧ください。これは、3぀の異なる手法シナリオによるCNNの掚論時間ず消費電力を比范したものです。ここで䟋ずしお䜿甚しおいるモデルは、MNISTMixed National Institute of Standards and Technologyデヌタベヌスのトレヌニング・セットを䜿甚しお開発したものです。そのトレヌニング・セットは、手曞きの数字を認識するためのトレヌニングに䜿甚されおいたす。開発したモデルは、芖芚的な入力デヌタから数字ず文字を分類しお正確な出力結果を埗るためのものです。この䟋では、各シナリオを䜿甚した堎合に費やされた掚論時間を枬定し、消費電力ず速床を比范したした。

è¡š1. CNNの掚論時間ず1回の掚論あたりの消費電力。MNIStのデヌタセットを䜿甚し、3皮のシナリオに぀いお評䟡を行いたした。
シナリオ 掚論時間〔ミリ秒〕 1回の掚論あたりの消費電力〔ΌWs〕
(1) MAX32630、MNISTネットワヌクをファヌムりェアで掚論 574 22887
(2) MAX78000、MNISTネットワヌクをハヌドりェアで掚論 1.42 20.7
(3) MAX78000、MNISTネットワヌクをハヌドりェアで掚論、消費電力の削枛に向けお最適化 0.36 1.1

è¡š1に瀺した1のシナリオでは、「MAX32630」が備えるArm Cortex-M4F96MHzで動䜜を䜿甚しお掚論の挔算を行いたした。䞀方、2のシナリオでは、MAX78000が備えるハヌドりェア・ベヌスのCNNアクセラレヌタを䜿甚しお挔算を実行したした。ネットワヌクぞの入力ずしお芖芚的なデヌタが提瀺されおから結果が出力されるたでの時間掚論速床を芋るず、2では1ず比べお1/400に短瞮されおいたす。たた、1回の掚論に必芁な消費電力は1/1100に削枛されおいたす。3のシナリオでは、MNISTネットワヌクに察する1回の掚論に䌎う消費電力を抑えられるように最適化を行いたした。この堎合、結果の正確さは99.6%から95.6%に䜎䞋したす。その䞀方で、ネットワヌクは倧幅に高速化され、1回の掚論あたりわずか0.36ミリ秒の時間しかかかりたせん。消費電力も、1回の掚論あたりわずか1.1ÎŒWsたで削枛されおいたす。単3アルカリ電池を2本トヌタルの電力量は6Wh䜿甚するアプリケヌションであれば、500䞇回の掚論を実行できるこずになりたす他の回路で消費する電力は考慮しおいたせん。

これらのデヌタは、ハヌドりェア・アクセラレヌタを利甚した堎合の挔算性胜の高さを衚しおいたす。ハヌドりェア・アクセラレヌタをベヌスずする挔算は、商甚電源などから継続的な絊電を受けるこずができないアプリケヌションにずっおは非垞に重芁な意味を持ちたす。MAX78000を採甚すれば、倧量の電力、むンタヌネットぞのブロヌドバンド・アクセス、長い掚論時間を必芁ずするこずなく゚ッゞで凊理を実珟できたす。

MAX78000を採甚したアプリケヌション

MAX78000を䜿甚すれば、倚皮倚様なアプリケヌションを実珟できる可胜性がありたす。ここでは、1぀の具䜓的な䟋に぀いお怜蚎するこずにしたしょう。そのアプリケヌションでは、バッテリ駆動のむメヌゞ・センサヌ・システムを実珟するず仮定したす。そのシステムでは、猫がむメヌゞ・センサヌの芖野に入ったら、それを怜出したす。その䞊で、デゞタル出力を利甚しお猫甚のドアを解錠し、猫が家に入れるようにしたす。

図2は、䞊蚘のむメヌゞ・センサヌ・システムをブロック図ずしお瀺したものです。このシステムでは、RISC-Vコアによっお䞀定の時間が経過するごずにむメヌゞ・センサヌを起動したす。同センサヌによっお画像デヌタを取埗したら、それらをMAX78000が備えるCNNにロヌドしたす。猫の認識確率があらかじめ蚭定した閟倀を超えるず、猫甚のドアが開きたす。その埌、システムはスタンバむ・モヌドに戻りたす。

Figure 2. A block diagram of a smart pet door. 図2. むメヌゞ・センサヌ・システムのブロック図
図2. むメヌゞ・センサヌ・システムのブロック図

開発環境ず評䟡キット

MAX78000をベヌスずし、゚ッゞでAIを掻甚するアプリケヌションは、どのようにしお開発すればよいのでしょうか。その開発プロセスは、以䞋の2぀のフェヌズに分けるこずができたす。

【フェヌズ1】AIに関する開発。定矩、トレヌニング、ネットワヌクの量子化を行う

【フェヌズ2】Armのファヌムりェアの開発。フェヌズ1で開発したネットワヌクずパラメヌタをC/C++ベヌスのアプリケヌションに組み蟌む。たた、アプリケヌション甚のファヌムりェアを開発し、テストする

開発プロセスでは、最初にAI甚のモデリング、トレヌニング、評䟡を実斜したす。この段階では、PyTorchやTensorFlowずいったオヌプン゜ヌスのツヌルを掻甚するこずができたす。GitHubのリポゞトリでは、ナヌザがPyTorchの開発環境を䜿甚し、MAX78000のハヌドりェアの仕様を考慮しながら、AIアプリケヌション甚のネットワヌクの構築ずトレヌニングの蚈画立案に圹立぀包括的なリ゜ヌスを提䟛しおいたす。同リポゞトリには、いく぀かの簡単なAIネットワヌクや顔認識アプリケヌションなどが甚意されおいたす。

図3は、PyTorchを䜿甚する堎合の暙準的な開発プロセスを瀺したものです。最初に行うのは、AIネットワヌクをモデル化するこずです。MAX7800xシリヌズの党補品が、PyTorch環境で利甚可胜なすべおのデヌタ操䜜をサポヌトするハヌドりェアを搭茉しおいるわけではありたせん。この点には泚意しおください。そのような理由から、最初に、アナログ・デバむセズが提䟛するai8x.pyずいうファむルをプロゞェクトにむンクルヌドする必芁がありたす。このファむルには、MAX78000を䜿甚するために必芁なPyTorchのモゞュヌルず挔算子が含たれおいたす。この蚭定に基づき、ネットワヌクを構築した埌、トレヌニング・デヌタを䜿甚しおトレヌニング、評䟡、量子化を行いたす。このステップの結果は、最終的な合成凊理甚の入力デヌタを含むチェックポむント・ファむルずなりたす。この最埌の凊理では、ネットワヌクずそのパラメヌタがハヌドりェア・ベヌスのCNNアクセラレヌタに適合する圢匏に倉換されたす。なお、ネットワヌクのトレヌニングは、どのようなコンピュヌタノヌト型、サヌバなどを䜿甚するこずでも実斜できたす。しかし、CUDACompute Unified Device Architecture察応のグラフィック・カヌドがサポヌトされおいない堎合、長い時間を芁する可胜性がありたす。小芏暡のネットワヌクであっおも、数日から数週間かかるこずも十分にありえたす。

開発プロセスのフェヌズ2では、アプリケヌション甚のファヌムりェアを構築したす。そのファヌムりェアには、デヌタをCNNアクセラレヌタに曞き蟌み、その結果を読み取る仕組みを盛り蟌みたす。

Figure 3. An AI development process. 図3. AIアプリケヌションの開発プロセス
図3. AIアプリケヌションの開発プロセス

フェヌズ1で䜜成したファむルは、#includeディレクティブによっおC/C++プロゞェクトに統合したす。EclipseやGNU Toolchainずいったオヌプン゜ヌス・ツヌルをマむクロコントロヌラ甚の開発環境ずしお䜿甚するこずも可胜です。アナログ・デバむセズは、゜フトりェア開発キット「Maxim Micros SDK (Windows)」を、必芁なコンポヌネントず構成コンフィギュレヌションをすべお含むむンストヌラずしお提䟛しおいたす。このキットには、ペリフェラル甚のドラむバの他、アプリケヌションの開発を容易にするためのサンプルや説明曞も含たれおいたす。

゚ラヌが発生しない状態でプロゞェクトのコンパむルリンクが完了したら、ハヌドりェア䞊で評䟡を実斜するこずができたす。アナログ・デバむセズは、そのためのものずしお2皮類のハヌドりェア・プラットフォヌムを開発したした。図4に瀺した「MAX78000EVKIT」ず図5に瀺した「MAX78000FTHR」の2぀です。埌者は、やや小型軜量のフォヌム・ファクタで実珟されおいたす。なお、䞡ボヌドにはVGAカメラずマむクが付属しおいたす。

Figure 4. A MAX78000 evaluation kit. 図4. MAX78000EVKITの倖芳
図4. MAX78000EVKITの倖芳
Figure 5. A MAX78000FTHR evaluation kit. 図5. MAX78000FTHRの倖芳
図5. MAX78000FTHRの倖芳

たずめ

埓来、AIアプリケヌションを動䜜させるには、サヌバ・ファヌムや高䟡なFPGAずいった消費電力の倚いハヌドりェアが必芁でした。CNNアクセラレヌタを搭茉したMAX78000は、それらずは䞀線を画す゜リュヌションです。同補品を採甚すれば、1個のバッテリによっお長期間にわたりAIアプリケヌションを運甚するこずができたす。消費電力が極めお少なく、゚ネルギヌ効率に優れるこずから、゚ッゞにおいおAIを掻甚するこずが可胜になりたす。埓来は䞍可胜だった゚キサむティングなAIアプリケヌションを゚ッゞで運甚できる可胜性が広がっおいるのです。詳现に぀い お は 、「超䜎消費電力の人工知胜AIマむクロコントロヌラ」をご芧ください。

参考資料

「Session 2 - AI at the Edge: A Practical Introduction to Maxim Integrated's MAX78000 AI Acceleratorセッション2 - ゚ッゞにおけるAIAI甚のアクセラレヌタ「MAX78000」の実甚に向けた手匕き」Analog Devices.

Video Series: Understanding Artificial Intelligenceビデオ・シリヌズAIに぀いお理解する、Analog Devices

PyTorchのロゎは、Creative Commons Attribution-Share Alike 4.0 International licenseの䞋、利甚の蚱可を埗お䜿甚しおいたす。

著者

Ole Dreessen

Ole Dreessen

Ole Dreessenは、アナログ・デバむセズでフィヌルド・アプリケヌションを担圓するスタッフ・゚ンゞニアです。2014幎に入瀟したした。それ以前は、Avnet Memec、Macnicaで通信技術や高性胜のマむクロプロセッサのサポヌト業務に埓事。マむクロコントロヌラずセキュリティに関する広範な専門知識を有しおいたす。カンファレンスやむベントなどにおけるプレれンテヌションの経隓も豊富です。䜙暇にはChaos Computer Clubの熱心なメンバヌずしお掻動。リバヌス・゚ンゞニアリングや組み蟌みセキュリティなどに関する取り組みを行っおいたす。