(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-08
(45)【発行日】2024-04-16
(54)【発明の名称】データ処理装置及びデータ処理方法
(51)【国際特許分類】
G06F 17/10 20060101AFI20240409BHJP
G06N 3/04 20230101ALI20240409BHJP
G06N 3/08 20230101ALI20240409BHJP
【FI】
G06F17/10 A
G06N3/04
G06N3/08
G06F17/10 S
(21)【出願番号】P 2020043230
(22)【出願日】2020-03-12
【審査請求日】2022-12-26
【新規性喪失の例外の表示】特許法第30条第2項適用 (1)令和1年7月7日に8th International Congress on Advanced Applied Informaticsの予稿集にて発表。 (2)令和1年7月7日に8th International Congress on Advanced Applied Informaticsにて発表。 (3)令和1年11月27日にIoTワークショップ「センシング・エッジによるIoT革新的ビジネスの潮流」~2019年度第1回産業・インフラ向けIoTデバイス・システムの進展と活用事例~にて発表。 (4)令和2年2月13日にhttps://ieeexplore.ieee.org/document/8992640にて発表。
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度、国立研究開発法人新エネルギー・産業技術総合開発機構、「高効率・高速処理を可能とするAIチップ・次世代コンピューティングの技術開発/革新的AIエッジコンピューティング技術の開発/ソフトテンソルプロセッサによる超広範囲センシングAIエッジ技術の研究開発」、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】506301140
【氏名又は名称】公立大学法人会津大学
(74)【代理人】
【識別番号】100094525
【氏名又は名称】土井 健二
(74)【代理人】
【識別番号】100094514
【氏名又は名称】林 恒徳
(72)【発明者】
【氏名】富岡 洋一
(72)【発明者】
【氏名】スタニスラフ セドゥーキン
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2019-003414(JP,A)
【文献】特開2018-067154(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06N 3/04
G06N 3/08
(57)【特許請求の範囲】
【請求項1】
2次元の入力データの特徴量を前記2次元の入力データに対応する複数のフィルタを用いて算出するデータ処理装置であって、
2次元に配置された複数のプロセッシングエレメントからなるプロセッシングエレメント群と、
前記複数のプロセッシングエレメントごとであって前記複数のフィルタごとの3次元の記憶領域を有する第1記憶部と、を有し、
前記プロセッシングエレメント群は、
前記2次元の入力データに含まれるデータのそれぞれを、全ての送信先が異なるプロセッシングエレメントになるように前記複数のプロセッシングエレメントのいずれかに送信し、
前記複数のフィルタごとに、各フィルタに含まれる1つの特徴重みをそれぞれ取得し、
取得した前記複数のフィルタごとの前記1つの特徴重みを、前記複数のプロセッシングエレメントと同じ数だけ複製して前記複数のプロセッシングエレメントと同じ配置にすることによって3次元の特徴重みを生成し、
前記複数のプロセッシングエレメントのそれぞれに、取得した前記複数のフィルタごとの前記1つの特徴重みをそれぞれ送信し、
前記複数のプロセッシングエレメントのそれぞれに、送信した前記2次元の入力データに含まれるデータと、送信した前記複数のフィルタごとの前記1つの特徴重みとを乗算させることによって3次元の積を算出させ、
前記第1記憶部における前記3次元の記憶領域に記憶された値に前記3次元の積を加算し、
前記複数のプロセッシングエレメントのそれぞれに対して前記3次元の積の算出にまだ用いられていないデータが送信されるように、前記複数のプロセッシングエレメントのそれぞれに、前記複数のプロセッシングエレメントのそれぞれが保持する前記2次元の入力データに含まれるデータを隣接するプロセッシングエレメントに送信させ、
前記加算する処理が行われた回数が前記複数のフィルタのそれぞれに含まれる特徴重みの数に到達するまで、前記取得する処理、前記生成する処理、前記複数のフィルタごとの前記1つの特徴重みをそれぞれ送信する処理、前記算出させる処理、前記加算する処理及び前記2次元の入力データに含まれるデータを隣接するプロセッシングエレメントに送信させる処理を繰り返す、
ことを特徴とするデータ処理装置。
【請求項2】
請求項1において、
前記プロセッシングエレメント群は、畳み込みニューラルネットワークの畳み込み層における処理を行う、
ことを特徴とするデータ処理装置。
【請求項3】
請求項1において、
前記プロセッシングエレメント群は、前記繰り返す処理の後、前記第1記憶部に記憶された前記3次元の値を出力する、
ことを特徴とするデータ処理装置。
【請求項4】
請求項1において、
前記複数のプロセッシングエレメントごとであって前記複数のフィルタごとの3次元の記憶領域を有する第2記憶部を有し、
前記プロセッシングエレメント群は、生成した前記3次元の特徴重みを前記第2記憶部に記憶する、
ことを特徴とするデータ処理装置。
【請求項5】
請求項1において、
前記複数のプロセッシングエレメントごとの2次元の記憶領域を有する第3記憶部を有し、
前記プロセッシングエレメント群は、前記第3記憶部に記憶された前記2次元の入力データに含まれるデータのそれぞれを、全ての送信先が異なるプロセッシングエレメントになるように前記複数のプロセッシングエレメントのいずれかに送信する、
ことを特徴とするデータ処理装置。
【請求項6】
請求項1において、
それぞれ異なる前記2次元の入力データとそれぞれ異なる前記複数のフィルタとに基づく処理を行う複数の前記プロセッシングエレメント群と、
前記複数のプロセッシングエレメントごとであって前記複数のフィルタごとの3次元の記憶領域を有する第4記憶部と、を有し、
前記複数のプロセッシングエレメント群は、
前記繰り返す処理の後、各プロセッシングエレメント群の前記第1記憶部に記憶した前記3次元の値をそれぞれ加算することによって3次元の合計値を算出し、
算出した前記3次元の合計値を前記第4記憶部に記憶する、
ことを特徴とするデータ処理装置。
【請求項7】
請求項6において、
前記複数のプロセッシングエレメント群は、前記3次元の合計値を算出する処理の後、前記第4記憶部に記憶された前記3次元の合計値を出力する、
ことを特徴とするデータ処理装置。
【請求項8】
2次元の入力データの特徴量を前記2次元の入力データに対応する複数のフィルタを用いて算出するデータ処理装置におけるデータ処理方法であって、
2次元に配置された複数のプロセッシングエレメントからなるプロセッシングエレメント群と、
前記複数のプロセッシングエレメントごとであって前記複数のフィルタごとの3次元の記憶領域を有する第1記憶部と、を有し、
前記プロセッシングエレメント群は、
前記2次元の入力データに含まれるデータのそれぞれを、全ての送信先が異なるプロセッシングエレメントになるように前記複数のプロセッシングエレメントのいずれかに送信し、
前記複数のフィルタごとに、各フィルタに含まれる1つの特徴重みをそれぞれ取得し、
取得した前記複数のフィルタごとの前記1つの特徴重みを、前記複数のプロセッシングエレメントと同じ数だけ複製して前記複数のプロセッシングエレメントと同じ配置にすることによって3次元の特徴重みを生成し、
前記複数のプロセッシングエレメントのそれぞれに、取得した前記複数のフィルタごとの前記1つの特徴重みをそれぞれ送信し、
前記複数のプロセッシングエレメントのそれぞれに、送信した前記2次元の入力データに含まれるデータと、送信した前記複数のフィルタごとの前記1つの特徴重みとを乗算させることによって3次元の積を算出させ、
前記第1記憶部における前記3次元の記憶領域に記憶された値に前記3次元の積を加算し、
前記複数のプロセッシングエレメントのそれぞれに対して前記3次元の積の算出にまだ用いられていないデータが送信されるように、前記複数のプロセッシングエレメントのそれぞれに、前記複数のプロセッシングエレメントのそれぞれが保持する前記2次元の入力データに含まれるデータを隣接するプロセッシングエレメントに送信させ、
前記加算する処理が行われた回数が前記複数のフィルタのそれぞれに含まれる特徴重みの数に到達するまで、前記取得する処理、前記生成する処理、前記複数のフィルタごとの前記1つの特徴重みをそれぞれ送信する処理、前記算出させる処理、前記加算する処理及び前記2次元の入力データに含まれるデータを隣接するプロセッシングエレメントに送信させる処理を繰り返す、
ことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置及びデータ処理方法に関し、特に、畳み込みニューラルネットワークにおける畳み込み演算に適したデータ処理装置及びデータ処理方法に関する。
【背景技術】
【0002】
近年、ニューラルネットワークに畳み込み(Convolution)を追加した畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)が、画像認識等に有効な機械学習として広く認識されている。以下、CNNの概略について説明を行う。
【0003】
図1は、CNNのシステム構成の概略について説明する図である。
図1に示すCNNにおいて、レイヤーL1及びレイヤーL2は、畳み込み層(Convolutional Layer)及びプーリング層(Pooling Layer)をそれぞれ含む。
【0004】
畳み込み層は、入力データに対してフィルタ(Kernel)の特徴重みを乗算する演算(特徴量を畳み込む演算)を行う層である。具体的に、畳み込み層では、入力データが画像データである場合、入力データに対してそれぞれ異なるフィルタの特徴重みを乗算することによって、フィルタの数に対応する画像データを得る。すなわち、畳み込み層では、複数のフィルタを使うことによって、入力データ(画像データ)のさまざまな特徴が捉えることが可能な入力データ内のパターンを検出することが可能になる。
【0005】
また、プーリング層は、畳み込み層の直後に配置される層である。プーリング層では、レイヤーを縮小することによって、後続処理の実行を容易にすることが可能になり、かつ、畳み込み層において抽出された特徴の位置感度を低下させることが可能になる。
【0006】
その後、CNNでは、レイヤーL3からレイヤーL5において全結合した多層パーセプトロンを配置することによって、入力データ(画像データ)の認識を行う(例えば、特許文献1を参照)。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
ここで、上記のようなCNNにおける畳み込み演算(特に、序盤のレイヤーにおいて行われる畳み込み演算)では、膨大な回数の積和演算が行われる。以下、畳み込み演算において行われる積和演算ついて説明を行う。
【0009】
図2は、畳み込み演算において行われる積和演算について説明する図である。
図2(A)に示す例における入力データ(input feature map)は、データサイズがNix×Niyであって、チャネル数がNifである。また、
図2(A)に示す例におけるフィルタ(filters)は、データサイズがNkx×Nkyである。さらに、
図2(A)に示す例における出力データ(output feature map)は、データサイズがNox×Noyであって、チャネル数がNofである。
【0010】
そして、この例における畳み込み演算では、
図2(B)に示すように、積和演算として「pixel
L(no;x,y)+=pixel
L-1(ni;x+kx,y+ky)*weight
L-1(ni,no;kx,ky)」が繰り返し行われる。なお、
図2(B)に示す例において、「bias(no)」がない場合、「pixel
L(no;x,y)」の初期値は0になる。
【0011】
ここで、
図2(B)に示す例における積和演算の実行回数は、Nof×Nox×Noy×Nif×Nkx×Nky(回)になる。そのため、Nof等の大きさによっては、実行する必要がある積和演算の実行回数が膨大になる。
【0012】
したがって、例えば、CNNをロボットの動作制御や自動車の自動運転等の様々な分野においてより活用させる場合、畳み込み層において行われる畳み込み演算(積和演算)を可能な限り並行に実行し、CNNにおける処理時間をより高速化させる必要がある。
【0013】
そこで、本発明の目的は、畳み込み演算を高速に行うことを可能とするデータ処理装置及びデータ処理方法を提供することにある。
【課題を解決するための手段】
【0014】
上記目的を達成するための本発明におけるデータ処理装置は、2次元の入力データの特徴量を前記2次元の入力データに対応する複数のフィルタを用いて算出するデータ処理装置であって、2次元に配置された複数のプロセッシングエレメントからなるプロセッシングエレメント群と、前記複数のプロセッシングエレメントごとであって前記複数のフィルタごとの3次元の記憶領域を有する第1記憶部と、を有し、前記プロセッシングエレメント群は、前記2次元の入力データに含まれるデータのそれぞれを、全ての送信先が異なるプロセッシングエレメントになるように前記複数のプロセッシングエレメントのいずれかに送信し、前記複数のフィルタごとに、各フィルタに含まれる1つの特徴重みをそれぞれ取得し、取得した前記複数のフィルタごとの前記1つの特徴重みを、前記複数のプロセッシングエレメントと同じ数だけ複製して前記複数のプロセッシングエレメントと同じ配置にすることによって3次元の特徴重みを生成し、前記複数のプロセッシングエレメントのそれぞれに、取得した前記複数のフィルタごとの前記1つの特徴重みをそれぞれ送信し、前記複数のプロセッシングエレメントのそれぞれに、送信した前記2次元の入力データに含まれるデータと、送信した前記複数のフィルタごとの前記1つの特徴重みとを乗算させることによって3次元の積を算出させ、前記第1記憶部における前記3次元の記憶領域に記憶された値に前記3次元の積を加算し、前記複数のプロセッシングエレメントのそれぞれに対して前記3次元の積の算出にまだ用いられていないデータが送信されるように、前記複数のプロセッシングエレメントのそれぞれに、前記複数のプロセッシングエレメントのそれぞれが保持する前記2次元の入力データに含まれるデータを隣接するプロセッシングエレメントに送信させ、前記加算する処理が行われた回数が前記複数のフィルタのそれぞれに含まれる特徴重みの数に到達するまで、前記取得する処理、前記生成する処理、前記複数のフィルタごとの前記1つの特徴重みをそれぞれ送信する処理、前記算出させる処理、前記加算する処理及び前記2次元の入力データに含まれるデータを隣接するプロセッシングエレメントに送信させる処理を繰り返す、ことを特徴とする。
【0015】
上記目的を達成するための本発明におけるデータ処理装置は、前記プロセッシングエレメント群は、畳み込みニューラルネットワークの畳み込み層における処理を行う、ことを特徴とする。
【0016】
上記目的を達成するための本発明におけるデータ処理装置は、前記プロセッシングエレメント群は、前記繰り返す処理の後、前記第1記憶部に記憶された前記3次元の値を出力する、ことを特徴とする。
【0017】
上記目的を達成するための本発明におけるデータ処理装置は、前記複数のプロセッシングエレメントごとであって前記複数のフィルタごとの3次元の記憶領域を有する第2記憶部を有し、前記プロセッシングエレメント群は、生成した前記3次元の特徴重みを前記第2記憶部に記憶する、ことを特徴とする。
【0018】
上記目的を達成するための本発明におけるデータ処理装置は、前記複数のプロセッシングエレメントごとの2次元の記憶領域を有する第3記憶部を有し、前記プロセッシングエレメント群は、前記第3記憶部に記憶された前記2次元の入力データに含まれるデータのそれぞれを、全ての送信先が異なるプロセッシングエレメントになるように前記複数のプロセッシングエレメントのいずれかに送信する、ことを特徴とする。
【0019】
上記目的を達成するための本発明におけるデータ処理装置は、それぞれ異なる前記2次元の入力データとそれぞれ異なる前記複数のフィルタにとに基づく処理を行う複数の前記プロセッシングエレメント群と、前記複数のプロセッシングエレメントごとであって前記複数のフィルタごとの3次元の記憶領域を有する第4記憶部と、を有し、前記複数のプロセッシングエレメント群は、前記繰り返す処理の後、各プロセッシングエレメント群の前記第1記憶部に記憶した前記3次元の値をそれぞれ加算することによって3次元の合計値を算出し、算出した前記3次元の合計値を前記第4記憶部に記憶する、ことを特徴とする。
【0020】
上記目的を達成するための本発明におけるデータ処理装置は、前記複数のプロセッシングエレメント群は、前記3次元の合計値を算出する処理の後、前記第4記憶部に記憶された前記3次元の合計値を出力する、ことを特徴とする。
【0021】
また、上記目的を達成するための本発明におけるデータ処理方法は、2次元の入力データの特徴量を前記2次元の入力データに対応する複数のフィルタを用いて算出するデータ処理装置におけるデータ処理方法であって、2次元に配置された複数のプロセッシングエレメントからなるプロセッシングエレメント群と、前記複数のプロセッシングエレメントごとであって前記複数のフィルタごとの3次元の記憶領域を有する第1記憶部と、を有し、前記プロセッシングエレメント群は、前記2次元の入力データに含まれるデータのそれぞれを、全ての送信先が異なるプロセッシングエレメントになるように前記複数のプロセッシングエレメントのいずれかに送信し、前記複数のフィルタごとに、各フィルタに含まれる1つの特徴重みをそれぞれ取得し、取得した前記複数のフィルタごとの前記1つの特徴重みを、前記複数のプロセッシングエレメントと同じ数だけ複製して前記複数のプロセッシングエレメントと同じ配置にすることによって3次元の特徴重みを生成し、前記複数のプロセッシングエレメントのそれぞれに、取得した前記複数のフィルタごとの前記1つの特徴重みをそれぞれ送信し、前記複数のプロセッシングエレメントのそれぞれに、送信した前記2次元の入力データに含まれるデータと、送信した前記複数のフィルタごとの前記1つの特徴重みとを乗算させることによって3次元の積を算出させ、前記第1記憶部における前記3次元の記憶領域に記憶された値に前記3次元の積を加算し、前記複数のプロセッシングエレメントのそれぞれに対して前記3次元の積の算出にまだ用いられていないデータが送信されるように、前記複数のプロセッシングエレメントのそれぞれに、前記複数のプロセッシングエレメントのそれぞれが保持する前記2次元の入力データに含まれるデータを隣接するプロセッシングエレメントに送信させ、前記加算する処理が行われた回数が前記複数のフィルタのそれぞれに含まれる特徴重みの数に到達するまで、前記取得する処理、前記生成する処理、前記複数のフィルタごとの前記1つの特徴重みをそれぞれ送信する処理、前記算出させる処理、前記加算する処理及び前記2次元の入力データに含まれるデータを隣接するプロセッシングエレメントに送信させる処理を繰り返す、ことを特徴とする。
【発明の効果】
【0022】
本発明におけるデータ処理装置及びデータ処理方法によれば、畳み込み層において行われる畳み込み演算を並行に実行することが可能になるため、畳み込み演算を高速に行うことが可能になる。
【図面の簡単な説明】
【0023】
【
図1】
図1は、CNNのシステム構成の概略について説明する図である。
【
図2】
図2は、畳み込み演算において行われる積和演算について説明する図である。
【
図3】
図3は、本発明の実施の形態におけるデータ処理装置10の構成例を示す図である。
【
図4】
図4は、本発明の実施の形態におけるTPEnの構成例を示す図である。
【
図5】
図5は、TPEnにおける処理の詳細のフローチャート図である。
【
図6】
図6は、TPEnにおける処理の詳細のフローチャート図である。
【
図7】
図7は、TPEnにおける処理の詳細のフローチャート図である。
【
図8】
図8は、TPEnにおける処理の詳細のフローチャート図である。
【
図9】
図9は、S16からS22の処理の具体例について説明する図である。
【
図10】
図10は、S16からS22の処理の具体例について説明する図である。
【
図11】
図11は、S16からS22の処理の具体例について説明する図である。
【
図12】
図12は、S16からS22の処理の具体例について説明する図である。
【
図13】
図13は、S16からS22の処理の具体例について説明する図である。
【
図14】
図14は、S16からS22の処理の具体例について説明する図である。
【
図15】
図15は、S16からS22の処理の具体例について説明する図である。
【
図16】
図16は、畳み込み演算において行われる積和演算の並列度について説明する図である。
【発明を実施するための形態】
【0024】
以下、図面を参照して本発明の実施の形態について説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。
【0025】
[データ処理装置の構成]
初めに、データ処理装置10の構成について説明を行う。
図3は、本発明の実施の形態におけるデータ処理装置10の構成例を示す図である。
【0026】
データ処理装置10は、
図3に示す例において、基盤12と、CPU(Central Processing Unit)13とを有する。そして、基盤12は、
図3に示す例において、チップ14と、オフチップメモリ15(以下、単にメモリ15とも呼ぶ)とを有する。すなわち、データ処理装置10では、例えば、CPU13とチップ14とが各種処理を分担して実行する。
【0027】
なお、基盤12は、例えば、FPGA(Field-Programmable Gate Array)ボードであってよい。また、チップ14は、例えば、FPGAチップやASIC(Application Specific Integrated Circuit)チップであってよい。
【0028】
さらに、チップ14は、
図3に示す例において、コントローラ17と、オンチップメモリ16(以下、単にメモリ16とも呼ぶ)と、TPE(Tensor Processing Element)1からTPEmまでのm個のTPEを含むプロセッサであるSTP(Soft Tensor Processor)20とを有する。なお、以下、TPE1からTPEmを総称して単にTPEとも呼ぶ。
【0029】
図3に示す例において、メモリ16には、畳み込み演算の対象である3次元の入力データXが記憶される情報格納領域であるバッファ21と、畳み込み演算に用いられるフィルタが記憶される情報格納領域であるバッファ22と、畳み込み演算の演算結果が記憶される情報格納領域であるバッファ23(以下、第4記憶部とも呼ぶ)とが含まれる。
【0030】
また、
図3に示す例において、コントローラ17は、例えば、バッファ21、バッファ22及びバッファ23に格納された各種情報をTPEのそれぞれに送信することによって、TPEのそれぞれに畳み込み演算を行わせる処理を行う。
【0031】
[TPEの構成]
次に、TPEの構成について説明を行う。
図4は、本実施の形態におけるTPEnの構成例を示す図である。なお、TPEn以外の他のTPEについては、TPEnと同様の構成であるため説明を省略する。
【0032】
図4に示す例において、TPEnは、それぞれ畳み込み演算(積和演算)を行うNox×Noy個の演算器Uと、演算器Uにおける畳み込み演算の演算結果が記憶されるレジスタR1,1からR1,Nofのそれぞれ(以下、これらを総称してレジスタR1または第1記憶部とも呼ぶ)と、バッファ22に記憶されていたフィルタの一部を格納するレジスタR2,1からレジスタR2,Nofのそれぞれ(以下、これらを総称してレジスタR2または第2記憶部とも呼ぶ)と、バッファ21に格納されていた入力データXの一部を記憶するレジスタR3(以下、第3記憶部とも呼ぶ)と、を有する。
【0033】
具体的に、コントローラ17は、
図4に示すように、バッファ22に記憶されたNof種類のフィルタのうち、1種類目のフィルタに含まれる1つ目の特徴重みω
1
(1)を取得し、取得した特徴重みω
1
(1)をNox×Noy個(演算器Uと同じ数)に複製して配置することによって2次元の特徴重みω
1
(1)を生成し、生成した2次元の特徴重みω
1
(1)をレジスタR2,1に記憶する。
【0034】
また、コントローラ17は、
図4に示すように、バッファ22に記憶されたNof種類のフィルタのうち、2種類目のフィルタに含まれる1つ目の特徴重みω
2
(1)を取得し、取得した特徴重みω
2
(1)をNox×Noy個に複製して配置することによって2次元の特徴重みω
2
(1)を生成し、生成した2次元の特徴重みω
2
(1)をレジスタR2,2に記憶する。
【0035】
さらに、コントローラ17は、他の種類のフィルタに含まれる1つ目の特徴重みについても同様に、2次元の特徴重みを生成してレジスタR2に記憶する。
【0036】
すなわち、コントローラ17は、Nof種類のフィルタのそれぞれに対応する2次元の特徴重み(以下、これらを纏めて3次元の特徴重みΩとも呼ぶ)を生成してレジスタR2に記憶する。
【0037】
また、コントローラ17は、
図4に示すように、バッファ21に記憶された3次元の入力データXのうち、TPEnに対応する2次元の入力データXをレジスタR3に記憶する。
【0038】
続いて、Nox×Noy個の演算器Uは、レジスタR2に記憶された3次元の特徴重みΩを分解することによってNof個の2次元の特徴重みΩを生成する。そして、Nox×Noy個の演算器Uは、レジスタR3に記憶された2次元の入力データXと、分解することによって生成されたNof個の2次元の特徴重みΩのそれぞれとを乗算することによって、Nof個の2次元の積(以下、これらを纏めて3次元の積とも呼ぶ)を算出する。
【0039】
すなわち、Nox×Noy個の演算器Uのそれぞれは、レジスタR3に記憶された2次元の入力データXのうち、各演算器Uに対応するデータと、分解することによって生成されたNof個の2次元の特徴重みΩのそれぞれのうち、各演算器Uに対応する特徴重みとを乗算することによって、1×1×Nof個の積を算出する。そのため、Nox×Noy個の演算器Uは、全体として、Nox×Noy×Nof個の3次元の積の算出を行う。
【0040】
そして、Nox×Noy個の演算器Uは、算出した3次元の積を、レジスタR1に記憶された3次元のデータZ(既に算出した3次元の積の総和)に加算する。
【0041】
その後、Nox×Noy個の演算器Uは、バッファ22に記憶された各フィルタに含まれる特徴重みの数に対応する回数(K2回)だけ、上記の処理を繰り返し行う。以下、TPEnにおける処理の詳細について説明を行う。
【0042】
[TPEにおける処理の詳細のフローチャート]
図5から
図8は、TPEnにおける処理の詳細のフローチャート図である。
【0043】
コントローラ17は、
図5に示すように、3次元の入力データXに含まれる2次元の入力データXのそれぞれを識別する変数であるiにnを設定する(S01)。すなわち、TPEnがTPE1である場合、コントローラ17は、iに1を設定する。また、コントローラ17は、各フィルタに含まれる特徴重みを識別する変数であるkに1を設定する(S02)。
【0044】
そして、コントローラ17は、nが1である場合(S03のYES)、バッファ22からバイアスに対応する3次元のデータを取得してレジスタR1に記憶する(S04)。
【0045】
一方、コントローラ17は、nが1でない場合(S03のNO)、全ての要素が0であってデータサイズがNox×Noy×Nofである3次元のデータZをレジスタR1に記憶する(S05)。すなわち、TPEnが1である場合に限り、バイアスが加算されるように積和演算を行う。
【0046】
そして、コントローラ17は、バッファ21に記憶された3次元の入力データXのうち、第iチャネルに対応する2次元のデータXを取得してレジスタR3に記憶する(S06)。
【0047】
続いて、コントローラ17は、
図6に示すように、バッファ22に記憶された各フィルタの第iチャネルに含まれる特徴重みのうち、kに対応する1×1×Nofのデータサイズの特徴重みを取得する(S11)。
【0048】
そして、コントローラ17は、S11の処理で取得した各特徴重みをNox×Noy個に複製することによってNox×Noy×Nofの3次元の特徴重みΩを生成してレジスタR2に格納する(S12)。
【0049】
その後、Nox×Noy個の演算器Uは、レジスタR1に記憶された3次元のデータZを取得する(S13)。また、Nox×Noy個の演算器Uは、レジスタR2に記憶された3次元のデータΩを取得する(S14)。さらに、Nox×Noy個の演算器Uは、レジスタR3に記憶された2次元のデータXを取得する(S15)。
【0050】
続いて、Nox×Noy個の演算器Uは、S14の処理で取得したNox×Noy×Nofの3次元のデータΩをNof個の2次元のデータ(データサイズがNox×Noyであるデータ)に分解し、分解した各2次元のデータとS15で取得した2次元のデータXとの3次元の積に対し、S13の処理で取得した3次元のデータZを加算する(S16)。
【0051】
すなわち、各演算器Uは、3次元データΩから分解された2次元のデータに含まれる1×1のデータサイズのデータと、データXに含まれる1×1のデータサイズのデータとの積に対し、3次元のデータZのうちの対応するデータを加算する。
【0052】
そして、コントローラ17は、
図7に示すように、レジスタR1に記憶された3次元のデータZを、S16の処理で算出した3次元のデータに更新する(S21)。
【0053】
次に、コントローラ17は、レジスタR3に記憶された2次元のデータXを所定の方法によって与えられた方向にシフトする(S22)。具体的に、コントローラ17は、2次元のデータXに含まれる各データが各フィルタに含まれる全ての特徴重みを巡回するように、2次元のデータXのシフト方向を決定する。S22の処理の具体例については後述する。
【0054】
そして、コントローラ17は、kに1を加算する(S23)。その結果、kがK2以上でない場合(S24のNO)、コントローラ17は、S06以降の処理を再度行う。
【0055】
一方、kがK2以上である場合(S24のYES)、コントローラ17は、iにmを加算する(S25)。その結果、iがNif以上でない場合(S26のNO)、コントローラ17は、S06以降の処理を再度行う。すなわち、バッファ21に記憶された3次元の入力データXの全てが処理済でないと判定した場合、コントローラ17は、S06以降の処理を再度行う。以下、S16からS22の処理の具体例について説明を行う。
【0056】
[S16からS22の処理の具体例]
図9から
図15は、S16からS22の処理の具体例について説明する図である。以下、
図9に示すように、TPEnに4×4個の演算器U(演算器U
1,1、U
1,2、U
1,3、U
1,4、U
2,1、U
2,2、U
2,3、U
2,4、U
3,1、U
3,2、U
3,3、U
3,4、U
4,1、U
4,2、U
4,3及びU
4,4)が搭載されているものとして説明を行う。また、以下、各フィルタに含まれる特徴重みの数(K
2)が9であるものとして説明を行う。
【0057】
(kが1の場合の処理)
初めに、kが1の場合の処理について説明を行う。
【0058】
この場合、コントローラ17は、
図10(A)に示すように、分解後の2次元の特徴重みω
1を演算器U
1,1から演算器U
4,4のそれぞれに送信(ブロードキャスト送信)する。また、コントローラ17は、
図10(A)に示すように、レジスタR3に格納された2次元の入力データXに含まれるデータX
1,1からデータX
4,4を演算器U
1,1から演算器U
4,4のそれぞれに送信する。
【0059】
その後、演算器U
1,1から演算器U
4,4のそれぞれは、特徴重みω
1とデータXとを乗算する。具体的に、例えば、演算器U
2,2は、
図10(A)に示すように、特徴重みω
1とデータX
2,2との積を算出する。
【0060】
続いて、演算器U
1,1から演算器U
4,4のそれぞれは、レジスタR3に格納された3次元のデータZのうち、各演算器Uに対応するデータに、算出した積を加算する。具体的に、例えば、演算器U
2,2は、
図10(B)のStep1に示すように、レジスタR3に格納された3次元のデータZのうち、演算器U
2,2に対応する値(kが1である場合は0)に、特徴重みω
1とデータX
2,2との積を加算する。
【0061】
そして、演算器U
1,1から演算器U
4,4は、それぞれが保持しているデータXを隣接している演算器Uに送信する。具体的に、例えば、演算器U
2,2は、
図11(A)に示すように、データX
2,2を演算器U
2,1に送信する。
【0062】
ここで、データXの送信方向に他の演算器Uが存在しない場合、各演算器Uは、
図10(A)等に示すトラースネットワークを用いることによって、それぞれが保持しているデータXを反対側の演算器Uに送信するものであってよい。具体的に、
図10(A)に示す例において、演算器U
1,1、演算器U
2,1、演算器U
3,1及び演算器U
4,1(左端に位置する演算器U)は、それぞれが保持しているデータを演算器U
1,4、演算器U
2,4、演算器U
3,4及び演算器U
4,4(右端に位置する演算器U)のそれぞれに送信する。
【0063】
これにより、各演算器Uは、データXの送信方向に他の演算器Uが存在しない場合であっても、それぞれが保持しているデータXがシフトによって失われることを防止することが可能になる。
【0064】
なお、演算器U1,1、演算器U2,1、演算器U3,1及び演算器U4,1は、この場合、トラースネットワークを経由して反対側の演算器Uに送信されたデータXが反対側の演算器Uにおいて積和計算に用いられることを防止する必要がある。そのため、演算器U1,1、演算器U2,1、演算器U3,1及び演算器U4,1のそれぞれは、例えば、トラースネットワークを経由して反対側の演算器Uから送信されたデータであることを示すフラグ(積和計算に用いられないデータであることを示すフラグ)を付加した上で、演算器U1,4、演算器U2,4、演算器U3,4及び演算器U4,4に対してデータXの送信を行う。
【0065】
また、TPEnは、この場合、演算器U
1,1等の4×4個の演算器Uの外側に配置されたパティング用の演算器Uをさらに有するものであってもよい。そして、
図10(A)に示す例において、演算器U
1,1、演算器U
2,1、演算器U
3,1及び演算器U
4,1は、それぞれが保持しているデータを、各演算器Uの左側に位置するパティング用の演算器Uに送信するものであってよい。
【0066】
なお、この場合、TPEnが有する演算器U(パティング用の演算器Uを含む)の数は、以下の式(1)によって算出される。
【0067】
【数1】
(kが2の場合の処理)
次に、kが2の場合の処理について説明を行う。
【0068】
この場合、コントローラ17は、
図11(A)に示すように、分解後の2次元の特徴重みω
2を演算器U
1,1から演算器U
4,4のそれぞれに送信(ブロードキャスト送信)する。そして、演算器U
1,1から演算器U
4,4のそれぞれは、データXを保持している場合(直前に行われたS12の処理において隣接する演算器UからデータXを受信している場合)、特徴重みω
2とデータXとを乗算する。具体的に、例えば、演算器U
2,2は、
図11(A)に示すように、特徴重みω
2とデータX
2,3(演算器U
2,2から送信されたデータX)との積を算出する。
【0069】
続いて、演算器U
1,1から演算器U
4,4のそれぞれは、レジスタR3に格納された3次元のデータZのうち、各演算器Uに対応する値に、算出した積を加算する。具体的に、例えば、演算器U
2,2は、
図11(B)のStep2に示すように、レジスタR3に格納された3次元のデータZのうち、演算器U
2,2に対応する値に、特徴重みω
2とデータX
2,3との積を加算する。
【0070】
そして、演算器U
1,1から演算器U
4,4は、保持しているデータXを隣接している演算器Uに送信する。具体的に、例えば、演算器U
2,2は、
図11(B)に示すように、データX
2,3を演算器U
3,2に送信する。
【0071】
(kが3の場合の処理)
次に、kが3の場合の処理について説明を行う。
【0072】
コントローラ17は、この場合、
図12(A)に示すように、分解後の2次元の特徴重みω
3を演算器U
1,1から演算器U
4,4のそれぞれに送信(ブロードキャスト送信)する。そして、演算器U
1,1から演算器U
4,4のそれぞれは、データXを保持している場合、特徴重みω
3とデータXとを乗算する。具体的に、例えば、演算器U
2,2は、
図12(A)に示すように、特徴重みω
3とデータX
1,3との積を算出する。
【0073】
続いて、演算器U
1,1から演算器U
4,4のそれぞれは、レジスタR3に格納された3次元のデータZのうち、各演算器Uに対応する値に、算出した積を加算する。具体的に、例えば、演算器U
2,2は、
図12(B)のStep3に示すように、レジスタR3に格納された3次元のデータZのうち、演算器U
2,2に対応する値に、特徴重みω
3とデータX
1,3との積を加算する。
【0074】
そして、演算器U1,1から演算器U4,4は、保持しているデータXを隣接している演算器Uに送信する。具体的に、例えば、演算器U2,2は、データX1,3を演算器U2,3に送信する。
【0075】
その後、例えば、演算器U
2,2は、
図13及び
図14に示すように、特徴重みω
1とデータX
2,2との乗算(kが1の場合の演算)と、特徴重みω
2とデータX
2,3との乗算(kが2の場合の演算)と、特徴重みω
3とデータX
1,3との乗算(kが3の場合の演算)とに加え、特徴重みω
4とデータX
1,2との乗算(kが4の場合の演算)と、特徴重みω
5とデータX
1,1との乗算(kが5の場合の演算)と、特徴重みω
6とデータX
2,1との乗算(kが6の場合の演算)と、特徴重みω
7とデータX
3,1との乗算(kが7の場合の演算)と、特徴重みω
8とデータX
3,2との乗算(kが8の場合の演算)と、特徴重みω
9とデータX
3,3との乗算(kが9の場合の演算)とを行う。
【0076】
すなわち、各演算器Uは、kの値が加算されるごとに、特徴重みのブロードキャスト送信とデータXのシフトとを行いながら、各フィルタに含まれる特徴重みと入力データXとの畳み込み演算を行うことで、畳み込み演算を演算器Uごとに並行して行う。
【0077】
また、各演算器Uは、特徴重みとデータXとの乗算を行う場合、
図15に示すように、Nof種類のフィルタごとに、各フィルタに含まれる特徴重みと入力データXとの乗算を並行して行う。
【0078】
具体的に、演算器U2,2は、kが1である場合、1種類目のフィルタに含まれる1つ目の特徴重みω1
(1)とデータX2,2との乗算を行うことによって、積Z2,2,1を算出する。また、演算器U2,2は、この場合、2種類目のフィルタに含まれる1つ目の特徴重みω2
(1)とデータX2,2との乗算を行うことによって、積Z2,2,2を算出する。同様に、演算器U2,2は、Nof種類のフィルタのそれぞれに対応する乗算を行う。
【0079】
これにより、各演算器Uは、演算器Uの数(Nox×Noy)とフィルタの種類数(Nof)との積に対応する多重度によって並列処理を行うことが可能になる。
【0080】
さらに、本実施の形態におけるデータ処理装置10では、上記のように各演算器Uが行う処理を、各TPEにおいて行う。
【0081】
これにより、データ処理装置10では、各TPEにおける演算器Uの数(Nox×Noy)とフィルタの種類数(Nof)とTPEの数(n)との積に対応する多重度によって並列処理を行うことが可能になる。そのため、データ処理装置10では、CNNにおける畳み込み演算を高速に行うことが可能になる。
【0082】
図7に戻り、iがNif以上である場合(S26のYES)、コントローラ17は、S27以降の処理を再度行う。すなわち、コントローラ17は、各TPEにおける畳み込み演算が完了したことに応じて、各TPEにおいて算出された値の総和を算出する処理を開始する。
【0083】
そして、例えば、TPEnがTPE1以外である場合(S27のNO)、コントローラ17は、
図8に示すように、隣接するTPE(n-1)から3次元のデータZ´を受信する(S31)。
【0084】
続いて、Nox×Noy個の演算器Uは、S31の処理で受信した3次元のデータZ´に対して、レジスタR1に記憶された3次元のデータZを加算する(S32)。
【0085】
その後、Nox×Noyの演算器Uは、S32の処理で算出した3次元のデータZをレジスタR1に記憶する(S33)。
【0086】
そして、TPEnがTPEmでない場合(S34のYES)、TPEnは、レジスタR1に格納された3次元のデータZを隣接するTPE(n+1)に送信する(S35)。また、TPEnは、レジスタR1に格納された3次元のデータZをバッファ23に格納する(S36)。
【0087】
これにより、データ処理装置10は、各TPEにおいて算出された畳み込み演算の結果の総和を算出することが可能になる。
【0088】
なお、TPEnがTPE1である場合(S27のYES)も同様に、TPEnは、S35の処理を行う。
【0089】
一方、TPEnがTPEmである場合(S34のNO)、TPEnは、S35の処理を行わずに、レジスタR1に格納された3次元のデータZをバッファ23に格納する(S36)。すなわち、コントローラ17は、この場合、各TPEにおいて行われた畳み込み演算の最終的な結果をバッファ23に格納する。
【0090】
このように、本実施の形態におけるデータ処理装置10では、Nof、Nox、Noy及びNifに関する積和演算を並行して行うことが可能になる。そのため、本実施の形態におけるデータ処理装置10は、
図16に示すように、畳み込み演算における積和演算の並列度を他の方法を採用した場合よりも大きくすることが可能になる。
【0091】
従って、本実施の形態におけるデータ処理装置10では、積和演算の実行回数を大幅に抑えることが可能になる。そのため、本実施の形態におけるデータ処理装置10では、CNNの畳み込み層における畳み込み演算を高速に行うことが可能になる。
【0092】
また、例えば、畳み込み演算の実行時間が閾値以下にすることが求められる場合、本実施の形態におけるデータ処理装置10によれば、積和演算の実行回数を抑えることが可能になるため、積和演算の1回あたりの実行速度が遅くなるように設定することが許容される。すなわち、これは、データ処理装置10の動作周波数の抑えることが可能になり、かつ、回路の駆動電圧を抑制することが可能になることを意味する。したがって、本実施の形態におけるデータ処理装置10では、畳み込み演算の実行に伴う消費電力を抑えることが可能になる。
【0093】
そのため、本実施の形態におけるデータ処理装置10は、様々な制約が求められる各分野(例えば、ロボットの動作制御や自動車の自動運転等の分野)においても使用することが可能になる。
【符号の説明】
【0094】
1:TPE
2:TPE
n:TPE
m:TPE
10:データ処理装置
12:基盤
13:CPU
14:チップ
15:メモリ
16:メモリ
17:コントローラ
20:STP
21:バッファ
22:バッファ
23:バッファ
R1:レジスタ
R2:レジスタ
R3:レジスタ
U:演算器