前回では、AIとは何か、を紹介しました。今回の初心者講座では、組み込みAIにまつわる用語を紹介します。TensorFlowやGPGPUなど、組み込みAIを設計する上で見逃せないキーワードが登場します。用語を通して、AIを構成する要素技術に迫りましょう。
目次
組み込みAI開発にはチームワークが欠かせない
組み込みAIは、蓄積された膨大なデータを解析して、識別・検知・予測などを実現するシステムです。こうした組み込みAIの開発では、次に挙げる大きな2つの課題を解決するため、チームワークが欠かせません。
1つ目の課題は、これまで人間が無意識的に脳内で行っていた処理を、アルゴリズムとして、どのようにコンピュータ上に実現するのか、ということです。この解決には、学術的なアルゴリズム研究者やデータサイエンティスト、工学的なシステムエンジニアが必要となります。
2つ目の課題は、大規模データの解析や活用を、いかに高速に、リアルタイムに実行するには、どのように実装すれば良いのか、ということです。この解決には、アプリケーションエンジニアだけでなく、ハードウェアに精通したエンジニアも必要となります。
つまり、「いかにチームとして課題を解決するか」が組み込みAI開発を成功させる鍵となります。そのため今回紹介する用語の多くは、作業分担を効率的に行う、抽象化の発想から生まれています。
ニューラルネットワークとしてアプリケーションを考えていこう。
まず、組み込みAI設計に共通する「考え方」のプラットフォームとして、ニューラルネットワークを紹介します。
ニューラルネットワーク
ニューラルネットワーク(Neural-Network)とは、人間の脳組織であるニューロンの結びつきを参考にシステムを設計する手法です。複雑な機能を大きな処理として表現せず、小さく単純な処理の重ね合わせとして表現し、高度なシステムを実現します。処理と処理をどのように重ね合わせるか、については、アプリケーションエンジニアが人力で検討するのではなく、過去に蓄えた知見(ビッグデータ)に基づいてコンピュータが絞り込み、最適な組み合わせを選出します。コンピュータを活用することにより、人間には到底処理できない膨大なデータの中からも、ルールを抽出。高度な組み込みAIを実現することができます。
ディープラーニング(深層学習)
ニューラルネットワークに含まれるニューロン列(並列に処理できる機能列)のことを、層と呼びます。ディープラーニング(Deep-Learning、深層学習)は、多層構造のニューラルネットワークを利用した問題解決手法です。
ディープラーニングを利用したアプリケーションは2つのフェーズ、ニューロン間の構造を選出する学習フェーズと、構築したネットワークを利用する活用フェーズを持ちます。学習フェーズでは、蓄積したデータに基づき層と層を繋ぐ結合係数を調整し評価、最適な構造を選出します。活用フェーズでは、結合係数を利用して入力を処理し、答え(推論結果)を導出します。
学習に利用するデータが、模範解答つまり教師となるため、こうした学習方式を「教師あり学習」と呼びます。
ディープラーニングを組み込みAI上でコンパクトに実現する
ディープラーニングでは、ネットワークが多層であるほど全体として複雑な機能を表現することができます。しかし、層が増えるほど重ね合わせの候補数も爆発的に増加するため、学習にはハイエンドなコンピュータが必要となります。組み込みAIでは、高いコストパフォーマンス、低消費電力、高い応答性のシステムを実現するため、学習フェーズを高性能なワークステーションにより事前に処理しておき、活用フェーズのみを組み込みシステム(エッジデバイス)上で実行するハイブリッドな方式も採用されています。
AIに活用できるハードウェアプラットフォーム
ニューラルネットワークは小さな処理の集合体であるため、実行環境として、大量のデータを並列処理できる能力を持つハードウェアが最適です。また、ニューロン同士が絡み合うことにより表現されているシステムであるため、大量の入力値から1つの出力値を算出する、集約演算に特化したハードウェアも高い人気を誇ります。組み込みAIで活躍しているハードウェアを、一部紹介します。
GPU
GPU(Graphic Processing Unit)は超並列演算を得意とする演算ユニットです。グラフィクス処理用ASICとして開発された演算ユニットであることから、色の重ね合わせや拡大・縮小・回転に必要な複数画素の集約演算や、並列処理を得意としています。
GPUをグラフィクス以外の汎用計算にも活用するGPGPU(General Purpose-GPU)技術を利用することにより、AIを構成する個々の処理をGPUにより高速に解決。優れたレスポンス性や、リアルタイム性を備えたアプリケーションを実現できます。
FPGA、NPU
FPGA
FPGA(Field-Programmable Gate Array)は、処理に最適な演算器を、動的に生成できるハードウェアです。ニューラルネットワークに求められる集約演算をはじめ、ニューロンとして表現された小さな機能を、専用ハードウェアを生成して高速に処理できます。
NPU
コストパフォーマンスや最高性能をFPGA以上に突き詰めるため、ニューラルネットワーク処理に最適化されたASICも登場しています。NPU(Neural network Processing Unit)はニューラルネットワーク専用の演算ユニットです。固定的なハードウェアですが、フィットするアプリケーションの性能を劇的に向上させることができます。
組み込みAIを支えるソフトウェアフレームワーク
多くの組み込みAIは、TensorFlowやCaffeといった、ソフトウェアフレームワークを利用して実装されています。ここでは、ソフトウェアフレームワークと、その効果について紹介します。
ソフトウェアフレームワークで、世界中の開発資産を取り込もう
ソフトウェアフレームワークは、ハードウェアの差異を吸収する抽象化ソフトウェア層です。ソフトウェアフレームワークを利用することにより、高い移植性を備えたアプリケーションを開発できます。TensorFlowやKeras 、Caffeなどが有名なソフトウェアフレームワークであり、ディープラーニングに必要な機能部品を提供しています。アプリケーション開発者はこれらの機能部品を繋ぎ合わせるだけで、高い移植性を備えたアプリケーションを、簡単に実装できます。
各ハードウェア上のソフトウェアフレームワークは、ハードウェアベンダーが主にメンテナンスしています。そのため、アプリケーション開発者は、他社との差別化であるアルゴリズム開発などに注力できます。また、ハードウェアベンダーも、アプリケーションの互換性を、対応ソフトウェアフレームワークとして表現できるため、サポート工数を削減することができます。
ハイエンドなハードウェアも活用できるソフトウェアフレームワーク
また、ハードウェアベンダーは、ソフトウェアフレームワークを自社のボードへ移植する際、ソフトウェアフレームワークの各機能部品を、ハードウェアに最適化しています。これにより、アプリケーション開発者は、ソフトウェアフレームワークを利用するだけで、最新ハードウェア性能の恩恵を受けることができます。
マイクロコントローラにも対応できるソフトウェアフレームワーク
TensorFlowやCaffeを利用したアプリケーションには、Pythonスクリプトとして実装されているものが多くを占めています。電力削減やコスト削減を目的としてArm Cortex-M4Fなどのハードウェアを選択した場合、スクリプト実行環境が無いことから、大きな移植工数が懸念されます。これを解消する方法として、次の2つの手法を紹介します。
アプリケーショントランスレータ
一部のハードウェアベンダーは、Pythonスクリプトで実装されたAIアプリケーションを、OSレス環境でも実行可能なC言語に変換するアプリケーショントランスレータを提供しています。トランスレータにより、簡単に、スクリプトベースで実装されたアプリケーションを、小さなエッジノードで実行することができます。
CMSIS-NN
Arm Cortex-M向けライブラリであるCMSISにも、ニューラルネットワークのフレームワーク「CMSIS-NN」が追加されました。CMSIS-NNはAIアプリケーションに必要な機能部品を提供するC言語用のライブラリです。単純ではありませんが、TensorFlowやCaffeに準拠したアプリケーションを、マイクロコントローラ上に移植しやすくなりました。
Machine Learning | Arm NN SDK – Arm Developer
まとめ
今回は、組み込みAI開発に登場する用語を紹介しました。今後も、初心者講座の中で様々な技術が登場します。次回は、実際のデバイスを使った「触って学べる」初心者講座となります。お楽しみに!
こちらも是非
“もっと見る” 組み込みAI編
プログラミング不要!?たった30分で構築できる、組み込みAIアプリ
今回は「サーバと連携する顔認証アプリケーション(第5回)」のセットアップ方法を紹介いたします。本記事の要点は、VIA ALTA DS3のように「組み込みAIにより顔認証ができるデバイス」を活用することにより、組み込みAI×IoTのシステムも、お馴染みのサーバ・クライアント型システムと同じように簡単に構築できる、ということです。
組み込みAI×IoTを事例で学んでみよう!サーバと連携する顔認識アプリケーション
VIA ALTA DS3を使うことにより、組み込みAIとサーバを連携させたIoTソリューションを簡単に構築できます。今回は、実際のシステムの動きを見ながら、組み込みAIをIoTに活用する方法や、サーバと連携することの魅力を学びましょう。
AI初心者でも、簡単に使える開発環境を手順付きで紹介
今回は、VIA SOM-9X20上で動作する組み込みAIアプリケーションの開発手順を通して、簡単に使い始めることのできる組み込みAI開発環境を紹介いたします。はじめて組み込みAIを開発される方はもちろん、効率的な開発が実現できず困っている方も、是非ご活用ください。