JP2019106186A - 畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置および方法 - Google Patents

畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置および方法 Download PDF

Info

Publication number
JP2019106186A
JP2019106186A JP2018232368A JP2018232368A JP2019106186A JP 2019106186 A JP2019106186 A JP 2019106186A JP 2018232368 A JP2018232368 A JP 2018232368A JP 2018232368 A JP2018232368 A JP 2018232368A JP 2019106186 A JP2019106186 A JP 2019106186A
Authority
JP
Japan
Prior art keywords
zero
channels
counter
data
selector
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.)
Granted
Application number
JP2018232368A
Other languages
English (en)
Other versions
JP6736646B2 (ja
Inventor
チャン ホン
Chang Huang
チャン ホン
リャン チェン
Ryan Chen
リャン チェン
ヘン ルオ
Heng Luo
ヘン ルオ
クン リン
Kun Ling
クン リン
ホンヘ タン
Honghe Tan
ホンヘ タン
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.)
Nanjing Horizon Robotics Technology Co Ltd
Original Assignee
Nanjing Horizon Robotics Technology 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 Nanjing Horizon Robotics Technology Co Ltd filed Critical Nanjing Horizon Robotics Technology Co Ltd
Publication of JP2019106186A publication Critical patent/JP2019106186A/ja
Application granted granted Critical
Publication of JP6736646B2 publication Critical patent/JP6736646B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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
    • 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
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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

Landscapes

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

Abstract

【課題】希薄化畳み込みニューラルネットワークにおける畳み込み演算を、ハードウェアによって効率的に実現する装置及び方法を提供する。【解決手段】畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置は、重みパラメータの1つまたは複数の非ゼロ要素を選択するセレクタ200と、選択された非ゼロ要素に対応する、入力特徴データ中のデータ項目を選択するセレクタ300と、演算を実行する計算機ユニット400とを備える。装置は、希薄化畳み込みニューラルネットワークにおける畳み込み演算をハードウェアによって効率的に実現することができる。【選択図】図2

Description

本開示は、一般に畳み込みニューラルネットワークに関し、より詳細には、畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置および方法に関する。
畳み込みニューラルネットワークに基づく深層学習技術は、画像認識および検出、音声認識などに使用することができ、精度が高く、そのため、安全監視、運転補助、知的コンパニオンロボット、知的医療などの分野で広範に使用されている。
畳み込みニューラルネットワークは通常、演算集約型(operation intensive)である。畳み込みニューラルネットワークにおける演算量を減らすために、畳み込みニューラルネットワークの重みパラメータを希薄化(sparsified)することができる。すなわち、重みパラメータ中の1つまたはいくつかの要素の値が強制的にゼロに設定され、これらのゼロ値の要素に関連する演算がスキップされる。
希薄化畳み込みニューラルネットワークにおける畳み込み演算は、ハードウェアによって効率的に実現できることが期待されている。
畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置が開示される。この装置は以下を備える。すなわち、装置は、重みパラメータを記憶する第1のメモリに結合された第1のセレクタと、入力特徴データを記憶する第2のメモリに結合された第2のセレクタと、計算機とを備える。第1のセレクタは、重みパラメータの1つまたは複数のカーネルの1つまたは複数の第1の非ゼロ要素を、1つまたは複数の第1のチャネル内で選択するように構成されている。各第1のチャネルは、少なくとも1つの第1の非ゼロ要素を含む。各第1の非ゼロ要素は、対応するカーネルの同じ要素位置にある。要素位置は、高さおよび幅の二次元における二次元位置である。第2のセレクタは、入力特徴データの1つまたは複数の第1のデータ項目を、1つまたは複数の第1の非ゼロ要素に対応する1つまたは複数の第1のチャネル内で選択するように構成されている。入力特徴データ中の各第1のデータ項目のデータ項目位置は、対応する第1の非ゼロ要素の要素位置によって決まる。各第1のデータ項目は、対応する第1の非ゼロ要素と同じ第1のチャネルにある。第1のデータ項目位置は、高さおよび幅の二次元における二次元位置である。計算機は、第2のセレクタからの各第1のデータ項目と、第1のセレクタからの対応する第1の非ゼロ要素とを乗算して積を得てから、その積を累積するように構成されている。
本開示の実施形態による装置によって、重みパラメータが任意の方法で希薄化されている畳み込みニューラルネットワークにおいて畳み込み演算をハードウェアによって効率的に実現することができる。
本開示の一実施形態による、重みパラメータの希薄化ならびに非ゼロ要素位置リストおよび非ゼロチャネルリストの一例の図である。 本開示の一実施形態による、畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置のブロック図である。 本開示の一実施形態による、畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置の構成の一例の図である。
畳み込みニューラルネットワークの各層の特徴データは三次元データとすることができ、また、特定の高さ、幅および深さを有し複数の点から成るデータキューブとして表すことができる。データキューブの任意の点が特徴データのデータ項目と呼ばれることがあり、三つ組(x、y、z)を用いて表すことができる。ここで、xは、そのデータ項目が上から下への順序でデータキューブ中のどの行にあるか(すなわち、高さの次元における位置)を表すことができ、yは、そのデータ項目が左から右への順序でデータキューブ中のどの列にあるか(すなわち、幅の次元における位置)を表すことができ、zは、そのデータ項目が前から後への順序でデータキューブ中のどのチャネルにあるか(すなわち、深さの次元における位置)を表すことができる。
上述の三つ組(x、y、z)のうちの二つ組(x、y)は、特徴データのデータ項目位置と呼ばれることがあり、これは高さと幅の二次元での二次元位置である。データ項目位置(x、y)を有するデータ項目は、行番号xおよび列番号yを有する特徴データ中の任意のチャネルのデータ項目に対応することができる。したがって、特徴データ中のどのデータ項目も、対応するデータ項目位置、およびそれが置かれているチャネルのチャネル番号によって見つけることができる。データ項目位置を表す二つ組(x、y)は、データ項目位置を表すのに用いられる一次元の値にマッピングすることができる。
畳み込みニューラルネットワークにおける各層の重みパラメータは四次元データとすることができ、重みパラメータの各カーネルは三次元データとすることができる。特徴データの表現方法と同様に、重みパラメータの各カーネルもまた、特定の高さ、幅および深さを有するデータキューブとして表すことができ、データキューブ中の任意の点が、重みパラメータの要素、または重みパラメータのカーネルの要素と呼ばれることがある。特徴データと同様に、三つ組(x、y、z)を用いて重みパラメータのカーネル中の要素を見つけることができる。さらに、四つ組(k、x、y、z)もまた用いて、重みパラメータ中の要素を見つけることができる。ここで、kは、その要素が重みパラメータのどのカーネルにあるか(すなわち、量の次元における位置)を表すことができ、xは、そのデータ項目が上から下への順序でカーネルkのどの行にあるか(すなわち、高さの次元における位置)を表すことができ、yは、そのデータ項目が左から右への順序でカーネルkのどの列にあるか(すなわち、幅の次元における位置)を表すことができ、zは、そのデータ項目が前から後への順序でカーネルkのどのチャネルにあるか(すなわち、深さの次元における位置)を表すことができる。
重みパラメータ中のある要素を表す四つ組(k、x、y、z)、またはカーネルk中の三つ組(x、y、z)内のある要素を表す二つ組(x、y)は、重みパラメータのカーネルk内の要素位置と呼ばれることがあり、これは、高さと幅の二次元における二次元位置になる。カーネルkにおいて、要素位置が(x、y)である要素は、カーネルkの任意のチャネルの、行番号がxおよび列番号がyである要素に対応しうる。したがって、カーネルk内のどの要素も、対応する要素位置、およびそれが置かれているチャネルのチャネル番号によって見つけることができる。要素位置を表す二つ組(x、y)は、要素位置を表すために用いられる一次元の値にマッピングすることができる。
便宜上、本明細書では、1つまたは複数のカーネルの1つの要素位置にある1つの要素に言及するとき、この要素は、その要素位置において、1つまたは複数のカーネル中の各カーネルのすべてのチャネル内のすべての要素を含みうる。1つまたは複数のカーネルの1つのチャネル内の1つの要素に言及するとき、この要素は、1つまたは複数のカーネル中の各カーネルのそのチャネル内のすべての要素を含みうる。
畳み込みニューラルネットワークは演算集約型である。畳み込みニューラルネットワークにおける演算量を減らすために、畳み込みニューラルネットワークの重みパラメータは希薄化することができる。すなわち、重みパラメータ中の1つまたはいくつかの要素の値が、それがゼロ値要素になるようにするために、強制的にゼロに設定される。したがって、畳み込み中、これらのゼロ値要素に関連する演算はスキップすることができ、演算は、非ゼロ要素(すなわち、ゼロではない値を有する要素)、および特徴データ中の対応するデータ項目について実行するだけでよい。それにより、実効演算速度が向上し、演算量が低減し、演算実行効率が向上する。
加えて、希薄化重みパラメータはコンパクトに記憶することができる。すなわち、希薄化重みパラメータ中の非ゼロ要素だけを記憶すればよく、それにより記憶空間を節減することができる。
本開示は、重みパラメータの希薄化方法に限定されない。たとえば、一実施形態では、重みパラメータの複数のカーネルをいくつかのグループに分割することができ、1つのグループ内の各カーネルが同様に希薄化される。たとえば、カーネルのグループのそれぞれにおける非ゼロ要素の分布が同じになるように、異なるグループを別々に希薄化することができる。言い換えると、異なるグループからの任意の2つのカーネルにおける非ゼロ要素の分布は、必ずしも同じでないことがある(当然、同じであることもある)。
別の実施形態では、あるカーネルの1つまたは複数のチャネル内の1つまたは複数の要素位置における要素は、非ゼロ要素に設定することができ、そのカーネルの別の1つまたは複数のチャネル内の別の1つまたは複数の要素位置における要素は、非ゼロ要素に設定することができる。
別の実施形態では、あるカーネルの1つまたは複数のチャネルを選択することができ、1つまたは複数の要素が、選択された1つまたは複数のチャネル内でランダムに選択され、その選択された1つまたは複数の要素が非ゼロ要素に設定され、選択された1つまたは複数のチャネル内の他のすべての非選択要素がゼロ値要素になる。さらに、そのカーネルの別の1つまたは複数のチャネルを選択することができ、1つまたは複数の要素が、選択された別の1つまたは複数のチャネル内でランダムに選択され、その選択された1つまたは複数の要素が非ゼロ要素に設定され、選択された別の1つまたは複数のチャネル内の他のすべての非選択要素がゼロ値要素になる。
ある要素位置の1つのカーネルの要素が少なくとも1つの非ゼロ要素を含む場合、この要素位置は非ゼロ要素位置と呼ばれることがある。あるカーネルの1つのチャネル内の要素が少なくとも1つの非ゼロ要素を含む場合、このチャネルは非ゼロチャネルと呼ばれることがある。
図1は、畳み込みニューラルネットワーク内の1つの層の希薄化重みパラメータの一例を示す。この例では、重みパラメータは4つのカーネルK1〜K4(重みカーネルまたは畳み込みカーネルとも呼ばれる)を含み、K1〜K4のそれぞれのカーネルは、それぞれ高さが3、幅が3、および深さ(すなわちチャネル数)が5のデータキューブである。
図1に示されるように、重みパラメータが希薄化された後、K1では、要素位置2すなわち(1,2)の要素、および要素位置9すなわち(3,3)の要素だけが非ゼロ要素であり、K2では、チャネル1および4の要素だけが非ゼロ要素であり、K3では、非ゼロ要素位置が2および3であり、非ゼロチャネルが1〜5であり、K4では、非ゼロ要素位置が1、2、3、および9であり、非ゼロチャネルが1、2、4および5である。図1では、各カーネルの非ゼロ要素が影付きの正方形で表されている。
非ゼロ要素位置リストおよび/または非ゼロチャネルリストは、希薄化中に希薄化重みパラメータに対して設定することができる。一実施形態では、非ゼロ要素位置リストおよび/または非ゼロチャネルリストは、重みパラメータのカーネルごとに設定することができる。別の実施形態では、カーネルの1つのグループのうちの各カーネルの非ゼロ要素の分布が同一である場合、非ゼロ要素位置リストおよび/または非ゼロチャネルリストは、カーネルのそのグループに対して設定することができる。
図1の例では、カーネルK1の要素位置2および9が非ゼロ要素位置であり、各非ゼロ要素位置では5つすべてのチャネルのすべての要素が非ゼロ要素である。それに応じて、非ゼロ要素位置リストL1をカーネルK1に対して設定することができる。この非ゼロ要素位置リストL1は、要素位置2および9と、それぞれに対応する指標値とを記録する2つの項目を含む。
カーネルK2のチャネル1および4は非ゼロチャネルであり、各非ゼロチャネルのすべての要素が非ゼロ要素である。それに応じて、非ゼロチャネルリストL2をカーネルK2に対して設定することができる。この非ゼロチャネルリストL2は、非ゼロチャネル1および4と、それぞれに対応する指標値とを記録する2つの項目を含む。
カーネルK3の要素位置2および3は非ゼロ要素位置であり、チャネル1〜5がそれぞれ非ゼロチャネルである。それに応じて、非ゼロ要素位置リストL3および非ゼロチャネルリストL4をカーネルK3に対して設定することができ、非ゼロ要素位置リストL3と非ゼロチャネルリストL4は互いに関連付けることができる。ここで、非ゼロ要素位置リストL3は、非ゼロ要素位置2および3をそれぞれ記録する2つの項目を含む。また、非ゼロ要素位置リストL3中の要素位置2がある項目は、指標値がそれぞれ0および1である非ゼロチャネルリストL4中の2つの項目と関連付けられる。また、非ゼロ要素位置リストL3中の要素位置3がある項目は、指標値がそれぞれ2〜4である非ゼロチャネルリストL4中の3つの項目と関連付けられる。L4中の指標値を非ゼロ要素位置リストL3中の記録された要素位置と関連付けることによって、カーネルK3の各非ゼロ要素の位置は、非ゼロチャネルリストL4および非ゼロ要素位置リストL3に基づいて決定することができる。
カーネルK4の要素位置1、2、3、および9が非ゼロ要素位置であり、それぞれチャネル1、2、4、および5が非ゼロチャネルである。それに応じて、非ゼロ要素位置リストL5および非ゼロチャネルリストL6をカーネルK4に対して設定することができ、これらの非ゼロ要素位置リストL5と非ゼロチャネルリストL6は互いに関連付けることができる。ここで、非ゼロ要素位置リストL5は、1、2、3、および9の4つの非ゼロ要素位置をそれぞれ記録する4つの項目を含む。また、非ゼロチャネルリストL6は、1、2、4、および5の4つの非ゼロチャネルをそれぞれ記録する4つの項目を含む。たとえば、指標値が0である非ゼロ要素位置リストL5の項目は、それぞれ指標値が0および3である非ゼロチャネルリストL6の2つの項目と関連付けることができ、指標値が3である非ゼロ要素位置リストL5の項目は、指標値が0である非ゼロチャネルリストL6の項目と関連付けることができる。非ゼロチャネルリストL6の指標値を非ゼロ要素位置リストL5に記録された要素位置と関連付けることによって、カーネルK4の各非ゼロ要素の位置は、非ゼロチャネルリストL6および非ゼロ要素位置リストL5に基づいて決定することができる。
別の例で、希薄化重みパラメータがさらにカーネルK5(図示せず)を4つのカーネルK1〜K4に加えて含み、カーネルK5での非ゼロ要素の分布がカーネルK1での非ゼロ要素の分布と厳密に同じである場合には、同一の非ゼロ要素位置リストL1をカーネルK1およびK5に対して用いることができる。別の例で、希薄化重みパラメータがさらにカーネルK6(図示せず)を4つのカーネルK1〜K4に加えて含み、カーネルK6での非ゼロ要素の分布がカーネルK4での非ゼロ要素の分布と厳密に同じである場合には、同一の非ゼロ要素位置リストL5と同一の非ゼロチャネルリストL6をカーネルK6およびK4に対して用いることができる。
非ゼロ要素位置リストの形式および非ゼロチャネルリストの形式は、図1に示された例に限定されないことを理解されたい。別の実施形態では、非ゼロチャネルリストに記録された情報は、1つまたは複数のカーネルでの非ゼロ要素の要素位置と相関させることができる。たとえば、図1に示されるように、非ゼロチャネルリストL6の形式は、L7の形式のように設定することができ、L7に記録された情報は非ゼロ要素位置とも関連付けられている。たとえば、非ゼロ要素位置リストおよび/または非ゼロチャネルリストはまた、他の情報を含むこともできる。
さらに、非ゼロ要素位置リストおよび非ゼロチャネルリストはまた、1つのリストに組み合わせることもでき、その各項目には、カーネル数、非ゼロ要素位置および非ゼロチャネルなどの3つの値を指標として用いることができる。
非ゼロ要素位置リストおよび非ゼロチャネルリストが重みパラメータ中の非ゼロ要素を見つけるために使用される場合、必要な指標値の総数(または非ゼロ要素位置リストおよび非ゼロチャネルリストの規模)は、カーネル数(たとえば、各グループのカーネル数)、非ゼロ要素位置の数(たとえば、カーネルの各グループの非ゼロ要素位置の数)、および非ゼロチャネルの数(たとえば、カーネルの各グループの非ゼロチャネルの数)によって決まりうる。加えて、図1に示されるように、非ゼロ要素位置リストおよび非ゼロチャネルリストの一方だけを、重みパラメータに対して採用された希薄化方法に応じて設定することができる。このような場合には、必要な指標値の総数(または非ゼロ要素位置リストおよび非ゼロチャネルリストの規模)は、たとえば、カーネル数および非ゼロ要素位置の数に応じて、またはカーネル数および非ゼロチャネルの数に応じて、減らすことができる。
別の実施形態では、非ゼロ要素の指標には、次の方法、すなわち、サイズが各カーネルと同じである三次元データキューブがカーネルごとに構築される方法、を採用することができる。ここで、三次元データキューブの要素の値は0または1とすることができ、0は、カーネルの対応する位置の要素がゼロ値要素であることを表し、1は、カーネルの対応する位置の要素が非ゼロ要素であることを表す。
図2は、本開示の一実施形態による、希薄化畳み込みニューラルネットワークにおいて畳み込み演算を効率的に実現するのに使用可能な装置のブロック図を示す。
図2に示されるように、本開示の一実施形態による装置は、セレクタ200、セレクタ300、および計算機400を含む。
セレクタ200は、重みパラメータを記憶するメモリ110に結合することができ、重みパラメータの1つまたは複数のカーネルの1つまたは複数のチャネル内の1つまたは複数の非ゼロ要素を、メモリ110に記憶されたデータから選択することができる。選択された1つまたは複数の非ゼロ要素は、計算機400に提供される。重みパラメータは、重みパラメータの非ゼロ要素だけがメモリ110に記憶されるように希薄化されていることを理解されたい。
セレクタ300は、特徴データを記憶するメモリ120に結合することができ、セレクタ200で選択された1つまたは複数のチャネルに対応する特徴データの1つまたは複数のチャネル内の1つまたは複数のデータ項目を、メモリ120に記憶されたデータから選択することができる。その各選択されたデータ項目のデータ項目位置は、セレクタ200で選択された1つまたは複数の非ゼロ要素中の対応する非ゼロ要素の要素位置によって決まる。次に、セレクタ300は、選択された1つまたは複数のデータ項目位置を計算機400に提供することができる。
計算機400は、セレクタ300から受け取った各データ項目の値と、セレクタ200からの対応する非ゼロ要素の値とを乗算し、乗算によって得られた結果を累積する。
メモリ110およびメモリ120の一方または両方は、本開示の一実施形態による装置に含めること、または本開示の一実施形態による装置から独立したものにすること、または本開示の一実施形態による装置の外部に配置することができ、ディスク、オフチップDDR、オンチップSRAM、オンチップレジスタなどの、任意の形の揮発性または不揮発性記憶デバイスとすることができる。さらに、メモリ110およびメモリ120はまた、それぞれ重みパラメータおよび特徴データに割り当てられた、同一メモリ内の記憶空間とすることもできる。このようなメモリは、ディスク、オフチップDDR、オンチップSRAM、オンチップレジスタなどの、任意の形の揮発性または不揮発性記憶デバイスとすることができる。さらに、メモリ110では、重みパラメータをコンパクトに記憶することができる。すなわち、重みパラメータ(たとえば、元の重みパラメータまたは希薄化重みパラメータ)のうちの非ゼロ要素だけをメモリ110に記憶できる。
図3は、本開示の一実施形態による装置の構成の一例を示す。図3に示されるように、セレクタ200は、マルチプレクサ215,225と、バッファメモリ220とを含むことができる。セレクタ300は、マルチプレクサ315,325,330,335と、バッファメモリ320とを含むことができる。計算機400は、乗算アキュムレータアレイ405および他の構成要素410を含むことができる。さらに、本開示の一実施形態による装置はまた、カウンタ505,510,515,520,525を含むこともできる。
マルチプレクサ215は、メモリ110に結合された入力端子と、バッファメモリ220に結合された出力端子と、カウンタ505,510,515の出力端子に結合された制御端子とを含み、それにより、カウンタ505,510,515から出力されるカウント値の制御のもとで、メモリ110からデータの一部分を選択し、バッファメモリ220の中にバッファリングすることができる。一実施形態では、複数のこのようなマルチプレクサ215を並列に配置することができる。
マルチプレクサ225の入力端子は、バッファメモリ220に結合することができる。マルチプレクサ225の出力端子は、計算機400の乗算アキュムレータアレイ405に結合することができる。たとえば、マルチプレクサ225の各出力端子は、それぞれ乗算アキュムレータアレイ405中の1つまたは複数の乗算アキュムレータの入力端子に結合することができる。マルチプレクサ225の制御端子は、カウンタ525の出力端子に結合することができ、それにより、カウンタ525から出力されるカウント値の制御のもとで、バッファメモリ220からデータの一部分を選択し、乗算アキュムレータアレイ405へ出力することができる。一実施形態では、複数のこのようなマルチプレクサ225を並列に配置することができる。
マルチプレクサ225の数、および各マルチプレクサ225の出力端子の数は、乗算アキュムレータアレイ405の演算能力によって決まりうる。たとえば、バッファメモリ220と1つまたは複数のマルチプレクサ225とは、マルチプレクサ215によってメモリ110から選択されるデータ量が乗算アキュムレータアレイ405の実際の処理能力よりも大きくなるたびごとに設けることができる。たとえば、マルチプレクサ215によってメモリ110から毎回選択されるデータの一部分は、バッファメモリ220の中にバッファリングすることができ、次に、バッファメモリ220中のデータの一部分が乗算アキュムレータアレイ405にマルチプレクサ225から一括で提供され、それにより、乗算アキュムレータアレイ405で毎回受け取られるデータの量は、処理できるデータ量の範囲内になる。たとえば、乗算アキュムレータアレイ405がM個の乗算アキュムレータ(MAC)を含むと仮定すると、K個のカーネル、C個のチャネル、およびP個のデータ点の乗加算演算を毎回実行することができ、ここでK×C×P=Mであり、そのため、乗算アキュムレータアレイ405の実際の処理能力は、これらの指標によって決定することができる。
さらに、データ読み込み遅延がメモリ110よりも小さい、または非常に小さい1つまたは複数のバッファメモリを、あるいはデータ読み込み遅延がたとえば乗算アキュムレータアレイ405の処理速度に適合する1つまたは複数のバッファメモリを、バッファメモリ220として選択することができる。それにより、乗算アキュムレータアレイ405はデータを待つために停止しなくてもよくなり、したがって、畳み込み演算の実行効率に及ぼすデータ読み込み遅延の影響が低減されることになる。
別の実施形態では、セレクタ200は、1つまたは複数のマルチプレクサ215を含むだけでよく、バッファメモリ220および/またはマルチプレクサ225を用意しなくてもよい。このような場合には、マルチプレクサ215の出力端子は乗算アキュムレータアレイ405に直接結合することができ、またカウンタ525の出力端子はマルチプレクサ215の制御端子に結合することができる。
マルチプレクサ315の入力端子はメモリ120に結合することができ、マルチプレクサ315の出力端子はバッファメモリ320に結合することができ、マルチプレクサ315の制御端子は、カウンタ510,520の出力端子と、マルチプレクサ330の出力端子とに結合することができる。マルチプレクサ330の入力端子は、非ゼロ要素位置リスト610を記憶するメモリに結合され、マルチプレクサ330の制御端子は、カウンタ505の出力端子に結合することができる。したがって、マルチプレクサ315,330の組合せでデータの一部分をメモリ120から選択し、これをバッファメモリ320の中に、非ゼロ要素位置リスト610中の情報に基づいて、カウンタ505,510,520から出力されるカウント値の制御のもとで、バッファリングすることができる。一実施形態では、複数のマルチプレクサ315を並列に配置することができ、またマルチプレクサ330は、N入力1出力(1-out-of-N)マルチプレクサのタイプとすることができる。
マルチプレクサ325の入力端子は、バッファメモリ320に結合することができる。マルチプレクサ325の出力端子は、計算機400の乗算アキュムレータアレイ405に結合することができる。たとえば、マルチプレクサ325の各出力端子は、それぞれ乗算アキュムレータアレイ405の1つの乗算アキュムレータの別々の入力端子に結合することができる。マルチプレクサ325の制御端子は、マルチプレクサ335の出力端子に結合することができる。マルチプレクサ335の入力端子は、非ゼロチャネルリスト620を記憶するメモリに結合することができ、マルチプレクサ335の制御端子は、カウンタ525の出力端子に結合することができる。したがって、マルチプレクサ325,335は、データの一部分をバッファメモリ320から選択し、これを乗算アキュムレータアレイ405へ、非ゼロチャネルリスト620中の情報に基づいて、カウンタ525から出力されるカウント値の制御のもとで出力することができる。一実施形態では、複数のこのようなマルチプレクサ325を並列に設けることができ、またマルチプレクサ335は、N入力1出力マルチプレクサのタイプとすることができる。
マルチプレクサ325の数、および各マルチプレクサ325の出力端子の数は、乗算アキュムレータアレイ405の演算能力によって決まりうる。たとえば、バッファメモリ320と1つまたは複数のマルチプレクサ325とは、マルチプレクサ315によってメモリ120から選択されるデータ量が乗算アキュムレータアレイ405の実際の処理能力よりも大きくなるたびごとに、設けることができる。たとえば、マルチプレクサ315によってメモリ120から毎回選択されるデータの一部分は、バッファメモリ320の中にバッファリングすることができ、次に、バッファメモリ320中のデータの一部分が乗算アキュムレータアレイ405にマルチプレクサ325から一括で提供され、それにより、乗算アキュムレータアレイ405で毎回受け取られるデータの量は、処理できるデータ量の範囲内になる。
マルチプレクサ215,225,315,325,330,335のいずれか1つの制御端子は、1つまたは複数のプログラマブルSRAMユニット(たとえば、1つまたは複数のレジスタ)を含みうる。一実施形態では、マルチプレクサは、1つまたは複数のプログラマブルSRAMユニットに記憶されたコンテンツに基づいて、1つまたは複数の入力端子をアクティブ入力端子として選択し、そのアクティブ入力端子から受け取ったデータを出力端子から出力することができる。別の実施形態では、マルチプレクサは、1つまたは複数のプログラマブルSRAMユニットに記憶されたコンテンツに基づいて、読み込まれるべきデータのアドレスを決定し、決定されたアドレスのデータをメモリ110もしくは120、またはバッファメモリ220もしくは320から読み込み、そのデータを出力端子から出力することができる。さらに、マルチプレクサ215,225,315,325,330,335のいずれかは、1つまたは複数のプログラマブルSRAMユニットに記憶されたコンテンツに基づいて、データの読み込みアドレスを決定するための、および/またはどの入力端子がアクティブ入力端子になるかを制御するための、論理制御回路を含みうる。
さらに、データ読み込み遅延がメモリ120よりも小さい、または非常に小さい1つまたは複数のバッファメモリを、あるいはデータ読み込み遅延が乗算アキュムレータアレイ405の処理速度に適合する1つまたは複数のバッファメモリを、バッファメモリ320として選択することができる。それにより、乗算アキュムレータアレイ405はデータ入力を待つために停止しなくてもよくなり、したがって、畳み込み演算の実行効率に及ぼすデータ読み込み遅延の影響が低減されることになる。
別の実施形態では、セレクタ300は、マルチプレクサ315,330,335を含むことができ、バッファメモリ320および/またはマルチプレクサ325を用意しなくてもよい。このような場合には、マルチプレクサ315の出力端子は乗算アキュムレータアレイ405に直接結合することができ、マルチプレクサ335の出力端子はマルチプレクサ315の制御端子に結合することもできる。
別の実施形態では、別の形のデータセレクタまたはコントローラもまた、マルチプレクサ330,335を置き換えるために使用することができ、あるいは、構造がより複雑であるが処理能力がより高い1つのマルチプレクサを、マルチプレクサ315,330,335および/または325を置き換えるために、またマルチプレクサ315,330,335および/または325のすべての機能を実現するために使用することができ、それによりセレクタ300は、ただ1つのマルチプレクサを含めばよいことになる。
非ゼロ要素位置リスト610を記憶するためのメモリ、および非ゼロチャネルリスト620を記憶するためのメモリは、メモリ110または120と同じメモリとすることも、メモリ110または120とは異なる記憶デバイスとすることもできる。
計算機400は、たとえば、活動化、量子化などの畳み込み演算に関連する他の演算を実行するために使用できる別の構成要素410を含むこともできる。
カウンタ505は、非ゼロ要素位置カウンタとして使用することができる。一実施形態では、カーネルの1つのグループのうちの各カーネルが同じ非ゼロ要素の分布を有し、またカーネルのそのグループのどのカーネルもn個の非ゼロ要素位置を有する場合、カウンタ505のカウント値の上限はn−1として設定することができ、カウンタ505は、0からn−1までを周期的にカウントすることになる。別の実施形態では、カーネルの1つのグループのうちの各カーネル中のすべての要素位置を非ゼロ要素位置と見なすことができ、このような場合には、カウンタ505のカウント値の上限は8(3×3−1=8)として設定することができ、カウンタ505は、0から8までを周期的にカウントすることになる。
マルチプレクサ215の1つの制御端子は、現在のカウント値をカウンタ505から受け取り、カウンタ505のその現在のカウント値に基づいて、カウンタ505の現在のカウント値に対応する1つまたは複数の非ゼロ要素をメモリ110から選択する。
たとえば、重みパラメータのカーネルの1つのグループが、図1に示された例のカーネルK1と、図1には示されていないが非ゼロ要素の分布がカーネルK1と厳密に同じであるカーネルK5とを含むと仮定すると、2つのカーネルK1およびK5を含むグループでは、カウンタ505は、0から1までを周期的にカウントすることができる(K1,K5は、2つの非ゼロ要素位置2および9を有する)。カウンタ505からの現在のカウント値0に応じて、マルチプレクサ215はメモリ110から、要素位置が2であるカーネルK1の5つすべてのチャネルの5つの非ゼロ要素と、要素位置が2であるカーネルK5の5つすべてのチャネルの5つの非ゼロ要素とを選択することができ(たとえば、図1のL1を参照)、選択された10個の非ゼロ要素はバッファメモリ220の中にバッファリングすることができる。カウンタ505からの現在のカウント値が1である場合、マルチプレクサ215はメモリ110から、要素位置が9であるK1の5つすべてのチャネルの5つの非ゼロ要素と、要素位置が9であるK5の5つすべてのチャネルの5つの非ゼロ要素とを選択することができ(たとえば、図1のL1を参照)、選択された10個の非ゼロ要素はバッファメモリ220の中にバッファリングすることができる。
たとえば、重みパラメータのカーネルの別のグループが、図1に示された例のカーネルK2と、図1には示されていないが非ゼロ要素の分布がK2と厳密に同じであるカーネルK6とを含むと仮定すると、2つのカーネルK2およびK6を含むグループでは、カウンタ505は、0から8までを周期的にカウントすることができる(K2,K6は、9つの非ゼロ要素位置1〜9を有する)。カウンタ505の現在のカウント値5に応じて、マルチプレクサ215はメモリ110から、要素位置が5であるカーネルK2の2つの非ゼロチャネルの2つの非ゼロ要素と、要素位置が5であるカーネルK6の2つの非ゼロチャネルの2つの非ゼロ要素とを選択することができ、選択された4つの非ゼロ要素はバッファメモリ220の中にバッファリングすることができる。カウンタ505からの現在のカウント値が7である場合、マルチプレクサ215はメモリ110から、要素位置が7であるカーネルK2の2つの非ゼロチャネルの2つの非ゼロ要素と、要素位置が7であるカーネルK6の2つの非ゼロチャネルの2つの非ゼロ要素とを選択することができ、選択された4つの非ゼロ要素はバッファメモリ220の中にバッファリングすることができる。
図3に示されるように、カウンタ505からの現在のカウント値はまた、マルチプレクサ330の制御端子にも提供される。マルチプレクサ330は、カウンタ505からの現在のカウント値に基づいて、カウンタ505からの現在のカウント値に対応する非ゼロ要素位置リスト610からの非ゼロ要素位置を探索し、探索結果をマルチプレクサ315の制御端子に提供することができる。マルチプレクサ315は、制御端子で受け取られた非ゼロ要素位置に関する情報に基づいて、1つまたは複数のデータ項目位置を決定することができ、その決定された1つまたは複数のデータ項目位置における特徴データの1つまたは複数のチャネルのデータ項目をメモリ120から選択する。
たとえば、図1のカーネルK3では、カウンタ505は、0から1まで周期的にカウントすることができる(K3には2つの非ゼロ要素、すなわち2および3がある)。カウンタ505からの現在のカウント値が1であるとき、マルチプレクサ215は、要素位置が3であるカーネルK3の3つの非ゼロチャネルの3つの非ゼロ要素(チャネル3〜5)をメモリ110から選択する。同時に、マルチプレクサ330は、カウンタ505からの現在のカウント値を指標値として用いて、非ゼロ要素位置リストL3から指標値が1である項目、すなわち非ゼロ要素位置が3である項目(図1のL3を参照)を取得または選択する。次に、その項目すなわち取得された要素位置3は、マルチプレクサ315の制御端子に提供される。カーネルK3が幅方向に2であるストライドを有し、かつ、畳み込み演算が実行されるときに特徴データに対してパディングが何も実行されないと仮定すると、マルチプレクサ315(たとえば、マルチプレクサ315の論理制御回路)は、畳み込み演算の際の情報に基づいて、要素位置3に対応する(1,3)、(1,5)、(1,7)などの1つまたは複数のデータ項目位置を決定することができる。次に、マルチプレクサ315は、データ項目位置が(1,3)である5つすべてのチャネルの5つのデータ項目と、データ項目位置が(1,5)である5つすべてのチャネルの5つのデータ項目と、データ項目位置が(1,7)である5つすべてのチャネルの5つのデータ項目とをメモリ120から選択することができ、選択された15個のデータ項目はバッファメモリ320の中にバッファリングすることができる。
カウンタ510は、チャネルグループカウンタとして使用することができる。各カーネルの特徴データおよび全チャネルは1つまたは複数のグループに分割することができ、そのそれぞれが1つまたは複数のチャネルを含む。一実施形態では、チャネルは、マルチプレクサ215および/または315の選択能力(たとえば、入力端子数)に応じて分割することができる。グループの数がCである場合、カウンタ510のカウント値の上限はC−1に設定することができ、カウンタ510は、0からC−1まで周期的にカウントすることになりうる。
マルチプレクサ215の制御端子は、現在のカウント値をカウンタ510から受け取り、カウンタ510のその現在のカウント値に基づいて、カウンタ510からの現在のカウント値に対応する1つまたは複数のチャネルの1つまたは複数の非ゼロ要素をメモリ110から選択する。同時に、マルチプレクサ315の制御端子は、現在のカウント値をカウンタ510から受け取り、カウンタ510からのその現在のカウント値に基づいて、カウンタ510からの現在のカウント値に対応する1つまたは複数のチャネルの1つまたは複数のデータ項目をメモリ120から選択する。
たとえば、図1の例で、5つのチャネルが2つのグループに分割され、そのうちの一方の、カウンタ510からのカウント値0に対応する方がチャネル1〜3を含み、もう一方の、カウンタ510からのカウント値1に対応する方がチャネル4および5を含むと仮定すると、カウンタ510は、0から1まで周期的にカウントすることになりうる。
この例で、図1に示されたカーネルK3およびK4では、カウンタ510からの現在のカウント値が0であるとき、マルチプレクサ215は、カーネルK3のチャネル1〜3のすべての非ゼロ要素、すなわち(k3,1,2,1)、(k3,1,2,2)および(k3,1,3,3)を選択すること、およびカーネルK4のチャネル1〜3のすべての非ゼロ要素、すなわち(k4,1,1,1)、(k4,1,3,2)および(k4,3,3,1)を選択することができる。次に、選択された6つの非ゼロ要素はバッファメモリ220の中にバッファリングすることができる。同時に、マルチプレクサ315は、チャネル1〜3のすべてのデータ項目を選択し、選択されたすべてのデータ項目をバッファメモリ320の中にバッファリングすることができる。
カウンタ515は、カーネルグループカウンタとして使用することができる。一実施形態では、計算機400(たとえば、乗算アキュムレータアレイ405)が各演算でK個のカーネルの畳み込み演算を処理できると仮定すると、各層の重みパラメータのすべてのカーネルは1つまたは複数のグループに分割することができ、そのそれぞれが最大でK個のカーネルを含み、グループの数はG’になる。このため、カウンタ515からのカウント値の上限はG’−1に設定することができ、カウンタ515は、0からG’−1まで周期的にカウントすることになりうる。別の実施形態では、カーネルは、希薄化方法または設計要件に応じてグループ化することができる。
カウンタ515からの現在のカウント値は、マルチプレクサ215の制御端子に提供することができる。マルチプレクサ215は、カウンタ515からの現在のカウント値に応じて、カウンタ515からの現在のカウント値に対応するカーネルグループ内の全カーネルの全非ゼロ要素をメモリ110から選択することができる。
たとえば、図1の例で、カーネルK1〜K4が2つのグループに分割され、そのうちの一方の、カウンタ515からのカウント値0に対応する方がカーネルK1およびK2を含み、もう一方の、カウンタ515からのカウント値1に対応する方がカーネルK3およびK4を含むと仮定すると、カウンタ515からの現在のカウント値が1であるとき、マルチプレクサ215は、カーネルK3の5つの非ゼロ要素(図1に示されたK3の影付きブロック)と、カーネルK4の5つの非ゼロ要素(図1に示されたK4の影付きブロック)とをメモリ110から選択することができ、選択された10個の非ゼロ要素はバッファメモリ220の中にバッファリングすることができる。
カウンタ520は、出力点グループカウンタとして使用することができる。ある設計された畳み込みニューラルネットワークでは、1つの入力特徴データを考えると、各層の出力特徴データ中のデータ項目の数をあらかじめ知ること、または計算することができる。たとえば、図1の例では、出力特徴データのデータ項目のうちの1つは、入力特徴データ中の45個のデータ項目(3×3×5=45)すべてについて畳み込み演算を実行した後に得ることができる。言い換えると、出力特徴データ中のどのデータ項目も、入力特徴データ中のH×W×D個のデータ項目、および1つのカーネルのH×W×D個のデータ項目について乗加算演算を実行することによって得られる。ここで、Hは各カーネルの高さ(すなわち行数)を表し、Wは各カーネルの幅(すなわち列数)を表し、Dは各カーネルの深さ(すなわちチャネル数)を表す。計算機400(たとえば、乗算アキュムレータアレイ405)が出力特徴データ中のp個のデータ項目の計算を毎回サポートできると仮定すると、この処理能力により、出力特徴データ中のデータ項目は1つまたは複数のグループに分割することができ、そのそれぞれが最大でp個のデータ項目を含むことができ、その数はGになる。したがって、カウンタ520のカウント値の上限はG−1に設定することができ、カウンタ520は、0からG−1まで周期的にカウントすることになりうる。別の実施形態では、入力特徴データ中のデータ項目のグループ化方法は、たとえば並行処理要件(parallelism requirement)などによって決定することができる。
カウンタ520からの現在のカウント値は、マルチプレクサ315の制御端子のうちの1つに提供することができる。マルチプレクサ315は、カウンタ520からの現在のカウント値に応じて、メモリ120から1つまたは複数のデータ項目を選択することができ、カウンタ520からの現在のカウント値に対応する出力特徴データのデータ項目グループ内のデータ項目は、選択された1つまたは複数のデータ項目に応じて計算することができる。
たとえば、図1の例において、各カーネルがストライド2を幅方向にスライドさせ、メモリ120内の入力特徴データが畳み込み演算中にパッドされず、カウンタ520からのカウント値0が、出力特徴データ中のデータ項目(1,1,1)、(1,1,2)、(1,1,3)、(1,1,4)、(1,2,1)、(1,2,2)、(1,2,3)および(1,2,4)に対応すると仮定すると、カウンタ520からのカウント値1は、出力特徴データ中のデータ項目(1,3,1)、(1,3,2)、(1,3,3)、(1,3,4)、(1,4,1)、(1,4,2)、(1,4,3)および(1,4,4)に対応し、カウンタ520からの現在のカウント値が1であるとき、マルチプレクサ315は、データ項目位置(1,5)、(2,5)、(3,5)、(1,6)、(2,6),(3,6)、(1,7)、(2,7)、(3,7)、(1,8)、(2,8)、(3,8)、(1,9)、(2,9)および(3,9)それぞれにおける入力特徴データのすべてのデータ項目をメモリ120から選択することができ、選択された75個(15×5=75)のデータ項目はバッファメモリ320の中にバッファリングされる。
カウンタ525は、非ゼロチャネルグループカウンタとして使用することができる。一実施形態では、重みパラメータのすべての非ゼロチャネルを1つまたは複数のグループに分割することができ、そのそれぞれが1つまたは複数の非ゼロチャネルを含みうる。別の実施形態では、1つの層の重みパラメータのすべての非ゼロチャネルを、たとえば乗算アキュムレータアレイ405の処理能力に応じてグループ化することができる。別の実施形態では、カウンタ525はカウンタ510と協働することができる。たとえば、カウンタ510からの各カウント値に対応するチャネルグループ内の非ゼロチャネルは、1つまたは複数の非ゼロチャネルグループに分割することができる。すなわち、バッファメモリ220中の非ゼロ要素に対応するすべての非ゼロチャネルは、1つまたは複数の非ゼロチャネルグループに分割することができる。この実施形態では、マルチプレクサ335の制御端子もまた、現在のカウント値をカウンタ510から受け取ることができる。非ゼロチャネルグループの数がC’である場合、カウンタ525のカウント値の上限はC’−1に設定することができ、カウンタ525は、0からC’−1まで周期的にカウントされうる。
マルチプレクサ225は、その制御端子を通して現在のカウント値をカウンタ525から受け取り、カウンタ525からの現在のカウント値に応じて、カウンタ525からの現在のカウント値に対応する1つまたは複数の非ゼロチャネル内の1つまたは複数の非ゼロ要素をバッファメモリ220から選択することができる。次に、選択された1つまたは複数の非ゼロ要素は乗算アキュムレータアレイへ出力される。
マルチプレクサ335は、その制御端子を通して現在のカウント値をカウンタ525から受け取り、カウンタ525からの現在のカウント値に応じて、カウンタ525からの現在のカウント値に対応する1つまたは複数の非ゼロチャネルを非ゼロチャネルリスト620から選択することができ、選択された1つまたは複数の非ゼロチャネルはマルチプレクサ325の制御端子に提供される。次に、マルチプレクサ325は、その制御端子で受け取られた1つまたは複数の非ゼロチャネルについての制御情報に応じて、選択された1つまたは複数の非ゼロチャネル内の1つまたは複数のデータ項目をバッファ320から選択することができる。このため、マルチプレクサ225で選択された1つまたは複数の非ゼロ要素に対応する1つまたは複数のデータ項目をバッファメモリ320から選択することが可能である。次に、マルチプレクサ325は、選択された1つまたは複数のデータ項目を乗算アキュムレータアレイ405へ出力することができ、それにより、乗算アキュムレータアレイ405の各乗算アキュムレータは、非ゼロ要素とデータ項目の各対を入力として用い、乗算演算を実行することができる。次に、非ゼロ要素とデータ項目の各対の加算結果が累積される。
一実施形態では、マルチプレクサ335による非ゼロチャネルリスト620の検索/選択に、カウンタ525またはマルチプレクサ330からの現在のカウント値の出力を取り入れることができる。たとえば、マルチプレクサ330の出力端子をマルチプレクサ335の制御端子に結合することができ、あるいはカウンタ525の出力部をマルチプレクサ335の制御端子に結合することができる。
カウンタ525および非ゼロチャネルリスト620によって、セレクタ300は、セレクタ200で選択された1つまたは複数の非ゼロ要素に対応する最後の1つまたは複数のデータ項目を選択することができる。一方、セレクタ200およびセレクタ300から乗算アキュムレータアレイ405に毎回提供されるデータ量は、乗算アキュムレータアレイ405の処理能力の範囲内に抑制することができる。
本開示の一実施形態による装置は、カウンタ505,510,515,520,525のうちの1つを含みうる。たとえば、ポイントごとの希薄化によって処理されるニューラルネットワークだけが処理される場合では、カウンタ505が含まれるだけでよく、マルチプレクサ335および非ゼロチャネルリスト620は配置されなくてもよい。別の実施形態では、本開示の一実施形態による装置は、複数のカウンタ505,510,515,520,525を含みうる。すべてのカウンタ505,510,515,520,525が含まれる場合には、本開示の一実施形態による装置は、任意の方法で希薄化された畳み込みニューラルネットワークの演算を処理することができる。
複数のカウンタ505,510,515,520,525が(たとえば、すべて)含まれる場合、各カウンタが実際に機能するかどうかを、各カウンタのカウント値の上限を設定することによって制御することができる。たとえば、図1の例のカーネルでは、カウンタ505のカウント値の上限が8に設定されている場合、マルチプレクサ215および/またはマルチプレクサ330は、非ゼロ要素位置だけでなく、各カーネルのすべての要素位置を実際に選択することができる。
複数のカウンタ505,510,515,520,525が使用される場合、セレクタ200およびセレクタ300の選択結果は、これらのカウンタのうちの1つが単独で使用される場合の選択結果の共通部分に相当する。たとえば、カウンタ505が単独で使用される場合に、セレクタ200の選択結果がAであり、カウンタ510が単独で使用される場合に、セレクタ200の選択結果がBであると、カウンタ505とカウンタ510が同時に使用される場合には、セレクタ200の選択結果はAとBの共通部分になる。
たとえば、図1の例で、5つすべてのチャネルが2つのグループに分割され、層の4つのカーネルK1〜K4が4つのグループに分割される、すなわち各カーネルが1つのグループとして使用されると仮定すると、チャネル1〜3が1つのチャネルグループに割り当てられ、チャネル4および5が別のチャネルグループに割り当てられ、各チャネルグループの各非ゼロチャネルが1つの非ゼロチャネルグループとしてあり、各カーネルのストライドは幅方向に2になり、パディングがメモリ110内の入力特徴データに対して畳み込み演算中に実行されず、メモリ110内の入力特徴データは畳み込み演算中にパッドされず、2つの連続するデータ項目位置のそれぞれにおける出力特徴データのすべてのチャネル内のデータ項目が、1つのグループに割り当てられる。
カウンタ505,510,515,520からの現在のカウント値がそれぞれ1,0,2,1であるとき、マルチプレクサ215は、カーネルK3(カウンタ515の現在のカウント値2に対応)において要素位置が3である(カウンタ505の現在のカウント値1に対応、図1のL3を参照)チャネル1〜3の非ゼロ要素(K3,1,3,3)をメモリ110から選択し、これらをバッファメモリ220の中にバッファリングすることができる。
マルチプレクサ330は、カウンタ505の現在のカウント値1に応じて、図1などのL3で指標値が1である項目を非ゼロ要素位置リスト610から選択し、それにより、非ゼロ要素位置が3であることが決定され、その情報はマルチプレクサ315の制御端子に提供される。
さらに、マルチプレクサ315は、データ項目位置がそれぞれチャネル1〜3(カウンタ510の現在のカウント値0に対応する)の(1,7)、(2,7)、(3,7)、(1,9)、(2,9)および(3,9)(これらのデータ項目位置は非ゼロ要素位置3に対応する)であるすべてのデータ項目(1,7,1)、(1,7,2)、(1,7,3)、(2,7,1)、(2,7,2)、(2,7,3)、(3,7,1)、(3,7,2)、(3,7,3)、(1,9,1)、(1,9、2)、(1,9,3)、(2,9,1)、(2,9,2)、(2,9,3)、(3,9,1)、(3,9,2)および(3,9,3)を、データ項目位置がそれぞれ(1,5)、(2,5)、(3,5)、(1,6)、(2,6)、(3,6)、(1,7)、(2,7)、(3,7)、(1,8)、(2,8)、(3,8)、(1,9)、(2,9)および(3,9)であるメモリ120内のすべてのデータ項目から選択する(出力特徴データ中の対応するデータ項目は、カウンタ520の現在のカウント値1に対応する)。
バッファメモリ220内の非ゼロ要素(K3,1,3,3)に対応して、カウンタ525からの現在のカウント値は0である。それに応じて、マルチプレクサ225は非ゼロ要素(K3,1,3,3)をバッファメモリ220内のデータから選択することができる。マルチプレクサ335は、指標値(たとえば、上述のように、カウンタ510からの現在のカウント値を組み合わせることができる)をカウンタ525からの現在のカウント値に基づいて決定し、図1の非ゼロ要素位置リストL3と関連付けられた非ゼロチャネルリストL4などの非ゼロチャネルリスト620を検索する。また、マルチプレクサ325は、(1,7,3)、(2,7,3)、(3,7,3)、(1,9,3)、(2,9,3)および(3,9,3)を、バッファメモリ320にバッファリングされたデータ項目(1,7,1)、(1,7,2)、(1,7,3)、(2,7,1)、(2,7,2)、(2,7,3)、(3,7,1)、(3,7、2)、(3,7,3)、(1,9,1)、(1,9,2)、(1,9,3)、(2,9,1)、(2,9,2)、(2,9,3)、(3,9,1)、(3,9,2)および(3,9,3)から選択する。
乗算アキュムレータアレイ405の各乗算アキュムレータは、各データ項目をマルチプレクサ325から受け取り、対応する非ゼロ要素をマルチプレクサ225から受け取って、演算を実行する。たとえば、乗算アキュムレータアレイ405の乗算アキュムレータの1つのグループのうちの1つの乗算アキュムレータが、非ゼロ要素(K3,1,3,3)をマルチプレクサ225から、またデータ項目(1,7,3)をマルチプレクサ325から入力として受け取り、乗算演算を実行することができる。乗算アキュムレータのそのグループ内の別の乗算アキュムレータが、非ゼロ要素(K3,1,3,3)をマルチプレクサ225から、またデータ項目(2,7,3)をマルチプレクサ325から入力として受け取り、乗算演算を実行し、以前の乗算アキュムレータの演算結果に累積することができる。また、乗算アキュムレータのそのグループ内の別の乗算アキュムレータが、非ゼロ要素(K3,1,3,3)をマルチプレクサ225から、またデータ項目(3,7,3)をマルチプレクサ325から入力として受け取り、乗算演算を実行し、以前の乗算アキュムレータの演算結果に累積することができる。
一実施形態では、カウンタ505,510,515,520,525それぞれは、カウント値が記憶されるレジスタとすることができる。さらに、この実施形態による装置は、各カウンタのカウントのタイミングをとるためのタイミングコントローラ(図示せず)をさらに含みうる。たとえば、カウンタ505は、カウンタ515のそれぞれの現在のカウント値の間中、周期的にカウントすることになりうる、あるいはカウンタ515は、カウンタ505のそれぞれの現在のカウント値の間中、周期的にカウントすることになりうる。たとえば、カウンタ510は、カウンタ505のそれぞれの現在のカウント値の間中、周期的にカウントすることになりうる、あるいはカウンタ525は、カウンタ505のそれぞれの現在のカウント値の間中、周期的にカウントすることになりうる。各カウンタのタイミングをカウントする異なる方法に応じて、乗算アキュムレータアレイ405に毎回提供される入力データは異なりうるが、最終的に得られる畳み込み演算の結果は同じである。
本開示の一実施形態による装置について上で説明してきた。しかし、上記の実施形態は例示にすぎず、限定するものではないことを理解されたい。本開示の実施形態による装置は、他の構成要素および/または構造も有しうる。
文脈において明らかに求められない限り、説明および請求項全体を通じて、「〜を備えている」および「〜を含む」などの語は、記載されていない要素は含まない、またはすべての要素を網羅している意味ではなく、記載されていない要素も含みうるように(すなわち「〜を含み、ただしそれらに限定されない」という意味として)解釈されるものとする。さらには、語「ここで」、「上に」、「下に」、および類似する語は、本開示の中で使用されているとき、本開示のいずれかの特定の部分ではなく、本開示を全体として指すものとする。上の説明において使用されている単数形の語または複数形の語は、文脈において許容されるとき、それぞれ複数の要素または単数の要素を含みうる。2つ以上の項目のリスト(羅列)に関連する語「または」は、この語の次の解釈、すなわち、リストの中の項目のいずれか、リストの中の項目すべて、リストの中の項目の任意の組合せ、のすべてをカバーする。
本発明のいくつかの実施形態を説明してきたが、これらの実施形態は一例として提示されているにすぎず、本開示の範囲を制限するようには意図されていない。本明細書に記載されている新規の方法およびシステムは、実際にはさまざまな別の形態に具体化することができる。さらには、本明細書に記載されている方法およびシステムの形態において、本開示の趣旨から逸脱することなく、さまざまな省略、置き換え、および変更を行うことができる。

Claims (15)

  1. 畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置であって、
    重みパラメータを記憶する第1のメモリに結合された第1のセレクタと、
    入力特徴データを記憶する第2のメモリに結合された第2のセレクタと、
    計算機と、
    を備え、
    前記第1のセレクタは、前記重みパラメータの1つまたは複数のカーネルの1つまたは複数の第1の非ゼロ要素を、1つまたは複数の第1のチャネル内で選択するように構成されており、
    各第1のチャネルは、少なくとも1つの第1の非ゼロ要素を含み、
    各第1の非ゼロ要素は、対応する前記カーネルの同じ要素位置にあり、
    前記要素位置は、高さおよび幅の二次元における二次元位置であり、
    前記第2のセレクタは、前記入力特徴データの1つまたは複数の第1のデータ項目を、前記1つまたは複数の第1の非ゼロ要素に対応する前記1つまたは複数の第1のチャネル内で選択するように構成されており、
    前記入力特徴データ中の各第1のデータ項目のデータ項目位置は、対応する前記第1の非ゼロ要素の前記要素位置によって決まり、
    各第1のデータ項目は、対応する前記第1の非ゼロ要素と同じ第1のチャネルにあり、
    前記データ項目位置は、高さおよび幅の二次元における二次元位置であり、
    前記計算機は、前記第2のセレクタからの各第1のデータ項目と、前記第1のセレクタからの当該第1のデータ項目に対応する前記第1の非ゼロ要素とを乗算して積を求め、前記積を累積するように構成されている、
    畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置。
  2. 第1のカウンタをさらに備え、
    前記第1のセレクタは、前記1つまたは複数のカーネルのそれぞれのすべての非ゼロ要素を前記重みパラメータの全カーネルの間で選択することによって、1つまたは複数の第2のチャネル内で前記1つまたは複数のカーネルの1つまたは複数の第2の非ゼロ要素を選択するように構成され、
    前記1つまたは複数のカーネルは、前記第1のカウンタの現在のカウント値に対応し、
    前記1つまたは複数の第2のチャネルは、前記1つまたは複数の第1のチャネルを含み、
    前記1つまたは複数の第2の非ゼロ要素は、前記1つまたは複数の第1の非ゼロ要素を含む、
    請求項1に記載の装置。
  3. 第1のカウンタをさらに備え、
    前記第1のセレクタは、前記1つまたは複数のカーネルのそれぞれの1つまたは複数のチャネル内で前記第1のカウンタの現在のカウント値に対応する要素位置において1つまたは複数の非ゼロ要素を選択することによって、1つまたは複数の第2のチャネル内で前記1つまたは複数のカーネルの1つまたは複数の第2の非ゼロ要素を選択するように構成され、
    前記1つまたは複数の第2のチャネルは、前記1つまたは複数の第1のチャネルを含み、
    前記1つまたは複数の第2の非ゼロ要素は、前記1つまたは複数の第1の非ゼロ要素を含む、
    請求項1に記載の装置。
  4. 第1のカウンタをさらに備え、
    前記第1のセレクタは、前記1つまたは複数のカーネルの1つまたは複数の非ゼロ要素を前記第1のカウンタの現在のカウント値に対応する1つまたは複数の第2のチャネル内で選択することによって、1つまたは複数の第2のチャネル内で前記1つまたは複数のカーネルの1つまたは複数の第2の非ゼロ要素を選択するように構成され、
    前記1つまたは複数の第2のチャネルは、前記1つまたは複数の第1のチャネルを含み、
    前記1つまたは複数の第2の非ゼロ要素は、前記1つまたは複数の第1の非ゼロ要素を含む、
    請求項1に記載の装置。
  5. 第2のカウンタをさらに備え、
    前記第1のセレクタは、前記1つまたは複数の第1の非ゼロ要素を前記1つまたは複数の第2の非ゼロ要素から選択するようにさらに構成され、
    前記1つまたは複数の第1のチャネルは、前記第2のカウンタの現在のカウント値に対応する、
    請求項2〜4のいずれか一項に記載の装置。
  6. 前記第1のセレクタは、
    1つまたは複数のマルチプレクサと、
    前記1つまたは複数の第2の非ゼロ要素をバッファリングするように構成された第1のバッファメモリと
    を含む、
    請求項2〜4のいずれか一項に記載の装置。
  7. 第1のカウンタをさらに備え、
    前記第2のセレクタは、前記入力特徴データの1つまたは複数の第2のデータ項目を1つまたは複数の第3のチャネル内で選択するように構成され、
    前記第1のカウンタの現在のカウント値に対応する出力特徴データ中の1つまたは複数のデータ項目は、前記1つまたは複数の第2のデータ項目に基づいて生成され、
    前記1つまたは複数の第3のチャネルは、前記1つまたは複数の第1のチャネルを含み、
    前記1つまたは複数の第2のデータ項目は、前記1つまたは複数の第1のデータ項目を含む、
    請求項1に記載の装置。
  8. 第1のカウンタをさらに備え、
    前記第2のセレクタは、
    前記1つまたは複数のカーネルの非ゼロ要素の要素位置を記録する非ゼロ要素位置リストから、前記第1のカウンタの現在のカウント値を前記非ゼロ要素位置リストの指標値として使用することによって前記要素位置を検索し、
    前記要素位置に対応する前記入力特徴データ中の1つまたは複数のデータ項目位置を決定し、
    前記決定されたデータ項目位置のそれぞれにおける前記入力特徴データ中の1つまたは複数の第2のデータ項目を1つまたは複数の第3のチャネル内で選択するように構成され、
    前記1つまたは複数の第3のチャネルは、前記1つまたは複数の第1のチャネルを含み、
    前記1つまたは複数の第2のデータ項目は、前記1つまたは複数の第1のデータ項目を含む、
    請求項1に記載の装置。
  9. 第1のカウンタをさらに備え、
    前記第2のセレクタは、前記入力特徴データの1つまたは複数の第2のデータ項目を、前記第1のカウンタの現在のカウント値に対応する1つまたは複数の第3のチャネル内で選択するように構成され、
    前記1つまたは複数の第3のチャネルは、前記1つまたは複数の第1のチャネルを含み、
    前記1つまたは複数の第2のデータ項目は、前記1つまたは複数の第1のデータ項目を含む、
    請求項1に記載の装置。
  10. 第2のカウンタをさらに備え、
    前記第2のセレクタはさらに、
    前記1つまたは複数のカーネルの非ゼロ要素があるチャネルを記録する非ゼロチャネルリストから、前記第2のカウンタの現在のカウント値を前記非ゼロチャネルリストの指標値として使用することによって前記1つまたは複数の第1のチャネルを検索し、
    前記1つまたは複数の第2のデータ項目から前記1つまたは複数の第1のチャネル内の前記1つまたは複数の第1のデータ項目を選択するように構成される、
    請求項7〜9のいずれか一項に記載の装置。
  11. 前記非ゼロチャネルリストに記録された情報は、前記1つまたは複数のカーネルの前記非ゼロ要素の前記要素位置に関連する、
    請求項10に記載の装置。
  12. 前記第2のセレクタは、
    1つまたは複数のマルチプレクサと、
    前記1つまたは複数の第2のデータ項目をバッファリングするように構成された第2のバッファメモリと
    を含む、
    請求項7〜9のいずれか一項に記載の装置。
  13. 畳み込みニューラルネットワークにおいて畳み込み演算を実行する方法であって、
    重みパラメータを記憶する第1のメモリに結合された第1のセレクタが、前記重みパラメータの1つまたは複数のカーネルの1つまたは複数の第1の非ゼロ要素を、1つまたは複数の第1のチャネル内で選択するステップであって、各第1のチャネルが少なくとも1つの第1の非ゼロ要素を含み、各第1の非ゼロ要素が、対応する前記カーネルの同じ要素位置にあり、前記要素位置が、高さおよび幅の二次元における二次元位置であるステップと、
    入力特徴データを記憶する第2のメモリに結合された第2のセレクタが、前記入力特徴データの1つまたは複数の第1のデータ項目を、前記1つまたは複数の第1の非ゼロ要素に対応する前記1つまたは複数の第1のチャネル内で選択するステップであって、前記入力特徴データ中の各第1のデータ項目のデータ項目位置が、前記対応する第1の非ゼロ要素の前記要素位置によって決まり、各第1のデータ項目が、前記対応する第1の非ゼロ要素と同じく第1のチャネルにあり、前記データ項目位置が、高さおよび幅の前記二次元における二次元位置であるステップと、
    計算機によって、前記第2のセレクタからの各第1のデータ項目と、前記第1のセレクタからの前記対応する第1の非ゼロ要素とを乗算して積を得てから、前記積を累積するステップと
    を含む、
    畳み込みニューラルネットワークにおいて畳み込み演算を実行する方法。
  14. 前記重みパラメータの1つまたは複数のカーネルの1つまたは複数の第1の非ゼロ要素を1つまたは複数の第1のチャネル内で選択するステップは、
    前記1つまたは複数のカーネルの1つまたは複数の第2の非ゼロ要素を、第1のカウンタからのカウント値に応じて1つまたは複数の第2のチャネル内で選択するステップと、
    前記1つまたは複数の第1の非ゼロ要素を前記1つまたは複数の第2の非ゼロ要素から選択するステップと、
    を含み、
    前記1つまたは複数の第1のチャネルは、第2のカウンタのカウント値に対応する、
    請求項13に記載の方法。
  15. 前記入力特徴データの1つまたは複数の第1のデータ項目を前記1つまたは複数の第1のチャネル内で選択するステップは、
    前記入力特徴データの1つまたは複数の第2のデータ項目を、前記第1のカウンタの前記カウント値に応じて1つまたは複数の第3のチャネル内で選択するステップと、
    前記1つまたは複数のカーネルの非ゼロ要素があるチャネルを記録する非ゼロチャネルリストから、前記第2のカウンタの現在のカウント値を前記非ゼロチャネルリストの指標値として使用することによって前記1つまたは複数の第1のチャネルを検索するステップと、
    前記1つまたは複数の第2のデータ項目から、前記1つまたは複数の第1のチャネル内の前記1つまたは複数の第1のデータ項目を選択するステップと、
    を含む、
    請求項13に記載の方法。
JP2018232368A 2017-12-12 2018-12-12 畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置および方法 Active JP6736646B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711319837.2A CN107909148B (zh) 2017-12-12 2017-12-12 用于执行卷积神经网络中的卷积运算的装置
CN201711319837.2 2017-12-12

Publications (2)

Publication Number Publication Date
JP2019106186A true JP2019106186A (ja) 2019-06-27
JP6736646B2 JP6736646B2 (ja) 2020-08-05

Family

ID=61865328

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018232368A Active JP6736646B2 (ja) 2017-12-12 2018-12-12 畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置および方法

Country Status (5)

Country Link
US (1) US11429836B2 (ja)
EP (1) EP3499426A1 (ja)
JP (1) JP6736646B2 (ja)
KR (1) KR20190070301A (ja)
CN (1) CN107909148B (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10740434B1 (en) 2018-04-20 2020-08-11 Perceive Corporation Reduced dot product computation circuit
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11295200B1 (en) 2018-04-20 2022-04-05 Perceive Corporation Time-multiplexed dot products for neural network inference circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11468145B1 (en) 2018-04-20 2022-10-11 Perceive Corporation Storage of input values within core of neural network inference circuit
CN109165723B (zh) * 2018-08-03 2021-03-19 北京字节跳动网络技术有限公司 用于处理数据的方法和装置
CN113190791A (zh) 2018-08-06 2021-07-30 华为技术有限公司 矩阵的处理方法、装置及逻辑电路
CN110825311B (zh) * 2018-08-10 2023-04-18 昆仑芯(北京)科技有限公司 用于存储数据的方法和装置
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
CN109740739B (zh) * 2018-12-29 2020-04-24 中科寒武纪科技股份有限公司 神经网络计算装置、神经网络计算方法及相关产品
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
CN110070178B (zh) * 2019-04-25 2021-05-14 北京交通大学 一种卷积神经网络计算装置及方法
US11625585B1 (en) 2019-05-21 2023-04-11 Perceive Corporation Compiler for optimizing filter sparsity for neural network implementation configuration
CN110647893B (zh) * 2019-09-20 2022-04-05 北京地平线机器人技术研发有限公司 目标对象识别方法、装置、存储介质和设备
CN112541565B (zh) * 2019-09-20 2023-08-29 腾讯科技(深圳)有限公司 一种卷积计算数据流映射方法及装置
US11475283B2 (en) 2019-10-24 2022-10-18 Apple Inc. Multi dimensional convolution in neural network processor
CN111415004B (zh) * 2020-03-17 2023-11-03 阿波罗智联(北京)科技有限公司 用于输出信息的方法和装置
KR20220090104A (ko) 2020-12-22 2022-06-29 삼성전자주식회사 컨벌루션 연산을 위한 데이터 전송 방법, 페처 및 컨벌루션 연산 장치
WO2022134872A1 (zh) * 2020-12-25 2022-06-30 中科寒武纪科技股份有限公司 数据处理装置、数据处理方法及相关产品
CN114692847B (zh) * 2020-12-25 2024-01-09 中科寒武纪科技股份有限公司 数据处理电路、数据处理方法及相关产品
CN115481713A (zh) * 2021-06-15 2022-12-16 瑞昱半导体股份有限公司 改进卷积神经网络进行计算的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003067360A (ja) * 2001-08-24 2003-03-07 Seiko Epson Corp 積和演算方法および積和演算装置
JP2010134697A (ja) * 2008-12-04 2010-06-17 Canon Inc コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
US20160342892A1 (en) * 2015-05-21 2016-11-24 Google Inc. Prefetching weights for use in a neural network processor
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541507B (zh) * 2010-12-31 2015-12-16 联芯科技有限公司 维度可重配的数据处理方法、系统和矩阵乘法处理器
US11074492B2 (en) 2015-10-07 2021-07-27 Altera Corporation Method and apparatus for performing different types of convolution operations with the same processing elements
US9904874B2 (en) * 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
CN105681628B (zh) * 2016-01-05 2018-12-07 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
WO2018071546A1 (en) 2016-10-11 2018-04-19 The Research Foundation For The State University Of New York System, method, and accelerator to process convolutional neural network layers
CN106779051A (zh) * 2016-11-24 2017-05-31 厦门中控生物识别信息技术有限公司 一种卷积神经网络模型参数处理方法及系统
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
US11074802B2 (en) * 2017-02-02 2021-07-27 Hill-Rom Services, Inc. Method and apparatus for automatic event prediction
CN106875012B (zh) * 2017-02-09 2019-09-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统
WO2018222896A1 (en) 2017-05-31 2018-12-06 Intel Corporation Gradient-based training engine for quaternion-based machine-learning systems
WO2019079198A1 (en) 2017-10-16 2019-04-25 Illumina, Inc. CLASSIFICATION OF A CONNECTION SITE BASED ON DEEP LEARNING

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003067360A (ja) * 2001-08-24 2003-03-07 Seiko Epson Corp 積和演算方法および積和演算装置
JP2010134697A (ja) * 2008-12-04 2010-06-17 Canon Inc コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
US20160342892A1 (en) * 2015-05-21 2016-11-24 Google Inc. Prefetching weights for use in a neural network processor
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme

Also Published As

Publication number Publication date
CN107909148A (zh) 2018-04-13
US11429836B2 (en) 2022-08-30
JP6736646B2 (ja) 2020-08-05
EP3499426A1 (en) 2019-06-19
CN107909148B (zh) 2020-10-20
KR20190070301A (ko) 2019-06-20
US20190180167A1 (en) 2019-06-13

Similar Documents

Publication Publication Date Title
JP6736646B2 (ja) 畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置および方法
JP7035080B2 (ja) 代替ループ限界値
TWI680409B (zh) 適用於人工神經網路之矩陣及向量相乘的方法
KR102065672B1 (ko) 합성곱 연산을 위한 장치 및 방법
KR102523263B1 (ko) 하드웨어 기반 풀링을 위한 시스템 및 방법
KR102335909B1 (ko) 특수 목적 연산 유닛을 사용한 하드웨어 이중 버퍼링
KR20190049593A (ko) 콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치
CN111340201A (zh) 卷积神经网络加速器及其执行卷积运算操作的方法
KR20230078652A (ko) 계층적 가중치 희소 컨볼루션 프로세싱을 위한 방법 및 시스템
JP2019061664A (ja) ニューラルネットワークのパラメータを適応させるための方法および装置
CN110807170A (zh) 多样本多通道卷积神经网络Same卷积向量化实现方法
US9965343B2 (en) System and method for determining concurrency factors for dispatch size of parallel processor kernels
CN113673701A (zh) 神经网络模型的运行方法、可读介质和电子设备
CN112395092A (zh) 数据处理方法及人工智能处理器
CN110796236A (zh) 多样本多通道卷积神经网络池化的向量化实现方法
US20220382829A1 (en) Sparse matrix multiplication in hardware
KR20220134035A (ko) 컨볼루션 연산을 위한 프로세싱 인 메모리 방법
TW202244794A (zh) 記憶體內計算巨集排列的方法、電腦可讀介質及電子裝置
KR102494565B1 (ko) 콘볼루션 신경망의 하드웨어 구조 최적화 방법
US11361052B2 (en) Method of formatting a weight matrix, an accelerator using the formatted weight matrix, and a system including the accelerator
Shiba et al. Polyomino: A 3D-SRAM-centric architecture for randomly pruned matrix multiplication with simple rearrangement algorithm and X0. 37 compression format
CN109635236A (zh) 对称矩阵的下三角部分存储装置和并行读取方法
US20240160894A1 (en) Mixture-of-experts layer with switchable parallel modes
US20240160906A1 (en) Collective communication phases at mixture-of-experts layer
Mehrez et al. Understanding the performances of SMVP on multiprocessor platform

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200306

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20200306

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200311

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20200309

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: 20200623

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200715

R150 Certificate of patent or registration of utility model

Ref document number: 6736646

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250