以下、図面を用いて実施形態が説明される。
図1は、一実施形態における情報処理装置の一例を示す。図1に示す情報処理装置100は、複数の演算装置2(2A、2B、2C)および演算装置6を有し、マルチモーダルDNNの推論処理を実行する。演算装置2A、2B、2Cは、第1の前処理演算装置の一例であり、演算装置6は、第1の後処理演算装置および演算処理装置の一例である。
演算装置2Aは、変換部3A、演算部4Aおよび出力部5Aを有する。演算装置2Bは、変換部3B、演算部4Bおよび出力部5Bを有する。演算装置2Cは、変換部3C、演算部4Cおよび出力部5Cを有する。変換部3(3A、3B、3C)は、第1の変換部の一例であり、演算部4(4A、4B、4C)は、第1の前処理演算部の一例である。出力部5(5A、5B、5C)は、第1の出力部の一例である。例えば、演算装置2A、2B、2Cは、それぞれ半導体チップまたは半導体パッケージの形態を有する。
変換部3Aは、演算装置2Aに接続されたセンサ1Aから入力するデータを演算部4Aで処理可能なデータに変換する。演算部4Aは、変換部3Aにより変換されたデータの特徴量を抽出する処理を実行し、実行結果である特徴量データを出力する。演算部4Aは、センサ1Aが計測するデータの特徴量を抽出するために、アーキテクチャが最適化されている。出力部5Aは、演算部4Aが出力する特徴量データを演算装置6に出力する。
変換部3Bは、演算装置2Bに接続されたセンサ1Bから入力するデータを演算部4Bで処理可能なデータに変換する。演算部4Bは、変換部3Bにより変換されたデータの特徴量を抽出する処理を実行し、実行結果である特徴量データを出力する。演算部4Bは、センサ1Bが計測するデータの特徴量を抽出するために、アーキテクチャが最適化されている。出力部5Bは、演算部4Bが出力する特徴量データを演算装置6に出力する。
変換部3Cは、演算装置2Cに接続されたセンサ1Cから入力するデータを演算部4Cで処理可能なデータに変換する。演算部4Cは、変換部3Cにより変換されたデータの特徴量を抽出する処理を実行し、実行結果である特徴量データを出力する。演算部4Cは、センサ1Cが計測するデータの特徴量を抽出するために、アーキテクチャが最適化されている。出力部5Cは、演算部4Cが出力する特徴量データを演算装置6に出力する。
以下では、センサ1A、1B、1Cを区別なく示す場合、センサ1とも称する。センサ1A、1B、1Cは、第1のセンサの一例である。例えば、センサ1Aは、画像センサであり、演算装置2Aは、画像センサが出力する画像データの特徴量を抽出する機能を有する。例えば、センサ1Bは、音声センサであり、演算装置2Bは、音声センサが出力する音声データの特徴量を抽出する機能を有する。例えば、センサ1Cは、モーションセンサであり、演算装置2Cは、モーションセンサが出力するモーションデータの特徴量を抽出する機能を有する。
このように、センサ1A、1B、1Cの種類は、互いに異なり、センサ1A、1B、1Cが出力するデータの形式およびデータ量は、互いに異なる。また、演算装置2Aに接続されるセンサ1Aの種類(例えば、画像センサ)は、予め決められる。演算装置2Bに接続されるセンサ1Bの種類(例えば、音声センサ)は、予め決められる。演算装置2Cに接続されるセンサ1Cの種類(例えば、モーションセンサ)は、予め決められる。換言すれば、センサ1の種類毎に演算装置2が決められる。
例えば、各変換部3は、ニューラルネットワークによる推論処理を実行する場合、所定の周期で各センサ1から入力するデータを順次変換する。各演算部4は、各変換部3から入力するデータの特徴量を抽出する特徴量抽出処理を順次実行し、特徴量データを生成する。そして、各出力部5は、各変換部3から受信した特徴量データを演算装置6の入力部7に出力する。
例えば、画像センサとモーションセンサから取得するデータを用いることで、スマートフォン等の携帯端末の自己位置を推定する処理をニューラルネットワークにより実現することができる。また、ランドマークの見え方と加速度情報とから、携帯端末の現在位置(絶対座標)や向いている方向(姿勢)を推定する処理をニューラルネットワークにより実現することができる。さらに、画像センサと音声センサから取得するデータを用いることで、音声データにより音声認識に加えて、動画像から検出される話者の唇の動きによる音声認識を実行することで、高精度の音声認識を実現することができる。
演算装置6は、バス6aを介して互いに接続された入力部7、演算部8および記憶部9を有する。入力部7および演算部8は、1つの半導体チップまたは1つの半導体パッケージに含まれてもよく、プリント基板等のシステム基板上に配置されてもよい。記憶部9は、メモリモジュールとしてシステム基板上に配置されてもよい。入力部7は、第1の入力部の一例である。演算部8は、第1の後処理演算部の一例である。記憶部9は、第1の記憶部の一例である。
入力部7は、演算装置2A、2B、2Cから特徴量データを入力する毎に、入力した特徴量データを記憶部9に記憶させる。図1に示す例では、入力部7は、演算装置2A、2B、2Cからの特徴量データをそれぞれ入力する複数の入力ポートを有するが、図示しないセレクタを介して演算装置2A、2B、2Cからの特徴量データを入力してもよい。
演算部8は、記憶部9に記憶された複数種の特徴量データを用いて各センサが計測したデータに基づく推論処理を実行し、推論処理の実行結果である識別結果データを記憶部9に記憶させる。この後、記憶部9に記憶された識別結果データは、演算装置6が有するCPU(Central Processing Unit)等のプロセッサが実行するアプリケーションプログラムにより、各種処理や各種サービスを実行するために使用される。各種処理は、例えば、情報処理装置100に接続されたアクチュエータ等の制御機器を制御する処理である。アプリケーションプログラムを実行するCPUは、演算部8に含まれてもよい。
図1に示す情報処理装置100では、演算装置6には、最大の接続可能数以下の任意の数の演算装置2を接続することができる。入力部7に任意の演算装置2を接続するために、各演算装置2と演算装置6とは、共通のインタフェース仕様により接続される。共通のインタフェース仕様にすることで、情報処理装置100は、演算装置2を介して様々なセンサ1を、共通の演算装置6に接続して推論処理を実行することができる。すなわち、情報処理装置100は、1種類の演算装置6を使用して様々な推論処理を実行することができる。
なお、入力部7に接続される演算装置2A、2B、2Cの順序および数は、図1に示す例に限定されない。例えば、センサ1Aに対応する演算装置2Aのみが演算装置6に接続されてもよい。また、センサ1A、1Cに対応する演算装置2A、2Cが演算装置6に接続されてもよい。さらに、4種類以上のセンサ1の各々に対応する4つの演算装置2が演算装置6に接続されてもよい。この場合、演算装置6の入力部7は、4以上の入力ポートを有する。すなわち、情報処理装置100は、センサ1A、1B、1C以外のセンサから出力されるデータを使用して特徴量データを抽出し、特徴量データの識別処理を実行してもよい。この場合にも、例えば、モーションセンサであるセンサ1Cの代わりに圧力センサ、温度センサまたは光センサ等が使用されてもよく、使用するセンサが出力するデータの特徴量データを抽出する演算装置が演算装置2Cの代わりに演算装置6に接続される。
このように、情報処理装置100は、センサ1の種類毎にアーキテクチャが最適化された演算部4を含む演算装置2を、共通の演算装置6に接続することで、ニューラルネットワークによる推論処理を実行することができる。これにより、処理性能を低下させることなく、各演算装置2による特徴量データの抽出を実行することができる。なお、特徴量データを用いた識別処理の性能(処理時間)は、特徴量データのサイズにより変化するが、センサ1の種類に依存しない。このため、演算装置6は、特徴量データを用いた識別処理に特化して設計することが可能であり、複数種の演算装置2に共通にする場合にも、アーキテクチャを最適化することができる。
以上、図1に示す実施形態では、複数種のセンサ1のそれぞれが取得したデータから特徴量データを抽出する処理と、複数種の特徴量データを用いてセンサ1が検出した情報を識別する処理とを、互いに異なる演算装置2、6により実行する。これにより、任意の種類のセンサ1に対応する演算装置2により特徴量データを抽出し、抽出した特徴量データを用いて演算装置6により識別処理を実行することができる。この結果、使用するセンサ1の種類に関わらず、複数の演算装置2を演算装置6に接続して、ニューラルネットワークの推論処理を実行することができ、センサ1を自由に組み合わせる場合にも、推論処理の効率が低下することを抑止できる。換言すれば、情報処理装置100は、センサ1を自由に組み合わせて、マルチモーダルDNNによる推論処理を実行することができる。また、組み合わせるセンサ1に対応して新たな演算装置2を設計することなく、推論処理を実行することができる。
演算装置2と演算装置6とを、共通のインタフェース仕様により接続することで、演算装置6の入力部7の任意の入力ポートに演算装置2を接続することができる。各演算装置2は、接続するセンサ1に対応して設計されるため、センサ1毎の特徴量データの抽出処理に特化することができる。この結果、各演算装置2のアーキテクチャを最適化することができ、チップサイズを最小にすることができる。演算装置6は、特徴量データを用いた識別処理に特化して設計されるため、アーキテクチャを最適化することができ、演算部8を含む半導体チップのチップサイズを最小にすることができる。この結果、例えば、システムコストを抑えたマルチモーダルDNN推論システムをユーザーに提供することができる。
図2は、別の実施形態における情報処理装置の一例を示す。図1と同様の要素については、詳細な説明は省略する。図2に示す情報処理装置101は、イメージセンサ10A、マイクロフォン10B、ジャイロセンサ10C、複数のセンサSoC(System on a Chip)20(20A、20B、20C)、エッジSoC60、セレクタ77およびメモリ90を有する。エッジSoC60、セレクタ77およびメモリ90は、情報処理装置101のマザーボードBRDに実装される。例えば、各センサSoC20は、PCI(Peripheral Component Interconnect)カードに実装され、図示しないコネクタを介してマザーボードBRDのPCIバスに接続されてもよい。情報処理装置101は、図1に示す情報処理装置100と同様に、マルチモーダルDNNの推論処理を実行する。
センサSoC20Aは、第1の前処理演算装置の一例である。センサSoC20Bは、第1の前処理演算装置または第2の前処理演算装置の一例である。センサSoC20Cは、第1の前処理演算装置または第3の前処理演算装置の一例である。エッジSoC60は、第1の後処理演算装置および演算処理装置の一例である。
センサSoC20Aは、バス21Aを介して互いに接続されたA/D(Analog to Digital)変換器30A、演算コア40A、I/O(Input/Output)コントローラ50Aおよびメモリ55Aを有する。A/D変換器30Aは、イメージセンサ10Aからのアナログ画像データを入力し、アナログ画像データをデジタル画像データに変換する。演算コア40Aは、デジタル画像データに対して特徴量の抽出処理を実行し、抽出した画像特徴量データをメモリ55Aに記憶させる。例えば、メモリ55Aは、SRAM(Static Random Access Memory)である。
I/Oコントローラ50Aは、メモリ55Aに記憶された画像特徴量データを読み出してセレクタ77に出力する。I/Oコントローラ50Aは、エッジSoC60からの情報を受信する機能を有してもよい。イメージセンサ10Aは、第1のセンサの一例である。A/D変換器30Aは、第1の変換部の一例である。演算コア40Aは、第1の前処理演算部の一例である。I/Oコントローラ50Aは、第1の出力部の一例である。
センサSoC20Bは、バス21Bを介して互いに接続されたA/D変換器30B、演算コア40B、I/Oコントローラ50Bおよびメモリ55Bを有する。A/D変換器30Bは、マイクロフォン10Bからのアナログ音声データを入力し、アナログ音声データをデジタル音声データに変換する。演算コア40Bは、デジタル音声データに対して特徴量の抽出処理を実行し、抽出された音声特徴量データをメモリ55Bに記憶させる。例えば、メモリ55Bは、SRAMである。
I/Oコントローラ50Bは、メモリ55Bに記憶された音声特徴量データを読み出してセレクタ77に出力する。I/Oコントローラ50Bは、エッジSoC60からの情報を受信する機能を有してもよい。マイクロフォン10Bは、第1のセンサまたは音声センサの一例である。A/D変換器30Bは、第1の変換部または第2の変換部の一例である。演算コア40Bは、第1の前処理演算部または第2の前処理演算部の一例である。I/Oコントローラ50Bは、第1の出力部の一例である。
センサSoC20Cは、バス21Cを介して互いに接続されたA/D変換器30C、演算コア40C、I/Oコントローラ50Cおよびメモリ55Cを有する。A/D変換器30Cは、ジャイロセンサ10Cからのアナログモーションデータを入力し、アナログモーションデータをデジタルモーションデータに変換する。演算コア40Cは、デジタルモーションデータに対して特徴量の抽出処理を実行し、抽出されたモーション特徴量データをメモリ55Cに記憶させる。例えば、メモリ55Cは、SRAMである。
I/Oコントローラ50Cは、メモリ55Cに記憶されたモーション特徴量データを読み出してセレクタ77に出力する。I/Oコントローラ50Cは、エッジSoC60からの情報を受信する機能を有してもよい。ジャイロセンサ10Cは、第1のセンサまたはモーションセンサの一例である。A/D変換器30Cは、第1の変換部または第3の変換部の一例である。演算コア40Cは、第1の前処理演算部または第3の前処理演算部の一例である。I/Oコントローラ50Cは、第1の出力部の一例である。
セレクタ77は、I/Oコントローラ50A、50B、50Cの出力の各々にそれぞれ接続される3つの入力ポートと、エッジSoC60に接続される出力ポートとを有する。例えば、セレクタ77は、入力ポート毎に特徴量データを保持するキューを有し、キューに保持された特徴量データを宛先(例えば、宛先で示されるメモリ90の領域)に向けて転送する。これにより、I/Oコントローラ50A、50B、50Cが出力する特徴量データは、エッジSoC60に順次転送される。
なお、セレクタ77が有する入力ポートの数は、4以上でもよい。例えば、セレクタ77の入力ポート数が足りなくなった場合、セレクタ77をポート数が多い他のセレクタと交換することが可能である。この結果、エッジSoC60を再設計することなく、エッジSoC60に接続可能なセンサSoC20の数を増やすことができ、異なる種類のマルチモーダルDNNの推論処理を実行することができる。
エッジSoC60は、バス61を介して互いに接続されたI/Oコントローラ70、演算コア80および通信インタフェース85を有する。バスにはメモリ90も接続される。例えば、メモリ90は、主記憶装置であり、SDRAM(Synchronous Dynamic Random Access Memory)を含むメモリモジュールでもよく、積層された複数のメモリチップを含んでもよい。メモリ90は、SDRAM以外のメモリが採用されてもよい。I/Oコントローラ70は、第1の入力部の一例である。演算コア80は、第1の後処理演算部の一例である。メモリ90は、第1の記憶部の一例である。
I/Oコントローラ70は、セレクタ77から転送される特徴量データをメモリ90に記憶させる。I/Oコントローラ70は、セレクタ77を介して、エッジSoC60の外部にデータ等を出力する機能を有してもよい。演算コア80は、メモリ90に記憶された画像特徴量データ、音声特徴量データおよびモーション特徴量データを読み出し、これら特徴量データに対する識別処理を実行する。演算コア80は、識別処理で得られた識別結果データをメモリ90に記憶させる。識別結果データは、画像データの識別結果である画像識別結果データ、音声データの識別結果である音声識別結果データ、またはモーションデータの識別結果であるモーション識別結果データの一例である。通信インタフェース85は、例えば、マザーボードBRD上に実装されるCPU等の他のプロセッサとの間での通信を制御する機能を有してもよく、マザーボードBRDに接続される他のデバイスとの間での通信を制御する機能を有してもよい。
I/Oコントローラ50(50A、50B、50C)、セレクタ77およびI/Oコントローラ70は、互いに共通のインタフェース仕様を有しており、I/Oコントローラ50A、50B、50Cは、セレクタ77の入力ポートのいずれに接続されてもよい。また、共通のインタフェース仕様を有する他のI/Oコントローラ50を含むセンサSoCがセレクタ77の入力ポートに接続されてもよい。すなわち、図2に示す情報処理装置101では、センサSoC20を介してエッジSoC60に接続されるセンサ10の種類や数は、識別処理に使用する特徴量データに応じて自由に切り換えることができる。また、エッジSoC60(すなわち、マザーボードBRD)は、識別処理に使用する特徴量データのサイズ等に応じて自由に切り替えることができる。任意の種類と数のセンサSoC20と任意のエッジSoC60との組み合わせが可能なため、様々な推論を実行するマルチモーダルDNN推論システムを、情報処理装置101により実現することができる。
例えば、共通のインタフェース仕様は、PCIe(登録商標)バスでもよい。また、各センサSoC20により抽出された特徴量データは、DMA(Direct Memory Access)によりエッジSoC60を介してメモリ90に転送されてもよい。センサ10の種類毎に対応するセンサSoC20により、センサ10が取得したデータから特徴量データを抽出することで、抽出処理用にアーキテクチャを最適化したセンサSoC20を設計することができる。アーキテクチャを最適化したセンサSoC20の例は、図4から図6に示される。
図3は、図2の情報処理装置101により実現されるマルチモーダルDNN推論システムの一例を示す。図3に示すマルチモーダルDNN推論システムは、特徴量データの抽出処理を実行する3つのセンサSoC20A、20B、20Cと、特徴量データを使用して識別処理を実行するエッジSoC60を含む。各センサSoC20は、各センサ10による計測値であるデータを取得した後、特徴量データの抽出処理の前に処理S1、S2、S3を実行する。
計測値が画像データの場合、処理S1において、センサSoC20Aは、イメージセンサ10Aからのアナログ画像データを、例えば、JPEG形式のデジタルデータに変換する。また、センサSoC20Aは、JPEG形式のデジタルデータを3次元配列(縦256画素、横256画素、RGBなど)に変換し、さらに、後段の処理に合わせて画像データのデータ構造を変換する。処理S1は、演算コア40Aにより実行されてもよく、専用のハードウェアにより実行されてよく、ソフトウェアにより実行されてもよい。処理S1の後、センサSoC20Aは、演算コア40Aを使用して、例えば、畳み込み層による畳み込み処理およびプーリング層によるプーリング処理を実行する処理Cにより画像データの特徴量データを抽出する。
計測値が音声データの場合、処理S2において、センサSoC20Bは、マイクロフォン10Bから取得したアナログ音声データを離散フーリエ変換し、デジタル音声データを生成する。処理S2は、A/D変換器30Bにより実行されてもよく、演算コア40Bにより実行されてもよく、専用のハードウェアにより実行されてよく、または、ソフトウェアにより実行されてもよい。処理S2の後、センサSoC20Bは、演算コア40Bを使用して、例えば、リカレントニューラルネットワーク(RNN:Recurrent neural network)におけるLSTM(Long Short-Term Memory)による処理Lにより、音声データの特徴量データを抽出する。
計測値がモーションデータの場合、処理S3において、センサSoC20Cは、ジャイロセンサ10Cから取得したアナログモーションデータをデジタルモーションデータに変換する。処理S3の後、センサSoC20Cは、演算コア40Cを使用して、全結合層(Fully Connected Layer、Dense layer)による行列ベクトル積を算出する処理F1により特徴量データを抽出する。
なお、マルチモーダルDNN推論システムに使用可能なセンサは、センサ10A、10B、10Cに限定されない。例えば、気圧センサ、圧力センサまたは照度センサ等が使用されてもよい。また、センサSoC20で実行される演算処理は、畳み込み層による処理、LSTMによる処理および全結合層による処理に限定されない。
エッジSoC60は、抽出された特徴量データに基づく識別処理F2と、識別結果に基づく処理A(アプリケーション)とを実行する。例えば、識別処理F2では、全結合層による行列ベクトル積の算出(式1)や、ソフトマックス層によるソフトマックス関数演算(式2)が実行される。二重線で示すRは、実数の集合を示し、Rの右上の数字は要素数を示す。
式(1)おいて、x1、x2、x3は、それぞれセンサSoC20A、20B、20CからエッジSoC60へ転送する特徴量データを示し、x1は、要素数2048のベクトル、x2、x3は、要素数1024のベクトルであるとする。特徴量データの総数xは、x1、x2、x3の総数(=4096)である。式(1)において、Wは予め実行された学習処理により得られた学習済みの重み行列で、1000行4096列の行列である。そして、行列の積(Wx)により要素数1000のベクトルである出力oが生成される。式(2)に示すsoftmax関数は式(3)で定義される非線形関数である。数(2)のyは要素数1000のベクトルで、マルチモーダルDNNの最終的な識別結果に相当する。
なお、図3に示すマルチモーダルDNN推論システムは、図1に示す情報処理装置100によっても実現可能である。この場合、図2のセンサSoC20A、20B、20Cは、図1の演算装置2A、2B、2Cに置き換えられ、図2のエッジSoC60は、図1の演算装置6に置き換えられる。
例えば、図3に示す処理C、処理L、処理F1、F2は、32ビット(単精度)の浮動小数点数データFP32(以下、FP32)を使用して実行される。なお、処理C、処理L、処理F1、F2は、FP32以外のデータ型を使用して実行されてもよい。
図4は、図2のセンサSoC20Aの一例を示す。センサSoC20Aは、畳み込み層による畳み込み処理用にアーキテクチャを最適化しており、演算コア40Aは、二次元に配列された複数のベクタ演算器(Vector ALU(Arithmetic and Logic Unit))と、メモリ55Aに比べて高速な高速メモリとを有する。ベクタ演算器は、複数のデータに対して同一の演算を並列に実行するベクトル演算が可能であり、畳み込み処理に適している。二次元配列のベクタ演算器は、あるベクタ演算器から隣接する別のベクタ演算器に演算に用いたデータをフォワーディング可能であるため、畳み込み処理を実行するのに適している。
例えば、高速メモリは、SRAMであるが、強誘電体メモリ、MRAM(Magnetic Random Access Memory)またはReRAM(Resistive Random Access Memory)が使用されてもよい。高速メモリの記憶容量は、畳み込むカーネル(フィルタ)のうち出力チャンネル1枚分のカーネル(縦×横×入力チャンネル数)に対応する演算対象データが収まるサイズであればよい。なお、演算コア40Aは、図4に示す構成に限定されない。また、センサSoC20Aは、複数の演算コア40Aを有してもよく、演算コア40Aが有するベクタ演算器の数は9個に限定されない。
図5は、図2のセンサSoC20Bの一例を示す。センサSoC20Bは、LSTMの処理に特化するためにアーキテクチャを最適化しており、バスに接続された複数の演算コア40Bを有する。LSTMによる主な演算内容は、行列演算と非線形関数演算であるため、各演算コア40Bは、FMA(Fused Multiply-Add)、SPF(SPecial Function unit)および高速メモリを有する。FMAは、アキュムレータ付きの積和演算器であり、行列積の高速化に有効である。SPFは、シグモイド関数や双曲線正接(tanh)関数など、DNNで頻繁に使用される非線形関数用の演算器を含む。また、高速メモリは、SRAM、強誘電体メモリ、MRAMまたはReRAM等であり、LSTMによる演算に使用するデータを記憶する。なお、センサSoC20Bが有する演算コア40Bの数は、4つに限定されない。
図6は、図2のセンサSoC20Cの一例を示す。センサSoC20Cは、全結合層による行列ベクトル積の演算用にアーキテクチャを最適化しており、演算コア40Cは、複数のFMAと複数のSPFと重みメモリとを有する。重みメモリには、全結合層の演算で使用する学習済みの重みデータが予め格納される。重みメモリの容量は、図4および図5に示す高速メモリの容量より大きいことが望ましい。重みメモリは、SRAM、強誘電体メモリ、MRAMまたはReRAM等である。演算コア40Cは、レジスタファイルを介さずに重みメモリからFMAに演算対象データを直接供給する構成を採用してもよい。これにより、重みメモリから非常に長いデータをシーケンシャルに連続して読み出し、読み出したデータを各FMAに供給することができ、全結合層による演算を効率的に実行することができる。なお、FMAの数およびSPFの数は、図6に示す例に限定されない。
図4から図6に示すように、DNNによる演算処理の内容により、センサSoC20の最適なアーキテクチャは異なる。すなわち、データを取得するセンサ10の種類により、センサSoC20の最適なアーキテクチャは異なる。例えば、センサ10の種類毎、あるいは、DNNによる演算処理の種類毎に、アーキテクチャを最適化したSoC20を用意することで、複数種のセンサ10に共通のセンサSoCを使用する場合に比べて、DNNの処理性能を向上させることができる。
図7Aおよび図7Bは、図2の情報処理装置101がマルチモーダルDNNによる推論処理を実行する場合の動作フローの一例を示す。すなわち、図7Aおよび図7Bは、情報処理装置101の制御方法の一例を示す。例えば、図7Aおよび図7Bに示す動作は、情報処理装置101が、マルチモーダルDNNの推論処理によるサービスの要求をユーザーから受けたことに基づいて、推論処理が完了するまで繰り返し実行される。図7Aおよび図7Bに示す開始から終了までの処理の期間は、動作サイクルと称される。以下では、センサSoC20A、20B、20Cは、それぞれセンサSoC1、SoC2、SoC3とも称し、エッジSoC60は、エッジSoCとも称する。また、センサSoC1、SoC2、SoC3を区別なく説明する場合、センサSoCとも称する。後述する実施形態でも同様である。センサSoC1、SoC2、SoC3は、互いに並列に動作し、エッジSoCは、全てのセンサSoCから完了通知を受信したことに基づいて識別処理を実行する。
センサSoC1は、処理S1を実行するステップS101において、イメージセンサ10Aに計測要求を送信し、イメージセンサ10Aが撮影(計測)したアナログ画像データ(計測値)を受信する。センサSoC1は、受信したアナログデータをデジタル画像データに変換した後、メモリ55Aに書き込む。次に、センサSoC1は、処理Cを実行するステップS102において、DNN演算処理として、メモリ55Aに保持された画像データを使用して畳み込み層による特徴量の抽出処理を実行し、得られた特徴量データをメモリ55Aに書き込む。その後、センサSoC1は、エッジSoCへ完了通知を送信する。
センサSoC2は、処理S2を実行するステップS201において、マイクロフォン10Bに計測要求を送信し、マイクロフォン10Bが録音(計測)したアナログ音声データ(計測値)を受信する。センサSoC2は、受信したアナログ音声データをデジタル音声データに変換した後、メモリ55Bに書き込む。次に、センサSoC2は、処理Lを実行するステップS202において、DNN演算処理として、メモリ55Bに保持された音声データを使用してLSTMによる特徴量の抽出処理を実行し、得られた特徴量データをメモリ55Bに書き込む。その後、センサSoC2は、エッジSoCへ完了通知を送信する。
センサSoC3は、処理S3を実行するステップS301において、ジャイロセンサ10Cに計測要求を送信し、ジャイロセンサ10Cが計測したアナログ計測データを受信する。センサSoC3は、受信したアナログ計測データをデジタル計測データに変換した後、メモリ55Cに書き込む。次に、センサSoC3は、処理F1を実行するステップS302において、DNN演算処理として、メモリ55Cに保持されたデジタル計測データを使用して全結合層による特徴量の抽出処理を実行し、得られた特徴量データをメモリ55Cに書き込む。その後、センサSoC3は、エッジSoCへ完了通知を送信する。なお、各種センサ10を常時動作させ、センサSoCは、推論処理を実行する動作サイクルの開始タイミングに合わせて、各種センサ10が出力するアナログデータを取得してもよい。
エッジSoCは、ステップS401において、センサSoCのいずれかからの完了通知を待ち、センサSoCのいずれかから完了通知を受信した場合、動作をステップS402に移行する。エッジSoCは、推論処理を実行する動作サイクル毎にセンサSoCからの完了通知を保持する機能を有する。エッジSoCは、ステップS402において、当該動作サイクル中にセンサSoC1から完了通知を初めて受信した場合、センサSoC1にデータ転送要求を発行し、動作を図7BのステップS403に移行する。エッジSoCは、センサSoC1から完了通知を受信しない場合、または、当該動作サイクルにおいて完了通知を受信済みの場合、動作をステップS403に移行する。センサSoC1は、ステップS103において、データ転送要求を受信した場合、メモリ55Aが保持する特徴量データをエッジSoCに転送する。エッジSoCは、センサSoC1から受信した特徴量データをメモリ90に格納する。センサSoC1からメモリ90への特徴量データの転送は、セレクタ77を介してセンサSoC1をエッジSoCに接続した状態で実行される。
エッジSoCは、図7BのステップS403において、当該動作サイクル中にセンサSoC2から完了通知を受信した場合、センサSoC2にデータ転送要求を発行し、動作をステップS404に移行する。エッジSoCは、センサSoC2から完了通知を受信しない場合、または、当該動作サイクルにおいて完了通知を受信済みの場合、動作をステップS404に移行する。センサSoC2は、ステップS203において、データ転送要求を受信した場合、メモリ55Bが保持する特徴量データをエッジSoCに転送する。エッジSoCは、センサSoC2から受信した特徴量データをメモリ90に格納する。センサSoC2からメモリ90への特徴量データの転送は、セレクタ77を介してセンサSoC2をエッジSoCに接続した状態で実行される。
エッジSoCは、ステップS404において、当該動作サイクル中にセンサSoC3から完了通知を受信した場合、センサSoC3にデータ転送要求を発行し、動作をステップS405に移行する。エッジSoCは、センサSoC3から完了通知を受信しない場合、または、当該動作サイクルにおいて完了通知を受信済みの場合、動作をステップS405に移行する。センサSoC3は、ステップS303において、データ転送要求を受信した場合、メモリ55Cが保持する特徴量データをエッジSoCに転送する。エッジSoCは、センサSoC3から受信した特徴量データをメモリ90に格納する。センサSoC3からメモリ90への特徴量データの転送は、セレクタ77を介してセンサSoC3をエッジSoCに接続した状態で実行される。
エッジSoCは、ステップS405において、全てのセンサSoCから完了通知を受信済みの場合、動作をステップS406に移行し、完了通知を受信していないセンサSoCがある場合、動作をステップS401に戻す。例えば、ステップS401からステップS405の処理は、演算コア80(図2)が実行する制御プログラムによる制御により実行されてもよく、エッジSoCが有するコントローラ(ハードウェア)により実行されてもよい。
演算コア80は、ステップS406において、DNN演算処理として処理F2を実行し、メモリ90に保持された特徴量データを使用して識別処理を実行し、識別結果を得る。演算コア80は、得られた識別結果をメモリ90に格納する。
次に、ステップS408において、演算コア80は、処理Aとして、メモリ90に保持された識別結果を入力とするアプリケーション(プログラム)を実行し、各種サービスの処理を実行し、または、アクチュエータ等の制御機器を制御する処理を実行する。各種サービスの処理、または、制御機器を制御する処理は、通信インタフェース85を介して、エッジSoC60の外部のCPU等のプロセッサにより実行されてもよい。そして、当該動作サイクルでのマルチモーダルDNNの推論処理の実行が終了する。
図8は、他の情報処理装置の一例を示す。図2に示す情報処理装置101と同様の要素については、同じ符号を付し、詳細な説明は省略する。図8に示す情報処理装置110は、イメージセンサ10A、マイクロフォン10B、ジャイロセンサ10C、SoC600およびメモリ90を有する。情報処理装置110は、図2に示す情報処理装置101と同様に、マルチモーダルDNNの推論処理を実行する。
SoC600は、DNN用の汎用チップであり、各種センサ10A、10B、10Cからのアナログデータをデジタルデータに変換する複数のA/D変換器612、セレクタ614および演算コア616を有する。セレクタ614は、A/D変換器612のいずれかの出力を、バスを介してメモリ90に接続し、センサ10A、10B、10Cが計測したアナログデータから変換されたデジタルデータをメモリ90に格納する。
演算コア616は、FMA、SPF、ベクタ演算器(Vector ALU)および高速メモリを有する汎用のコアであり、畳み込み層、LSTMおよび全結合層の機能を実現可能である。このため、1つのSoC600により、図3に示す処理S1、S2、S3、C、L、F1、F2、Aの全てを実行することができる。
一方で、例えば、チップサイズの制限によりベクタ演算器の搭載数が制限されるため、SoC600は、図4のセンサSoC20Aに比べて、畳み込み層としての演算性能は低い。また、チップサイズの制限によりFMA、SPFの搭載数が制限されるため、SoC600は、図5のセンサSoC20Bに比べて、LSTMの処理層としての演算性能は低い。同様に、チップサイズの制限により、SPF、FMAの搭載数が制限されるため、SoC600は、図6のセンサSoC20CおよびエッジSoC60に比べて、全結合層としての演算性能は低い。
すなわち、SoC600は、様々な種類のDNNによる処理を実行できる反面、センサデータ毎の特徴量データの抽出処理および識別処理に対するアーキテクチャの最適化がなされていない。このため、情報処理装置110によるマルチモーダルDNNの推論処理の性能は、図2に示した情報処理装置101によるマルチモーダルDNNの推論処理の性能より低くなる。特定の推論処理の性能を上げるためにSoC600のアーキテクチャを最適化した場合、そのアーキテクチャに適さない他の推論処理に対して処理性能が低下してしまう。処理性能の低下を抑止するためには、推論処理の種類毎にSoC600を設計する必要が生じる。
さらに、図8では、例えば、図2の3つのセンサSoCおよびエッジSoCの機能を1つのSoCで実現するため、チップサイズが大きくなり、チップの良品率である歩留まりが低下し、チップコストが増大する。これにより、センサ毎の特徴量データの抽出処理と識別処理とをそれぞれ別の半導体チップで実行する場合に比べて、情報処理装置110のコストが増加する。
図9は、図8の情報処理装置110がマルチモーダルDNNによる推論処理を実行する場合の動作フローの一例を示す。図7Aおよび図7Bと同様の動作については、詳細な説明は省略する。図9に示す動作は、図7Aおよび図7Bと同様に、情報処理装置110が、マルチモーダルDNNの推論処理によるサービスの要求をユーザーから受けたことに基づいて開始される。
汎用のSoC600は、ステップS601において、イメージセンサ10Aに計測要求を発行する。次に、SoC600は、ステップS602において、イメージセンサ10Aから受信した画像データをデジタル値に変換してメモリ90に書き込む処理S1を実行する。SoC600は、ステップS603において、マイクロフォン10Bに計測要求を発行する。次に、SoC600は、ステップS604において、マイクロフォン10Bから受信した音声データをデジタル値に変換してメモリ90に書き込む処理S2を実行する。SoC600は、ステップS605において、ジャイロセンサ10Cに計測要求を発行する。次に、SoC600は、ステップS606において、ジャイロセンサ10Cから受信したモーションデータをデジタル値に変換してメモリ90に書き込む処理S3を実行する。
次に、ステップS607において、演算コア616は、DNN演算処理として、処理C、処理Lおよび処理F1を実行し、画像データ、音声データおよびモーションデータのそれぞれの特徴量データを抽出する。処理C、処理Lおよび処理F1の内容は、図7AのステップS102、S202、S302と同様に、それぞれ畳み込み層、LSTM、全結合層に対応する。
次に、ステップS608において、演算コア616は、DNN演算処理として、メモリ90に保持された特徴量データを使用して識別処理F2を実行して識別結果を得る。次に、ステップS609において、演算コア616は、処理Aとして、識別結果を入力とするアプリケーションを実行し、各種サービスの処理を実行し、または、アクチュエータ等の制御機器を制御する。そして、マルチモーダルDNNの推論処理の実行が終了する。
以上、図2から図7Bに示す実施形態においても、図1に示す実施形態と同様に、任意の種類のセンサ10を組み合わせて複数のセンサSoC20により特徴量データを抽出し、抽出した特徴量データを用いてエッジSoC60により識別処理を実行することができる。例えば、情報処理装置101は、イメージセンサ10A、マイクロフォン10Bおよびジャイロセンサ10Cがそれぞれ取得するデータを用いて、マルチモーダルDNNによる推論処理を実行することができる。換言すれば、センサ10を自由に組み合わせる場合にも、ニューラルネットワークの推論処理の効率が低下することを抑止できる。
複数のセンサSoC20とエッジSoC60とを、共通のインタフェース仕様により接続することで、セレクタ77の任意の入力ポートにセンサSoC20を接続することができる。各センサSoC20を、センサ10毎の特徴量データの抽出処理に特化して設計できるため、各センサSoC20のアーキテクチャを最適化することができ、チップサイズを最小にすることができる。また、エッジSoC60を、特徴量データを用いた識別処理に特化して設計できるため、エッジSoC60のアーキテクチャを最適化することができ、エッジSoC60のチップサイズを最小にすることができる。
図10は、別の実施形態における情報処理装置の一例を示す。図2と同様の要素については、同じ符号を付し、詳細な説明は省略する。図10に示す情報処理装置102は、図2に示すエッジSoC60の代わりにエッジSoC62を有することを除き、図2に示す情報処理装置101と同様である。情報処理装置102は、図2に示す情報処理装置101と同様に、マルチモーダルDNNの推論処理を実行する。
エッジSoC62は、図2に示す演算コア80の代わりに演算コア82を有する。例えば、演算コア82は、正規化層による正規化処理と、全結合層による行列ベクトル積の演算用とにアーキテクチャを最適化している。また、エッジSoC62は、図2に示すエッジSoC60に、I/Oコントローラ70の出力とバス61とに接続された型変換部72を追加している。演算コア82の動作の例は、図13で説明される。型変換部72は、型変換回路72A、72B、72Cを有する。型変換回路72Aは、16ビット(半精度)の浮動小数点数データFP16(以下、FP16)を32ビット(単精度)の浮動小数点数データFP32(以下、FP32)に変換する。型変換回路72Bは、16ビットの固定小数点数データINT16(以下、INT16)をFP32に変換する。型変換回路72Cは、FP32をINT16に変換する。
エッジSoC62は、第1の後処理演算装置および演算処理装置の一例であり、演算コア82は、第1の後処理演算部の一例である。型変換回路72Aは、第1の後処理変換部の一例であり、型変換回路72Cは、第2の後処理変換部の一例である。
センサSoC20Aの演算コア40Aは、FP32用やFP64用(64ビットの浮動小数点数データ)の演算器の代わりに、FP16用の演算器を有しており、FP16を使用して特徴量データを抽出する。同様に、センサSoC20Bの演算コア40Bは、FP32用やFP64用の演算器の代わりに、FP16用の演算器を有しており、FP16を使用して特徴量データを抽出する。
これにより、FP32用やFP64用の演算器を有する場合に比べて演算コア40A、40Bの回路規模を小さくすることができ、センサSoC20A、20Bのチップサイズを小さくすることができる。また、FP32やFP64を使用して特徴量データを抽出する場合に比べて、処理時間を削減でき、使用するメモリ領域を削減でき、消費電力を削減できる。
なお、各演算コア40A、40Bは、FP32用またはFP64用の演算器を有し、SIMD(Single Instruction Multiple Data)命令を使用して、複数のFP16の演算を並列に実行してもよい。センサSoC20Cの演算コア40Cは、FP32用の演算器を有しており、FP32を使用して特徴量データを抽出する。
図11は、図10の型変換部72の一例を示す。型変換部72は、キュー720、型変換回路722、724、726、728、730、732、加算器734、セレクタ735、736、737、738、739およびインバータINVを有する。クロック入力を示す三角形を含む矩形は、ラッチを示す。型変換部72は、キュー720の先頭から順次取り出されるデータdata(特徴量データ)のデータ型をモード信号modeに応じて変換し、データdata_oとして出力する機能を有する。
各信号名の後に付したかぎ括弧内の数値および信号線に付した”/”の後の数値は、信号のビット数を示す。”1’b0”は、2進表現での1ビット=”0”を示し、”1’b1”は、2進表現での1ビット=”1”を示す。”16’h0000”は、16進表現での16ビット(オールゼロ)を示し、”32’h0000_0004”は、16進表現での32ビット(=4)を示す。
キュー720は、バリッド信号valid_i、モード信号mode_i、アドレス信号adrs_iおよびデータdata_iを保持する複数のエントリを有する。バリッド信号valid_iは、モード信号mode_i、アドレス信号adrs_iおよびデータdata_iが有効であるか否かを示す。モード信号mode_iは、型変換の仕様を示し、第1の仕様情報および第2の仕様情報の一例である。アドレス信号adrs_iは、データ型を変換したデータdata_oの転送先を示す。データdata_iは、データ型が変換される前の特徴量データを示す。キュー720は、読み出し信号が有効状態(=”1”)の場合、図示しない読み出しポインタを更新する。
図12は、図11の型変換部72によるデータdataの型変換仕様の一例を示す。モード信号mode_i=”0”は、2つのFP16から2つのFP32への変換を示す。変換により生成された2つのFP32は、2クロックサイクルに分けて出力される。モード信号mode_i=”1”は、2つのINT16から2つのFP32への変換を示す。変換により生成された2つのFP32は、2クロックサイクルに分けて出力される。モード信号mode_i=”2”は、FP32を変換せずに出力することを示す。
モード信号mode_i=”3”は、FP32からFP16への変換を示す。変換により生成されたFP16が出力されるデータdata_oの上位16ビットは”0”で埋められる。モード信号mode_i=”4”は、FP32からINT16への変換を示す。変換により生成されたINT16が出力されるデータdata_oの上位16ビットは”0”で埋められる。以下では、型変換のモードは、モード信号mode_iの値に対応させて、モード0、モード1、モード2、モード3、モード4と称される。例えば、モード0は、FP16からFP32への変換を示し、モード4は、FP32からINT16への変換を示す。
図11に戻って、各型変換回路722、724、726、728、730、732は、クロックサイクル毎に動作し、バリッド信号validが有効か無効かを問わず、データ線data上のデータdataのデータ型を変換する。セレクタ735は、モード信号modeで示されるモード応じて選択した値を読み出し信号としてキュー720に出力する。型変換回路722、730は、図10の型変換回路72Aに対応し、型変換回路724、732は、図10の型変換回路72Bに対応する。型変換回路728は、図10の型変換回路72Cに対応する。
セレクタ735は、モード0、1では、クロックサイクルに応じて論理が反転するサイクル信号p_2nd_cycleを読み出し信号として出力する。モード0、1では、読み出し信号は、最初のサイクルで”0”に設定され(読み出しポインタの更新なし)、インバータINVを介して論理が反転された読み出し信号により、次のサイクルで”1”に設定される(読み出しポインタを更新)。このため、モード0(またはモード1)では、最初のサイクルでキュー720から読み出された2つのFP16(または2つのINT16)が2クロックサイクルで2つのFP32に変換される。
一方、セレクタ735は、モード2、3、4では、読み出し信号を、クロックサイクルにかかわらず”1”に固定し、クロックサイクル毎に読み出しポインタを更新する。なお、モード2、3、4では、クロックサイクル毎にデータdataのデータ型が変換されるため、サイクル信号p_2nd_cycleは、クロックサイクル毎に初期化され、”0”に維持される。
型変換回路722は、データdataの下位16ビットで示されるFP16をFP32に変換する。型変換回路724は、データdataの下位16ビットで示されるINT16をFP32に変換する。型変換回路726は、データdata(FP32)をFP16に変換し、下位16ビットに出力する。型変換回路728は、データdata(FP32)をINT16に変換し、下位16ビットに出力する。型変換回路730は、データdataの上位16ビットで示されるFP16をFP32に変換する。型変換回路732は、データdataの上位16ビットで示されるINT16をFP32に変換する。
セレクタ736は、モード信号modeで示されるモードに応じて型変換回路722、724、726、728のいずれかの出力またはデータdataを選択する。セレクタ737は、モード信号modeで示されるモードに応じて型変換回路730、732のいずれかの出力またはオール0を選択する。
セレクタ738は、サイクル信号p_2nd_cycleが”0”のとき、セレクタ736の出力を選択し、サイクル信号p_2nd_cycleが”1”のとき、セレクタ737の出力を選択する。すなわち、サイクル信号p_2nd_cycleが”0”のとき、下位16ビットのFP16(またはINT16)から変換されたFP32か、元のFP32か、またはFP32から変換されたFP16(またはINT16)かが、データdata_oとして選択される。サイクル信号p_2nd_cycleが”1”のとき、上位16ビットのFP16(またはINT16)から変換されたFP32か、またはオール0かが、データdata_oとして選択される。
セレクタ739は、サイクル信号p_2nd_cycleが”0”のとき、キュー720から出力されるアドレス信号adrsをアドレス信号adrs_oとして出力する。セレクタ739は、サイクル信号p_2nd_cycleが”1”のとき、加算器734から出力されるアドレス信号adrs+4をアドレス信号adrs_oとして出力する。すなわち、サイクル信号p_2nd_cycleが”1”で、上位16ビットのFP16(またはINT16)から変換されたFP32が、データdata_oとして出力される場合、アドレス信号adrs_oは、4バイトの領域分更新される。これにより、2つのFP16または2つのINT16から変換された2つのFP32が、重複したメモリ領域に格納されることを抑止することができる。なお、バリッド信号valid_iは、バリッド信号valid_oとしてそのまま出力され、モード信号mode_iは、モード信号mode_oとしてそのまま出力される。
型変換部72から出力される32ビットのデータdata_oは、図10に示すメモリ90に書き込まれた後、演算コア82により読み出され、図13で説明するように、正規化処理または識別処理に使用される。
図13は、図10の情報処理装置102がマルチモーダルDNNによる推論処理を実行する場合の動作フローの一例を示す。すなわち、図13は、情報処理装置102の制御方法の一例を示す。図7Aおよび図7Bと同様の動作については詳細な説明は省略する。センサSoC3(すなわち、センサSoC20C)の動作は、図7Aおよび図7Bと同じであるため省略する。なお、情報処理装置102は、センサSoC3を持たなくてもよい。例えば、図13に示す動作は、情報処理装置102が、マルチモーダルDNNの推論処理によるサービスの要求をユーザーから受けたことに基づいて、推論処理が完了するまで繰り返し実行される。
この実施形態では、センサSoC1(すなわち、センサSoC20A)は、ステップS102での畳み込み層での処理CをFP16のデータを使用して実行する。センサSoC2(すなわち、センサSoC20B)は、ステップS202でのLSTMでの処理LをFP16のデータを使用して実行する。畳み込み処理およびLSTMの処理を、FP16を使用して実行することで、FP32を使用する場合に比べて、演算効率および電力効率を向上することができる。すなわち、FP32を使用する場合に比べて、特徴量データの抽出を、短時間かつ少ない電力で実行することができる。センサSoC3は、全結合層での処理F2をINT16のデータを使用して実行する。
なお、畳み込み処理およびLSTMの処理は、INT16やINT8(8ビットの固定小数点数データ)を使用して実行されてもよい。この場合、推論用に特化したセンサSoC1、SoC2の演算コア40A、40Bは、INT16用の演算コアやINT8用の演算コアの実装により、チップサイズを小さくし、消費電力を抑えることができる。INT8を使用する場合、型変換部72には、INT8をINT32に変換する型変換回路が設けられる。
エッジSoCの演算コア82(図10)は、図7Aおよび図7BのステップS401−S405と同様に、各センサSoCからの完了通知を待ち、完了通知の発行元のセンサSoCにデータ転送要求を出力する。センサSoC1は、データ転送要求に基づいて、メモリ55Aが保持する特徴量データ(FP16)を、バリッド信号valid_i=1、モード信号mode_i=0およびアドレス信号adrs_iとともにメモリ90に向けて出力する。センサSoC2は、データ転送要求に基づいて、メモリ55Bが保持する特徴量データ(FP16)を、バリッド信号valid_i=1、モード信号mode_i=0およびアドレス信号adrs_iとともにメモリ90に向けて出力する。センサSoC3は、データ転送要求に基づいて、メモリ55Cが保持する特徴量データ(FP32)を、バリッド信号valid_i=1、モード信号mode_i=2およびアドレス信号adrs_iとともにメモリ90に向けて出力する。モード信号mode_i=0は、FP16からFP32への変換を示し、モード信号mode_i=2は、FP32を変換せずにFP32として出力することを示す。
型変換部72は、センサSoC1、SoC2からメモリ90に転送される特徴量データをモード信号mode_i等とともに受信した場合、ステップS410において、FP16の特徴量データをFP32に変換する処理(型変換0)を実行する。型変換部72は、FP32に変換した特徴量データ(data_o)を、バリッド信号valid_o=1およびアドレス信号adrs_oとともにメモリ90に出力し、特徴量データをメモリ90に記憶させる。なお、センサSoC3からメモリ90に転送される特徴量データをモード信号mode_i=2とともに受信した場合、特徴量データのデータ型を変換することなくメモリ90に記憶させる。
次に、演算コア82は、ステップS412において、メモリ90が保持する変換後のFP32の特徴量データを使用して、正規化層による正規化処理F1を実行し、正規化された特徴量データをメモリ90に記憶させる。また、演算コア82は、正規化した特徴量江データ(FP32)をINT16に変換するためのモード信号mode_i=4を生成し、正規化した特徴量データとともにメモリ90に記憶させる。例えば、正規化層としてLRN(Local Response Normalization)層やBatch Normalization層が使用されてもよい。
正規化層は、DNNの学習処理の収束速度を向上させる効果や、DNNの認識精度を向上させる効果がある。一方、正規化層の処理は、除算や指数関数による演算が含まれるため、FP16等のビット幅の少ないデータ形式を使用する場合、計算誤差への影響が大きくなり、DNNの認識精度が低下するおそれがある。このため、DNNの認識精度の悪化を抑止するために、正規化層の処理は、FP32やFP64(64ビットの浮動小数点数データ)を使用することが望ましい。
但し、認識精度の低下を抑止するため、正規化に適したデータのビット幅に合わせて、センサSoCにより畳み込み処理等の他の処理を実行する場合、処理時間が長くなり、電力も増加してしまう。この実施形態では、正規化処理のみFP32を使用することで、認識精度の低下を抑止することができる。
次に、型変換部72は、ステップS414において、メモリ90が保持する正規化処理後のFP32の特徴量データを、メモリ90が保持するモード信号mode_i=4に基づいてINT16に変換する処理(型変換4)を実行する。例えば、型変換部72への変換指示(モード信号mode_i、アドレス信号adrs_i等)は、型変換するデータとともに、正規化処理を実行する演算コア82によりメモリ90に書き込まれる。演算コア82によりモード信号mode_i等の変換指示を生成することで、センサSoCからの特徴量データを型変換する型変換部72を使用して、正規化後の特徴量データの型変換を実行することができる。
INT16に変換された特徴量データは、アドレス信号adrs_oにしたがってメモリ90に格納される。次に、演算コア82は、ステップS406において、図7Bと同様に、メモリ90に保持された正規化後のINT16の特徴量データを使用して全結合層による識別処理F2を実行し、得られた識別結果をメモリ90に記憶させる。
次に、演算コア82は、ステップS408において、図7Bと同様に、メモリ90に保持された識別結果を入力とするアプリケーションを実行し、各種サービスの処理を実行し、または、アクチュエータ等の制御機器を制御する処理を実行する。そして、1サイクルにおけるマルチモーダルDNNの推論処理の実行が終了する。
エッジSoC62が型変換部72を持たない場合、データの型変換は、演算コア82で実行される。この場合、型変換の実行中は、全結合層による演算処理等を実行できず、演算コア82の処理効率が低下する。そこで、この実施形態では、I/Oコントローラ70と演算コア82との間のデータ転送経路上に、データの型変換を実行する専用の型変換部72を設けることで、型変換による負荷が演算コア82に掛かることを抑止している(型変換オーバーヘッドの隠蔽)。これにより、演算コア82は、全結合層による識別処理に専念することができる。また、型変換部72は、セレクタ77とメモリ90との間に配置されるため、センサSoC1、SoC2から転送され、メモリ90に格納される前の特徴量データのデータ型を変換することができる。この結果、メモリ90への転送頻度を削減することができる。
以上により、特徴量データの抽出処理をFP16により実行し、正規化層の処理をFP32により実行することで、演算効率および電力効率を向上させつつ、推論処理の処理時間を低減することができ、DNNの認識精度の悪化を抑止することができる。さらに、正規化処理の結果をINT16に変換後、全結合層による識別処理を実行することで、識別処理の演算効率および電力効率を向上することができる。
また、特徴量データの抽出処理および全結合層による識別処理を16ビットのデータ表現を用いて実行することで、処理に使用するメモリ領域を削減することができる。なお、学習済みDNNを使用した推論処理では、FP16またはINT16等のビット幅の小さいデータ表現を用いても、演算結果の誤差がDNNの認識精度に及ぼす影響は小さい。
専用の型変換部72を設けることで、データの型変換をセンサSoC20による処理およびエッジSoC60による処理と並行して実行することができるため、型変換オーバーヘッドを隠蔽することができる。この結果、データ表現の最適化によるDNNの推論処理の性能向上とDNNの認識精度の向上とを両立することができる。
以上、図10から図13に示す実施形態においても、図1から図9に示す実施形態と同様の効果を得ることができる。さらに、図10から図13に示す実施形態では、特徴量データの抽出処理をFP16により実行し、正規化層の処理をFP32により実行し、全結合層による識別処理をINT16により実行する。これにより、演算効率および電力効率を向上させつつ、推論処理のトータルの処理時間を低減することができ、DNNの認識精度の悪化を抑止することができる。また、特徴量データの抽出処理および全結合層による識別処理に使用するメモリ領域を削減することができる。
専用の型変換部72を設けることで、データの型変換をセンサSoC20による処理およびエッジSoC60による処理と並行して実行することができるため、型変換オーバーヘッドを隠蔽することができる。この結果、データ表現の最適化によるDNNの推論処理の性能向上とDNNの認識精度の向上とを両立することができる。演算コア82によりモード信号mode_i等の変換指示を生成することで、センサSoCからの特徴量データを型変換する型変換部72を使用して、正規化後の特徴量データの型変換を実行することができる。
図14は、別の実施形態における情報処理装置の一例を示す。図2および図10と同様の要素については、詳細な説明は省略する。図14に示す情報処理装置103は、図10に示すセレクタ77の代わりにセレクタ78を有すること、および図10に示すエッジSoC62の代わりにエッジSoC63、64を有することを除き、図10に示す情報処理装置102と同様である。エッジSoC63、64は、セレクタ78およびメモリ90、94とともに情報処理装置103のマザーボードBRDに実装される。情報処理装置103は、図10に示す情報処理装置102と同様に、マルチモーダルDNNの推論処理を実行する。
セレクタ78は、図10に示すセレクタ77の機能に加えて、I/Oコントローラ70の出力をエッジSoC64の入力に接続する機能を有する。エッジSoC63は、演算コア82の代わりに演算コア83を有することを除き、図10に示すエッジSoC62と同様の機能を有する。エッジSoC63は、第1の後処理演算装置および演算処理装置の一例である。演算コア83は、FP32の特徴量データを正規化する正規化層用にアーキテクチャが最適化されていることを除き、図10に示す演算コア82と同様の機能を有する。図10で説明したように、型変換部72は、FP16をFP32に変換する機能と、INT16をFP32に変換する機能と、FP32をINT16に変換する機能とを有する。
エッジSoC64は、バス69を介して互いに接続されたI/Oコントローラ71、演算コア84および通信インタフェース86を有する。バス69には、メモリ94が接続される。メモリ94は、メモリ90と同様に主記憶装置を含む。I/Oコントローラ71は、I/Oコントローラ70から転送される正規化後の特徴量データをメモリ94に記憶させる機能を有する。演算コア84は、正規化された特徴量データに対するDNNの識別処理用にアーキテクチャが最適化されていることを除き、図10に示す演算コア82と同様の機能を有する。通信インタフェース86は、通信インタフェース85と同様の機能を有する。エッジSoC64は、第2の後処理演算装置および演算処理装置の一例であり、I/Oコントローラ71は、第2の入力部の一例である。演算コア84は、第2の後処理演算部の一例であり、メモリ94は、第2の記憶部の一例である。
図15Aおよび図15Bは、図14の情報処理装置103がマルチモーダルDNNによる推論処理を実行する場合の動作フローの一例を示す。すなわち、図15Aおよび図15Bは、情報処理装置103の制御方法の一例を示す。図7A、図7Bおよび図13と同じ動作については詳細な説明は省略する。センサSoC3(すなわち、センサSoC20C)の動作は、図7Aおよび図7Bと同じであるため省略する。なお、情報処理装置103は、センサSoC3を持たなくてもよい。例えば、図15Aおよび図15Bに示す動作は、情報処理装置103が、マルチモーダルDNNの推論処理によるサービスの要求をユーザーから受けたことに基づいて、推論処理が完了するまで繰り返し実行される。センサSoC1(すなわち、センサSoC20A)の動作およびセンサSoC2(すなわち、センサSoC20B)の動作は、図13と同様である。
エッジSoC63の動作は、図13に示すエッジSoC62の動作からステップS406、S408が削除され、新たにステップS416の動作が追加されている。すなわち、型変換部72は、ステップS410において、センサSoC20A、20Bから転送されるFP16の特徴量データをFP32の特徴量データに変換し、メモリ90に格納する。演算コア83は、ステップS412において、メモリ90に保持されたFP32の特徴量データを使用して正規化層による正規化処理を実行する。
演算コア83は、正規化処理の完了後、完了通知をエッジSoC64の演算コア84に発行する。完了通知は、I/Oコントローラ70、セレクタ78およびI/Oコントローラ71を介して送信されてよく、通信インタフェース85、86を介して送信されてもよい。エッジSoC64の演算コア84は、ステップS502において、演算コア83からの完了通知を待ち、完了通知を受信した場合、エッジSoC63にデータ転送要求を発行し、動作をステップS506に移行する。
エッジSoC63の演算コア83は、演算コア84からデータ転送要求を受信した場合、正規化後の特徴量データのデータ型を変換させる指示(モード信号mode_i、アドレス信号adrs_i等)を生成し、型変換部72に発行する。なお、型変換部72への指示は、演算コア83が実行する制御プログラムによる制御により実行されてもよく、エッジSoC63が有するコントローラ(ハードウェア)により実行されてもよい。
型変換部72は、ステップS414において、メモリ90に格納された正規化処理後のFP32の特徴量データを読み出し、INT16の特徴量データに変換し、変換した特徴量データをI/Oコントローラ70に転送する。ステップS416において、I/Oコントローラ70は、型変換部72から転送される正規化後の特徴量データ(INT16)をエッジSoC64に転送する。エッジSoC64に転送された正規化後の特徴量データは、メモリ94に格納される。
正規化後の特徴量データがメモリ94に格納された後、演算コア84は、ステップS506、S508を順次実行する。ステップS506の処理は、図13に示すステップS406の処理と同じであり、ステップS508の処理は、図13に示すステップS408の処理と同じである。そして、当該動作サイクルにおけるマルチモーダルDNNの推論処理の実行が終了する。
以上、図14から図15Bに示す実施形態においても、図1から図13に示す実施形態と同様の効果を得ることができる。さらに、図14および図15Bに示す実施形態では、情報処理装置103は、正規化層による正規化処理を実行するためにアーキテクチャを最適化した演算コア83と、全結合層による識別処理を実行するためにアーキテクチャを最適化した演算コア84とを有する。これにより、図10に示す情報処理装置102に比べて、正規化処理および識別処理の処理効率を向上することができ、処理時間を短縮することができる。
図16は、別の実施形態における情報処理装置の一例を示す。図2および図10と同様の要素については、同じ符号を付し、詳細な説明は省略する。図16に示す情報処理装置104は、図10に示すセンサSoC20Aに、バス21Aに接続された圧縮部56を追加している。圧縮部56は第1の圧縮部の一例である。センサSoC20Aの圧縮部56は、演算コア40Aが抽出した画像データの特徴量データの情報量を圧縮する機能を有する。圧縮部56の例は、図18から図24で説明する。情報処理装置104は、図2のジャイロセンサ10CおよびセンサSoC20Cを持たない。
また、情報処理装置104のエッジSoC63は、図10に示す型変換部72の代わりにバス61に接続された疎行列演算部74(復号回路)を有する。エッジSoC63は、セレクタ77を介して、センサSoC20A、20Bから特徴量データを受信する。エッジSoC63の疎行列演算部74は、センサSoC20Aからメモリ90に転送される圧縮された特徴量データを復号する機能を有する。疎行列演算部74の例は、図25から図28で説明する。
情報処理装置104のその他の構成は、図10に示す情報処理装置102と同様である。情報処理装置104は、イメージセンサ10Aが計測する画層データとマイクロフォン10Bが計測する音声データとを用いて、図10に示す情報処理装置102と同様に、マルチモーダルDNNの推論処理を実行する。
図17は、図16のセンサSoC20A、20Bが、特徴量データを抽出する毎に出力する特徴量データのデータ数の一例を示す。例えば、センサSoC20A、20Bによる特徴量データの抽出は、イメージセンサ10Aが画像データを取得する毎に実行される(例えば、1秒間に30回程度)。図7Aおよび図7Bの説明と同様に、特徴量データを抽出して識別処理を実行する期間は、動作サイクルと称される。センサSoC20Aは、演算コア40Aが動作サイクル毎に抽出する2048個の特徴量データを、圧縮部56を使用して1024個に圧縮し、エッジSoC63に向けて出力する。センサSoC20Bは、演算コア40Bが動作サイクル毎に抽出する1024個の特徴量データを、エッジSoC63に向けて出力する。センサSoC20A、20Bが抽出する特徴量データの数の合計は、3072個であり、センサSoC20A、20BがエッジSoC63に出力する特徴量データの数の合計は、2048個である。
図18は、図16の圧縮部56の一例を示す。クロック入力を示す三角形を含む矩形は、ラッチを示す。圧縮部56は、データソート回路560、オフセットソート回路570および複数のパッキング回路580を有する。
圧縮部56は、クロックサイクル毎に、8個の特徴量データ(din0−din8)を4個の特徴量データ(outd0−outd3)に圧縮する(圧縮率=50%)。特徴量データoutd0−outd3は、圧縮済み特徴量データの一例である。特徴量データoutd0−outd3として出力されない4個の特徴量データは、切り捨てられるため、圧縮部56は、データを不可逆に圧縮することになる。図18では、説明を分かりやすくするために、8個のデータdinのうちの4個を選択的に出力する例を示す。しかしながら、入力するデータdinの数および出力するデータoutdの数は、データdinの数>データoutdの数であれば、図18に示す例に限定されない。例えば、データdinのデータ型は、FP32であるが、他のデータ型のデータdinが使用されてもよい。
データソート回路560は、クロックサイクル毎に、演算コア40Aが抽出した8個の特徴量データであるデータdin(din0−din7)と、データdinのデータソート回路560への入力位置を示すオフセットoft(oft0−oft7)とを受ける。オフセットoftは、データdinの配列の順序を定めるために、データdinに対応して付加され、番号が互いに同じデータdinとオフセットoftとがペアになる。なお、オフセットoftは、データソート回路560が、データdinを受ける端子に対応してデータdin毎に付加してもよい。オフセットoftは、配列情報の一例である。
データソート回路560は、予め指定された番号のオフセットoftに対応するデータdinと、他の7個のオフセットoftに対応する7個のデータdinのうち絶対値が大きい3個のデータdinとの4個をソートデータsd(sd0−sd3)として出力する。ソートデータsdは、ソートデータsdに対応するオフセットsoft(soft0−soft3)とともに出力される。
以下では、オフセットoft0が予め指定され、オフセットoft0に対応するデータdin0がソートデータsd0として常に出力されるとする。この場合、データソート回路560は、データdin0と、7個のデータdin1−din7のうち絶対値が大きい3個のデータdinとをソートデータsd(sd0−sd3)としてオフセットsoft(soft0−soft3)とともに出力する。オフセットソート回路570は、4個のソートデータsdをオフセットsoftが小さい順に並べ替え、ソートデータtmpd(tmpd0−tmpd3)およびオフセットtmpoft(tmpoft0−tmpoft3)として出力する。
パッキング回路580は、オフセットソート回路570が出力するソートデータtmpdにオフセットtmpoftの値を埋め込み、データout(out0−out3)として出力する。例えば、パッキング回路580は、浮動小数点数のtmpdの仮数部の下位3ビット(値が小さい側の3ビット)をオフセットtmpoftに置き換えたデータoutdを生成する。FP32のデータdin、sd、tmpdが、IEEE(The Institute of Electrical and Electronics Engineers)754のフォーマットで表現される場合、データtmpdの23ビットの仮数部の下位3ビットがオフセットtmpoftに置き換えられ、データoutdとして出力される。
図19は、図18のデータソート回路560の一例を示す。データソート回路560は、2つのデータの絶対値の大小を比較する複数の比較回路562を有する。各比較回路562は、データind0、ind1と、データind0、ind1に対応するオフセットinoft0、inoft1とを受け、データind0、ind1の絶対値の大小を比較する。
各比較回路562は、データind0、ind1の比較結果に基づいて、絶対値が大きいデータと、絶対値が大きいデータに対応するオフセットとを、データgdおよびオフセットgoftとして出力する。各比較回路562は、2つのデータの比較結果に基づいて、絶対値が小さいデータと、絶対値が小さいデータに対応するオフセットとを、データldおよびオフセットloftとして出力する。図19では、各比較回路562の上側からデータgdとオフセットgoftとが出力され、各比較回路562の下側からデータldとオフセットloftが出力される。
なお、データソート回路560は、常に選択されるデータdin0と、データdin0に対応するオフセットoft0を、比較回路562により比較することなく、ソートデータsd0およびオフセットsoft0として出力する。以上により、データソート回路560は、データdin0であるソートデータsd0と、絶対値が大きい順に並べられた3つのソートデータsd1−sd3とを、オフセットsoft0−3ともに出力する。ソートデータsd1−sd3の絶対値は、sd1>sd2>sd3の順に大きい(絶対値が等しい場合を含む)。
データdin0を常に選択することで、データdin0と他のデータdinとを比較する比較回路562を不要にすることができる。これにより、全てのデータdin0−din7を比較する場合に比べて、データソート回路560の回路規模を削減することができる。
なお、任意の番号のオフセットoftに対応するデータdinを絶対値の大きさに関係なく常に選択する場合、図18に示す圧縮部56は、初段のラッチとデータソート回路560との間に、図示しない入れ替え回路を有してもよい。入れ替え回路は、任意に指定されたオフセットoftと、指定されたオフセットoftに対応するデータdinとを、オフセットoft0とデータdin0としてデータソート回路560に供給する。例えば、オフセットoft2が指定された場合、オフセットoft2およびデータdin2がオフセットoft0およびデータdin0としてデータソート回路560に供給される。ラッチで受けるオフセットoft0およびデータdin0は、オフセットoft1およびデータdin1としてデータソート回路560に供給される。ラッチで受けるオフセットoft1およびデータdin1は、オフセットoft2およびデータdin2としてデータソート回路560に供給される。
図20は、図19の各比較回路562の動作の一例を示す。まず、ステップS10において、比較回路562は、入力されたデータind0、ind1の絶対値(abs)を比較する。比較回路562は、データind0の絶対値がデータind1の絶対値以上の場合、動作をステップS12に移行し、データind0の絶対値がデータind1の絶対値より小さい場合、動作をステップS14に移行する。
ステップS12において、比較回路562は、データind0をデータgdとして出力し、オフセットinoft0をオフセットgoftとして出力する。また、比較回路562は、データind1をデータldとして出力し、オフセットinoft1をオフセットloftとして出力し、比較動作を終了する。
ステップS14において、比較回路562は、データind1をデータgdとして出力し、オフセットinoft1をオフセットgoftとして出力する。また、比較回路562は、データind0をデータldとして出力し、オフセットinoft0をオフセットloftとして出力し、比較動作を終了する。
図21は、図18のオフセットソート回路570の一例を示す。オフセットソート回路570は、2つのオフセットの大小を比較する複数の比較回路572を有する。各比較回路572は、データind0、ind1と、データind0、ind1に対応するオフセットinoft0、inoft1とを受け、オフセットinoft0、inoft1の値の大小を比較する。
各比較回路572は、オフセットinoft0、inoft1の比較結果に基づいて、値が小さいオフセットと、値が小さいオフセットに対応するデータとを、オフセットloftおよびデータldとして出力する。また、各比較回路572は、オフセットinoft0、inoft1の比較結果に基づいて、値が大きいオフセットと、値が大きいオフセットに対応するデータとを、オフセットgoftおよびデータgdとして出力する。図21では、各比較回路572の上側からオフセットloftとデータldとが出力され、各比較回路572の下側からオフセットgoftとデータgdとが出力される。
なお、オフセットソート回路570は、常に選択することを指定されたデータdin0に対応するソートデータsd0とオフセットsoft0とを、比較回路572により比較することなく、ソートデータtmpd0およびオフセットtmpoft0として出力する。このため、オフセットソート回路570は、ソートデータsd0(=データdin0)であるソートデータtmpd0と、絶対値が大きいと判定された3つのソートデータtmpd1−tmpd3とを、オフセットtmpoftの値が小さい順に並べて出力する。オフセットtmpoftの値は、tmpoft0<tmpoft1<tmpoft2<tmpoft3の順で小さい。ソートデータsd0を常に選択することで、オフセットsoft0と他のオフセットsoftとを比較する比較回路572を不要にすることができる。これにより、全てのオフセットsoft0−soft3を比較する場合に比べて、オフセットソート回路570の回路規模を削減することができる。
図22は、図21の各比較回路572の動作の一例を示す。まず、ステップS20において、比較回路572は、入力されたオフセットinoft0、inoft1の大きさを比較する。比較回路572は、オフセットinoft0がオフセットinoft1以上の場合、動作をステップS22に移行し、オフセットinoft0がオフセットinoft1より小さい場合、動作をステップS24に移行する。
ステップS22において、比較回路572は、データind0をデータgdとして出力し、オフセットinoft0をオフセットgoftとして出力する。比較回路572は、データind1をデータldとして出力し、オフセットinoft1をオフセットloftとして出力し、比較動作を終了する。
ステップS24において、比較回路572は、データind1をデータgdとして出力し、オフセットinoft1をオフセットgoftとして出力する。また、比較回路572は、データind0をデータldとして出力し、オフセットinoft0をオフセットloftとして出力し、比較動作を終了する。
図23は、図18の圧縮部56による圧縮動作の一例を示す。図23では、説明を分かりやすくするため、14個の要素(特徴量データ)が8個に圧縮される例を示す。実際の例では、図17で説明したように、動作サイクル毎にセンサSoC20Aが生成する特徴量データの数は、2048個でもよい。特徴量データは、圧縮部56の構成に合わせて8個ずつサブ配列に分けられ、サブ配列毎に特徴量データ(din)の先頭側から順にオフセット0−7が割り当てられる。
インデックスxで識別される特徴量データは、動作サイクル毎に抽出された全ての特徴量データと配列内での位置とを示す。圧縮部56は、サブ配列毎に、先頭(オフセット=0)の特徴量データを選択する。また、圧縮部56は、サブ配列中の残りの7個の特徴量データのうち、絶対値が大きい3つを選択する。そして、圧縮部56は、配列毎に選択した4つの特徴量データをオフセットが小さい順に並べ替え、圧縮後の特徴量データとする。したがって、圧縮率は50%である。圧縮後の特徴量データは、インデックスxsprsにより識別される。この後、特徴量データにオフセットが埋め込まれ、サブ配列毎に、図18に示すデータoutd0−outd3として出力される。
図24は、図18の圧縮部56による圧縮動作の動作フローの一例を示す。なお、ステップS30、S32は、圧縮部56をFPGA等により実装する場合の条件設定を示している。圧縮部56のハードウェア(回路素子)がセンサSoC20Aに実装済みの場合、ステップS30、S32の動作は省略され、圧縮動作は、ステップS34から開始される。
ステップS30において、圧縮部56を構成する条件として、オフセットのビット数Kが設定され、圧縮前の特徴量データdinの要素数Nが設定される。また、圧縮部56を構成する条件として、圧縮後の特徴量データoutdの要素数Lが設定され、常に選択する特徴量データに対応するオフセット番号Yが設定され、圧縮する特徴量データ(配列)が設定される。図23に示す例では、ビット数K=3、要素数N=14、要素数L=8、オフセット番号Y=0が設定される。また、図17に示すセンサSoC20Aの例では、ビット数K=3、要素数N=2048、要素数L=1024、オフセット番号Y=0が設定される。
次に、ステップS32において、圧縮部56を構成する条件として、圧縮する特徴量データのサブ配列の要素数S(=8)が、2Kを演算することで算出され、式(4)により、圧縮後の特徴量データの要素数D(=4)が算出される。
ceil(N/S)==ceil(L/D) …(4)
式(4)において、”ceil”は、切り上げた整数を示す。
そして、ステップS34から特徴量データの圧縮動作が実行される。ステップS34において、圧縮部56は、特徴量データをceil(N/S)個のサブ配列に分ける。次に、ステップS36において、圧縮部56は、サブ配列毎にステップS361−S364を実行する。
ステップS361において、圧縮部56は、圧縮処理の対象のサブ配列中のS個の特徴量データにオフセットを割り当てる。次に、ステップS362において、圧縮部56は、オフセット番号=Yの特徴量データを選択し、残りのS−1個の特徴量データの中から、絶対値の大きい順にD−1個の特徴量データを選択する。次に、ステップS363において、圧縮部56は、選択したD個の特徴量データをオフセット番号順に並び替える。次に、ステップS364において、圧縮部56は、選択した特徴量データの各々にオフセット値を埋め込む。そして、ステップS361からS364が繰り返されることで、圧縮対象の全てのサブ配列中の特徴量データが圧縮される。圧縮後の特徴量データは、インデックスxsprsにより識別される。
図25は、図16の疎行列演算部74の一例を示す。疎行列演算部74は、キュー741、ノアゲート742、加算器743、セレクタ744、乗算器745、加算器746、積和演算器747および複数のラッチを有する。キュー741、ノアゲート742、加算器743、セレクタ744、乗算器745、加算器746は、特徴量データの復号処理を実行する復号回路として機能する。積和演算器747は、復号された特徴量データに基づいて、図3で説明した識別処理F2を実行する。
キュー741は、センサSoC20Aから転送される圧縮後の特徴量データ(xsprs)を保持する複数のエントリを有し、キュー741に保持した順に特徴量データを出力する。キュー741から出力される32ビットの特徴量データは、仮数部の下位3ビットに埋め込まれたオフセットと、仮数部の下位3ビットが欠落した29ビットの浮動小数点数の特徴量データに分離される。3ビットのオフセットは、ノアゲート742と加算器746に供給される。29ビットの特徴量データの仮数部の下位3ビットには、”3’b000”で示す2進数の”000”が追加され、32ビットの浮動小数点数FP32が復号される。なお、図23で説明したように、圧縮後の特徴量データに対応するオフセットは、飛び飛びの値を取り得る。
ノアゲート742は、オフセットの値が”0”の場合、論理1をセレクタ744に出力し、オフセットの値が”0”以外の場合、論理0をセレクタ744に出力する。加算器743の入力に接続されたラッチは、動作サイクル毎にオール1に初期化される。加算器743およびセレクタ744は、キュー741からオフセット=”0”が出力される毎にカウントアップするカウンタとして機能し、ノアゲート742の出力は、カウンタをカウントアップするインクリメント信号として機能する。セレクタ744は、サブ配列を識別するサブ配列番号を出力する。換言すれば、加算器743の入力に接続されたラッチが出力する変数jは、サブ配列番号を示す。なお、サブ配列は、特徴量データだけでなく、特徴量データに対応する重みデータの配列としても使用される。
乗算器745は、セレクタ744から出力される値に、サブ配列の要素数である”8”を乗じて、加算器746に出力する。加算器746は、乗算器745の出力値にオフセット値を加算することで、サブ配列中の復号された特徴量データに対応してメモリ90内に保持された重みを識別する重みインデックスを生成する。すなわち、オフセットが飛び飛びの値を取る場合にも、特徴量データに対応する重みWを識別する重みインデックスが生成されることで、各特徴量データの復号処理を完了することができる。なお、重みインデックスは、演算対象の重みWが格納された領域の識別に使用されるとともに、演算対象の特徴量データの識別に使用されてもよい。
疎行列演算部74は、演算に使用する重みWを識別する重みインデックスが特定できた場合、メモリ90にリード要求を発行し、メモリ90から重みWを取得する。積和演算器747(Fused Multiply-Add)は、特徴量データとメモリ90から取得した重みWとを乗じる。積和演算器747は、動作サイクルにおいて、キュー741から出力された復号された特徴量データと、重みインデックスに応じてメモリ90から読み出される重みWとの積を順次積算し、処理F2の演算結果としてメモリ90に格納する。
なお、積和演算器747の出力を受けるラッチは、積算結果を保持するアキュムレータとして機能し、動作サイクルの開始前に”0”に初期化される。アキュムレータが保持する積算値は、動作サイクルの完了時に式(5)に示す値になる。但し、式(5)において、圧縮処理により間引かれた特徴量データに対応する”i”の要素は、除外して演算される。
式(5)において、w[i]は、重みインデックスにより識別される重みWを示し、x[i]は、特徴量のインデックスにより識別される特徴量データを示す。
図26は、図16のエッジSoC63に接続されるメモリ90が保持する重み行列の一例を示す。重み行列は、動作サイクル毎に使用される2048個の重みWを保持する領域であって、重みインデックスにより識別される領域を有する。重みインデックスが飛び飛びの値を取ることで、重み行列中の一部の重みWが読み出される。
図27は、図25の疎行列演算部74による復号動作の一例を示す。図27では、圧縮率が50%の場合に、サブ配列毎に、復号前(すなわち、圧縮後)の4個の特徴量データを使用して、8個の特徴量データが復号される例が示される。例えば、各動作サイクルでは、256個のサブ配列に含まれる1024個の特徴量データから2048個の特徴量データが復号される。
疎行列演算部74は、復号前の特徴量データからオフセットを取り出し、オフセットを取り出した特徴量データを用いて特徴量データを復号する。疎行列演算部74は、取り出したオフセットの値に対応するインデックスxで識別されるメモリ90内の領域に、復号した特徴量データを格納する。この実施形態では、オフセット=0に対応する特徴量データが常に復号後の特徴量データとして含まれるため、オフセット=0により、特徴量データのサブ配列の繰り返しを判定することができる。
メモリ90において、復号した特徴量データを格納する領域には、動作サイクルの開始前に予め定数Zが書き込まれる。このため、復号した特徴量データを格納する領域は、復号処理の完了後、復号した特徴量データと定数Zとのいずれかを保持する。定数Zの値は任意であるが、特徴量データの圧縮時に特徴量データを選択する基準が、絶対値の大きい
順であるため、定数Zは、”0”とするのが妥当である。
DNNの推論処理では、復号後の特徴量データは、例えば、式(1)で示される全結合層(行列ベクトル積)に使用される。復号処理によって定数Zに置き換えられる特徴量データや、特徴量データに対応する重みWは、演算しなくてよい。そこで、特徴量データおよび重みWに対する演算およびメモリアクセスを省略することで、圧縮しない場合に比べて、エッジSoC63で実行する演算量を削減することができ、演算に要するクロックサイクル数を削減することができる。
なお、本実施形態では、定数Z(=0)に置き換えられた特徴量データは、処理F2による演算がスキップされるが、これは、復号された有効な特徴量データと重みWとの積と、定数Z(=0)と重みWの積(=0)とが積算されることと等価である。このため、演算量の制限がない場合、定数Z(=0)と重みWの積が演算されてもよい。
図28は、図25の疎行列演算部74による復号動作の動作フローの一例を示す。なお、ステップS40、S42は、疎行列演算部74が出力をFPGA等により実装する場合の条件設定を示している。疎行列演算部74のハードウェア(回路素子)がエッジSoC63に実装済みの場合、ステップS40、S42の動作は省略され、圧縮動作は、ステップS44から開始される。
ステップS40において、疎行列演算部74を構成する条件として、オフセットのビット数Kが設定され、圧縮前の特徴量データdinの要素数Nが設定される。また、疎行列演算部74を構成する条件として、圧縮後の特徴量データoutdの要素数Lが設定され、定数Zが設定され、復号する特徴量データxsprs(配列)が設定される。図27に示す復号動作では、ビット数K=3、要素数N=14、要素数L=8が設定される。また、図17に示す特徴量データの場合、ビット数K=3、要素数N=2048、要素数L=1024が設定される。
次に、ステップS42において、疎行列演算部74を構成する条件として、圧縮する特徴量データのサブ配列の要素数S(=8)が、2Kを演算することで算出され、式(6)により、復号前の特徴量データの要素数D(=4)が算出される。
D=L/ceil(N/S) ‥(6)
次に、ステップS44において、疎行列演算部74は、復号後の特徴量データの格納領域を定数Zで初期化する。例えば、格納領域は、2048個の特徴量データが格納できるようにメモリ90内に割り当てられる。疎行列演算部74は、ステップS46以降で使用する変数jを”−1”に初期化する。
次に、ステップS46において、疎行列演算部74は、L個の特徴量データを復号する動作サイクル毎にステップS461−S463を実行する。ステップS461において、疎行列演算部74は、例えば、図27に示す復号前の複数の特徴量データ(オフセットを含む)から、インデックスxsprs[i]に対応する特徴量データを取得する。次に、ステップS462において、疎行列演算部74は、オフセットが”0”の場合、変数jをインクリメントする。すなわち、疎行列演算部74は、サブ配列の境界を検出する毎に、変数jをインクリメントする。図25に示す疎行列演算部74では、変数jは、セレクタ744から出力される。
次に、ステップS463において、疎行列演算部74は、変数jとサブ配列の要素数Sとオフセットとを演算して復号後の特徴量データを識別するインデックスxを算出する。図25に示す疎行列演算部74では、インデックスxは、乗算器745および加算器746により算出される重みインデックスに等しい。そして、疎行列演算部74は、復号後の特徴量データにインデックスxを割り当てる。割り当てられたインデックスxは、図23の圧縮前のインデックスxに対応している。そして、ステップS461からS463が繰り返されることで、全てのサブ配列中の特徴量データが復号される。
この実施形態では、絶対値が相対的に小さく、圧縮時に間引かれた特徴量データは、復号後に定数Z(例えば、”0”)に置き換えられ、定数Zに置き換えられた特徴量データを使用する演算は、スキップされる。例えば、復号した特徴量データを使用して処理F2(全結合層)で実行される演算処理は、式(1)に示す行列ベクトル積であるため、絶対値が小さい特徴量データを”0”と見なしても処理F2の結果に与える影響は小さい。全結合層による処理だけでなく、畳み込み層による処理やLSTMの処理においても、絶対値が小さい特徴量データを”0”と見なして演算を実行しても処理結果に与える影響は小さい。したがって、DNNの最終的な識別結果に与える影響を抑えつつ、エッジSoC63で実行すべき演算量を削減することができる。また、センサSoC20AからエッジSoC63に転送するデータ量を削減することができ、メモリ90の使用量を削減することが出来る。
図29は、図16の情報処理装置104による特徴量データの圧縮および復号の概要を示す。図29において、斜線で示す矩形は、圧縮により間引かれて演算に使用されない特徴量データまたは演算に使用されない重みWを示す。したがって、斜線で示す特徴量データは、実際には存在しない。なお、後述する図30に示す実施形態において、センサSoC20Aが抽出する特徴量データをエッジSoC63により演算し、センサSoC20Bが抽出する特徴量データをエッジSoC63により演算する場合の動作の概要も図29と同様である。また、後述する図34において、センサSoC20Aが抽出する特徴量データをエッジSoC63により演算する場合の動作の概要も図29と同様である。
センサSoC20Aの圧縮部56は、N個の特徴量データx[1]−x[N]のうち、絶対値が大きい所定数の特徴量データを選択することで圧縮し、特徴量データxsprs[1]、[L]として、エッジSoC63に接続されたメモリ90に格納する。図示していないが、特徴量データxsprs[1]、[L]は、オフセットを含む。
疎行列演算部74は、メモリ90が保持する圧縮後の特徴量データxsprs[1]、[L]からオフセットを取り出し、特徴量データxsprs[1]、[L]を復号する。疎行列演算部74は、取り出したオフセットに基づいて、復号した特徴量データxsprs[1]、[L]に対応する重みW[j,2]、[j,N]をメモリ90から読み出す。疎行列演算部74の積和演算器747は、特徴量データxsprs[1]、[L]と重みW[j,2]、[j,N]との積和演算を実行し、実行結果をメモリ90に書き戻す。
以上、図16から図28に示す実施形態においても、図1から図9に示す実施形態と同様の効果を得ることができる。さらに、図16から図29に示す実施形態では、圧縮部56により、特徴量データを圧縮してエッジSoC63に転送することで、センサSoC20AとエッジSoC63との間でのデータ転送量を削減することができる。これにより、より多くのセンサ10の計測値を用いて、DNNの推論処理を実行することが可能になる。
また、圧縮により切り捨てられる特徴量データは、絶対値が他より小さいため、処理F2の結果に与える影響を小さくして、DNNの推論処理を実行することができる。したがって、DNNの最終的な識別結果に与える影響を抑えつつ、エッジSoC63で実行すべき演算量を削減することができ、演算に要するクロックサイクル数を削減することができる。また、特徴量データの数を減らすことで、メモリ90の使用量を削減することが出来る。
特徴量データの圧縮処理において、複数の特徴量データのうち、オフセットが同じ特徴量データを常に選択することで、オフセットを用いてサブ配列の境界を検出することができ、検出した境界に基づいて、特徴量データを復号することができる。この結果、常に選択されるオフセットを持たない場合に比べて、疎行列演算部74におけるサブ配列の境界を検出する回路を簡易にすることができ、疎行列演算部74の回路規模を削減することができる。
また、オフセットが同じ特徴量データを常に選択することで、データソート回路560およびオフセットソート回路570の回路規模を削減することができる。例えば、データdin0を常に選択することで、データdin0と他のデータdinとを比較する比較回路562を不要にすることができる。すなわち、全てのデータdin0−din7を比較する場合に比べて、データソート回路560の回路規模を削減することができる。ソートデータsd0を常に選択することで、オフセットsoft0と他のオフセットsoftとを比較する比較回路572を不要にすることができる。すなわち、全てのオフセットsoft0−soft3を比較する場合に比べて、オフセットソート回路570の回路規模を削減することができる。
図30は、別の実施形態における情報処理装置の一例を示す。図10および図16と同様の要素については、同じ符号を付し、詳細な説明は省略する。図30に示す情報処理装置105は、図16に示す圧縮部56の代わりに圧縮部57を有する。また、情報処理装置105は、バス21Bに接続された圧縮部57をセンサSoC20Bに追加し、図10に示すジャイロセンサ10CおよびセンサSoC20Cを有する。圧縮部57は、圧縮率を50%または25%のいずれかに選択可能である。例えば、センサSoC20Aの圧縮部57の圧縮率は25%に設定され、センサSoC20Bの圧縮部57の圧縮率は50%に設定される。
センサSoC20Bの圧縮部57は、演算コア40Bが抽出した音声データの特徴量データの情報量を圧縮する機能を有する。なお、センサSoC20Bは、圧縮部57の代わりに図16に示した圧縮部56を有してもよい。情報処理装置105のその他の構成は、図16に示す情報処理装置104と同様である。情報処理装置105は、図16に示す情報処理装置104と同様に、マルチモーダルDNNの推論処理を実行する。
図31は、図30のセンサSoCが、特徴量データを抽出する動作サイクル毎に出力する特徴量データのサイズの一例を示す。センサSoC20Aは、演算コア40Aが動作サイクル毎に抽出する2048個の特徴量データを、圧縮部57を使用して512個に圧縮し、エッジSoC63に向けて出力する(圧縮率=25%)。センサSoC20Bは、演算コア40Bが動作サイクル毎に抽出する1024個の特徴量データを、圧縮部57を使用して512個に圧縮し、エッジSoC63に向けて出力する(圧縮率=50%)。
センサSoC20Cは、演算コア40Cが動作サイクル毎に抽出する1024個の特徴量データを、エッジSoC63に向けて出力する。センサSoC20A、20B、20Cが抽出する特徴量データの数の合計は、3584個である。一方、センサSoC20A、20B、20CがエッジSoC63に出力する特徴量データの数の合計は、図17と同じ2048個である。すなわち、図29のエッジSoC63に転送される特徴量データの転送レートを、図16のエッジSoC63に転送される特徴量データの転送レートと等しくすることができる。
この実施形態では、センサSoC20Aの圧縮率を高め、センサSoC20Bに圧縮機能を追加することで、センサSoC20Cが追加される場合にも、エッジSoC63への特徴量データの転送レートが変化することを抑止することができる。すなわち、センサSoCの数が増え、推論に使用する特徴量データのサイズが増える場合にも、エッジSoC63へのデータ転送量の増加を抑えることができ、エッジSoC63での演算量の増加を抑えることができる。この結果、マルチモーダルDNNの推論処理の実行効率が低下することを抑止できる。
さらに、センサSoC20の圧縮率を可変にすることで、エッジSoC63に接続されるセンサSoC20の数に関わらず、エッジSoC63への特徴量データの転送レートを一定にすることができる。この結果、エッジSoC63の演算コア82のアーキテクチャに適合する最適なサイズの特徴量データを転送することができ、推論処理の実行効率を最適にでき、かつ、推論処理の実行時間を一定にすることができる。
図32は、図30の圧縮部57の一例を示す。図18に示す圧縮部56と同様の要素については同じ符号を付し、詳細な説明は省略する。圧縮部57は、データソート回路560とオフセットソート回路570の間に、セレクタ591、592を有する。セレクタ591は、モード信号MDCが論理0の場合、オフセットsoft2をオフセットソート回路570に供給し、モード信号MDCが論理1の場合、”3’b111”で示す2進数の”111”をオフセットソート回路570に供給する。セレクタ592は、モード信号MDCが論理0の場合、オフセットsoft3をオフセットソート回路570に供給し、モード信号MDCが論理1の場合、”3’b111”で示す2進数の”111”をオフセットソート回路570に供給する。
モード信号MDCは、8個の特徴量データから4つを選択する場合に論理0に設定され、8個の特徴量データから2つを選択する場合に論理1に設定される。すなわち、モード信号MDCは、圧縮率を50%にする場合、論理0に設定され、圧縮率を25%にする場合、論理1に設定される。センサSoC20Aの圧縮部57は、モード信号MDC=”1”を受け、圧縮率=25%で動作する。センサSoC20Bの圧縮部57は、モード信号MDC=”0”を受け、圧縮率=50%で動作する。なお、図16に示したセンサSoC20Aの圧縮部56の代わりに圧縮部57を実装し、モード信号MDC=”0”(圧縮率=50%)で動作させてもよい。
オフセットソート回路570は、モード信号MDCが論理1の場合、”3’b111”のオフセットsoft2、soft3を受ける。この場合、オフセットソート回路570は、ソートデータsd0、sd1をこの順にソートデータtmpd0、tmpd1として出力し、オフセットsoft0、soft1をこの順にオフセットtmpoft0、tmpoft1として出力する。また、オフセットソート回路570は、ソートデータsd2、sd3をソートデータtmpd2、tmpd3として出力し、オフセットsoft2、soft2をオフセットtmpoft2、tmpoft3として出力する。特徴量データoutd0、outd1は、圧縮済み特徴量データの一例である。これにより、圧縮部58の圧縮率を25%に設定することができる。
図33は、圧縮率が25%に固定された圧縮部58の例を示す。図18に示す圧縮部56と同様の要素については同じ符号を付し、詳細な説明は省略する。図32に示す圧縮部57が存在せず、センサSoC20Aに圧縮部58を実装する場合、センサSoC20Bには、図18に示す圧縮部56が実装される。
図33に示す圧縮部58は、オフセットソート回路570およびデータoutd2、outd3に対応するパッキング回路580を持たない。圧縮部58は、ソートデータsd0、sd1をこの順にソートデータtmpd0、tmpd1として常にパッキング回路580に出力する。また、圧縮部58は、オフセットsoft0、soft1をこの順にオフセットtmpoft0、tmpoft1としてパッキング回路580に出力する。これにより、圧縮部58の圧縮率を25%に設定することができる。
なお、図16に示す圧縮部56、図30に示す圧縮部57および図33に示す圧縮部58は、FPGA(Field Programmable Gate Array)等の再構成可能な要素を用いて実装されてもよい。この場合、圧縮部を実装するセンサSoCは、FPGAを有する。圧縮部で使用するパラメータ等が再設定される毎に論理を再構成することで、圧縮部56、57、58のいずれか1つまたは複数を実装することができる。これにより、共通のセンサSoC20を使用して、圧縮率や動作サイクル毎に抽出する特徴量データの数等を変更することができる。
以上、図30から図33に示す実施形態においても、図1から図9、図16から図28に示す実施形態と同様の効果を得ることができる。さらに、図30から図33に示す実施形態では、センサSoCの数が増減し、推論に使用する特徴量データのサイズが増減する場合にも、エッジSoC63へのデータ転送レートを一定にすることができ、エッジSoC63での演算量の増加を抑えることができる。この結果、マルチモーダルDNNの推論処理の実行効率が低下することを抑止できる。また、エッジSoC63の演算コア82のアーキテクチャに適合する最適なサイズの特徴量データを転送することができるため、推論処理の実行効率を最適にでき、かつ、推論処理の実行時間を一定にすることができる。
図34は、別の実施形態における情報処理装置の一例を示す。図16と同様の要素については、同じ符号を付し、詳細な説明は省略する。図34に示す情報処理装置106は、図16に示すセンサSoC20Aの圧縮部56の代わりに圧縮部59を有し、エッジSoC63の疎行列演算部74の代わりに疎行列演算部75を有する。情報処理装置106のその他の構成は、図16に示す情報処理装置104と同様である。情報処理装置106は、図16に示す情報処理装置104と同様に、マルチモーダルDNNの推論処理を実行する。
圧縮部59は、サブ配列毎に入力する全ての特徴量データの絶対値を比較し、絶対値の大きい順に所定数の特徴量データを選択する点が、図16に示す圧縮部56と相違する。すなわち、圧縮部59では、オフセット番号Y(=”0”)の指定により常に選択されるオフセットはない。このため、疎行列演算部75は、固定のオフセットを用いないでサブ配列の境界を検出する回路を含む。
センサSoC20Aは、抽出した特徴量データ(FP32)を圧縮部59により圧縮し、エッジSoC63に向けて転送する。センサSoC20Bは、抽出した特徴量データ(FP32)を圧縮することなく、エッジSoC63に向けて転送する。各センサSoC20A、20Bの特徴量データのサイズは、図17と同様である。
図35は、図34の圧縮部59の一例を示す。圧縮部59は、図18の圧縮部56のデータソート回路560の代わりにデータソート回路561を有し、図18の圧縮部56のオフセットソート回路570の代わりにオフセットソート回路571を有する。
図36は、図35のデータソート回路561の一例を示す。図19に示すデータソート回路560と同様の構成については、詳細な説明は省略する。データソート回路561は、図19に示すデータソート回路560に3つの比較回路563を追加している。比較回路563の構成は、比較回路562の構成と同じであり、比較回路563の動作は、図20に示す比較回路562の動作と同じである。
データソート回路561は、入力する全ての特徴量データ(din0−din7)の絶対値の大小を2つずつ比較し、絶対値の大きい4つの特徴量データをソートデータsd0−sd3としてオフセットsoft0−soft3とともに出力する。全ての特徴量データ(din0−din7)の絶対値を比較するため、データソート回路561の回路規模は、図19に示すデータソート回路560の回路規模より大きい。
図37は、図35のオフセットソート回路571の一例を示す。図21に示すオフセットソート回路570と同様の構成については、詳細な説明は省略する。オフセットソート回路571は、図21に示すオフセットソート回路571に2つの比較回路573を追加している。比較回路573の構成は、比較回路572の構成と同じであり、比較回路573の動作は、図22に示す比較回路572の動作と同じである。
オフセットソート回路571は、入力する全てのオフセットsoft0−soft3の値の大小を2つずつ比較し、ソートデータtmpd0−tmpd3を、オフセットtmpoftの値が小さい順に並べて出力する。全てのオフセットsoft0−soft3の値を比較するため、オフセットソート回路571の回路規模は、図21に示すオフセットソート回路570の回路規模より大きい。
図38は、図35の圧縮部59による圧縮動作の一例を示す。図23と同様の動作については、詳細な説明は省略する。図38では、図23と同様に、14個の要素(特徴量データ)が8個に圧縮される例を示す。
圧縮部59は、サブ配列中の8個の特徴量データのうち、絶対値が大きい4つを選択する。そして、圧縮部59は、配列毎に選択した4つの特徴量データをオフセットが小さい順に並べ替え、圧縮後の特徴量データとする。このため、最初のサブ配列において、図23では選択されたインデックスx[0]の特徴量データは選択されず、図23では選択されないインデックスx[3]の特徴データが選択される。2番目のサブ配列では、インデックスx[8]の特徴量データの絶対値が他の特徴量データより大きいため、図23に示す動作と同じ動作が実行される。
図39は、図35の圧縮部59による圧縮動作の動作フローの一例を示す。図24と同様の動作については、詳細な説明は省略する。圧縮部59の動作フローは、図24のステップS30の代わりにステップS30Aが実行され、図24のステップS362の代わりにステップS362Aが実行されることを除き、図24の動作フローと同様である。
ステップS30Aは、常に選択する特徴量データに対応するオフセット番号Yが設定されないことを除き、図24に示すステップS30と同様である。ステップS362Aでは、圧縮部59は、S個の特徴量データの中から、絶対値の大きい順にD個の特徴量データを選択する。
図40Aは、図34の疎行列演算部75の一例を示す。図25と同様の要素については、同じ符号を付し、詳細な説明は省略する。疎行列演算部75は、図25に示す疎行列演算部74のノアゲート742の代わりに、比較回路751、752、加算器753およびセレクタ754を有する。疎行列演算部75のその他の構成は、図25に示す疎行列演算部74と同様である。
比較回路751、752の入力に接続されるラッチは、3ビットの変数kを出力し、変数kは、4クロックサイクル毎に”0”に初期化される。比較回路751は、変数kが”0”の場合、論理1を出力し、変数kが”0”以外の場合、論理0を出力する。比較回路752は、変数kが”3”のとき、論理1を出力し、変数kが”3”以外のとき、論理0を出力する。
比較回路752、加算器753およびセレクタ754は、変数kが”3”以外のとき、変数kをインクリメントし、変数kが”3”のとき、変数kを”0”にリセットするカウンタとして動作する。これにより、オフセット=”0”を使用することなく、4個の要素を含む圧縮後のサブ配列の境界毎に、変数jをインクリメントすることができる。
図40Bは、図40Aの疎行列演算部75による復号動作の動作フローの一例を示す。図28と同様の動作については、詳細な説明は省略する。疎行列演算部75の動作フローは、図28のステップS44の代わりにステップS44Aが実行され、図28のステップS462の代わりにステップS462Aが実行され、図28のステップS463の後にステップS464Aが追加されることを除き、図28の動作フローと同様である。すなわち、ステップS46では、疎行列演算部75は、L個の特徴量データを復号する動作サイクル毎にステップS461、S462A、S463、S464Aを実行する。
ステップS44Aでは、図28のステップS44に、変数kを”0”に初期化する動作が追加される。ステップS462Aでは、疎行列演算部75は、変数kが”0”の場合、変数jをインクリメントする。すなわち、疎行列演算部75は、サブ配列の境界を検出する毎に、変数jをインクリメントする。ステップS464Aでは、疎行列演算部75は、変数kが”D−1”の場合、変数kを”0”にリセットし、変数kが”D−1”以外の場合、変数kをインクリメントする。そして、ステップS461からS464Aが繰り返されることで、全てのサブ配列中の特徴量データが復号される。
以上、図34から図40Bに示す実施形態においても、図1から図9、図16から図33に示す実施形態と同様の効果を得ることができる。さらに、図34から図39に示す実施形態では、センサSoC20で抽出されたサブ要素毎の8個の特徴量データのうち、絶対値が大きい4個の特徴量データを常に選択できる。このため、オフセット番号Yの特徴量データが常に選択される場合に比べて、識別処理F2の精度を向上することができる。
図41は、別の実施形態における情報処理装置の一例を示す。上述した実施形態と同様の要素および機能については、同じ符号を付し、詳細な説明は省略する。図41に示す情報処理装置107は、自動運転可能な車両200に実装されるイメージセンサ10A、マイクロフォン10B、ジャイロセンサ10CおよびセンサSoC20A、20B、20Cと、サーバ300に実装されたエッジSoC66を有する。例えば、サーバ300は、データセンターに設置される。なお、サーバ300は、クラウドコンピュータとして機能させてもよい。情報処理装置107は、マルチモーダルDNN推論システムとして機能する。車両200は、道路を走行する乗用車、トラック、バス等であるが、自動運転が可能な環境で走行する車両であれば、これらに限定されない。
車両200とサーバ300とは、無線通信等のデータ転送路を介して接続される。すなわち、センサSoC20A、20B、20Cは、車両に搭載される通信インタフェースを介して、無線でエッジSoC66に接続される。イメージセンサ10Aは、車両200の前方に設置され、マイクロフォン10Bは、運転席の近くに設置される。
センサSoC20Aは、イメージセンサ10Aが撮影した車両200の周囲の画像を、処理可能な画像データに変換する(処理S1)。センサSoC20Aは、変換した画像データの特徴量データを抽出し(処理C)、抽出した特徴量データを、セレクタ77を介してエッジSoC66に転送する(処理D1)。
センサSoC20Bは、マイクロフォン10Bが取得した運転者等のユーザーの音声を、処理可能な音声データに変換する(処理S2)。センサSoC20Bは、変換した音声データの特徴量データを抽出し(処理L)、抽出した特徴量データを、セレクタ77を介してエッジSoC66に転送する(処理D1)。
センサSoC20Cは、ジャイロセンサ10Cが取得した車両の加速度を処理可能な加速度データに変換し(処理S3)、変換した加速度データの特徴量データを抽出する(処理F1)。また、センサSoC20Cは、特徴量データを圧縮する圧縮部56を有しており、抽出した特徴量データを圧縮し(圧縮処理)、圧縮した特徴量データを、セレクタ77を介してエッジSoC66に転送する(処理D3)。
センサSoC20Aの構成は、図4と同様であり、センサSoC20Bの構成は、図5と同様である。センサSoC20Cの構成は、図6のセンサSoC20Cと同様であるが、バス21Cに圧縮部56が接続されることが図6と相違する。また、センサSoC20A、20B、20CおよびエッジSoC66による処理は、扱うデータのデータ型が異なることと、型変換処理、圧縮処理および復号処理が含まれることを除き、図3に示すマルチモーダルDNN推論システムによる処理と同様である。
エッジSoC66は、型変換部72と、復号回路76と、識別処理F2および処理A(アプリケーション)を実行する演算コア83(図示せず)とを有する。型変換部72は、センサSoC20A、20Bから転送される特徴量データ(FP16)をFP32に型変換する。復号回路76は、センサSoC20Cから転送される圧縮された特徴量データ(FP32)を復号する。例えば、復号回路76は、図25に示すキュー741、ノアゲート742、加算器743、セレクタ744、乗算器745、加算器746を有する。なお、エッジSoC66は、演算コア83の他に、図25に示す疎行列演算部74を持ち、加速度データから抽出されて圧縮された特徴量データの復号処理と処理F2の一部とを疎行列演算部74により実行してもよい。
図41の情報処理装置107は、車両200に乗っているユーザーによる音声の指示に基づいて、指示に対応した動作を実行する。以下では、一例として、ユーザーが”スーツケースを持っている人の前で止まって”と指示した場合について説明する。
音声での指示を受けた情報処理装置107は、イメージセンサ10Aによる撮影で得た画像データの中から、ユーザーが音声で指示した内容に合致する人物Pの検出処理(object detection)を実行する。画像データだけでなく音声データを用いることで検出対象(人物P)を音声で指示することができる。また、情報処理装置107は、ジャイロセンサ10Cが取得した加速度データを用いることで、車両200の揺れ等に起因する画像データのブレを補正しつつ、検出処理を実行することができる。
エッジSoC66は、画像データと加速度データとから抽出された特徴量データに基づいて識別処理F2を実行することにより、ユーザーから音声で指示された人物Pを画像データ中から検出し、その位置を特定する。そして、エッジSoC66は、識別処理F2の実行結果に基づいて処理Aを実行し、特定した人物Pの位置に基づいて、車両200を停止させる位置を示す情報を車両200に指示する。車両200への指示は、車両を停止させる位置情報だけでもよく、車両200のアクセル、ブレーキおよびステアリング等を制御する制御部への指示を含んでもよい。サーバ300から指示を受けた車両200は、指示にしたがって、例えば、車両200を、車道の端に寄せ、ユーザーが音声で指示した人物Pが居る位置で停止させる制御を実行する。
なお、車両200が空港等を走行し、スーツケースを持っている複数の人の中からチェックの青いジャケットを着ている人物Pの前で車両200を停止させたいとする。この場合、ユーザーは、例えば、”チェックの青いジャケットと着てスーツケースを持っている人の前で止まって”と指示することで、車両200を人物Pが居る場所で停止することができる。すなわち、この実施形態のマルチモーダルDNN推論システムでは、ユーザーは、マイクロフォン10Bを使って任意の特徴を指示することで、指示した特徴を有する人物Pの前に車両200を停止させることができる。また、建物の形状の特徴や色、あるいは看板の特徴等を指定することで、建物や任意の場所に車両200を停止させることもできる。
図42Aおよび図42Bは、図41の情報処理装置107がマルチモーダルDNNによる推論処理を実行する場合の動作フローの一例を示す。すなわち、図42Aおよび図42Bは、情報処理装置107の制御方法の一例を示す。図7A、図7Bおよび図13と同様の動作については、詳細な説明は省略する。マルチモーダルDNNの推論処理は、ユーザーが対象物(例えば、図41に示した人物P)の特徴と動作を音声で指示することにより開始される。図42Aおよび図42Bに示す動作は、ユーザーからの指示を受けた後、推論処理が完了するまで(すなわち、人物Pが居る位置で車両200が停止するまで)繰り返し実行される。
センサSoC20A、20Bの動作は、図7A、図7Bおよび図13に示すセンサSoC20A、20Bの動作と同様である。センサSoC20Cの動作は、ステップS302で特徴量データの抽出後、ステップS303で圧縮部56による圧縮処理が実行されることを除き、図7Aおよび図7Bに示すセンサSoC20Cの動作と同様である。
エッジSoC66は、センサSoC20Aから受信した画像の特徴量データ(FP16)をFP32に変換する動作を、ステップS412において型変換部72により実行する。また、エッジSoC66は、センサSoC20Bから受信した音声の特徴量データ(FP16)をFP32に変換する動作をステップS413で実行する。また、エッジSoC66は、センサSoC20Cから受信した加速度の特徴量データ(圧縮データ)を復号する動作を、ステップS414において復号回路76により実行する。エッジSoC66のその他の動作は、図7Aおよび図7BのエッジSoC60の動作と同様である。そして、エッジSoC66は、処理F2において、特徴量データを入力とする識別処理を実行し、その結果としてユーザーが音声で指示した人物Pを検出する。エッジSoC66は、処理Aでは、処理F2の結果に基づいて、車両200を車道の端に寄せた後、ユーザーが音声で指示した人物Pのところで停止するよう車両200を制御する。
なお、センサSoC20A、20Bの一方または両方は、特徴量データを圧縮する圧縮部を有してもよい。この場合、復号回路76は、センサSoC20Cで圧縮された特徴量データだけでなく、センサSoC20AまたはセンサSoC20Bで圧縮された特徴量データを復号する。また、エッジSoC66の型変換部72は、センサSoC20Cから転送される特徴量データの型を変換してもよい。
以上、図41から図42Bに示す実施形態においても、図1から図40Bに示す実施形態と同様の効果を得ることができる。さらに、図41から図42Bに示す実施形態では、センサSoC20A、20B、20Cを車両200に実装し、サーバ300と無線通信することで、マルチモーダルDNN推論システムを実現することができる。車両200に実装される部品数を少なくできるため、車両200のコストを削減することができる。例えば、より高精細なイメージセンサが開発された場合、センサSoC20Aのみを置き換えることで、認識精度を向上したマルチモーダルDNN推論システムを構築することができる。また、エッジSoC66の仕様を変更する場合にも、データセンターのサーバ300をバージョンアップすればよく、車両200の変更をしなくてよい。エッジSoC66の処理能力に余裕がある場合、複数の車両200に対する処理を並列に実行することができる。
図43は、別の実施形態における情報処理装置の一例を示す。上述した実施形態と同様の要素および機能については、同じ符号を付し、詳細な説明は省略する。図43に示す情報処理装置108は、スマートフォン等の携帯端末400に組み込まれるセンサSoC20D、20EおよびエッジSoC67を有し、マルチモーダルDNN推論システムとして機能する。携帯端末400は、加速度センサ10Dおよび無線LAN(Local Area Network)等の無線通信モジュール10Eを含む。加速度センサ10Dは、携帯端末400に掛かる加速度を計測する。計測された加速度データは、センサSoC20Dで処理可能なデータに変換される(処理S2)。無線通信モジュール10Eは、店舗等の屋内に設置された複数の無線アクセスポイント500と通信し、無線アクセスポイント500の無線信号の強度(以下、信号強度と称される)を計測する。計測された強度データは、センサSoC20Eで処理可能なデータに変換される(処理S3)。
センサSoC20Dは、加速度センサ10Dが計測により得た加速度データに対してLSTMによる処理L1を実行するLSTMブロックを有し、加速度データから特徴量データを抽出する。センサSoC20Dは、抽出した特徴量データをエッジSoC67に転送する処理D2を実行する。
センサSoC20Eは、無線通信モジュール10Eから得られる複数の無線アクセスポイントの信号強度を示す強度データに対して全結合層による処理F1を実行することで、強度データから特徴量データを抽出する。センサSoC20Eは、抽出した特徴量データをエッジSoC67に転送する処理D3を実行する。
エッジSoC67は、センサSoC20D、20Eから転送される特徴量データに基づく識別処理F2と、識別結果に基づく処理A(アプリケーション)とを実行する。識別処理F2では、加速度センサ10Dの動作に基づく特徴量データと、無線通信モジュール10Eの動作に基づく特徴量データとから携帯端末400の位置が推定される。エッジSoC67は、処理Aでは、店舗内での携帯端末400の推定位置に基づいて、ユーザーの近くに存在する商品に関する情報を携帯端末400に提示する。
近時、スマートフォン等の携帯端末400は、GPS(Global Positioning System)受信機を内蔵しており、GPSの電波を取得することで携帯端末400の位置を検出することができる。しかしながら、GPSの電波が届かない屋内では位置を検出することができない場合がある。この実施形態では、GPSの電波の届かない屋内においても、加速度データと無線の信号強度とに基づいて携帯端末400の位置を推定することができる。これにより、店舗内でのユーザーの位置を示す位置情報に基づいて、商品の購買を勧める等の様々なサービスを提供することができる。
加速度データおよび信号強度の両方を利用することで、加速度データまたは信号強度の一方のみを利用する場合に比べて、位置情報を高精度に推定することができる。また、携帯端末400およびアクセスポイント500以外の設備を追加することなく、位置情報を高精度に推定することができる。
なお、センサSoC20D、20Eの一方または両方は、特徴量データを圧縮する圧縮部を有してもよく、この場合、エッジSoC67は、圧縮された特徴量データを復号する復号回路を有する。圧縮部および復号回路の構成、機能および動作は、図18から図28、図32、図33、図35から図40Aに示す構成、機能および動作と同様である。また、エッジSoC67は、センサSoC20D、20Eの一方または両方から転送される特徴量データのデータ型を変換する型変換部を有してもよい。型変換部の構成および機能は、図11および図12に示す構成および機能と同様である。以上、図43に示す実施形態においても、図1から図40Bに示す実施形態と同様の効果を得ることができる。
図44は、別の実施形態における情報処理装置の一例を示す。上述した実施形態と同様の要素および機能については、同じ符号を付し、詳細な説明は省略する。図44に示す情報処理装置109は、田畑、果樹園または温室等に設置される複数の無線端末600の各々により実現される。各無線端末600は、センサSoC20F、20G、20HおよびエッジSoC68を有し、マルチモーダルDNN推論システムとして機能する。
各無線端末600は、無線端末600が内蔵するバッテリーにより動作し、温度センサ10F、湿度センサ11F、太陽電池モジュール10Gおよびバッテリー残量計10H等の複数のセンサを含む。各無線端末600は、屋内に設置されたホスト端末700との間で無線通信し、計測した温度および湿度を示す情報をホスト端末700に転送する。
ホスト端末700は、転送された温度および湿度を表示装置に表示するとともに、温度および湿度を監視し、温度および湿度に異常がある場合、アラーム等を出力する。複数個所での温度および湿度等の環境情報を数値化して表示装置に表示することで、作物の生育管理等を容易にすることができる。また、無線端末600が温室に設置される場合、ホスト端末700は、転送された温度および湿度の情報に基づいて、温室の窓の開閉、換気扇の動作または空調装置の制御等を実行する。このように、情報処理装置109により、いわゆるスマート農業を実現することができる。
温度センサ10Fは、無線端末600の周囲の温度を計測し、湿度センサ11Fは、無線端末600の周囲の湿度を計測する。計測された温度および湿度は、センサSoC20Fで処理可能なデータに変換される(処理S1)。太陽電池モジュール10Gは、太陽光を受けて発電し、発電した電力をバッテリーに供給するとともに、現在の出力電圧を示す電圧情報を生成する。電圧情報は、センサSoC20Gで処理可能なデータに変換される(処理S2)。バッテリー残量計10Hは、バッテリーの電力の残量を計測する。計測された電力の残量は、センサSoC20Hで処理可能なデータに変換される(処理S3)。
センサSoC20Fは、温度センサ10Fが計測により得た温度データおよび湿度センサ11Fが計測により得た湿度データに対してLSTMによる処理L1を実行するLSTMブロックを有し、温度データおよび湿度データから特徴量データを抽出する。センサSoC20Fは、抽出した特徴量データをエッジSoC68に転送する処理D1を実行する。
センサSoC20Gは、太陽電池モジュール10Gが出力する出力電圧データに対してLSTMによる処理L2を実行するLSTMブロックを有し、出力電圧データから特徴量データを抽出する。センサSoC20Gは、抽出した特徴量データをエッジSoC68に転送する処理D2を実行する。
センサSoC20Hは、バッテリー残量計10Hが出力する残量データに対して全結合層による処理F2を実行することで、残量データから特徴量データを抽出する。センサSoC20Hは、抽出した特徴量データをエッジSoC68に転送する処理D3を実行する。
エッジSoC68は、センサSoC20F、20G、20Hから転送される特徴量データに基づく識別処理F3と、識別結果に基づく処理A(アプリケーション)とを実行する。識別処理F3において、エッジSoC68は、センサSoC20Fからの温度と湿度の特徴量データに基づいて、計測した温度、湿度の重要度を判定する。例えば、温度または湿度の一方または両方が前回の計測された値から所定量以上変化している場合、重要度が高いと判定される。また、識別処理F3において、エッジSoC68は、太陽電池モジュール10Gからの出力電圧の特徴量データと、バッテリー残量計10Hからの残量データの特徴量データに基づいて、バッテリーの持続時間を推定する。
処理Aにおいて、エッジSoC68は、温度、湿度の重要度が高いほど、センシングの間隔およびホスト端末700との通信間隔を短くし、温度、湿度の重要度が低いほど、センシングの間隔およびホスト端末700との通信間隔を長くする。また、エッジSoC68は、バッテリーの持続時間の推定値が長いほど、センシングの間隔およびホスト端末700との通信間隔を短くし、バッテリーの持続時間の推定値が短いほど、センシングの間隔およびホスト端末700との通信間隔を長くする。実際には、温度、湿度の重要度とバッテリーの持続時間の推定値との組合せに基づいて、センシングの間隔およびホスト端末700との通信間隔が調整される。
近時、センサ素子や無線機能を有するIC(Integrated Circuit)の価格の低下に伴い、無線センサネットワークの実現が期待されている。無線センサネットワークは、センサを含む多数の無線端末を広範囲に分散して配置し、広範囲でのセンシングを可能にする技術で、IoT(Internet of Things)のコア技術の1つとされている。無線センサネットワークは、センサを含む端末を有線で接続したセンサネットワークに比べて、設置の手間を省き、センシング範囲を容易に拡張することができる。
ただし、センサ付きの無線端末は、バッテリーと太陽電池とから供給される電力により動作するため、電源線を介して電力が常時供給される端末に比べて稼働時間が短い。この実施形態では、温度、湿度の重要度とバッテリー残量とに応じて、センシングの頻度および無線通信の頻度を変えることで、無線端末600の稼働時間を延ばすことができる。この結果、無線センサネットワークの運用の手間を省いて、運用コストを削減することができる。
なお、センサSoC20F、20G、20Hの1つまたは複数は、特徴量データを圧縮する圧縮部を有してもよく、この場合、エッジSoC68は、圧縮された特徴量データを復号する復号回路を有する。圧縮部および復号回路の構成、機能および動作は、図18から図28、図32、図33、図35から図40Aに示す構成、機能および動作と同様である。また、エッジSoC68は、センサSoC20F、20G、20Hの1つまたは複数から転送される特徴量データのデータ型を変換する型変換部を有してもよい。型変換部の構成および機能は、図11および図12に示す構成および機能と同様である。以上、図44に示す実施形態においても、図1から図40Bに示す実施形態と同様の効果を得ることができる。
なお、上述した実施形態で説明したセンサSoCは、シングルボードコンピュータ、PCIカードまたはスマートフォンやゲーム機等の携帯端末に実装可能である。また、上述した実施形態で説明したエッジSoCは、シングルボードコンピュータ、デスクトップパソコンまたはデータセンターに設置されたサーバ等に実装可能である。また、センサSoCとエッジSoCとの間の通信は、有線通信または無線通信が可能である。有線通信として、PCIe、IEEE802.3、InfiniBand等があり、無線通信として、IEEE802.11、Bluetooth(登録商標)、Zigbee(登録商標)、3G、4G等のモバイル通信規格等がある。
センサSoCに接続されるセンサとして、上述した実施形態で使用したセンサの他に、振動センサ、気圧センサ、圧力センサ、照度センサ、地磁気センサ、レーザーレンジファインダ(測域センサ)等が挙げられる。
センサSoCとエッジSoCとを含む情報処理装置(すなわち、マルチモーダルDNN推論システム)として、以下の構成例がある。
(1)センサSoCを搭載したシングルボードコンピュータと、データセンターに設置されたエッジSoCを搭載したサーバを、モバイル通信規格を用いて接続する。
(2)センサSoCを搭載したPCIカードを、デスクトップパソコンのPCIスロットに装着する。この例でのエッジSoCはデスクトップパソコンのCPUにより実現される。
(3)センサSoCを搭載したシングルボードコンピュータとエッジSoCを搭載したシングルボードコンピュータとを、USB(Universal Serial Bus)を用いて接続する。
(4)センサSoCとエッジSoCとを一つのシングルボードコンピュータ等の基板に搭載する。センサSoCとエッジSoCとは、基板上に配線されたPCI Expressバスで接続される。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。