(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-27
(45)【発行日】2024-10-07
(54)【発明の名称】ニューラルネットワークのコンボルーション演算を処理する方法及び装置
(51)【国際特許分類】
G06F 17/10 20060101AFI20240930BHJP
G06N 3/06 20060101ALI20240930BHJP
【FI】
G06F17/10 A
G06N3/06
(21)【出願番号】P 2020015497
(22)【出願日】2020-01-31
【審査請求日】2022-12-27
(32)【優先日】2019-01-31
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】10-2019-0038606
(32)【優先日】2019-04-02
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】李 世煥
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2018/0253636(US,A1)
【文献】米国特許出願公開第2021/0004701(US,A1)
【文献】米国特許出願公開第2019/0042923(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06N 3/06
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワーク装置において、
少なくとも1つのプログラムが保存されたメモリと、
前記少なくとも1つのプログラムを行うことで、入力フィーチャーマップ(input feature map)とカーネル(kern
el)との間のコンボルーション演算を処理するプロセッサと、
を含み、
前記プロセッサは、
(i)前記入力フィーチャーマップの
形状及び
(ii)前記入力フィーチャーマップ内でゼロ値を有するピクセルの比率又は前記カーネル内でゼロ値を有するウェイトの比率が既設定の値以上であることの1つに基づいて、並列化された演算それぞれに共通して共有される共有オペランド(shared operand)を、前記入力フィーチャーマップ
を構成する複数のピクセル値のうちの
1つのピクセル値および前記カーネル
を構成するウェイト値のうちの
1つのウェイト値のうちのいずれか1つとして決定するコントローラと、
前記決定された共有オペランド
と、前記入力フィーチャーマップ又は前記カーネルからのそれぞれのオペランドとに基づいて前記並列化された演算を行うプロセッシングユニットと、を含
み、
並列の前記プロセッシングユニットは、
前記コントローラが前記共有オペランドを前記入力フィーチャーマップの前記1つのピクセル値として決定することに応答して、前記入力フィーチャーマップの前記1つのピクセル値と前記カーネルのそれぞれのウェイト値とのそれぞれの演算を並列的に行い、或いは
複数の前記プロセッシングユニットは、
前記コントローラが前記共有オペランドを前記カーネルの前記1つのウェイト値として決定することに応答して、前記カーネルの前記1つのウェイト値と前記入力フィーチャーマップのそれぞれのピクセル値とのそれぞれの演算を並列的に行う、ニューラルネットワーク装置。
【請求項2】
(1)前記コントローラは、
前記共有オペランドを
、前記入力フィーチャーマップ
を構成する複数のピクセル値のうちの第1ピクセル値及び第2ピクセル値として決定し、且つ
前記プロセッシングユニットは、
前記入力フィーチャーマップの第1ピクセル値と前記カーネルのウェイト値とのそれぞれの演算を並列的に行う第1プロセッシングユニットと、
前記入力フィーチャーマップの第2ピクセル値と前記カーネルのウェイト値とのそれぞれの演算を並列的に行う第2プロセッシングユニットと、を含む、或いは
(2)前記コントローラは、
前記共有オペランドを
、前記カーネル
を構成する複数のウェイト値のうちの第1ウェイト値及び第2ウェイト値として決定し、且つ
前記プロセッシングユニットは、
前記カーネルの第1ウェイト値と前記入力フィーチャーマップのピクセル値とのそれぞれの演算を並列的に行う第1プロセッシングユニットと、
前記カーネルの第2ウェイト値と前記入力フィーチャーマップのピクセル値とのそれぞれの演算を並列的に行う第2プロセッシングユニットを含む、請求項1に記載のニューラルネットワーク装置。
【請求項3】
前記コントローラは、
第1レイヤの入力フィーチャーマップの特徴及び前記第1レイヤのカーネルの特徴のうち少なくとも1つに基づいて、前記第1レイヤの共有オペランドを、前記第1レイヤの入力フィーチャーマップのピクセル値および前記第1レイヤのカーネルのウェイト値のうちのいずれか1つとして決定し、
第2レイヤの入力フィーチャーマップの特徴及び前記第2レイヤのカーネルの特徴のうち少なくとも1つに基づいて、前記第2レイヤの共有オペランドを、前記第2レイヤの入力フィーチャーマップのピクセル値および前記第2レイヤのカーネルのウェイト値のうちのいずれか1つとして決定する、請求項1に記載のニューラルネットワーク装置。
【請求項4】
前記共有オペランドを共通して共有するプロセッシングユニット数は、
前記入力フィーチャーマップの入力チャネルのピクセル数と同一であるか、前記カーネルの出力チャネル数と同一である、請求項1に記載のニューラルネットワーク装置。
【請求項5】
前記プロセッサは、
3次元のサイズを有する入力フィーチャーマップと4次元のサイズを有するカーネルとの間の3次元コンボルーション演算を行う、請求項1に記載のニューラルネットワーク装置。
【請求項6】
前記プロセッシングユニットは、
前記共有オペランドがゼロである場合に、前記並列化された演算を省略(skip)する、請求項1に記載のニューラルネットワーク装置。
【請求項7】
(1
)前記プロセッシングユニットは、
前記入力フィーチャーマップの第1ピクセル値がゼロである場合に、前記第1ピクセル値と前記カーネルの第1ウェイト値との並列化された演算を省略し、及び
前記入力フィーチャーマップの第2ピクセル値と前記カーネルの第2ウェイト値との演算を行う、或いは
(2
)前記プロセッシングユニットは、
前記カーネルの第1ウェイト値がゼロである場合に、前記第1ウェイト値と前記入力フィーチャーマップの第1ピクセル値との並列化された演算を省略し、及び
前記カーネルの第2ウェイト値と前記入力フィーチャーマップの第2ピクセル値との並列化された演算を行う、請求項1に記載のニューラルネットワーク装置。
【請求項8】
ニューラルネットワークのコンボルーション演算を処理する方法において、
コントローラが、(i)入力フィーチャーマップの
形状及び
(ii)前記入力フィーチャーマップ内でゼロ値を有するピクセルの比率又はカーネル内でゼロ値を有するウェイトの比率が既設定の値以上であることの1つに基づいて、並列化された演算それぞれに共通して共有される共有オペランドを、前記入力フィーチャーマップ
を構成する複数のピクセル値のうちの
1つのピクセル値および前記カーネル
を構成するウェイト値のうちの
1つのウェイト値のうちのいずれか1つとして決定する段階と、
プロセッシングユニットが、前記決定された共有オペランド
と、前記入力フィーチャーマップ又は前記カーネルからのそれぞれのオペランドとに基づいて前記並列化された演算を行う段階と、を含
み、
前記演算を行う段階は、
前記決定する段階において、前記コントローラが前記共有オペランドを前記入力フィーチャーマップの前記1つのピクセル値として決定することに応答して、並列の前記プロセッシングユニットが前記入力フィーチャーマップの前記1つのピクセル値と前記カーネルのそれぞれのウェイト値とのそれぞれの演算を並列的に行い、或いは
前記演算を行う段階は、
前記決定する段階において、前記コントローラが前記共有オペランドを前記カーネルの前記1つのウェイト値として決定することに応答して、複数の前記プロセッシングユニットが前記カーネルの前記1つのウェイト値と前記入力フィーチャーマップのそれぞれのピクセル値とのそれぞれの演算を並列的に行う、方法。
【請求項9】
前記演算を行う段階は、
前記共有オペランドがゼロである場合に、前記並列化された演算を省略する段階を含む、請求項
8に記載の方法。
【請求項10】
(1
)前記演算を行う段階は、
前記入力フィーチャーマップの第1ピクセル値がゼロである場合に、前記第1ピクセル値と前記カーネルの第1ウェイト値との並列化された演算を省略し、及び
前記入力フィーチャーマップの第2ピクセル値と前記カーネルの第2ウェイト値との演算を行う、或いは
(2
)前記演算を行う段階は、
前記カーネルの第1ウェイト値がゼロである場合に、前記第1ウェイト値と前記入力フィーチャーマップの第1ピクセル値との並列化された演算を省略し、及び
前記カーネルの第2ウェイト値と前記入力フィーチャーマップの第2ピクセル値との並列化された演算を行う、請求項
8に記載の方法。
【請求項11】
請求項
8ないし
10のうちいずれか1項に記載の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークのコンボルーション(convolution)演算を処理する方法及び装置に関する。
【背景技術】
【0002】
ニューラルネットワーク(neural network)は、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ(computational architecture)を参照する。最近、ニューラルネットワーク技術の発展につれて、多様な種類の電子システムにおいてニューラルネットワーク装置を使用して入力データを分析し、有効な情報を抽出している。
【0003】
ニューラルネットワーク装置は、入力データに対する多量の演算を行う。かようなニューラルネットワーク演算を効率よく処理することができる技術が研究されている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明が解決しようとする課題は、ニューラルネットワークのコンボルーション演算を処理する方法及び装置を提供するところにある。
【0005】
本実施例が解決しようとする技術的課題は、前記のような技術的課題に限定されず、下記実施例からさらに他の技術的課題が類推される。
【課題を解決するための手段】
【0006】
一側面によって、ニューラルネットワーク装置は、少なくとも1つのプログラムが保存されたメモリと、少なくとも1つのプログラムを行うことで、入力フィーチャーマップ(input featuremap)とカーネル(kernal)との間のコンボルーション演算を処理するプロセッサを含み、プロセッサは、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも1つに基づいて、並列化された演算それぞれに共通して共有される共有オペランド(shared operand)を、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定するコントローラと、決定された共有オペランドに基づいて並列化された演算を行うプロセッシングユニットと、を含んでもよい。
【0007】
他の側面によって、ニューラルネットワークのコンボルーション演算を処理する方法は、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも1つに基づいて、並列化された演算それぞれに共通して共有される共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定する段階と、決定された共有オペランドに基づいて並列化された演算を行う段階と、を含んでもよい。
【0008】
さらに他の側面によって、ニューラルネットワークのコンボルーション演算を処理する方法を具現化するためのプログラムが記録されたコンピュータで読み取り可能な記録媒体が提供される。
【発明の効果】
【0009】
本実施例によれば、コンボルーション演算のための並列化された演算に共有される共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定可能であるところ、コンボルーション演算の並列性(parallelism)をさらに効果的に具現化することができる。
【0010】
また、本実施例によれば、3次元のサイズを有する入力フィーチャーマップと4次元のサイズを有するカーネルとの間の3次元コンボルーション演算を行うにあたり、入力フィーチャーマップとカーネルとの次元が互いに異なるにしても、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つを共有オペランドに決定して並列化された演算を実行可能なハードウェア構造を具現化することができる。
【0011】
また、本実施例によれば、プロセッシングユニットの共有オペランドに係わるゼロ如何、またはプロセッシングユニットの残りの全てのオペランドに対するゼロ如何を通じてゼロスキッピングを具現化するところ、ゼロスキッピングのための単純化されたハードウェア構造を具現化することができる。
【図面の簡単な説明】
【0012】
【
図1】一実施例によるニューラルネットワークのアーキテクチャを説明するための図面である。
【
図2A】ニューラルネットワークのコンボルーション演算の例示を説明するための図面である。
【
図2B】ニューラルネットワークのコンボルーション演算の例示を説明するための図面である。
【
図3】一実施例によるニューラルネットワーク装置のハードウェア構成を示すブロック図である。
【
図4】コントローラ及びプロセッシングユニットの具体的な実施例を示す図面である。
【
図5A】プロセッシングユニットが共有オペランドに基づいて並列化された演算を行う実施例を示す図面である。
【
図5B】プロセッシングユニットが共有オペランドに基づいて並列化された演算を行う実施例を示す図面である。
【
図6】コントローラが入力フィーチャーマップの形状に基づいて共有オペランドを決定する実施例を示す図面である。
【
図7】プロセッシングユニットが共有オペランドである入力フィーチャーマップのピクセル値に基づいて並列化された演算を行う実施例を示す図面である。
【
図8】プロセッシングユニットが共有オペランドである入力フィーチャーマップのピクセル値に基づいて並列化された演算を行う実施例を示す図面である。
【
図9】プロセッシングユニットが共有オペランドであるカーネルのウェイト値に基づいて並列化された演算を行う実施例を示す図面である。
【
図10】プロセッシングユニットが共有オペランドであるカーネルのウェイト値に基づいて並列化された演算を行う実施例を示す図面である。
【
図11】プロセッシングユニットがゼロである共有オペランドに基づいてゼロスキッピングを行う一実施例を示す図面である。
【
図12】プロセッシングユニットがゼロである共有オペランドに基づいてゼロスキッピングを行う他の実施例を示す図面である。
【
図13】一実施例によって、ニューラルネットワーク装置の動作方法を説明するための図面である。
【発明を実施するための形態】
【0013】
実施例で使用される用語は、主に現在広く使用されている一般の用語を選択しているが、これは、当業者の意図または判例、新たな技術の出現などによって異なる。また、特定の場合は、出願人が任意に選定した用語もあり、その場合に、該当する説明部分において詳細にその意味を記載する。したがって、明細書で使用される用語は、単なる用語の名称ではない、その用語が有する意味と明細書全般にわたる内容に基づいて定義されねばならない。
【0014】
明細書全体においてある部分がある構成要素を「含む」とするとき、これは、特に反対となる記載がない限り、他の構成要素を除外するものではなく、他の構成要素をさらに含むことができるということを意味する。また、明細書に記載の「…部」、「…モジュール」などの用語は、少なくとも1つの機能や動作を処理する単位を意味し、これは、ハードウェアまたはソフトウェアとして具現化されるか、ハードウェアとソフトウェアとの組み合わせで具現化される。
【0015】
本実施例は、ニューラルネットワークのコンボルーション演算を処理する方法及び装置に係わるものであって、以下の実施例が属する技術分野において、通常の知識を有する者に広く知られている事項については、詳細な説明を省略する。
【0016】
図1は、一実施例によるニューラルネットワークのアーキテクチャを説明するための図面である。
図1を参考にすれば、ニューラルネットワーク1は、ディープニューラルネットワーク(Deep Neural Network, DNN)またはn階層ニューラルネットワーク(n-layers neural networks)のアーキテクチャであってもよい。DNNまたはn階層ニューラルネットワークは、コンボルーションニューラルネットワーク(Convolutional Neural Networks,CNN)、リカレントニューラルネットワーク(Recurrent Neural Networks,RNN)、 Deep Belief Networks, Restricted Boltzman Machinesなどに該当する。例えば、ニューラルネットワーク1は、コンボルーションニューラルネットワーク(CNN)として具現化されるが、その限りではない。
図1では、ニューラルネットワーク1の例示に該当するコンボルーションニューラルネットワークにおいて一部のコンボルーションレイヤが示されるが、コンボルーションニューラルネットワークは、示されたコンボルーションレイヤ以外にも、プーリングレイヤ(pooling layer)、フリコネクティッド(fully connected)レイヤなどをさらに含むことができる。
【0017】
ニューラルネットワーク1は、入力イメージ、フィーチャーマップ(feature maps)及び出力を含む複数のレイヤを有するアーキテクチャとして具現化される。ニューラルネットワーク1において入力イメージは、カーネル(kernel)と呼ばれるフィルターとのコンボルーション演算が行われ、その結果、フィーチャーマップが出力される。この際に、生成された出力フィーチャーマップは、入力フィーチャーマップとして再びカーネルとのコンボルーション演算が行われ、新たなフィーチャーマップが出力される。かようなコンボルーション演算が繰り返して行われた結果、最終的には、ニューラルネットワーク1を通じて入力イメージの特徴に係わる認識結果が出力される。
【0018】
例えば、
図1のニューラルネットワーク1に24×24ピクセルサイズのイメージが入力された場合に、入力イメージは、カーネルとのコンボルーション演算を通じて20×20ピクセルサイズを有する4チャネルのフィーチャーマップとして出力される。以後でも、20×20フィーチャーマップは、カーネルとの繰り返し的なコンボルーション演算を通じてサイズが縮小しつつ、最終的には、1×1ピクセルサイズの特徴が出力される。ニューラルネットワーク1は、多くのレイヤでコンボルーション演算及びサブサンプリング(またはプーリング)演算を繰り返して行うことで、入力イメージからイメージ全体を代表することができる強靭な特徴をフィルタリングして出力し、出力された最終特徴を通じて入力イメージの認識結果を導出することができる。
【0019】
図2A及び
図2Bは、ニューラルネットワークのコンボルーション演算の例示を説明するための図面である。
【0020】
図2Aの例示において、入力フィーチャーマップ210は、6×6ピクセルサイズであり、カーネル220は、3×3ピクセルサイズである、出力フィーチャーマップ230は、4×4ピクセルサイズであると仮定するが、これに制限されず、ニューラルネットワークは、多様なサイズのフィーチャーマップ及びカーネルとして具現化される。また、入力フィーチャーマップ210、カーネル220及び出力フィーチャーマップ230に定義された値は、いずれも例示的な値に過ぎず、本実施例は、その限りではない。
【0021】
カーネル220は、入力フィーチャーマップ210で3×3ピクセルサイズの領域(またはタイル)単位にスライディングしつつコンボルーション演算を行う。コンボルーション演算は、入力フィーチャーマップ210のある領域の各ピクセル値とカーネル220の対応位置の各エレメントのウェイト(weight)との間の乗算を行い、得た値をいずれも合算して、出力フィーチャーマップ230の各ピクセル値を求める演算を意味する。具体的に、カーネル220は、入力フィーチャーマップ210の第1領域211とコンボルーション演算を行う。すなわち、第1領域211の各ピクセル値1、2、3、4、5、6、7、8、9は、それぞれカーネル220の各エレメントのウェイト-1、-3、+4、+7、-2、-1、-5、+3、+1とそれぞれ乗算し、その結果として、-1、-6、12、28、-10、-6、-35、24、9を得る。次いで、得た値-1、-6、12、28、-10、-6、-35、24、9をいずれも加算した結果である15が計算され、出力フィーチャーマップ230の1行1列のピクセル値231は、15と決定される。ここで、出力フィーチャーマップ230の1行1列のピクセル値231は、第1領域211に対応する。同様の方式で、入力フィーチャーマップ210の第2領域212とカーネル220とのコンボルーション演算が行われることで、出力フィーチャーマップ230の1行2列のピクセル値232である4が決定される。最終的に、入力フィーチャーマップ210の最後のウィンドウである第16領域213とカーネル220とのコンボルーション演算が行われることで、出力フィーチャーマップ230の4行4列のピクセル値233である11が決定される。
【0022】
一方、
図2Aでは、2次元コンボルーション演算について説明したが、コンボルーション演算は、複数のチャネルの入力フィーチャーマップ、カーネル、出力フィーチャーマップが存在する3次元コンボルーション演算にも該当する。これについては、
図2Bを参考にして説明する。
【0023】
図2Bを参考にすれば、入力フィーチャーマップ201は、3次元のサイズを有し、X個の入力チャネルが存在し、各入力チャネルの2次元入力フィーチャーマップは、H行W列のサイズを有する(X、W、Hは、自然数)。カーネル202は、4次元のサイズを有し、R行S列のサイズを有する2次元のカーネルがX個の入力チャネル及びY個の出力チャネルほど存在する(R、S、Yは、自然数)。言い換えれば、カーネル202は、入力フィーチャーマップ201の入力チャネル数X及び出力フィーチャーマップ203の出力チャネル数Yに対応する個数のチャネルを有し、各チャネルの2次元カーネルは、R行S列のサイズを有してもよい。出力フィーチャーマップ203は、3次元入力フィーチャーマップ201と4次元カーネル202との3次元コンボルーション演算を通じて生成され、3次元コンボルーション演算結果によって、Y個のチャネルが存在する。
【0024】
1つの2次元入力フィーチャーマップと1つの2次元カーネルとのコンボルーション演算を通じて、出力フィーチャーマップが生成される過程は、前記
図2Aの説明と同一であり、
図2Aで説明した2次元コンボルーション演算が、X個の入力チャネルの入力フィーチャーマップ201と、X個の入力チャネル及びY個の出力チャネルのカーネル202との間で繰り返して行われることにより、Y個の出力チャネルの出力フィーチャーマップ203が生成される。
【0025】
図3は、一実施例によるニューラルネットワーク装置のハードウェア構成を示すブロック図である。
【0026】
ニューラルネットワーク装置100は、PC(personal computer)、サーバ装置、モバイル装置、埋め込み型装置などの多種の装置として具現化され、具体例として、ニューラルネットワークを用いた音声認識、映像認識、映像分類などを行うスマートフォン、タブレット装置、AR(Augmented Reality)装置、IoT(Internet of Things)装置、自律走行自動車、ロボティックス、医療機器などに該当するが、その限りではない。さらに、ニューラルネットワーク装置100は、上のような装置に搭載される専用ハードウェア加速器(HW accelerator)に該当し、ニューラルネットワーク装置100は、ニューラルネットワーク駆動のための専用モジュールであるNPU(neural processing unit)、TPU(Tensor Processing Unit)、Neural Engineのようなハードウェア加速器でもあるが、その限りではない。
【0027】
図3を参考にすれば、ニューラルネットワーク装置100は、プロセッサ110及びメモリ120を含む。
図3に示されたニューラルネットワーク装置100には、本実施例に係わる構成要素のみが示されている。したがって、ニューラルネットワーク装置100には、
図3に示された構成要素以外に他の汎用的な構成要素がさらに含まれるということは、当業者に自明である。
【0028】
プロセッサ110は、ニューラルネットワーク装置100でニューラルネットワークを駆動するための全般的な機能を制御する役割を担う。例えば、プロセッサ110は、ニューラルネットワーク装置100内のメモリ120に保存されたプログラムを行うことで、ニューラルネットワーク装置100を全般的に制御する。プロセッサ110は、ニューラルネットワーク装置100内に備えられたCPU(central processing unit)、 GPU(graphics processing unit)、AP(application processor)などとして具現化されるが、その限りではない。
【0029】
メモリ120は、ニューラルネットワーク装置100内で処理される各種データを保存するハードウェアであって、ニューラルネットワーク装置100で処理されたデータ及び処理されるデータを保存することができる。また、メモリ120は、ニューラルネットワーク装置100によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ120は、DRAM(dynamic random access memory), SRAM(static random access memory)のような RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM、ブルーレイ、または他の光学ディスクストレージ、HDD(hard disk drive)、 SSD(solid state drive)、またはフラッシュメモリを含んでもよい。
【0030】
プロセッサ110は、メモリ120からニューラルネットワークデータ、例えば、イメージデータ、フィーチャーマップデータ、カーネルデータなどを読み出し/書き込み(read/write)し、読み出し/書き込みされたデータを用いてニューラルネットワークを実行する。ニューラルネットワークが実行されるとき、プロセッサ110は内部に備えられたコンボルーション演算のためのプロセッシングユニットを駆動させ、出力フィーチャーマップに係わるデータを生成するための入力フィーチャーマップとカーネルとのコンボルーション演算を繰り返して行う。この際に、入力フィーチャーマップのチャネル数、カーネルのチャネル数、入力フィーチャーマップのサイズ、カーネルのサイズ、値の精度(precision)などの多様なファクターに依存してコンボルーション演算の演算量が決定される。
【0031】
プロセッサ110は、メモリ120から入力フィーチャーマップ及びカーネルを得て、入力フィーチャーマップとカーネルとの間のコンボルーション演算を処理することができる。プロセッサ110は、コンボルーション演算を処理するためにプロセッシングユニット112を含んでもよい。プロセッシングユニット112それぞれは並列的にコンボルーション演算を処理することができ、プロセッシングユニット112それぞれは、コンボルーション演算のためのロジック回路を含んでもよい。具体的に、プロセッシングユニット112それぞれは、乗算器(multiplier)、加算器(adder)及び累算器(accumulator)の組み合わせで具現化された演算器を含んでもよい。また、乗算器は、多数のサブ乗算器の組み合わせで具現化され、また加算器も多数のサブ加算器の組み合わせで具現化される。
【0032】
プロセッサ110は、コンボルーション演算を処理するためにキャッシュ(cache)機能を担当するオンチップ(on-chip)メモリ、及び入力フィーチャーマップのピクセル値、またはカーネルのウェイト値のような多様なオペランドをディスパッチするためのディスパッチャー(dispatcher)をさらに含んでもよい。具体的に、ディスパッチャーは、メモリ120に保存されている入力フィーチャーマップのピクセル値、カーネルのウェイト値などのデータからプロセッシングユニットが行う演算に必要なピクセル値及びウェイト値などのオペランドをオンチップメモリにディスパッチする。次いで、ディスパッチャーは、オンチップメモリにディスパッチされたオペランドをコンボルーション演算のためにプロセッシングユニットに再びディスパッチする。
【0033】
プロセッサ110は、プロセッシングユニット112が処理するオペランドを決定するコントローラ114を含んでもよい。コントローラ114は、入力フィーチャーマップとカーネルとのコンボルーション演算時に、プロセッシングユニット112が行う並列化された演算それぞれに共通して共有される共有オペランド(shared operand)を、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定する。コントローラ114は、一例によって、第1入力フィーチャーマップと第1カーネルとのコンボルーション演算時に、共有オペランドを第1入力フィーチャーマップのピクセル値として決定し、他の例によって、第2入力フィーチャーマップと第2カーネルとのコンボルーション演算時に、共有オペランドを第2カーネルのウェイト値として決定する。
【0034】
コントローラ114は、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも1つに基づいて、共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定する。具体的に、コントローラ114は、入力フィーチャーマップ内でゼロ値を有するピクセルの比率、カーネル内でゼロ値を有するウェイトの比率、及び入力フィーチャーマップの形状のうち少なくとも1つに基づいて、共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定する。一例によって、コントローラ114は、入力フィーチャーマップ内でゼロ値を有するピクセルの比率が既設定の閾値以上である場合に、共有オペランドを入力フィーチャーマップのピクセル値として決定する。コントローラ114は、以前レイヤの入力フィーチャーマップ内でゼロ値を有するピクセルの比率を考慮し、現在レイヤの入力フィーチャーマップ内でゼロ値を有するピクセルの比率を決定する。他の例によって、コントローラ114は、カーネル内でゼロ値を有するウェイトの比率が既設定の閾値以上である場合に、共有オペランドをカーネルのウェイト値として決定する。さらに他の例によって、コントローラ114は、入力フィーチャーマップの入力チャネル数が多いか、及び各入力チャネルの2次元入力フィーチャーマップのサイズが小さい場合に、共有オペランドを入力フィーチャーマップのピクセル値として決定することができる。
【0035】
コントローラ114は、ニューラルネットワークのレイヤごとに共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定する。例えば、第1レイヤの入力フィーチャーマップと第1レイヤのカーネルとのコンボルーション演算時に、コントローラ114は、第1レイヤの共有オペランドを第1レイヤの入力フィーチャーマップのピクセル値として決定する。また、第2レイヤの入力フィーチャーマップと第2レイヤのカーネルとのコンボルーション演算時に、コントローラ114は、第2レイヤの共有オペランドを第2レイヤのカーネルのウェイト値として決定する。言い換えれば、コントローラ114は、レイヤが変更される度に、共有オペランドを入力フィーチャーマップのピクセル値からカーネルのウェイトに変更するか、共有オペランドをカーネルのウェイトから入力フィーチャーマップのピクセル値に変更する。
【0036】
プロセッシングユニット112は、コントローラ114によって決定された共有オペランドに基づいて並列化された演算を行う。一例として、第1入力フィーチャーマップのピクセル値が共有オペランドとして決定される場合に、プロセッシングユニット112は、オペランド対(operand pair)のうち1つとして、共通して第1入力フィーチャーマップのピクセル値をオペランドとして入力され、オペランド対のうちの残りの1つとして、第1カーネルの互いに異なるウェイト値を入力される。他の例として、第1カーネルのウェイト値が共有オペランドとして決定される場合に、プロセッシングユニット112は、オペランド対のうち1つとして、共通して第1カーネルのウェイト値をオペランドとして入力され、オペランド対のうちの他の1つとして、第1入力フィーチャーマップの互いに異なるピクセル値を入力される。したがって、プロセッシングユニット112は、共有オペランドを共通して入力されて並列化された演算を行うので、スカラーベクトル(scalar-vector)乗算を具現化する。プロセッシングユニット112は、並列化された演算を行って出力値を出力し、出力値は、出力フィーチャーマップに累算される。
【0037】
ニューラルネットワーク装置100は、共有オペランドをプロセッシングユニット112それぞれで共有するように制御することができるので、プロセッシングユニット112それぞれに対する同じ制御が可能なので、ハードウェア構造を単純化し、ハードウェアコストを節減することができる。また、ニューラルネットワーク装置100は、プロセッシングユニット112の共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定可能であるところ、コンボルーション演算の並列性(parallelism)をさらに効果的に用いるための側面で共有オペランドを選択する。一例によって、ニューラルネットワーク装置100は、ゼロスキッピング(zero skipping)をより効果的に具現化するための側面で、共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定する。具体的な実施例は、
図11及び
図12に基づいて後述する。他の例によって、ニューラルネットワーク装置100は、一レイヤの入力フィーチャーマップの形状によって、プロセッシングユニット112の並列化された演算をさらに効果的に具現化するための共有オペランドを選択する。具体的な実施例は、
図6に基づいて後述する。
【0038】
また、ニューラルネットワーク装置100は、3次元のサイズを有する入力フィーチャーマップと4次元のサイズを有するカーネルとの間の3次元コンボルーション演算を行うにあたり、入力フィーチャーマップとカーネルとの次元が互いに違っても、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つを共有オペランドに決定して並列化された演算を行うハードウェア構造を具現化することができる。
【0039】
図4は、コントローラ及びプロセッシングユニットの具体的な実施例を示す。
【0040】
コントローラ114は、メモリ120から入力フィーチャーマップ及びカーネルを得る。コントローラ114は、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも1つに基づいて、プロセッシングユニット112が共通して共有する共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定する。
【0041】
コントローラ114は、入力フィーチャーマップのピクセル値及びカーネルのウェイト値がプロセッシングユニット112に入力されるように制御することができ、特に、既定の共有オペランドがプロセッシングユニット112それぞれに共通して入力されるように制御する。一例によって、入力フィーチャーマップのピクセル値が共有オペランドとして決定される場合に、コントローラ114は、入力フィーチャーマップのピクセル値がプロセッシングユニット112それぞれに入力されるように制御し、カーネルの互いに異なるウェイト値それぞれが互いに異なるプロセッシングユニットに入力されるように制御する。言い換えれば、コントローラ114は、カーネルの互いに異なるウェイト値それぞれがオペランド1ないしオペランドnとして互いに異なるプロセッシングユニットに入力されるように制御する。他の例によって、カーネルのウェイト値が共有オペランドとして決定される場合に、コントローラ114は、カーネルのウェイト値がプロセッシングユニット112それぞれに入力されるように制御し、入力フィーチャーマップの互いに異なるピクセル値それぞれが互いに異なるプロセッシングユニットに入力されるように制御する。言い換えれば、コントローラ114は、入力フィーチャーマップの互いに異なるピクセル値それぞれがオペランド1ないしオペランドnとして互いに異なるプロセッシングユニットに入力されるように制御する。コントローラ114の制御によって、プロセッサ110のディスパッチャーは、共有オペランドを含むオペランド対をプロセッシングユニット112それぞれにディスパッチする。
【0042】
プロセッシングユニット112それぞれは、乗算器、加算器及び累算器の組み合わせで具現化されるところ、入力されるオペランド対に対する乗算及び加算演算を通じて出力値(出力1ないし出力n)を出力し、出力値(出力1ないし出力n)は、出力フィーチャーマップに累算される。また、プロセッシングユニット112それぞれは共有オペランドと互いに異なるオペランドとの演算を行うところ、プロセッシングユニット112は、スカラー(共有オペランド)とベクトル(オペランド1、オペランド2,...,オペランドn)との乗算演算を具現化する1Xnハードウェア構造を具現化することができる。
【0043】
図5A及び
図5Bは、プロセッシングユニットが共有オペランドに基づいて並列化された演算を行う実施例を示す。
【0044】
図5Aにおいて、コントローラ114は、カーネルの第1ウェイト値w_1をプロセッシングユニット112の共有オペランドとして決定する。次いで、コントローラ114は、第1ウェイト値w_1が16個のプロセッシングユニット112それぞれに入力されるように制御し、入力フィーチャーマップの16個のピクセル値IFM1~IFM16それぞれが16個のプロセッシングユニット112それぞれに入力されるように制御する。例えば、
図5Aで示された16個のピクセル値IFM1~IFM16は、入力フィーチャーマップIFMの第1入力チャネルに該当するピクセル値であってもよい。16個のプロセッシングユニット112それぞれは、入力されるオペランド対に対する演算を行い、16個の出力値を出力し、16個の出力値は、出力フィーチャーマップOFMに累算される。
【0045】
図5Bにおいて、コントローラ114は、入力フィーチャーマップの第1ピクセル値IFM1をプロセッシングユニット112の共有オペランドとして決定する。次いで、コントローラ114は、第1ピクセル値IFM1がプロセッシングユニット112それぞれに入力されるように制御し、カーネルの16個のウェイト値w_1~w_16それぞれが16個のプロセッシングユニット112それぞれに入力されるように制御する。例えば、カーネルの16個のウェイト値w_1~w_16は、カーネルの16個の出力各チャネルのウェイト値であってもよい。16個のプロセッシングユニット112それぞれは、入力されるオペランド対に対する演算を行い、16個の出力値を出力し、16個の出力値は、出力フィーチャーマップOFMに累算される。
【0046】
図5A及び
図5Bでは、入力フィーチャーマップの1つの入力チャネルのピクセル数、カーネルの出力チャネル数、及びプロセッシングユニット112の個数がいずれも16個と同一であると示されているが、これは一例示に過ぎず、それにより限定的に解釈されない。
【0047】
図6は、コントローラが入力フィーチャーマップの形状に基づいて共有オペランドを決定する実施例を示す。
【0048】
コントローラ114は、入力フィーチャーマップの形状に基づいてプロセッシングユニット112の共有オペランドを決定する。例えば、コントローラ114は、入力フィーチャーマップの入力チャネル数、または各入力チャネルの2次元入力フィーチャーマップのサイズを考慮して、プロセッシングユニット112の共有オペランドを決定する。
【0049】
一例によって、コントローラ114は、入力フィーチャーマップ610のチャネル数が少ないと判断され、入力フィーチャーマップ610の1チャネルの2次元入力フィーチャーマップが大きいと判断される場合に、プロセッシングユニット112の共有オペランドをカーネルのウェイト値として決定する傾向性を有してもよい。言い換えれば、入力フィーチャーマップ610の幅値(W×H)が大きく、深さ値(c)が小さいと判断される場合に、プロセッシングユニット112の共有オペランドをカーネルのウェイト値として決定する傾向性を有してもよい。入力フィーチャーマップ610の幅値(W×H)が大きく、深さ値(c)が小さいほど、カーネルのウェイト値を再使用(reuse)してコンボルーション演算を行うことがプロセッシングユニット112の並列化された演算をさらに効果的に具現化するので、コントローラ114は、カーネルのウェイト値を共有オペランドとして決定する。例えば、コントローラ114は、入力フィーチャーマップ610の幅値(W×H)が既設定の閾値よりも大きいか、深さ値(c)が既設定の閾値よりも小さいと判断される場合に、プロセッシングユニット112の共有オペランドをカーネルのウェイト値として決定する。
【0050】
コントローラ114は、入力フィーチャーマップ610の入力チャネル数が多いと判断され、入力フィーチャーマップ610の1チャネルの2次元入力フィーチャーマップのサイズが小さいと判断される場合に、プロセッシングユニット112の共有オペランドを入力フィーチャーマップのピクセル値として決定する傾向性を有してもよい。言い換えれば、コントローラ114は、入力フィーチャーマップ620の幅値(W×H)が小さく、深さ値(c)が大きいと判断される場合に、プロセッシングユニット112の共有オペランドを入力フィーチャーマップのピクセル値として決定する傾向性を有してもよい。入力フィーチャーマップ610の幅値(W×H)が小さく、深さ値(c)が大きいほど、入力フィーチャーマップのピクセル値を再使用してコンボルーション演算を行うことがプロセッシングユニット112の並列化された演算をさらに効果的に具現できるので、コントローラ114は、入力フィーチャーマップのピクセル値を共有オペランドとして決定することができる。例えば、コントローラ114は、入力フィーチャーマップ620の幅値(W×H)が既設定の閾値よりも小さいか、深さ値(c)が既設定の閾値よりも大きいと判断される場合に、プロセッシングユニット112の共有オペランドを入力フィーチャーマップのピクセル値として決定する。
【0051】
ニューラルネットワークのレイヤに対するコンボルーション演算が順次に進められることにより、ニューラルネットワークの前半レイヤの入力フィーチャーマップは、
図6の入力フィーチャーマップ610と類似した形状を有し、ニューラルネットワークの後半レイヤの入力フィーチャーマップは、
図6の入力フィーチャーマップ620と類似した形状を有してもよい。したがって、コントローラ114は、ニューラルネットワークの前半レイヤにおいて、プロセッシングユニット112の共有オペランドをカーネルのウェイト値として決定し、ニューラルネットワークの後半レイヤにおいて、プロセッシングユニット112の共有オペランドを入力フィーチャーマップのピクセル値として決定する。
【0052】
図7は、プロセッシングユニットが共有オペランドである入力フィーチャーマップのピクセル値に基づいて並列化された演算を行う実施例を示す。
【0053】
コントローラ114は、共有オペランドを入力フィーチャーマップIFMのピクセル値として決定する。したがって、コントローラ114は、入力フィーチャーマップIFMのピクセル値がプロセッシングユニット112それぞれに共通して入力されるように制御することができる。
【0054】
具体的に、コントローラ114は、入力フィーチャーマップIFMの第1ピクセル値IFM1を共有オペランドとしてプロセッシングユニット112それぞれに入力されるように制御し、カーネルのウェイト値w_1、w_2,...,w_mそれぞれがプロセッシングユニット112それぞれに入力されるように制御する。第1ピクセル値IFM1は、入力フィーチャーマップIFMの第0入力チャネルの(0,0)位置に該当するピクセル値であり、カーネルのウェイト値w_1、w_2,...,w_mそれぞれは、カーネルのm個の出力チャネルそれぞれで第0入力チャネルの(0,0)位置に該当するウェイト値であってもよい。
【0055】
プロセッシングユニット112のうち、第1プロセッシングユニットは、第1ピクセル値IFM1とウェイト値w_1との乗算及び加算演算を行い、出力値O0(0,0)を出力し、プロセッシングユニット112のうち第mプロセッシングユニットは、第1ピクセル値IFM1とウェイト値w_mとの間の乗算及び加算演算を行い、出力値Om-1(0,0)を出力する。言い換えれば、プロセッシングユニット112は、スカラーとベクトルとの乗算演算であって、第1ピクセル値IFM1とウェイト値w_1、w_2,...,w_mとの乗算演算を行い、出力値O0(0,0)、O1(0,0),...,Om-1(0,0)を出力する。また、出力値O0(0,0)、O1(0,0),...,Om-1(0,0)それぞれは、出力フィーチャーマップOFMの第0出力チャネルないし第m-1出力チャネルそれぞれに累算される。
【0056】
同様に、コントローラ114は、入力フィーチャーマップIFMの他のピクセル値を共有オペランドとして、プロセッシングユニット112それぞれに入力されるように制御し、カーネルの他のウェイト値それぞれがプロセッシングユニット112それぞれに入力されるように制御する。次いで、プロセッシングユニット112は、入力フィーチャーマップIFMの他のピクセル値とカーネルの他のウェイト値との乗算演算を行い、出力値を出力し、出力値は、出力フィーチャーマップOFMに累算される。
【0057】
図8は、プロセッシングユニットが共有オペランドである入力フィーチャーマップのピクセル値に基づいて並列化された演算を行う実施例を示す。
【0058】
コントローラ114は、共有オペランドを入力フィーチャーマップIFMの第1ピクセル値IFM1、第2ピクセル値IFM2、第3ピクセル値IFM3、及び第4ピクセル値IFM4であると決定する。第1ピクセル値IFM1、第2ピクセル値IFM2、第3ピクセル値IFM3、及び第4ピクセル値IFM4は、入力フィーチャーマップIFMの第0入力チャネルの(0,0)、(0,1)、(1,0)、及び(1,1)位置に該当するピクセル値であってもよい。コントローラ114は、第1ピクセル値IFM1を共有オペランドとしてプロセッシングユニット112のうち第1プロセッシングユニット171それぞれに入力されるように制御し、カーネルのウェイト値w_1、w_2,...,w_mそれぞれが第1プロセッシングユニット171それぞれに入力されるように制御する。同様に、コントローラ114は、第2ピクセル値IFM2を共有オペランドとしてプロセッシングユニット112のうち第2プロセッシングユニット172それぞれに入力されるように制御し、カーネルのウェイト値w_1、w_2,...,w_mそれぞれが第2プロセッシングユニット172それぞれに入力されるように制御する。同様に、コントローラ114は、第3ピクセル値IFM3を共有オペランドとしてプロセッシングユニット112のうち第3プロセッシングユニット173それぞれに入力されるように制御し、カーネルのウェイト値w_1、w_2,...,w_mそれぞれが第3プロセッシングユニット173それぞれに入力されるように制御する。同様に、コントローラ114は、第4ピクセル値IFM4を共有オペランドとしてプロセッシングユニット112のうち第4プロセッシングユニット174それぞれに入力されるように制御し、カーネルのウェイト値w_1、w_2,...,w_mそれぞれが第4プロセッシングユニット174それぞれに入力されるように制御する。例えば、コントローラ114は、バッファ(IFM Buffer(0,0)ないしIFM Buffer(1,1))から第1ピクセル値IFM1ないし第4ピクセル値IFM1それぞれが第1プロセッシングユニット171ないし第4プロセッシングユニット174それぞれに入力されるように制御し、バッファ(Weight Buffer)からウェイト値w_1、w_2,...,w_mが第1プロセッシングユニット171ないし第4プロセッシングユニット174それぞれに入力されるように制御することができる。
【0059】
第1プロセッシングユニット171は、第1ピクセル値IFM1とウェイト値w_1、w_2,...,w_mとの乗算演算を行い、出力値O0(0,0)、O1(0,0),...,Om-1(0,0)を出力する。また、第2プロセッシングユニット172は、第2ピクセル値IFM2とウェイト値w_1、w_2,...,w_mとの乗算演算を行い、出力値O0(0,1)、O1(0,1),...,Om-1(0,1)を出力する。また、第3プロセッシングユニット173は、第3ピクセル値IFM3とウェイト値w_1、w_2,...,w_mとの乗算演算を行い、出力値O0(1,0)、O1(1,0),...,Om-1(1,0)を出力する。また、第4プロセッシングユニット174は、第4ピクセル値IFM4とウェイト値w_1、w_2,...,w_mとの乗算演算を行い、出力値O0(1,1)、O1(1,1),...,Om-1(1,1)を出力する。したがって、第1プロセッシングユニット171ないし第4プロセッシングユニット174によって出力された出力値O0~m-1(0,0)、O0~m-1(0,1)、O0~m-1(1,0)、O0~m-1(1,1)は、出力フィーチャーマップOFMに累算される。
【0060】
図7及び
図8で示されたH×Wのサイズを有し、n個の入力チャネルで構成された入力フィーチャーマップIFM、Ti×T
rのサイズを有し、n個の入力チャネル及びm個の出力チャネルで構成されたカーネル、及びT
r×T
cのサイズを有し、m個の出力チャネルで構成された出力フィーチャーマップOFMの各数値は、一例示に過ぎず、これに限定して解釈されない。また、
図7及び
図8において示された入力フィーチャーマップIFMの第1ピクセル値ないし第4ピクセル値の位置、及びカーネルのウェイト値w_1、w_2,...,w_mの位置は、一例示に過ぎず、これに限定して解釈されない。
【0061】
図9は、プロセッシングユニットが共有オペランドであるカーネルのウェイト値に基づいて並列化された演算を行う実施例を示す。
【0062】
コントローラ114は、共有オペランドをカーネルのウェイト値として決定する。したがって、コントローラ114は、カーネル(Kernal)のウェイト値がプロセッシングユニット112それぞれに共通して入力されるように制御することができる。
具体的に、コントローラ114は、カーネルの第1ウェイト値w_1を共有オペランドとしてプロセッシングユニット112それぞれに入力されるように制御し、入力フィーチャーマップIFMのピクセル値IFM1、IFM2、IFM3、IFM4それぞれがプロセッシングユニット112それぞれに入力されるように制御する。カーネルの第1ウェイト値w_1は、カーネルの第0出力チャネル及び第0入力チャネルの(0,0)位置に該当するウェイト値であってもよい。第1ピクセル値IFM1、第2ピクセル値IFM2、第3ピクセル値IFM3、及び第4ピクセル値IFM4は、入力フィーチャーマップIFMの第0入力チャネルの(0,0)、(0,1)、(1,0)、及び(1,1)位置に該当するピクセル値であってもよい。
【0063】
プロセッシングユニット112のうち第1プロセッシングユニットは、第1ウェイト値w_1と第1ピクセル値IFM1との乗算及び加算演算を行い、出力値O0(0,0)を出力する。同様に、プロセッシングユニット112のうち第2プロセッシングユニットないし第4プロセッシングユニットは、第1ウェイト値w_1と第2ピクセル値IFM2との乗算及び加算演算、第1ウェイト値w_1と第3ピクセル値IFM3との乗算及び加算演算、及び第1ウェイト値w_1と第4ピクセル値IFM4との乗算及び加算演算を行い、出力値O0(0,1)、出力値O0(1,0)、及び出力値O0(1,1)を出力する。言い換えれば、プロセッシングユニット112は、スカラーとベクトルとの乗算演算であって、第1ウェイト値w_1とピクセル値IFM1、IFM2、IFM3、IFM4との乗算演算を行い、出力値O0(0,0)、O0(0,1)、O0(1,0)、O0(1,1)を出力する。また、出力値O0(0,0)、O0(0,1)、O0(1,0)、O0(1,1)それぞれは、出力フィーチャーマップOFMに累算される。
【0064】
同様に、コントローラ114は、カーネルの他のウェイト値を共有オペランドとしてプロセッシングユニット112それぞれに入力されるように制御し、入力フィーチャーマップIFMの他のピクセル値それぞれがプロセッシングユニット112それぞれに入力されるように制御することができる。次いで、プロセッシングユニット112は、カーネルの他のウェイト値と入力フィーチャーマップの他のピクセル値との乗算演算を行い、出力値を出力し、出力値は、出力フィーチャーマップOFMに累算される。
【0065】
図10は、プロセッシングユニットが共有オペランドであるカーネルのウェイト値に基づいて並列化された演算を行う実施例を示す。
【0066】
コントローラ114は、共有オペランドをカーネルの第1ウェイト値w_1、第2ウェイト値w_2、第3ウェイト値w_3、及び第4ウェイト値w_4であると決定する。第1ウェイト値w_1、第2ウェイト値w_2、第3ウェイト値w_3、及び第4ウェイト値w_4は、第0出力チャネルないし第3出力チャネルそれぞれに対応する第0入力チャネルの(0,0)位置に該当するウェイト値であってもよい。コントローラ114は、第1ウェイト値w_1を共有オペランドとしてプロセッシングユニット112のうち第1プロセッシングユニット191それぞれに入力されるように制御し、入力フィーチャーマップIFMのピクセル値IFM1、IFM2、IFM3、IFM4それぞれが第1プロセッシングユニット191それぞれに入力されるように制御することができる。同様に、コントローラ114は、第2ウェイト値w_2を共有オペランドとしてプロセッシングユニット112のうち第2プロセッシングユニット192それぞれに入力されるように制御し、入力フィーチャーマップIFMのピクセル値IFM1、IFM2、IFM3、IFM4それぞれが第2プロセッシングユニット192それぞれに入力されるように制御することができる。同様に、コントローラ114は、第3ウェイト値w_3を共有オペランドとしてプロセッシングユニット112のうち第3プロセッシングユニット193それぞれに入力されるように制御し、入力フィーチャーマップIFMのピクセル値IFM1、IFM2、IFM3、IFM4それぞれが第3プロセッシングユニット193それぞれに入力されるように制御することができる。同様に、コントローラ114は、第4ウェイト値w_4を共有オペランドとしてプロセッシングユニット112のうち第4プロセッシングユニット194それぞれに入力されるように制御し、入力フィーチャーマップIFMのピクセル値IFM1、IFM2、IFM3、IFM4それぞれが第4プロセッシングユニット194それぞれに入力されるように制御することができる。
【0067】
第1プロセッシングユニット191は、第1ウェイト値w_1とピクセル値IFM1、IFM2、IFM3、IFM4との乗算演算を行い、出力値O0(0,0)、O0(0,1)、O0(1,0)、O0(1,1)を出力する。また、第2プロセッシングユニット192は、第2ウェイト値w_2とピクセル値IFM1、IFM2、IFM3、IFM4との乗算演算を行い、出力値O1(0,0)、O1(0,1)、O1(1,0)、O1(1,1)を出力する。また、第3プロセッシングユニット193は、第3ウェイト値w_3とピクセル値IFM1、IFM2、IFM3、IFM4との乗算演算を行い、出力値O2(0,0)、O2(0,1)、O2(1,0)、O2(1,1)を出力する。また、第4プロセッシングユニット194は、第4ウェイト値w_4とピクセル値IFM1、IFM2、IFM3、IFM4との乗算演算を行い、出力値O3(0,0)、O3(0,1)、O3(1,0)、O3(1,1)を出力する。したがって、第1プロセッシングユニット191ないし第4プロセッシングユニット194によって出力された出力値O0(0~1、0~1)、O1(0~1、0~1)、O2(0~1、0~1)、O3(0~1、0~1)は、出力フィーチャーマップOFMに累算される。
【0068】
図8及び
図9で示されたH×Wのサイズを有し、n個の入力チャネルで構成された入力フィーチャーマップIFM、Ti×T
rのサイズを有し、n個の入力チャネル及びm個の出力チャネルで構成されたカーネル(Kernal)、及びT
r×T
cのサイズを有し、m個の出力チャネルで構成された出力フィーチャーマップOFMの各数値は、一例示に過ぎず、これに限定して解釈されない。また、
図8及び
図9で示された第1ウェイト値w_1ないし第4ウェイト値w_4の位置及びピクセル値IFM1、IFM2、IFM3、またはIFM4の位置は、一例示に過ぎず、これに限定して解釈されない。
【0069】
再び
図3を参照すれば、プロセッシングユニット112は、コントローラ114によって決定された共有オペランドに基づいて並列化された演算を行う。この際に、共有オペランドがゼロである場合に、プロセッシングユニット112は、並列化された演算を省略(skip)しうる。言い換えれば、プロセッシングユニット112は、共有オペランドに基づいたゼロスキッピング(zero skipping)を具現化することができる。
【0070】
コントローラ114は、入力フィーチャーマップのピクセル値を共有オペランドと決定する。一例によって、第1ピクセル値がゼロである場合に、プロセッシングユニット112は、第1ピクセル値とカーネルの第1ウェイト値との並列化された演算を省略する。したがって、プロセッシングユニット112は、ゼロである第1ピクセル値の代わりに、非ゼロ(non-zero)である第2ピクセル値とカーネルの第2ウェイト値との並列化された演算を行う。他の例によって、カーネルの第1ウェイト値がいずれもゼロである場合に、プロセッシングユニット112は、第1ピクセル値とカーネルの第1ウェイト値との並列化された演算を省略し、第2ピクセル値とカーネルの第2ウェイト値との並列化された演算を行うことができる。
コントローラ114は、カーネルのウェイト値を共有オペランドと決定する。一例によって、第1ウェイト値がゼロである場合に、プロセッシングユニット112は、第1ウェイト値と入力フィーチャーマップの第1ピクセル値との並列化された演算を省略する。したがって、プロセッシングユニット112は、ゼロである第1ウェイト値の代わりに、非ゼロである第2ウェイト値と第2ピクセル値との並列化された演算を行う。他の例によって、入力フィーチャーマップの第1ピクセル値がいずれもゼロである場合に、プロセッシングユニット112は、第1ウェイト値と第1ピクセル値との並列化された演算を省略し、第2ウェイト値と第2ピクセル値との並列化された演算を行うことができる。
【0071】
ニューラルネットワーク装置100は、プロセッシングユニット112の共有オペランドに対するゼロ如何、またはプロセッシングユニット112の残りの全てのオペランドに対するゼロ如何を通じてゼロスキッピングを具現化するところ、ゼロスキッピングのための単純化されたハードウェア構造を具現化することができる。
【0072】
図11は、プロセッシングユニットがゼロである共有オペランドに基づいてゼロスキッピングを行う一実施例を示す。
【0073】
プロセッシングユニット112は、(N-1)番目のサイクル(cycle)において、共有オペランドである入力フィーチャーマップIFMの第1ピクセル値IFM1に基づいて並列化された演算を行い、出力値を出力する。具体的に、プロセッシングユニット112は、入力フィーチャーマップIFMの第0入力チャネルの(0,0)に位置した第1ピクセル値IFM1と、カーネル(Kernal)の第0出力チャネルないし第m-1出力チャネルそれぞれに対応する第0入力チャネルの(0,0)に位置したウェイト値との並列化された演算を行い、出力値を出力する。かような出力値それぞれは、出力フィーチャーマップOFMの第0出力チャネルないし第m-1出力各チャネルの(0,0)位置であるO0~m-1(0,0)に累算される。
【0074】
次いで、プロセッシングユニット112は、N番目のサイクルで、入力フィーチャーマップIFMの第2ピクセル値IFM2に基づいて並列化された演算を行う。但し、第2ピクセル値IFM2がゼロである場合に、プロセッシングユニット112は、第2ピクセル値IFM2とウェイト値との並列化された演算を省略することができる。具体的に、プロセッシングユニット112は、入力フィーチャーマップIFMの第1入力チャネルの(0,0)に位置した第2ピクセル値IFM2と、カーネルの第0出力チャネルないし第m-1出力チャネルそれぞれに対応する第1入力チャネルの(0,0)に位置したウェイト値との並列化された演算を省略することができる。
【0075】
次いで、プロセッシングユニット112は、N番目のサイクルで、入力フィーチャーマップIFMの第3ピクセル値IFM3に基づいて並列化された演算を行い、出力値を出力する。具体的に、プロセッシングユニット112は、入力フィーチャーマップIFMの第2入力チャネルの(0,0)に位置した第3ピクセル値IFM3と、カーネルの第0出力チャネルないし第m-1出力チャネルそれぞれに対応する第2入力チャネルの(0,0)に位置したウェイト値との並列化された演算を行い、出力値を出力する。かような出力値それぞれは、出力フィーチャーマップOFMの第0出力チャネルないし第m-1出力チャネルそれぞれの(0,0)位置であるO0~m-1(0,0)に累算される。
【0076】
結果として、第2ピクセル値IFM2がゼロである場合に、プロセッシングユニット112は、第1ピクセル値IFM1に次いで、第3ピクセル値IFM3に基づいて並列化された演算を行い、第1ピクセル値IFM1に基づいた出力値を累算する位置及び第3ピクセル値IFM3に基づいた出力値を累算する位置がいずれも出力フィーチャーマップOFMの同じ位置にもなる。したがって、ニューラルネットワーク装置100は、ゼロスキッピングを通じてコンボルーション演算の演算量及び演算時間を短縮しつつも、出力値が累算される位置を同一に保持するので、ニューラルネットワークのコンボルーション演算を効率よく処理することができる。
【0077】
図12は、プロセッシングユニットがゼロである共有オペランドに基づいてゼロスキッピングを行う他の実施例を示す。
【0078】
プロセッシングユニット112は、(N-1)番目サイクル(cycle)で、共有オペランドであるカーネル(Kernal)の第1ウェイト値w_1に基づいて並列化された演算を行い、出力値を出力する。具体的に、プロセッシングユニット112は、カーネルの第0出力チャネル及び第0入力チャネルの(0,0)に位置した第1ウェイト値w_1と、入力フィーチャーマップIFMの第0入力チャネルの(0~1、0~1)に位置したピクセル値との並列化された演算を行い、出力値を出力する。かような出力値それぞれは、出力フィーチャーマップOFMの第0出力チャネルの(0~1、0~1)であるO0(0~1、0~1)に累算される。
【0079】
次いで、プロセッシングユニット112は、N番目サイクルで、カーネルの第2ウェイト値w_2に基づいて並列化された演算を行う。但し、第2ウェイト値w_2がゼロである場合に、プロセッシングユニット112は、第2ウェイト値w_2とピクセル値との並列化された演算を省略する。具体的に、プロセッシングユニット112は、カーネルの第0出力チャネル及び第1入力チャネルの(0,0)に位置した第2ウェイト値w_2と、入力フィーチャーマップIFMの第1入力チャネルの(0~1、0~1)に位置したピクセル値との並列化された演算を省略する。
【0080】
次いで、プロセッシングユニット112は、N番目サイクルで、カーネルの第3ウェイト値w_3に基づいて並列化された演算を行い、出力値を出力する。具体的に、プロセッシングユニット112は、カーネルの第0出力チャネル及び第2入力チャネルの(0,0)に位置した第3ウェイト値w_3と、入力フィーチャーマップIFMの第2入力チャネルの(0~1、0~1)に位置したピクセル値との並列化された演算を行い、出力値を出力する。かような出力値それぞれは、出力フィーチャーマップOFMの第0出力チャネルの(0~1、0~1)であるO0(0~1、0~1)に累算される。
【0081】
結果として、第2ウェイト値w_2がゼロである場合に、プロセッシングユニット112は、第1ウェイト値w_1に次いで、第3ウェイト値w_3に基づいて並列化された演算を行い、第1ウェイト値w_1に基づいた出力値を累算する位置及び第3ウェイト値w_3に基づいた出力値を累算する位置がいずれも出力フィーチャーマップOFMの同じ位置にもなる。したがって、ニューラルネットワーク装置100は、ゼロスキッピングを通じてコンボルーション演算の演算量及び演算時間を短縮しつつも、出力値が累算される位置を同一に保持するので、ニューラルネットワークのコンボルーション演算を効率よく処理することができる。
【0082】
図13は、一実施例によって、ニューラルネットワーク装置の動作方法を説明するための図面である。
図13に示された方法は、
図3ないし
図12のニューラルネットワーク装置100の各構成要素によって行われ、重複する説明については省略する。
【0083】
段階1310において、ニューラルネットワーク装置100は、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも1つに基づいて、並列化された演算それぞれに共通して共有される共有オペランド(shared operand)を、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定する。ニューラルネットワーク装置100は、一例によって、第1入力フィーチャーマップと第1カーネルとのコンボルーション演算時に、共有オペランドを第1入力フィーチャーマップのピクセル値として決定し、他の例によって、第2入力フィーチャーマップと第2カーネルとのコンボルーション演算時に、共有オペランドを第2カーネルのウェイト値として決定する。
【0084】
ニューラルネットワーク装置100は、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも1つに基づいて、共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定する。具体的に、ニューラルネットワーク装置100は、入力フィーチャーマップ内でゼロ値を有するピクセルの比率、カーネル内でゼロ値を有するウェイトの比率、及び入力フィーチャーマップの形状のうち少なくとも1つに基づいて、共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定する。
【0085】
ニューラルネットワーク装置100は、ニューラルネットワークのレイヤごとに共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか1つとして決定する。例えば、第1レイヤの入力フィーチャーマップと第1レイヤのカーネルとのコンボルーション演算時に、ニューラルネットワーク装置100は、第1レイヤの共有オペランドを第1レイヤの入力フィーチャーマップのピクセル値として決定する。また、第2レイヤの入力フィーチャーマップと第2レイヤのカーネルとのコンボルーション演算時に、ニューラルネットワーク装置100は、第2レイヤの共有オペランドを第2レイヤのカーネルのウェイト値として決定する。
【0086】
段階1320において、ニューラルネットワーク装置100は、共有オペランドに基づいて並列化された演算を行う。一例として、第1入力フィーチャーマップのピクセル値が共有オペランドとして決定される場合に、ニューラルネットワーク装置100は、第1入力フィーチャーマップのピクセル値と第1カーネルのウェイト値との並列化された演算を行う。他の例で、第1カーネルのウェイト値が共有オペランドとして決定される場合に、ニューラルネットワーク装置100は、第1カーネルのウェイト値と第1入力フィーチャーマップのピクセル値との並列化された演算を行う。ニューラルネットワーク装置100は、並列化された演算を通じて出力された出力値を出力フィーチャーマップに累算する。
【0087】
ニューラルネットワーク装置100は、既定の共有オペランドがゼロである場合に、並列化された演算を省略(skip)することができる。一例によって、第1ピクセル値がゼロである場合に、ニューラルネットワーク装置100は、第1ピクセル値とカーネルの第1ウェイト値との並列化された演算を省略する。したがって、ニューラルネットワーク装置100は、ゼロである第1ピクセル値の代わりに、非ゼロ(non-zero)である第2ピクセル値とカーネルの第2ウェイト値との並列化された演算を行う。他の例によって、第1ウェイト値がゼロである場合に、ニューラルネットワーク装置100は、第1ウェイト値と入力フィーチャーマップの第1ピクセル値との並列化された演算を省略する。したがって、ニューラルネットワーク装置100は、ゼロである第1ウェイト値の代わりに、非ゼロである第2ウェイト値と第2ピクセル値との並列化された演算を行う。
【0088】
一方、前述した方法は、コンピュータで実行されるプログラムで作成可能であり、コンピュータで読み取り可能な記録媒体を用いて前記プログラムを動作させる汎用デジタルコンピュータで具現化される。また、前述した方法で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体に多くの手段を通じて記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体(例えば、ROM(Read Only Memory)、RAM、USB、フロッピーディスク、ハードディスクなど)、光学的記録媒体(例えば、CD-ROM、DVDなど)のような記録媒体を含む。
【0089】
本実施例に係わる技術分野で通常の知識を有する者は、前記記載の本質的な特性から脱しない範囲で変形された形態として具現化される可能性があるということを理解できるであろう。したがって、開示された方法は、限定的な観点ではなく、説明的な観点で考慮されねばならず、権利範囲は、前述した説明ではなく、特許請求の範囲に示しており、それと同等な範囲内にある全ての相違点を含むものと解釈されねばならない。
【符号の説明】
【0090】
100 ニューラルネットワーク装置
110 プロセッサ
114 コントローラ
112 プロセッシングユニット
120 メモリ
171 第1プロセッシングユニット
172 第2プロセッシングユニット
173 第3プロセッシングユニット
174 第4プロセッシングユニット
191 第1プロセッシングユニット
192 第2プロセッシングユニット
193 第3プロセッシングユニット
194 第4プロセッシングユニット
201 入力フィーチャーマップ
202 カーネル
203、230 出力フィーチャーマップ
210 入力フィーチャーマップ
220 カーネル
211 第1領域
212 第2領域
213 第16領域
230 出力フィーチャーマップ
231 ピクセル値
232 ピクセル値