JP7304148B2 - ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置 - Google Patents

ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置 Download PDF

Info

Publication number
JP7304148B2
JP7304148B2 JP2018221393A JP2018221393A JP7304148B2 JP 7304148 B2 JP7304148 B2 JP 7304148B2 JP 2018221393 A JP2018221393 A JP 2018221393A JP 2018221393 A JP2018221393 A JP 2018221393A JP 7304148 B2 JP7304148 B2 JP 7304148B2
Authority
JP
Japan
Prior art keywords
bit
operand
operands
feature map
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018221393A
Other languages
English (en)
Other versions
JP2019102084A (ja
Inventor
世 煥 李
楠 隼 金
準 鎬 宋
準 祐 張
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2019102084A publication Critical patent/JP2019102084A/ja
Application granted granted Critical
Publication of JP7304148B2 publication Critical patent/JP7304148B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Algebra (AREA)
  • Neurology (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Description

本発明は、ニューラルネットワークにおいて、フィーチャマップとカーネルとのコンボリューション演算を処理する方法及びその装置に関する。
ニューラルネットワーク(neural network)は、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ(computational architecture)を参照する。最近、ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワークを活用して入力データを分析し、有効な情報を抽出する研究が活発に進められている。該ニューラルネットワークを処理する装置は、複雑な入力データに対する多量の演算を必要とする。従って、該ニューラルネットワークを利用し、大量の入力データをリアルタイムに分析し、所望情報を抽出するためには、ニューラルネットワークに係わる演算を効率的に処理することができる技術が要求される。一方、該ニューラルネットワークの学習によれば、少ないビット数だけでも、一定の正確度を維持したり、正確度をさらに高めたりすることができ、該ニューラルネットワークを処理する演算器で利用されるビット数は、駆動中に様々に変化する。そのようなニューラルネットワークの性質と、ニューラルネットワークにおいて遂行される演算の並列性とを共に利用することができるならば、該ニューラルネットワークの多様な演算を効率的に処理することができるであろう。
特開平5-346914号公報
本発明が解決しようとする課題は、ニューラルネットワークのコンボリューション演算を処理する方法及びその装置を提供するところにある。本実施形態がなそうとする技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されるのである。
一側面によれば、ニューラルネットワークにおいて、コンボリューション演算を処理する方法は、前記コンボリューション演算を行う入力フィーチャマップ及びカーネルから、m個のAビットフィーチャマップオペランド、及びn個のBビットウェートオペランドを決定する段階(A,B,m及びnは、自然数である)と、前記決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのmxn個のオペランド対それぞれをコンボリューション演算器内における分解された(decomposed)サブ乗算器それぞれにディスパッチする段階と、前記分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、mxn個の出力を生成する段階と、前記生成されたmxn個の出力に基いて、前記コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する段階と、を含む。
他の側面によれば、装置は、少なくとも1つのプログラムが保存されたメモリと、前記少なくとも1つのプログラムを実行することにより、ニューラルネットワークのコンボリューション演算を処理するプロセッサと、を含み、前記プロセッサは、前記コンボリューション演算を行う入力フィーチャマップ及びカーネルから、m個のAビットフィーチャマップオペランド、及びn個のBビットウェートオペランドを決定し(A,B,m及びnは、自然数である)、前記決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのmxn個のオペランド対それぞれを、前記プロセッサのコンボリューション演算器内における分解されたサブ乗算器それぞれにディスパッチし、前記分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、mxn個の出力を生成し、前記生成されたmxn個の出力に基いて、前記コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する。
一実施形態によるニューラルネットワークのアーキテクチャについて説明するための図面である。 ニューラルネットワークのコンボリューション演算について説明するための図面である。 ニューラルネットワークのコンボリューション演算について説明するための図面である。 一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。 16ビット(16bitx16bit)乗算器において、互いに異なる精度(または、ビット幅)による乗算器活用度を比較するための図面である。 16ビット(16bitx16bit)乗算器において、互いに異なる精度(または、ビット幅)による乗算器活用度を比較するための図面である。 16ビット乗算器において、4個の8ビットオペランドを並列的に処理する場合、乗算器活用度について説明するための図面である。 16ビット乗算器において、4個の8ビットオペランドを並列的に処理する場合、乗算器活用度について説明するための図面である。 乗算器種類による回路面積、エネルギー消耗を比較するための表である。 一実施形態による、フィーチャマップオペランド及びウェートオペランドの乗算演算方式について説明するための図面である。 一実施形態によって、オペランドの多様な精度による乗算器の性能を比較するための図面である。 一実施形態によって、ニューラルネットワークのフィーチャマップオペランド及びウェートオペランドが組み合わされたオペランド対に対する乗算演算について説明するための図面である。 一実施形態によって、ニューラルネットワークのフィーチャマップオペランド及びウェートオペランドが組み合わされたオペランド対に対する乗算演算について説明するための図面である。 一実施形態によって,ニューラルネットワークにおいて並列性を利用したコンボリューション演算を行うために決定されるオペランド対の種類について説明するための図面である。 一実施形態によって,ニューラルネットワークにおいて並列性を利用したコンボリューション演算を行うために決定されるオペランド対の種類について説明するための図面である。 一実施形態によって,ニューラルネットワークにおいて並列性を利用したコンボリューション演算を行うために決定されるオペランド対の種類について説明するための図面である。 一実施形態によって,ニューラルネットワークにおいて並列性を利用したコンボリューション演算を行うために決定されるオペランド対の種類について説明するための図面である。 一実施形態によって、ニューラルネットワークのコンボリューション演算に利用されるオペランドの並列性について説明するための図面である。 他の実施形態によって、ニューラルネットワークのコンボリューション演算に利用されるオペランドの並列性について説明するための図面である。 一実施形態によって、コンボリューション演算器において、オペランドのコンボリューション演算を行う過程について説明するための図面である。 一実施形態によって、コンボリューション演算器において、オペランドのコンボリューション演算を行うことについて説明するための図面である。 一実施形態によって、コンボリューション演算器において、オペランドのコンボリューション演算を行うことについて説明するための図面である。 一実施形態によって、一部オペランドがゼロである場合に行われるコンボリューション演算について説明するための図面である。 一実施形態によって、ゼロ・オペランドを判断することについて説明するための図面である。 一実施形態によるニューラルネットワークにおいて、コンボリューション演算を処理する方法のフローチャートである。 一実施形態による電子システムの構成を示すブロック図である。
本実施形態で使用される用語は、本実施形態での機能を考慮しながら、可能な限り、現在汎用される一般的な用語を選択したが、それは、当技術分野の当業者の意図、判例、新たな技術の出現などによっても異なる。また、特定の場合は、任意に選定された用語もあり、その場合、当該実施形態の説明部分において、詳細にその意味を記載する。従って、本実施形態で使用される用語は、単純な用語の名称ではなく、その用語が有する意味と、本実施形態の全般にわたる内容とを基に定義されなければならない。
実施形態に係わる説明において、ある部分が他の部分と連結されているとするとき、それは、直接連結されている場合だけではなく、その中間に、他の構成要素を挟んで電気的に連結されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。
本実施形態で使用される「構成される」または「含む」というような用語は、明細書上に記載された多くの構成要素、または多くの段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうちの一部構成要素または一部段階は、含まれないこともあり、あるいはさらなる構成要素または段階をさらに含んでもよいと解釈されなければならない。
また、本明細書で使用される「第1」または「第2」のように序数を含む用語は、多様な構成要素を区別しての説明に使用されるが、前記構成要素は、前記用語によって限定されるものではない。前記用語は、1つの構成要素を他の構成要素から区別する目的に使用される。
下記実施形態に係わる説明は、権利範囲を制限すると解釈されるものではなく、当該技術分野の当業者が容易に類推することができることは、実施形態の権利範囲に属すると解釈されなければならないのである。以下、添付された図面を参照しながら、ただ例示のための実施形態について詳細に説明する。
図1は、一実施形態によるニューラルネットワークのアーキテクチャについて説明するための図面である。
図1を参照すれば、ニューラルネットワーク1は、ディープニューラルネットワーク(DNN:deep neural network)またはn階層ニューラルネットワーク(n-layer neural networks)のアーキテクチャでもある。該DNNまたは該n階層ニューラルネットワークは、コンボリューションニューラルネットワーク(CNN:convolutional neural network)、リカレントニューラルネットワーク(RNN:recurrent neural networks)、deep belief networks、restricted Boltzman machinesなどに該当する。例えば、ニューラルネットワーク1は、コンボリューションニューラルネットワーク(CNN)でもっても具現されるが、それに制限されるものではない。図1においては、ニューラルネットワーク1の例示に該当するコンボリューションニューラルネットワークにおいて、一部のコンボリューションレイヤが図示されたが、該コンボリューションニューラルネットワークは、図示されたコンボリューションレイヤード以外にも、プーリングレイヤ(pooling layer)、フリーコネックティッド(fully connected)レイヤなどをさらに含んでもよい。
ニューラルネットワーク1は、入力イメージ、フィーチャマップ(feature maps)及び出力を含む複数レイヤを有するアーキテクチャとしても具現される。ニューラルネットワーク1において入力イメージは、カーネル(kernel)と呼ばれるフィルタとのコンボリューション演算が行われ、その結果、フィーチャマップが出力される。生成された出力フィーチャマップは、次の入力フィーチャマップとして、さらにカーネルとのコンボリューション演算が行われ、新たなフィーチャマップが出力される。そのようなコンボリューション演算が反復的に行われた結果、最終的には、ニューラルネットワーク1による入力イメージの特徴に係わる認識結果が出力される。
例えば、図1のニューラルネットワーク1に、24x24ピクセルサイズのイメージが入力された場合、該入力イメージは、カーネルとのコンボリューション演算を介して、20x20ピクセルサイズを有する4チャネルのフィーチャマップとしても出力される。その後にも、20x20フィーチャマップは、カーネルとの反復的なコンボリューション演算を介して大きさが小さくなりながら、最終的には、1x1ピクセルサイズの特徴が出力される。ニューラルネットワーク1は、多くのレイヤにおいて、コンボリューション演算及びサブサンプリング(または、プーリング)演算を反復的に行うことにより、入力イメージから、イメージ全体を代表することができるロバストな特徴をフィルタリングして出力し、出力された最終特徴を介して、入力イメージの認識結果を導き出すことができる。
図2A及び図2Bは、ニューラルネットワークのコンボリューション演算について説明するための図面である。
図2Aの例示において、入力フィーチャマップ210は、6x6ピクセルサイズであり、オリジナル・カーネル220は、3x3ピクセルサイズであり、出力フィーチャマップ230は、4x4ピクセルサイズであると仮定するが、それらに制限されることなく、該ニューラルネットワークは、多様な大きさのフィーチャマップ及びカーネルによっても具現される。また、入力フィーチャマップ210、オリジナル・カーネル220及び出力フィーチャマップ230に定義された値は、いずれも例示的な値であるにすぎず、本実施形態は、それらに制限されるものではない。
オリジナル・カーネル220は、入力フィーチャマップ210において、3x3ピクセルサイズのウィンドウ(または、タイル)単位でスライディングしながら、コンボリューション演算を行う。該コンボリューション演算は、入力フィーチャマップ210の各ウィンドウの各ピクセル値と、オリジナル・カーネル220における対応位置の各エレメントのウェートとの乗算を行って獲得された値をいずれも合算し、出力フィーチャマップ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が決定される。
すなわち、1つの入力フィーチャマップ210と、1つのオリジナル・カーネル220とのコンボリューション演算は、入力フィーチャマップ210及びオリジナル・カーネル220において、互いに対応する各エレメント値の乗算、及び乗算結果の合算を反復的に行うことによって処理され、コンボリューション演算の結果として、出力フィーチャマップ230が生成される。
一方、図2Aにおいては、二次元コンボリューション演算について説明されたが、該コンボリューション演算は、複数チャネルの入力フィーチャマップ、カーネル、出力フィーチャマップが存在する三次元コンボリューション演算に該当する。それについては、図2Bを参照して説明する。
図2Bを参照すれば、入力フィーチャマップ201は、X個のチャネルが存在し、各チャネルの入力フィーチャマップは、H行W列の大きさを有することができる(X、W、Hは、自然数である)。カーネル202それぞれは、R行S列の大きさを有し、カーネル202は、入力フィーチャマップ201のチャネル数X、及び出力フィーチャマップ203のチャネル数Yに対応する個数のチャネルを有することができる(R、S、Yは、自然数である)。出力フィーチャマップ203は、入力フィーチャマップ201とカーネル202との三次元コンボリューション演算を介して生成され、該コンボリューション演算により、Y個のチャネルが存在しうる。
1つの入力フィーチャマップと1つのカーネルとのコンボリューション演算を介して、出力フィーチャマップが生成される過程は、前述の図2Aで説明された通りであり、図2Aで説明された二次元コンボリューション演算が、全体チャネルの入力フィーチャマップ201と、全体チャネルのカーネル202との間で反復的に行われることにより、全体チャネルの出力フィーチャマップ203が生成される。
図3は、一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
ニューラルネットワーク装置10は、PC(personal computer)、サーバデバイス、モバイルデバイス、埋め込み(embedded)デバイスなどの多種のデバイスによっても具現され、具体的な例として、ニューラルネットワークを利用した音声認識、映像認識、映像分類などを行うスマートフォン、タブレットデバイス、AR(augmented reality)デバイス、IoT(internet of things)デバイス、自律走行自動車、ロボティックス、医療機器などに該当するが、それらに制限されるものではない。さらに、ニューラルネットワーク装置10は、前述のようなデバイスに搭載される専用ハードウェアアクセラレータ(HW accelerator)に該当し、ニューラルネットワーク装置10は、ニューラルネットワーク駆動のための専用モジュールであるNPU(neural processing unit)、TPU(tensor processing unit)、Neural Engineのようなハードウェアアクセラレータでもあるが、それらに制限されるものではない。
図3を参照すれば、ニューラルネットワーク装置10は、プロセッサ110及び外部メモリ120を含む。図3に図示されたニューラルネットワーク装置10には、本実施形態と係わる構成要素だけが図示されている。従って、ニューラルネットワーク装置10には、図3に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当該技術分野の当業者に自明であろう。
プロセッサ110は、ニューラルネットワーク装置10において、ニューラルネットワークを駆動するための全般的な機能を制御する役割を行う。例えば、プロセッサ110は、ニューラルネットワーク装置10内の外部メモリ120に保存されたプログラムを実行することにより、ニューラルネットワーク装置10を全般的に制御する。プロセッサ110は、ニューラルネットワーク装置10内に具備されたCPU(central processing unit)、GPU(graphics processing unit)、AP(application processor)などによっても具現されるが、それらに制限されるものではない。
外部メモリ120は、ニューラルネットワーク装置10内で処理される各種データを保存するハードウェアであり、外部メモリ120は、ニューラルネットワーク装置10で処理されたデータ及び処理されるデータを保存することができる。また、外部メモリ120は、ニューラルネットワーク装置10によって駆動されるアプリケーション、ドライバなどを保存することができる。外部メモリ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(compact disc)-ROM、ブルーレイ(登録商標(Blu-ray))または他の光学ディスクストレージ、HDD(hard disk drive)、SSD(solid-state drive)、またはフラッシュメモリを含んでもよい。
プロセッサ110は、外部メモリ120から、ニューラルネットワークデータ、例えばイメージデータ、フィーチャマップデータ、カーネルデータなどをリード/ライト(read/write)し、リード/ライトされたデータを利用し、ニューラルネットワークを実行する。ニューラルネットワークが実行されるとき、プロセッサ110は、内部に具備されたコンボリューション演算器(convolution operator)を駆動させ、出力フィーチャマップに係わるデータを生成するための入力フィーチャマップとカーネルとのコンボリューション演算を反復的に行う。そのとき、入力フィーチャマップのチャネル数、カーネルのチャネル数、入力フィーチャマップの大きさ、カーネルの大きさ、値の精度(precision)のような多様なファクタに依存し、コンボリューション演算の演算量が決定される。図1に図示されたニューラルネットワーク1と異なり、ニューラルネットワーク装置10で駆動される実際のニューラルネットワークは、さらに複雑なアーキテクチャとしても具現される。それにより、プロセッサ110は、数億から数百億に至るほど非常に多くの演算量(operation count)のコンボリューション演算を行うようになり、プロセッサ110が、コンボリューション演算のために、外部メモリ120にアクセスする頻度が共に飛躍的に増加してしまう。比較的処理性能が低いスマートフォン・タブレットデバイス・ウェアラブルデバイスのようなモバイルデバイス、埋め込みデバイスなどでは、そのような演算量負担を減らすための方案が要求されている。
プロセッサ110は、プロセッシング機能を担当するプロセッシングユニット112と、キャッシュ(cache)機能を担当するオンチップ(on-chip)メモリ114と、を含んでもよい。
プロセッシングユニット112は、外部メモリ120からオンチップメモリ114に保存された(または、バッファリングされた)入力フィーチャマップのピクセル値、カーネルのウェートなどを利用して、入力フィーチャマップとカーネルとのコンボリューション演算を処理する。プロセッサ110内において、プロセッシングユニット112及びオンチップメモリ114それぞれは、1以上ずつ具備され、1以上のプロセッシングユニット112及びオンチップメモリ114それぞれは、並列に独立してコンボリューション演算処理に利用されることにより、コンボリューション演算が効率的に処理される。
プロセッサ110のプロセッシングユニット112内には、コンボリューション演算のためのコンボリューション演算器(convolution operator)を具現したロジック回路が具備される。該コンボリューション演算器は、乗算器(multiplier)、加算器(adder)及び累算器(accumulator)の組み合わせによって具現された演算器である。該コンボリューション演算器内において乗算器は、多数のサブ乗算器の組み合わせによって具現され、また加算器も、多数のサブ加算器の組み合わせによっても具現される。
プロセッシングユニット112は、コンボリューション演算を行う入力フィーチャマップ及びカーネルから、m個のAビットフィーチャマップオペランド、及びn個のBビットウェートオペランドを決定する(A,B,m及びnは、自然数である)。ここで、mとnは、同じであるか、あるいは互いに異なる自然数でもあり、Aビットの値、及びBビットの値も同じであるか、あるいは互いに異なる自然数でもある。
プロセッシングユニット112は、並列処理が可能である入力フィーチャマップのピクセル値、及びカーネルのウェートに基いて、フィーチャマップオペランド及びウェートオペランドを決定することができる。
例えば、決定されたフィーチャマップオペランドは、入力フィーチャマップのうちいずれか1つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値に基いたものでもあり、そのとき、決定されたウェートオペランドは、カーネルのうち1つの入力フィーチャマップの入力チャネルでありながら、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであるか、あるいはカーネルのうち1つの入力フィーチャマップの入力チャネル、及びいずれか1つの出力チャネルに対応するいずれか1つのカーネルにおいて、互いに異なる位置のウェートに基いたものでもある。
他の例として、決定されたフィーチャマップオペランドは、入力フィーチャマップのうち、互いに異なる入力チャネルの互いに異なる入力フィーチャマップにおいて、互いに対応するピクセル位置のピクセル値に基いたものでもあり、そのとき決定されたウェートオペランドは、カーネルのうち、互いに異なる入力チャネルでありながら、いずれか1つの出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであるか、あるいはカーネルのうち、互いに異なる入力チャネルでありながら、互いに異なる出力チャネルに対応する互いに異なるカーネルで互いに対応する位置のウェートに基いたものでもある。
ただし、前述のような例示は、プロセッシングユニット112によって決定されるオペランドの一部種類に過ぎず、プロセッシングユニット112は、それ以外にも、多種のオペランドを入力フィーチャマップ及びカーネルから決定することができる。
プロセッシングユニット112は、コンボリューション演算器内の乗算器の精度、加算器の精度、累算器の精度と、決定されたオペランドの精度とを判断し、決定されたフィーチャマップオペランド及びウェートオペランドの精度(ビット幅)に基いて、コンボリューション演算器内の乗算器、加算器、累算器を、いかなる方式(例えば、いかなる精度(ビット幅))に分解(decompose)するかということを判断することができる。
例えば、コンボリューション演算器が、kビットの最大精度(full precision)を有するkビット乗算器を含む場合(kは、自然数である)、kビット乗算器は、kビット乗算器のサブロジックに該当するサブ乗算器それぞれに、論理的または物理的に分解される。ここで、前述のオペランドのビット数であるAビット及びBビットそれぞれは、kビットより小さく、分解されたサブ乗算器それぞれは、Aビットの乗算器、またはBビットの乗算器に該当する。しかし、本実施形態は、それらに制限されるものではない。
プロセッシングユニット112は、決定されたオペランドを、オンチップメモリ114に保存する。その後、プロセッシングユニット112は、オンチップメモリ114に保存されている、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのmxn個のオペランド対それぞれを、コンボリューション演算器内における分解された(decomposed)サブ乗算器それぞれにディスパッチする。
例えば、Aビットフィーチャマップオペランド及びBビットウェートオペランドがk/2ビットオペランドに該当し、分解されたサブ乗算器それぞれが、k/2ビット乗算器に該当する。そのような場合、分解されたサブ乗算器それぞれには、Aビットフィーチャマップオペランド及びBビットウェートオペランドが互いにマッピングされたオペランド対それぞれがディスパッチされる。
他の例として、分解されたサブ乗算器それぞれが、k/2ビット乗算器に該当し、Aビットフィーチャマップオペランドが、k/2ビットオペランドであり、Bビットウェートオペランドが、kビットオペランドである場合、分解されたサブ乗算器それぞれには、Aビットフィーチャマップオペランド、及びBビットウェートオペランドにおいて、k/2ビットのMSB(most significant bit)が互いにマッピングされたオペランド対、並びにAビットフィーチャマップオペランド、及びBビットウェートオペランドにおいて、k/2ビットのLSB(least significant bits)が互いにマッピングされたオペランド対がディスパッチされる。
さらに他の例として、分解されたサブ乗算器それぞれが、k/2ビット乗算器に該当し、Aビットフィーチャマップオペランドが、kビットオペランドであり、Bビットウェートオペランドが、k/2ビットオペランドである場合、分解されたサブ乗算器それぞれには、Aビットフィーチャマップオペランドにおいて、k/2ビットのMSB、及びBビットウェートオペランドが互いにマッピングされたオペランド対、並びにAビットフィーチャマップオペランドにおいて、k/2ビットのLSB、及びBビットウェートオペランドが互いにマッピングされたオペランド対がディスパッチされる。
さらに他の例として、分解されたサブ乗算器それぞれが、k/2ビット乗算器に該当し、Aビットフィーチャマップオペランド及びBビットウェートオペランドが、kビットオペランドである場合、分解されたサブ乗算器それぞれには、Aビットフィーチャマップオペランドにおいて、k/2ビットのMSB及びLSBと、Bビットウェートオペランドにおいて、k/2ビットのMSB及びLSBと、が互いにマッピングされたオペランド対がディスパッチされる。
ただし、前述のようなオペランドディスパッチパターンは、例示的なものであり、プロセッシングユニット112は、それ以外にも、多様なパターンでオペランドをサブ乗算器にディスパッチすることができる。
プロセッシングユニット112は、分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、mxn個の出力を生成する。
プロセッシングユニット112は、生成されたmxn個の出力に基いて、コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する。
一方、プロセッシングユニット112は、ディスパッチされたmxn個のオペランド対のうちゼロ・オペランドが存在する場合、ゼロ・スキッピング(zero skipping)のためにゼロ・オペランドがディスパッチされたサブ乗算器の乗算演算をクロックゲーティング(clock-gating)することができる。
プロセッシングユニット112は、コンボリューション演算器に、入力フィーチャマップのピクセル値、カーネルのウェートのような多様なオペランドを、前述のようにディスパッチするためのディスパッチャ(dispatcher)を具備することができる。該ディスパッチャは、外部メモリ120に保存されている入力フィーチャマップのピクセル値、カーネルのウェートなどのデータから、プロセッシングユニット112が行うコンボリューション演算に必要なピクセル値、ウェートなどのオペランドを、オンチップメモリ114にディスパッチする。その後、該ディスパッチャは、オンチップメモリ114にディスパッチされたオペランドを、コンボリューション演算のために、コンボリューション演算器にさらにディスパッチする。
一方、ニューラルネットワークにおいて利用されるピクセル値、ウェートのようなオペランドは、多様な精度(または、ビット幅)を有するデータに該当する。従って、プロセッシングユニット112及びオンチップメモリ114は、そのような多様な精度(または、ビット幅)のデータを利用したコンボリューション演算が可能になるように、プロセッシングユニット112のコンボリューション演算器及びオンチップメモリ114にディスパッチされるオペランドの精度(または、ビット幅)を可変的でありながら、動的に調節することができる。
プロセッシングユニット112は、ニューラルネットワークにおいて処理される個別コンボリューション演算の並列性(parallelism)と、個別オペランドの精度(または、ビット幅)によるディスパッチパターンと、を適切に利用することにより、ニューラルネットワークのコンボリューション演算を効率的に処理することができる。
図4A及び図4Bは、16ビット(16bitx16bit)乗算器において、互いに異なる精度(または、ビット幅)による乗算器活用度を比較するための図面である。
図4Aを参照すれば、コンボリューション演算を行うピクセル値401及びウェート402がいずれも16ビットオペランドに該当する場合、コンボリューション演算器内の16ビット乗算器403においては、16ビットフィーチャマップオペランド(すなわち、ピクセル値)と、16ビットウェートオペランドとの乗算演算が行われる。従って、図4Aの場合、16ビット乗算器403の活用度は、100%に該当する。
図4Bを参照すれば、コンボリューション演算を行うピクセル値411及びウェート412がいずれも8ビットオペランドに該当する場合、コンボリューション演算器内の16ビット乗算器413においては、8ビットフィーチャマップオフランド(すなわち、ピクセル値)と8ビットウェートオペランドとの乗算演算が行われる。従って、図4Bの場合、図4Aと異なり、16ビット乗算器413の活用度は、25%に過ぎない。すなわち、16ビット乗算器413の残り75%リソースは、遊休(idle)状態に留まり、それにより、コンボリューション演算器の演算効率が低くなってしまう。
図5A及び図5Bは、16ビット乗算器において、4個の8ビットオペランドを並列に処理する場合、乗算器活用度について説明するための図面である。
図5Aを参照すれば、8ビットのフィーチャマップオペランド(すなわち、ピクセル値)501とウェートオペランド511とのオペランド対と、8ビットのフィーチャマップオペランド(すなわち、ピクセル値)503とウェートオペランド513とのオペランド対とが並列的なコンボリューション演算のために、16ビット乗算器521にもディスパッチされる。そうであるとしても、16ビット乗算器521においては、50%のリソース522,523が利用されるだけである。
図5Bを参照すれば、8ビットのフィーチャマップオペランド501は、入力チャネル1の入力フィーチャマップにおいて、(0,0)位置のピクセル値(F(0,0))542に該当し、8ビットのフィーチャマップオペランド503は、入力チャネル0の入力フィーチャマップにおいて、(0,0)位置のピクセル値(F(0,0))543に該当し、8ビットのウェートオペランド511は、入力チャネル1及び出力チャネル0のカーネルにおいて、(0,0)位置のウェート(W01(0,0))552に該当し、8ビットのウェートオペランド513は、入力チャネル0及び出力チャネル0のカーネルにおいて、(0,0)位置のウェート(W00(0,0))553に該当する。16ビット乗算器561内のサブ乗算器562には、ピクセル値(F(0,0))543及びウェート(W00(0,0))553がディスパッチされ、サブ乗算器562は、ピクセル値(F(0,0))543及びウェート(W00(0,0))553の乗算演算を行う。そして、サブ乗算器563には、ピクセル値(F(0,0))542及びウェート(W01(0,0))552がディスパッチされ、サブ乗算器563は、ピクセル値(F(0,0))542及びウェート(W01(0,0))552の乗算演算を行う。サブ乗算器562及びサブ乗算器563の各演算結果は、独立して処理され、最終的には、それぞれ出力チャネル0の出力フィーチャマップのピクセル値(O(0,0))、及び出力チャネル1の出力フィーチャマップのピクセル値(O(0,0))として出力される。
すなわち、4個の8ビットオペランド501,503,511,513が、16ビット乗算器521に入力されたが、2個の出力(O(0,0)、O(0,0))しか出力されなかったので、16ビット乗算器521の全リソースが使用されるものではなく、それにより、コンボリューション演算器の演算効率が低くなってしまう。
結局、図4B、図5A及び図5Bによれば、乗算器の最大ビット幅(例えば、16ビット)を活用することができないために、乗算器活用度及びコンボリューション演算器の効率が低くなってしまう。図4Aの場合、ニューラルネットワークにおいて、全てのオペランドが16ビットに固定されているものではないために、16ビット乗算器が常時最大ビット幅に活用されるものではない。そのために、乗算器の最大ビット幅内においてオペランドを効率的にディスパッチし、乗算器の活用度を高める方案が要求され、それを介して、コンボリューション演算の効率が上昇する。
図6は、乗算器種類による回路面積、エネルギー消耗を比較するための表である。
図6を参照すれば、4ビット(4x4)乗算器に比べ、8ビット(8x8)乗算器は、大体のところ4倍の回路面積を占め、エネルギー消耗も、5倍も高いことがある。また、4ビット乗算器に比べ、16ビット乗算器は、大体のところ15倍の回路面積を占め、エネルギー消耗も、21倍も高い。すなわち、乗算器の精度(ビット幅)が上昇するほど、回路面積が増大するだけではなく、エネルギー消耗も膨大に増加する。従って、コンボリューション演算器内において、高精度の乗算器が具現される場合には、乗算器の全リソースを最大限活用することができてこそ、コンボリューション演算器の演算性能を高めることができる。
図7Aは、一実施形態によるフィーチャマップオペランド及びウェートオペランドの乗算演算方式について説明するための図面である。
図7Aを参照すれば、プロセッサ110(図3)は、コンボリューション演算を行う入力フィーチャマップ及びカーネルから、Aビットフィーチャマップオペランド及びBビットウェートオペランドを決定する。例えば、Aビット及びBビットは、いずれも8ビットに該当すると仮定して説明するが、それに制限されるものではなく、Aビット及びBビットは、他のビット数であってもよい。
具体的には、プロセッサ110のプロセッシングユニット112(図3)は、決定された8ビットフィーチャマップオペランド及び8ビットウェートオペランドを外部メモリ120(図3)からリードし、それらをオンチップメモリ114(図3)にディスパッチ(保存)する。そのとき、プロセッシングユニット112は、オンチップメモリ114に割り当てられた、フィーチャマップオペランドのための16ビット保存領域701に、8ビット第1フィーチャマップオペランド及び8ビット第2フィーチャマップオペランドをディスパッチ(保存)することができる。また、プロセッシングユニット112は、オンチップメモリ114に割り当てられた、ウェートオペランドのための16ビット保存領域711に、8ビット第1ウェートオペランド及び8ビット第2ウェートオペランドをディスパッチ(保存)することができる。
第1フィーチャマップオペランドと第1ウェートオペランドとのオペランド対、第1フィーチャマップオペランドと第2ウェートオペランドとのオペランド対、第2フィーチャマップオペランドと第1ウェートオペランドとのオペランド、対及び第2フィーチャマップオペランドと第2ウェートオペランドとのオペランド対それぞれは、入力フィーチャマップとカーネルとのコンボリューション演算で処理されなければならないオペランド対に該当する。さらに、そのようなオペランド対それぞれは、コンボリューション演算で並列処理が可能であるオペランド対に該当する。
すなわち、ニューラルネットワークのコンボリューション演算の並列性を最大限活用するようにオペランドがディスパッチされ、そのオペランド対がコンボリューション演算器内の乗算器リソースを最大限使用するように乗算器にディスパッチされるならば、効率的なコンボリューション演算が処理される。
図7Bは、一実施形態によって、オペランドの多様な精度による乗算器の性能を比較するための図面である。図7Bを参照すれば、16ビット乗算器において、16ビットオペランド対が処理される場合には、1つの出力(1XThroughput)だけが獲得されるが、図7Aのように、16ビット乗算器において、4個の8ビットオペランド対が処理される場合には、4個の独立した出力(4XThroughput)が獲得される。Throughputは、スループット又はパフォーマンスを表す。
図8Aは、一実施形態によって、ニューラルネットワークのフィーチャマップオペランド及びウェートオペランドが組み合わされたオペランド対に対する乗算演算について説明するための図面である。
図8Aを参照すれば、フィーチャマップオペランド(F(0,0),F(0,1))及びウェートオペランド(W00(0,0),W01(0,0))がいずれも8ビットに該当し、16ビット乗算器で乗算演算が行われる場合を仮定する。一方、16ビット乗算器は、4個の独立したサブ乗算器811,812,813,814にも分解される。
フィーチャマップオペランド(F(0,0))及びウェートオペランド(W00(0,0))のオペランド対、フィーチャマップオペランド(F(0,0))及びウェートオペランド(W10(0,0))のオペランド対、フィーチャマップオペランド(F(0,1))及びウェートオペランド(W00(0,0))のオペランド対、並びにフィーチャマップオペランド(F(0,1))及びウェートオペランド(W10(0,0))のオペランド対それぞれは、入力フィーチャマップとカーネルとのコンボリューション演算で処理されなければならないオペランド対に該当する。
4個のオペランド対それぞれは、分解された4個のサブ乗算器811,812,813,814それぞれにディスパッチされ、サブ乗算器811,812,813,814それぞれは、独立してオペランド対に対する乗算演算を行う。乗算演算後、加算演算または累積演算を介して、4個の独立した出力(O(0,0),O(0,1),O(0,0),O(0,1))が獲得される。すなわち、図5Bにおいては、2個のオペランド対に対してのみ乗算演算を行うことにより、2個の出力(O(0,0),O(0,0))だけが獲得されたが、図8Aにように、ニューラルネットワークのコンボリューション演算の並列性を最大限活用するように、サブ乗算器にオペランド対が適切にディスパッチされるならば、効率的なコンボリューション演算が処理される。
図8Bは、一実施形態によって、ニューラルネットワークのフィーチャマップオペランド、及びウェートオペランドが組み合わされたオペランド対に対する乗算演算について説明するための図面である。
図8Bを参照すれば、フィーチャマップオペランド(F(0,0),F(0,1),F(0,2),F(0,3))がいずれも4ビットに該当し、ウェートオペランド(W00(0,0))が16ビットに該当し、16ビット乗算器で乗算演算が行われる場合を仮定する。一方、16ビット乗算器は、4個の独立した8ビット(8x8)サブ乗算器821,822,823,824にも分解される。
フィーチャマップオペランド(F(0,0))及びウェートオペランド(W00(0,0))のオペランド対、フィーチャマップオペランド(F(0,1))及びウェートオペランド(W00(0,0))のオペランド対、フィーチャマップオペランド(F(0,2))及びウェートオペランド(W00(0,0))のオペランド対、並びにフィーチャマップオペランド(F(0,3))及びウェートオペランド(W00(0,0))のオペランド対それぞれは、入力フィーチャマップとカーネルとのコンボリューション演算で処理されなければならないオペランド対に該当する。
同様に、4個のオペランド対それぞれは、分解された4個のサブ乗算器821,822,823,824それぞれにディスパッチされ、サブ乗算器811,812,813,814それぞれは、独立してオペランド対に対する乗算演算を行うことにより、4個の独立した出力が獲得される。すなわち、図8Aでのように、ニューラルネットワークのコンボリューション演算の並列性を最大限活用し、乗算器の効率を最大化することにより、効率的なコンボリューション演算が処理される。
図9Aないし図9Dは、一実施形態によって、ニューラルネットワークにおいて並列性を利用したコンボリューション演算を行うために決定されるオペランド対の種類について説明するための図面である。
図9Aを参照すれば、プロセッサ110(図3)のプロセッシングユニット112(図3)により、並列処理が可能であると決定されたフィーチャマップオペランドは、入力フィーチャマップのうちいずれか1つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値911(Pixel1,Pixel2,Pixel3,Pixel4)に基いたものでもある。そして、決定されたウェートオペランドは、カーネルのうち、当該入力フィーチャマップの入力チャネル、及びいずれか1つの出力チャネルの参照(reference)を有するいずれか1つのカーネルにおいて、互いに異なる位置のウェート912(Weight1,Weight2,Weight3,Weight4)に基いたものでもある。
乗算器は、サブ乗算器に分解される。プロセッシングユニット112(図3)に具備されたディスパッチャは、それぞれのサブ乗算器に、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドの4個のオペランド対(Pixel1及びWeight1,Pixel2及びWeight2,Pixel3及びWeight3,Pixel4及びWeight4)をディスパッチする。ディスパッチされた各オペランド対については、独立して並列の乗算演算が行われる。
図9Bを参照すれば、プロセッサ110のプロセッシングユニット112により、並列処理が可能であると決定されたフィーチャマップオペランドは、入力フィーチャマップのうち、互いに異なる入力チャネルの互いに異なる入力フィーチャマップにおける対応するピクセル位置のピクセル値921(Pixel1,Pixel2,Pixel3,Pixel4)に基いたものでもある。そして、決定されたウェートオペランドは、カーネルのうち、互いに異なる入力チャネルでありながら、いずれか1つの出力チャネルに対応する互いに異なるカーネルにおける対応する位置のウェート922(Weight1,Weight2,Weight3,Weight4)に基いたものでもある。
プロセッシングユニット112に具備されたディスパッチャは、それぞれのサブ乗算器に、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドの4個のオペランド対(Pixel1及びWeight1,Pixel2及びWeight2,Pixel3及びWeight3,Pixel4及びWeight4)をディスパッチし、各サブ乗算器は、ディスパッチされた各オペランド対に対して、独立して並列の乗算演算を行うことができる。
図9Cを参照すれば、プロセッサ110のプロセッシングユニット112により、並列処理が可能であると決定されたフィーチャマップオペランドは、いずれか1つの入力フィーチャマップで互いに異なるピクセル位置のピクセル値931(Pixel1,Pixel2,Pixel3,Pixel4)に基いたものでもある。ここで、互いに異なるピクセル位置は、入力フィーチャマップで互いに重ならないスライディングウィンドウにおいて対応するピクセル位置でもあるが、それらに制限されるものではない。そして、決定されたウェートオペランドは、カーネルのうち、当該入力フィーチャマップの入力チャネル、及びいずれか1つの出力チャネルに対応するいずれか1つのカーネルにおいて、いずれか1つのウェート932(Weight1)に基いたものでもある。
プロセッシングユニット112に具備されたディスパッチャは、それぞれのサブ乗算器に、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドの4個のオペランド対(Pixel1及びWeight1,Pixel2及びWeight1,Pixel3及びWeight1,Pixel4及びWeight1)をディスパッチし、各サブ乗算器は、ディスパッチされた各オペランド対に対して、独立して並列の乗算演算を行うことができる。
図9Dを参照すれば、プロセッサ110のプロセッシングユニット112により、並列処理が可能であると決定されたフィーチャマップオペランドは、いずれか1つの入力フィーチャマップにおいて、いずれか1つのピクセル位置のピクセル値941(Pixel1)に基いたものでもある。そして、決定されたウェートオペランドは、カーネルのうち、当該入力フィーチャマップの入力チャネル、及び互いに異なる出力チャネルに対応する互いに異なるカーネルでの同じ位置のウェート942(Weight1,Weight2,Weight3,Weight4)に基いたものでもある。
プロセッシングユニット112に具備されたディスパッチャは、それぞれのサブ乗算器に、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドの4個のオペランド対(Pixel1及びWeight1,Pixel1及びWeight2,Pixel1及びWeight3,Pixel1及びWeight4)をディスパッチし、各サブ乗算器は、ディスパッチされた各オペランド対に対して、独立して並列の乗算演算を行うことができる。
図9Aないし図9Dで説明されたニューラルネットワークにおいて、コンボリューション演算の並列性を利用するために決定されたオペランドは、例示的なものであるにすぎず、それ以外にも、多様なオペランドが、並列的なコンボリューション演算のために決定されてよい。すなわち、プロセッサ110は、並列処理が可能であるオペランド組み合わせ内において、多様なフィーチャマップオペランド及びウェートオペランドを決定することができる。プロセッサ110は、並列処理が可能であるオペランドの組み合わせを決定し、そのようなオペランド対を、前述の図8A、図8B、またはそれと類似した方式でサブ乗算器にディスパッチすることにより、コンボリューション演算の処理を効率化させることができる。
図10は、一実施形態によって、ニューラルネットワークのコンボリューション演算に利用されるオペランドの並列性について説明するための図面である。
図10を参照すれば、入力フィーチャマップのピクセル値、及びカーネルのウェートは、いずれも8ビットのオペランドに該当すると仮定する。しかし、それは、説明の便宜のためのものであるにすぎず、それに制限されるものではなく、ピクセル値及びウェートは、他のビット幅のデータに該当してもよい。一方、コンボリューション演算器に具備された乗算器は、16ビット(16x16)乗算器に該当すると仮定するが、それに制限されるものではなく、該乗算器は、他の精度の乗算器にも該当する。
プロセッサ110(図3)は、入力フィーチャマップのピクセル値、及びカーネルのウェートのうち並列処理が可能であるオペランドを決定する。
図10に図示されているように、プロセッサ110は、入力フィーチャマップのうちいずれか1つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値に基いて、フィーチャマップオペランドを決定することができ、カーネルのうち、当該入力フィーチャマップの入力チャネルでありながら、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いて、ウェートオペランドを決定することができる。
具体的には、入力フィーチャマップとカーネルとのコンボリューション演算が行われるとき、F(0,0)のピクセル値は、W00(0,0)のウェートとの乗算演算と、W10(0,0)のウェートとの乗算演算にそれぞれ利用される。そして、F(0,1)のピクセル値も、W00(0,0)のウェートとの乗算演算と、W10(0,0)のウェートとの乗算演算にそれぞれ利用される。結局、F(0,0)のピクセル値、及びW00(0,0)のウェートのオペランド対、F(0,0)のピクセル値、及びW10(0,0)のウェートのオペランド対、F(0,1)のピクセル、値及びW00(0,0)のウェートのオペランド対、並びにF(0,1)のピクセル値、及びW10(0,0)のウェートのオペランド対それぞれは、入力フィーチャマップとカーネルとのコンボリューション演算にいずれも必要なオペランド対でありながら、並列に処理が可能であるオペランド対に該当する。
従って、プロセッサ110は、4個の8ビットオペランド対それぞれを16ビット乗算器から分解された4個の8ビットサブ乗算器それぞれにディスパッチする。それにより、並列に処理可能な4レーン(lane)のコンボリューション演算が独立して行われる。さらに、4レーンのコンボリューション演算の結果として、出力フィーチャマップのピクセル値の計算のための4個の出力がさらに迅速に獲得されるので、演算速度の効率化が可能である。
なお、本明細書全体を通じて、F(i,j)において、Xは、入力フィーチャマップチャネルを意味し、(i,j)は、入力フィーチャマップにおけるピクセル位置を意味する。そして、WY,X(i,j)において、Xは、入力フィーチャマップチャネルを意味し、Yは、出力フィーチャマップチャネルを意味し、(i,j)は、カーネルにおけるピクセル位置を意味する。
図11は、他の実施形態によって、ニューラルネットワークのコンボリューション演算に利用されるオペランドの並列性について説明するための図面である。
図11を参照すれば、入力フィーチャマップのピクセル値、及びカーネルのウェートは、いずれも8ビットのオペランドに該当すると仮定する。しかし、それは、説明の便宜のためのものであるにすぎず、それらに制限されるものではなく、ピクセル値及びウェートは、他のビット幅のデータに該当してもよい。一方、コンボリューション演算器に具備された乗算器は、16ビット乗算器に該当すると仮定するが、それに制限されるものではなく、乗算器は、他の精度の乗算器にも該当する。
プロセッサ110(図3)は、入力フィーチャマップのうちいずれか1つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値に基いて、フィーチャマップオペランドを決定することができ、カーネルのうち、当該入力フィーチャマップの入力チャネルでありながら、いずれか1つの出力チャネルに対応するいずれか1つのカーネルにおいて、互いに異なる位置のウェートに基いて、ウェートオペランドを決定することができる。
具体的には、入力フィーチャマップとカーネルとのコンボリューション演算が行われるとき、F(2,0)のピクセル値は、W00(0,0)のウェートとの乗算演算と、W00(1,0)のウェートとの乗算演算にそれぞれ利用される。そして、F(2,1)のピクセル値も、W00(0,0)のウェートとの乗算演算と、W00(1,0)のウェートとの乗算演算にそれぞれ利用される。結局、F(2,0)のピクセル値、及びW00(0,0)のウェートのオペランド対、F(2,0)のピクセル値、及びW00(1,0)のウェートのオペランド対、F(2,1)のピクセル値、及びW00(0,0)のウェートのオペランド対、並びにF(2,1)のピクセル値、及びW00(1,0)のウェートのオペランド対それぞれは、入力フィーチャマップとカーネルとのコンボリューション演算にいずれも必要なオペランド対でありながら、並列に処理が可能であるオペランド対に該当する。
従って、プロセッサ110は、4個の8ビットオペランド対それぞれを、16ビット乗算器から分解された4個の8ビットサブ乗算器それぞれにディスパッチし、プロセッサ110は、並列に処理可能な4レーンのコンボリューション演算を独立して行う。そのために、4単位のコンボリューション演算の結果として、出力フィーチャマップのピクセル値の計算のための4個の出力が、さらに迅速に獲得されるので、演算速度の効率化が可能である。
図10及び図11で説明された、並列性を利用するために決定されたオペランドは、例示的なものであるにすぎず、それ以外にも、多様なオペランドが並列的なコンボリューション演算のために決定されてもよい。すなわち、プロセッサ110は、入力フィーチャマップ内及びカーネル内において、並列処理が可能である多様なフィーチャマップオペランド及びウェートオペランドを決定することができる。そのように決定されたオペランドの精度(または、ビット幅)は、乗算器の精度(または、ビット幅)により、論理的または物理的に分解されたサブ乗算器の精度(または、ビット幅)に対応し、それにより、乗算器の乗算演算の活用度が上昇する。
図12は、一実施形態によって、コンボリューション演算器において、オペランドのコンボリューション演算を行う過程について説明するための図面である。
1201段階において、プロセッサ110(図3)に具備されたピクセルディスパッチャ1211及びウェートディスパッチャ1212は、それぞれコンボリューション演算を行う入力フィーチャマップ及びカーネルから、k/mビットフィーチャマップオペランド及びk/nビットウェートオペランドを決定する。その後、プロセッサ110のピクセルディスパッチャ1211及びウェートディスパッチャ1212は、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのmxn個のオペランド対それぞれをコンボリューション演算器内における分解されたサブ乗算器それぞれにディスパッチする。例えば、mビットフィーチャマップオペランドは、それぞれF(i,j)及びF(i,j+1)に対応するオペランドであり、k/nビットウェートオペランドは、それぞれW00(0,0)及びW10(0,0)に対応するオペランドであってもよいが、それらに制限されるものではない。ここで、k/mビット及びk/nビットは、いずれも8ビットに該当してもよいが、それに制限されるものではない。
1202段階において、プロセッサ110は、内部に具備されたコンボリューション演算器が、kビットの最大精度を有するkビット乗算器を含む場合、kビット乗算器をサブロジックに該当するサブ乗算器1213において、論理的または物理的に分解する。そのとき、kビット乗算器が16ビット乗算器に該当する場合、サブ乗算器1213は、8ビット(=k/2)乗算器に該当する。
図12において、ピクセルディスパッチャ1211により、フィーチャーオペランドはサブ乗算器1213にディスパッチされ、具体的にはF(i,j)に対応するフィーチャマップオペランドは、最初のサブ乗算器1213及び3番目のサブ乗算器1213にディスパッチされ、F(i,j+1)に対応するフィーチャマップオペランドは、2番目のサブ乗算器1213及び4番目のサブ乗算器1213にディスパッチされる。ウェートディスパッチャ1212により、ウェートオペランドはサブ乗算器1213にディスパッチされ、具体的にはW00(0,0)に対応するウェートオペランドは、最初のサブ乗算器1213及び2番目のサブ乗算器1213にディスパッチされ、W10(0,0)に対応するフィーチャマップオペランドは、3番目のサブ乗算器1213及び4番目のサブ乗算器1213にディスパッチされる。
1203段階において、サブ乗算器1213によって行われたそれぞれの乗算演算の結果は、加算演算のために、16xNビット加算器1214(Nは、自然数である)にそれぞれ出力される。コンボリューション演算器は、加算器1214をさらに含む。加算演算が完了した場合、16xNビット加算器によって行われたそれぞれの加算演算の結果は、累積演算のために、累積演算器1215に出力され、累積演算が行われる。
1204段階において、累積演算器1215は、最終的に、4単位のコンボリューション演算の結果に該当する4個の出力O(i,j),O(i,j+1),O(i,j)及びO(i,j+1)を提供する。
図13は、一実施形態により、コンボリューション演算器において、オペランドのコンボリューション演算を行うことについて説明するための図面である。
図13を参照すれば、F(i,j)に対応するフィーチャマップオペランドは、16ビットオペランドであり、W00(0,0)及びW10(0,0)それぞれに対応するウェートオペランドは、それぞれ8ビットオペランドであり、そのようなオペランドが、16ビット乗算器から分解された8ビットサブ乗算器にディスパッチされる場合について説明する。
ピクセルディスパッチャ1311は、F(i,j)に対応する16ビットフィーチャマップオペランドにおいて、8ビットのMSBを、図13において、最初のサブ乗算器及び3番目のサブ乗算器にディスパッチし、F(i,j)に対応する16ビットフィーチャマップオペランドにおいて、8ビットのLSBを、図13において、2番目のサブ乗算器及び4番目のサブ乗算器にディスパッチする。そして、ウェートディスパッチャ1312は、W00(0,0)に対応するウェートオペランドを、図13において、最初のサブ乗算器及び2番目のサブ乗算器にディスパッチし、W10(0,0)に対応するフィーチャマップオペランドを、図13において、3番目のサブ乗算器及び4番目のサブ乗算器にディスパッチする。
コンボリューション演算器の乗算器(8ビットサブ乗算器)、16xNビット加算器及び累算器による演算結果として、最終的に、2個の出力O(i,j)及びO(i,j)が提供される。
図14は、一実施形態により、コンボリューション演算器において、オペランドのコンボリューション演算を行うことについて説明するための図面である。
図14を参照すれば、図13と異なり、F(i,j)に対応するフィーチャマップオペランド、及びW00(0,0)に対応するウェートオペランドがいずれも16ビットオペランドであり、そのようなオペランドが、16ビット乗算器から分解された8ビットサブ乗算器にディスパッチされる場合について説明する。
ピクセルディスパッチャ1411は、F(i,j)に対応する16ビットフィーチャマップオペランドにおいて、8ビットのMSBを、最初のサブ乗算器及び3番目のサブ乗算器にディスパッチし、16ビットフィーチャマップオペランドにおいて、8ビットのLSBを、2番目のサブ乗算器及び4番目のサブ乗算器にディスパッチする。そして、ウェートディスパッチャ1412は、W00(0,0)に対応する16ビットウェートオペランドにおいて、8ビットのMSBを、最初のサブ乗算器及び2番目のサブ乗算器にディスパッチし、16ビットフィーチャマップオペランドにおいて、8ビットのLSBを、3番目のサブ乗算器及び4番目のサブ乗算器にディスパッチする。
コンボリューション演算器に具備された乗算器(8ビットサブ乗算器)、16xNビット加算器及び累算器による演算結果として、最終的に、1個の出力O(i,j)が提供される。
前述のように、コンボリューション演算のオペランド対の並列性を利用することにより、多様な精度(または、ビット幅)を支援する乗算器であるとしても、乗算器の活用度を上昇させることができる。
図15は、一実施形態により、一部のオペランドがゼロである場合に行われるコンボリューション演算について説明するための図面である。
図15を参照すれば、一部のサブ乗算器にディスパッチされたオペランドがゼロである場合(1500)が生じている。ディスパッチされたいずれかのオペランドがゼロである場合(1500)には、乗算演算、加算演算などが行われたとしても、その結果は、ゼロである。従って、そのような場合(1500)、乗算演算、加算演算などを行うことは、ハードウェアリソースを浪費してしまう。そこで、ディスパッチャ(ピクセルディスパッチャ及びウェートディスパッチャ)は、ディスパッチされるオペランド中に、ゼロに該当するオペランドが存在するか否かを判断し、ゼロであるオペランドが存在する場合には、当該オペランドがディスパッチされるサブ乗算器、加算器及び累算器の動作がクロックゲーティングされるように制御することができる。
図16は、一実施形態により、ゼロ・オペランドを判断することについて説明するための図面である。
図16を参照すれば、プロセッサ110(図3)は、フィーチャマップオペランドとウェートオペランドとのうちに、ゼロ・オペランドが存在するか否かを判断することができる。そのとき、プロセッサ110は、mビットのピクセル値(フィーチャマップオペランド)、またはnビットのウェート(ウェートオペランド)の全体ビットがゼロに該当するか否かということを判断することができる。または、プロセッサ110は、mビットのピクセル値、またはnビットのウェートが、一定ビット幅に分割され、別個の独立したフィーチャマップオペランドまたはウェートオペランドとしてディスパッチされる場合、そのうちの一部のビット(サブビット)1701がゼロに該当するか否かを判断することができる。
Figure 0007304148000001
実験として、VGG-16基盤ニューラルネットワークを例として挙げれば、表1に図示されているように、いずれかのレイヤの16ビット出力データを、4ビットのサブビットに分割した場合、4ビットのMSBがゼロである確率は、99%であり、4ビットのMSBに続いて、4ビットがゼロである確率は、84%である。従って、そのような実験結果に照らせば、プロセッサ110が、mビットのピクセル値、またはnビットのウェートを一定ビット幅に分割し、サブ乗算器にディスパッチする場合には、ゼロ・オペランドの個数が多くなる確率が高くなるので、多くのクロックゲーティングにより、プロセッサ110の処理速度及びリソース使用効率が向上する。
図17は、一実施形態によるニューラルネットワークにおいて、コンボリューション演算を処理する方法のフローチャートである。図17に図示された、ニューラルネットワークのコンボリューション演算処理方法は、前述の図面で説明された実施形態に係わるので、以下、省略された内容であるとしても、先立って図面で説明された内容は、図17の方法にも適用される。
1701段階において、プロセッサ110(図3)は、コンボリューション演算を行う入力フィーチャマップ及びカーネルから、m個のAビットフィーチャマップオペランド、及びn個のBビットウェートオペランドを決定する(A,B,m及びnは、自然数である)。
1702段階において、プロセッサ110は、決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのmxn個のオペランド対それぞれを、コンボリューション演算器内における分解されたサブ乗算器それぞれにディスパッチする。
1703段階において、プロセッサ110は、分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、mxn個の出力を生成する。
1704段階において、プロセッサ110は、生成されたmxn個の出力に基いて、コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する。
図18は、一実施形態による電子システムの構成を示すブロック図である。
図18を参照すれば、電子システム1800は、ニューラルネットワークを基に、入力データをリアルタイムで分析して有効な情報を抽出し、抽出された情報を基に、状況判断を行うか、あるいは電子システム1800が搭載される電子デバイスの構成を制御することができる。例えば、電子システム1800は、ドローン(drone)、先端運転手補助システム(ADAS:advanced drivers assistance system)のようなロボット装置、スマートTV(television)、スマートフォン、医療デバイス、モバイルデバイス、映像表示デバイス、計測デバイス、IoTデバイスなどに適用され、それ以外にも、多種の電子デバイスのうち少なくとも一つに搭載される。
電子システム1800は、プロセッサ1810、RAM 1820、ニューラルネットワーク装置1830、メモリ1840、センサモジュール1850及び通信モジュール1860を含んでもよい。電子システム1800は、入出力モジュール、保安モジュール、電力制御装置などをさらに含んでもよい。電子システム1800のハードウェア構成のうち一部は、少なくとも1つの半導体チップにも搭載される。
プロセッサ1810は、電子システム1800の全般的な動作を制御する。プロセッサ1810は、1つのプロセッサコア(single core)を含むか、あるいは複数のプロセッサコア(multi-core)を含んでもよい。プロセッサ1810は、メモリ1840に保存されたプログラム及び/またはデータを処理したり実行したりすることができる。一実施形態において、プロセッサ1810は、メモリ1840に保存されたプログラムを実行することにより、ニューラルネットワーク装置1830の機能を制御することができる。プロセッサ1810は、CPU、GPU、APなどとしても具現される。
RAM 1820は、プログラム、データまたは命令(instructions)を一時的に保存することができる。例えば、メモリ1840に保存されたプログラム及び/またはデータは、プロセッサ1810の制御コードまたは起動コードにより、RAM 1820に一時的に保存される。RAM 1820は、DRAMまたはSRAMなどのメモリとしても具現される。
ニューラルネットワーク装置1830は、受信される入力データを基に、ニューラルネットワークの演算を行い、遂行結果を基に、情報信号を生成することができる。ニューラルネットワークは、CNN、RNN、FNN、deep belief networks、restricted Boltzman machinesなどを含んでもよいが、それらに制限されるものではない。ニューラルネットワーク装置1830は、ニューラルネットワーク専用ハードウェアアクセラレータ自体、またはそれを含む装置として、前述のニューラルネットワーク装置10(図3)に該当する。
該情報信号は、音声認識信号、事物認識信号、映像認識信号、生体情報認識信号のような多種の認識信号のうち一つを含んでもよい。例えば、ニューラルネットワーク装置1830は、ビデオストリームに含まれるフレームデータを入力データとして受信し、フレームデータから、フレームデータが示すイメージに含まれた事物に係わる認識信号を生成することができる。しかし、それに制限されるものではなく、電子システム1800が搭載された電子装置の種類または機能により、ニューラルネットワーク装置1830は、多種の入力データを受信することができ、入力データによる認識信号を生成することができる。
メモリ1840は、データを保存するための保存場所であり、OS(operating system)、各種プログラム及び各種データを保存することができる。一実施形態において、メモリ1840は、ニューラルネットワーク装置1830の演算遂行過程で生成される中間結果を保存することができる。
メモリ1840は、DRAMでもあるが、それに限定されるのではない。メモリ1840は、揮発性メモリまたは不揮発性メモリのうち少なくとも一つを含んでもよい。該不揮発性メモリは、ROM、PROM、EPROM、EEPROM、フラッシュメモリ、PRAM、MRAM、RRAM(登録商標)、FRAM(登録商標)などを含む。該揮発性メモリは、DRAM、SRAM、SDRAM、PRAM、MRAM、RRAM、FeRAMなどを含む。一実施形態において、メモリ1840は、HDD、SSD、CF、SD、micro-SD、mini-SD、xDまたはmemory stickのうち少なくとも一つを含んでもよい。
センサモジュール1850は、電子システム1800が搭載される電子装置周辺の情報を収集することができる。センサモジュール1850は、電子装置の外部から、信号(例えば、映像信号、音声信号、磁気信号、生体信号、タッチ信号など)をセンシングまたは受信し、センシングまたは受信された信号をデータに変換することができる。そのために、センサモジュール1850は、センシング装置、例えば、マイク、撮像装置、イメージセンサ、ライダー(LIDAR:light detection and ranging)センサ、超音波センサ、赤外線センサ、バイオセンサ及びタッチセンサのような多種センシング装置のうち少なくとも一つを含んでもよい。
センサモジュール1850は、変換されたデータを、ニューラルネットワーク装置1830に入力データとして提供することができる。例えば、センサモジュール1850は、イメージセンサを含み、電子装置の外部環境を撮影してビデオストリームを生成し、ビデオストリームの連続するデータフレームを、ニューラルネットワーク装置1830に入力データとして順に提供することができる。しかし、それに制限されるものではなく、センサモジュール1850は、多種のデータをニューラルネットワーク装置1830に提供することができる。
通信モジュール1860は、外部デバイスと通信することができる多様な有線または無線のインターフェースを具備することができる。例えば、通信モジュール1860は、有線近距離通信網(LAN(local area network)),Wi-Fi(wireless fidelity)のような無線近距離通信網(WLAN(wireless local area network))、ブルートゥース(登録商標(Bluetooth))のような無線個人通信網(WPAN:wireless personal area network)、無線USB(universal serial bus)、Zigbee、NFC(near field communication)、RFID(radio frequency identification)、PLC(power line communication)、または3G(3rd generation)・4G(4th generation)・LTE(long term evolution)など移動通信網(mobile cellular network)に接続可能な通信インターフェースなどを含んでもよい。
一方、前述の本発明の実施形態は、コンピュータで実行されるプログラムに作成可能であり、コンピュータで読み取り可能な記録媒体を利用し、前記プログラムを動作させる汎用デジタルコンピュータでも具現される。また、前述の本発明の実施形態で使用されデータ構造は、コンピュータで読み取り可能な記録媒体に、多くの手段を介して記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体(例えば、ROM、フロッピーディスク、ハードディスクなど)、光学的判読媒体(例えば、CD-ROM(compact disc read only memory)、DVD(digital versatile disc)など)のような記録媒体を含む。
以上、本発明について、その望ましい実施形態を中心に説明した。本発明が属する技術分野において、当業者であるならば、本発明が、本発明の本質的な特性から外れない範囲で変形された形態に具現されるということを理解するであろう。従って、開示された実施形態は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての違いは、本発明に含まれたものであると解釈されなければならないのである。
本発明の、ニューラルネットワークにおいて、コンボリューション演算を処理する方法及びその装置は、例えば、データ処理関連の技術分野に効果的に適用可能である。
1 ニューラルネットワーク
10,1830 ニューラルネットワーク装置
110,1810 プロセッサ
112 プロセッシングユニット
114 オンチップメモリ
120 外部メモリ
1800 電子システム
1820 RAM
1840 メモリ
1850 センサモジュール
1860 Tx/Rxモジュール

Claims (22)

  1. ニューラルネットワークにおいて、コンボリューション演算を処理する方法において、
    前記コンボリューション演算を行う入力フィーチャマップ及びカーネルから、m個のAビットフィーチャマップオペランド、及びn個のBビットウェートオペランドを、並列処理が可能である前記入力フィーチャマップのピクセル値及び前記カーネルのウェートに基いて決定する段階(A,B,m及びnは、自然数であり、mxnは2以上である)と、
    決定されたフィーチャマップオペランド及びウェートオペランドのオペランド対それぞれを、コンボリューション演算器内における分解されたサブ乗算器それぞれにディスパッチする段階と、
    前記分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、mxn個の出力を生成する段階と、
    前記生成されたmxn個の出力に基いて、前記コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得する段階と、
    を含み、前記コンボリューション演算器は、kビットの最大精度を有するkビット乗算器を含み、前記分解されたサブ乗算器それぞれは前記kビット乗算器のサブロジックに該当し、
    前記Aビットはk/mビットに等しく、前記Bビットはk/nビットに等しく、前記分解されたサブ乗算器それぞれは、前記Aビットの乗算器、または前記Bビットの乗算器に該当する、方法。
  2. 前記決定されたフィーチャマップオペランドは、
    前記入力フィーチャマップのうちいずれか1つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値に基いたものであることを特徴とする請求項1に記載の方法。
  3. 前記決定されたウェートオペランドは、
    前記カーネルのうち、前記1つの入力フィーチャマップの入力チャネルに対応し、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであることを特徴とする請求項2に記載の方法。
  4. 前記決定されたウェートオペランドは、
    前記カーネルのうち、前記1つの入力フィーチャマップの入力チャネル、及びいずれか1つの出力チャネルに対応するいずれか1つのカーネルにおいて、互いに異なる位置のウェートに基いたものであることを特徴とする請求項2に記載の方法。
  5. 前記決定されたフィーチャマップオペランドは、
    前記入力フィーチャマップのうち、互いに異なる入力チャネルの互いに異なる入力フィーチャマップにおいて、互いに対応するピクセル位置のピクセル値に基いたものであることを特徴とする請求項1に記載の方法。
  6. 前記決定されたウェートオペランドは、
    前記カーネルのうち、前記互いに異なる入力チャネルに対応し、いずれか1つの出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであることを特徴とする請求項5に記載の方法。
  7. 前記決定されたウェートオペランドは、
    前記カーネルのうち、前記互いに異なる入力チャネルに対応し、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであることを特徴とする請求項5に記載の方法。
  8. 前記Aビットフィーチャマップオペランド及び前記Bビットウェートオペランドは、k/2ビットオペランドに該当し、
    前記分解されたサブ乗算器それぞれは、k/2ビット乗算器に該当し、
    前記分解されたサブ乗算器それぞれには、前記Aビットフィーチャマップオペランド及び前記Bビットウェートオペランドが互いにマッピングされた前記オペランド対それぞれがディスパッチされることを特徴とする請求項1に記載の方法。
  9. 前記分解されたサブ乗算器それぞれは、k/2ビット乗算器に該当し、
    前記Aビットフィーチャマップオペランドが、k/2ビットオペランドであり、前記Bビットウェートオペランドが、kビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Aビットフィーチャマップオペランド、及びBビットウェートオペランドから分解されたk/2ビットのMSBのサブオペランドが互いにマッピングされた前記オペランド対と、前記Aビットフィーチャマップオペランド及び前記Bビットウェートオペランドから分解されたk/2ビットのLSBのサブオペランドが互いにマッピングされた前記オペランド対とがディスパッチされ、
    前記Aビットフィーチャマップオペランドが、kビットオペランドであり、前記Bビットウェートオペランドが、k/2ビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Aビットフィーチャマップオペランドから分解されたk/2ビットのMSBのサブオペランド、及びBビットウェートオペランドが互いにマッピングされた前記オペランド対と、前記Aビットフィーチャマップオペランドから分解されたk/2ビットのLSBのサブオペランド、及び前記Bビットウェートオペランドが互いにマッピングされた前記オペランド対と、がディスパッチされることを特徴とする請求項1に記載の方法。
  10. 前記分解されたサブ乗算器それぞれは、k/2ビット乗算器に該当し、
    前記Aビットフィーチャマップオペランド及び前記Bビットウェートオペランドが、kビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Aビットフィーチャマップオペランドから分解されたk/2ビットのMSBのサブオペランド及びLSBのサブオペランドと、Bビットウェートオペランドから分解されたk/2ビットのMSBのサブオペランド及びLSBのサブオペランドと、が互いにマッピングされた前記サブオペランド対がディスパッチされることを特徴とする請求項1に記載の方法。
  11. 前記ディスパッチされたオペランド対のうちゼロ・オペランドが存在する場合、ゼロ・スキッピングのために、前記ゼロ・オペランドがディスパッチされたサブ乗算器の乗算演算をクロックゲーティングする段階をさらに含むことを特徴とする請求項1に記載の方法。
  12. 装置において、
    少なくとも1つのプログラムが保存されたメモリと、
    前記少なくとも1つのプログラムを実行することにより、ニューラルネットワークのコンボリューション演算を処理するプロセッサと、を含み、
    前記プロセッサは、
    前記コンボリューション演算を行う入力フィーチャマップ及びカーネルから、m個のAビットフィーチャマップオペランド、及びn個のBビットウェートオペランドを、並列処理が可能である前記入力フィーチャマップのピクセル値及び前記カーネルのウェートに基いて決定し(A,B,m及びnは、自然数であり、mxnは2以上である)、
    前記決定されたオペランドから組み合わされたフィーチャマップオペランド及びウェートオペランドのオペランド対それぞれを、前記プロセッサのコンボリューション演算器内における分解されたサブ乗算器それぞれにディスパッチし、
    前記分解されたサブ乗算器それぞれにおいて行われた乗算演算結果に対する加算演算及び累積演算を行うことにより、mxn個の出力を生成し、
    前記生成されたmxn個の出力に基いて、前記コンボリューション演算の結果に対応する出力フィーチャマップのピクセル値を獲得し、
    前記コンボリューション演算器は、kビットの最大精度を有するkビット乗算器を含み、前記分解されたサブ乗算器それぞれは前記kビット乗算器のサブロジックに該当し、
    前記Aビットはk/mビットに等しく、前記Bビットはk/nビットに等しく、前記分解されたサブ乗算器それぞれは、前記Aビットの乗算器、または前記Bビットの乗算器に該当する、装置。
  13. 前記決定されたフィーチャマップオペランドは、
    前記入力フィーチャマップのうちいずれか1つの入力フィーチャマップにおいて、互いに異なるピクセル位置のピクセル値に基いたものであることを特徴とする請求項12に記載の装置。
  14. 前記決定されたウェートオペランドは、
    前記カーネルのうち、前記1つの入力フィーチャマップの入力チャネルに対応し、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであるか、あるいは
    前記決定されたウェートオペランドは、
    前記カーネルのうち、前記1つの入力フィーチャマップの入力チャネル、及びいずれか1つの出力チャネルに対応するいずれか1つのカーネルにおいて、互いに異なる位置のウェートに基いたものであることを特徴とする請求項13に記載の装置。
  15. 前記決定されたフィーチャマップオペランドは、
    前記入力フィーチャマップのうち、互いに異なる入力チャネルの互いに異なる入力フィーチャマップにおいて、互いに対応するピクセル位置のピクセル値に基いたものであることを特徴とする請求項12に記載の装置。
  16. 前記決定されたウェートオペランドは、
    前記カーネルのうち、前記互いに異なる入力チャネルに対応し、いずれか1つの出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであるか、あるいは
    前記決定されたウェートオペランドは、
    前記カーネルのうち、前記互いに異なる入力チャネルに対応し、互いに異なる出力チャネルに対応する互いに異なるカーネルにおいて、互いに対応する位置のウェートに基いたものであることを特徴とする請求項15に記載の装置。
  17. 前記Aビットフィーチャマップオペランド及び前記Bビットウェートオペランドは、k/2ビットオペランドに該当し、
    前記分解されたサブ乗算器それぞれは、k/2ビット乗算器に該当し、
    前記分解されたサブ乗算器それぞれには、Aビットフィーチャマップオペランド及びBビットウェートオペランドが互いにマッピングされた前記オペランド対それぞれがディスパッチされることを特徴とする請求項12に記載の装置。
  18. 前記分解されたサブ乗算器それぞれは、k/2ビット乗算器に該当し、
    前記Aビットフィーチャマップオペランドが、k/2ビットオペランドであり、前記Bビットウェートオペランドが、kビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Aビットフィーチャマップオペランド及びBビットウェートオペランドから分解されたk/2ビットのMSBのサブオペランドが互いにマッピングされた前記オペランド対と、前記Aビットフィーチャマップオペランド及び前記Bビットウェートオペランドから分解されたk/2ビットのLSBのサブオペランドが互いにマッピングされた前記オペランド対と、がディスパッチされ、
    前記Aビットフィーチャマップオペランドが、kビットオペランドであり、前記Bビットウェートオペランドが、k/2ビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Aビットフィーチャマップオペランドから分解されたk/2ビットのMSBのサブオペランド、及びBビットウェートオペランドが互いにマッピングされた前記オペランド対と、前記Aビットフィーチャマップオペランドから分解されたk/2ビットのLSBのサブオペランド、及び前記Bビットウェートオペランドが互いにマッピングされた前記オペランド対と、がディスパッチされることを特徴とする請求項12に記載の装置。
  19. 前記分解されたサブ乗算器それぞれは、k/2ビット乗算器に該当し、
    前記Aビットフィーチャマップオペランド及び前記Bビットウェートオペランドが、kビットオペランドである場合、前記分解されたサブ乗算器それぞれには、Aビットフィーチャマップオペランドから分解されたk/2ビットのMSBのサブオペランド及びLSBのサブオペランドと、Bビットウェートオペランドから分解されたk/2ビットのMSBのサブオペランド及びLSBのサブオペランドと、が互いにマッピングされた前記サブオペランド対がディスパッチされることを特徴とする請求項12に記載の装置。
  20. 前記プロセッサは
    前記ディスパッチされたオペランド対のうちゼロ・オペランドが存在する場合、ゼロ・スキッピングのために、前記ゼロ・オペランドがディスパッチされたサブ乗算器の乗算演算をクロックゲーティングすることを特徴とする請求項12に記載の装置。
  21. 請求項1ないし11のうち何れか一項に記載の方法を装置のコンピュータに実行させるコンピュータ・プログラム。
  22. 請求項21に記載のコンピュータ・プログラムを保存する記憶媒体。
JP2018221393A 2017-12-05 2018-11-27 ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置 Active JP7304148B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2017-0166203 2017-12-05
KR1020170166203A KR20190066473A (ko) 2017-12-05 2017-12-05 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치

Publications (2)

Publication Number Publication Date
JP2019102084A JP2019102084A (ja) 2019-06-24
JP7304148B2 true JP7304148B2 (ja) 2023-07-06

Family

ID=64500207

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018221393A Active JP7304148B2 (ja) 2017-12-05 2018-11-27 ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置

Country Status (5)

Country Link
US (1) US20190171930A1 (ja)
EP (1) EP3496008B1 (ja)
JP (1) JP7304148B2 (ja)
KR (1) KR20190066473A (ja)
CN (1) CN109871936B (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US11468302B2 (en) 2018-03-13 2022-10-11 Recogni Inc. Efficient convolutional engine
US11676371B2 (en) * 2018-08-17 2023-06-13 Fotonation Limited Apparatus for processing a neural network
US11222092B2 (en) * 2019-07-16 2022-01-11 Facebook Technologies, Llc Optimization for deconvolution
EP4006777A4 (en) * 2019-07-30 2022-08-24 Huawei Technologies Co., Ltd. IMAGE CLASSIFICATION METHOD AND APPARATUS
US20210049474A1 (en) * 2019-08-13 2021-02-18 Samsung Electronics Co., Ltd. Neural network method and apparatus
KR20210071473A (ko) * 2019-12-06 2021-06-16 삼성전자주식회사 연산 장치, 그것의 동작 방법 및 뉴럴 네트워크 프로세서
KR102559036B1 (ko) * 2019-12-24 2023-07-25 서울대학교산학협력단 음수값을 갖는 활성화 함수에서 제로 스키핑을 제공하는 방법 및 장치
CN111738424B (zh) * 2020-06-29 2023-12-26 湖南国科微电子股份有限公司 神经网络处理方法、装置、电子设备及存储介质
US11587345B2 (en) * 2020-07-22 2023-02-21 Honda Motor Co., Ltd. Image identification device, method for performing semantic segmentation, and storage medium
WO2022028666A1 (en) * 2020-08-03 2022-02-10 Huawei Technologies Co., Ltd. Using non-uniform weight distribution to increase efficiency of fixed-point neural network inference
KR102590585B1 (ko) 2021-08-10 2023-10-16 고려대학교 산학협력단 3 전극 대각 멤트랜지스터 시스템, 이를 이용한 컨볼루션 네트워크 연산 장치 및 방법
WO2023033360A1 (ko) * 2021-09-02 2023-03-09 삼성전자 주식회사 영상 처리 장치 및 그 동작 방법
WO2023248309A1 (ja) * 2022-06-20 2023-12-28 日本電信電話株式会社 データ処理装置、データ処理プログラム、及びデータ処理方法
US20240080423A1 (en) * 2022-09-02 2024-03-07 Samsung Electronics Co., Ltd. Fusion techniques for combining most significant bits and least significant bits of image data in image processing or other applications

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013037488A (ja) 2011-08-05 2013-02-21 Mega Chips Corp 画像認識装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5953241A (en) * 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US10255547B2 (en) * 2014-12-04 2019-04-09 Nvidia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US10417555B2 (en) * 2015-05-29 2019-09-17 Samsung Electronics Co., Ltd. Data-optimized neural network traversal
CN107153873B (zh) * 2017-05-08 2018-06-01 中国科学院计算技术研究所 一种二值卷积神经网络处理器及其使用方法
CN107392314A (zh) * 2017-06-30 2017-11-24 天津大学 一种基于确定性丢弃连接的深层卷积神经网络方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013037488A (ja) 2011-08-05 2013-02-21 Mega Chips Corp 画像認識装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RANGANATH L. et al.,Design of MAC Unit in Artificial Neural Network Architecture using Verilog HDL,2016 International Conference on Signal Processing, Communication, Power and Embedded System (SCOPES) [online],2016年,pp. 607-612,[2022年3月30日検索],インターネット<URL : https://ieeexplore.ieee.org/document/7955511>

Also Published As

Publication number Publication date
EP3496008A1 (en) 2019-06-12
US20190171930A1 (en) 2019-06-06
KR20190066473A (ko) 2019-06-13
JP2019102084A (ja) 2019-06-24
CN109871936B (zh) 2024-03-08
EP3496008B1 (en) 2023-10-18
CN109871936A (zh) 2019-06-11

Similar Documents

Publication Publication Date Title
JP7304148B2 (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
US11734006B2 (en) Deep vision processor
EP3612947B1 (en) Processing discontiguous memory as contiguous memory to improve performance of a neural network environment
KR102499396B1 (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
US20210174177A1 (en) Method and device with neural network implementation
US11663451B2 (en) Two-dimensional array-based neuromorphic processor and implementing method
US11763153B2 (en) Method and apparatus with neural network operation
US20220019408A1 (en) Method and apparatus with neural network processing
KR20200072307A (ko) 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법
US11513770B2 (en) Neural network method and apparatus with floating point processing
KR20210039197A (ko) 데이터를 처리하는 방법 및 장치
US11853869B2 (en) Neural network apparatus and method of processing variable-resolution operation by the same
US20240086694A1 (en) Neuromorphic method and apparatus with multi-bit neuromorphic operation
US20200159495A1 (en) Processing apparatus and method of processing add operation therein
WO2021081854A1 (zh) 一种卷积运算电路和卷积运算方法
US11853868B2 (en) Multi dimensional convolution in neural network processor
US11410410B2 (en) Method and apparatus with neural network processing
KR20200056898A (ko) 프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법
JP2022539554A (ja) 高精度のニューラル処理要素
KR20200139071A (ko) 뉴럴 네트워크에서 파라미터를 양자화하는 방법 및 장치
US20220343147A1 (en) Apparatus and method with neural network operations
US20240061649A1 (en) In-memory computing (imc) processor and operating method of imc processor
KR20210082970A (ko) 컨볼루션 연산을 수행하는 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210415

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230613

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230626

R150 Certificate of patent or registration of utility model

Ref document number: 7304148

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150