JP6927320B2 - 推論装置、畳み込み演算実行方法及びプログラム - Google Patents

推論装置、畳み込み演算実行方法及びプログラム Download PDF

Info

Publication number
JP6927320B2
JP6927320B2 JP2019551133A JP2019551133A JP6927320B2 JP 6927320 B2 JP6927320 B2 JP 6927320B2 JP 2019551133 A JP2019551133 A JP 2019551133A JP 2019551133 A JP2019551133 A JP 2019551133A JP 6927320 B2 JP6927320 B2 JP 6927320B2
Authority
JP
Japan
Prior art keywords
input data
weight
unit
multiplication
weights
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
JP2019551133A
Other languages
English (en)
Other versions
JPWO2019082859A1 (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2019082859A1 publication Critical patent/JPWO2019082859A1/ja
Application granted granted Critical
Publication of JP6927320B2 publication Critical patent/JP6927320B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning

Landscapes

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

Description

(関連出願についての記載)
本発明は、日本国特許出願:特願2017−204610号(2017年10月23日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、推論装置、畳み込み演算実行方法及びプログラムに関する。
近年、多層ニューラルネットワークによる画像認識等に関する技術開発が活発に行われている。このような技術は、深層学習(ディープラーニング)とも称される。とりわけ、画像認識等の技術分野において、畳み込みニューラルネットワークが多く用いられる。畳み込みニューラルネットワークには、後述するように、畳み込み層、プーリング層、全結合層が含まれる。畳み込み層では、カーネルを画像全体に畳み込む処理が行われる。
画像全体にカーネルを畳み込む処理(画像にフィルタを適用する処理)により、画像に畳み込まれた特徴の集合が得られる。当該特徴の集合は、特徴マップとも称される。特徴マップは、畳み込んだ値に活性化関数を適用することで得られる。例えば、画像認識の分野では、ReLU(Rectified Linear Unit)が活性化関数として用いられることが多い。
上述のように、畳み込み層では、画像(入力画像)にカーネル(重み、フィルタ)を畳み込む処理が行われる。その際、画像の各画素と重みを乗算する処理が数多く行われる。非特許文献1及び2は、当該乗算処理に関する負荷を低減する技術を開示する。具体的には、非特許文献1及び2には、「0」に任意の値を乗算してもその結果は「0」となることを利用した乗算処理の回数低減に関する技術が開示されている。
Song Han, et. al., "EIE: Efficient Inference Engine on Compressed Deep Neural Network", International Symposium on Computer Architecture (ISCA) 2016. Angshuman Parashar, et. al., "SCNN: An Accelerator for Compressed-sparse Convolutional Neural Networks", ISCA '17 Proceedings of the 44th Annual International Symposium on Computer Architecture, 2017
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
上述のように、深層学習、とりわけ、畳み込み層の演算では膨大な数の乗算処理が必要となる。膨大な乗算処理は、大規模なハードウェアを要求したり、強力な演算処理能力を有するプロセッサを要求したりする。このような要求に答えるため、非特許文献1や2に開示された技術が必要となる。
ここで、非特許文献1に開示された技術は、全結合層(FC layer;Fully Connected layer)における乗算回数の低減を目的としたものである。全結合層における乗算回数の低減も要望されるが、全結合層における乗算回数と畳み込み層における乗算回数を比較すれば、畳み込み層における乗算回数の方が圧倒的に多い。非特許文献1に開示された技術は、全結合層を対象とした乗算処理の低減を目的としており、畳み込み層の乗算処理を低減することはできない。
本発明は、畳み込み層における乗算回数を低減することに寄与する、推論装置、畳み込み演算実行方法及びプログラムを提供することを主たる目的とする。
本発明乃至開示の第1の視点によれば、複数のPE(Processing Element)と、複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を前記複数のPEを制御することで実現する、制御部と、を備え、前記複数のPEのそれぞれは、1つの入力データと1つの重みの乗算処理を含む演算を実行すると共に、前記複数の入力データそれぞれに含まれる値がゼロではない要素を用いて前記畳み込み演算に含まれる乗算処理を実行する、推論装置が提供される。
本発明乃至開示の第2の視点によれば、それぞれが、1つの入力データと1つの重みの乗算処理を含む演算を実行する、複数のPE(Processing Element)を含み、複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を実現する、推論装置において、前記複数のPEのそれぞれが、前記複数の入力データそれぞれに含まれる値がゼロではない要素を特定するステップと、前記特定された要素を用いて前記畳み込み演算に含まれる乗算処理を実行するステップと、を含む、畳み込み演算実行方法が提供される。
本発明乃至開示の第3の視点によれば、それぞれが、1つの入力データと1つの重みの乗算処理を含む演算を実行する、複数のPE(Processing Element)を含み、複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を実現する、推論装置に搭載されたコンピュータに、前記複数の入力データそれぞれに含まれる値がゼロではない要素を特定する処理と、前記特定された要素を用いて前記畳み込み演算に含まれる乗算処理を実行する処理と、を実行させる、プログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
本発明乃至開示の各視点によれば、畳み込み層における乗算回数を低減することに寄与する、推論装置、畳み込み演算実行方法及びプログラムが、提供される。
一実施形態の概要を説明するための図である。 画像認識における中間層(隠れ層)の構造を説明するための図である。 畳み込み層における演算を説明するための図である。 第1の実施形態に係る推論装置の内部構成の一例を示す図である。 第1の実施形態に係る推論装置に含まれる中間層実行部の内部構成の一例を示す図である。 第1の実施形態に係る畳み込み層実行部に含まれるPEの動作を説明するための図である。 各PEにて実行される演算について説明するための図である。 第1の実施形態に係る畳み込み層実行部の内部構成の一例を示す図である。 第2の実施形態に係る畳み込み層実行部の内部構成の一例を示す図である。 異なる2つの入力データの一例を示す図である。 第3の実施形態による問題解決を説明するための図である。 第3の実施形態に係る畳み込み層制御部の内部構成の一例を示す図である。 第3の実施形態に係る畳み込み層制御部の動作を説明するための図である。 第3の実施形態に係る畳み込み層制御部の動作を説明するためのフローチャートである。 推論装置のハードウェア構成の一例を示す図である。 重み設定装置と推論装置を含むシステム構成の一例を示す図である。 学習装置と推論装置を含むシステム構成の一例を示す図である。 図17に示す学習装置の内部構成の一例を示す図である。
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。さらに、本願開示に示す回路図、ブロック図、内部構成図、接続図などにおいて、明示は省略するが、入力ポート及び出力ポートが各接続線の入力端及び出力端のそれぞれに存在する。入出力インターフェイスも同様である。
一実施形態に係る推論装置100は、複数のPE(Processing Element)101と、制御部102と、を備える(図1参照)。制御部102は、複数の入力データのそれぞれと、複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を複数のPE101を制御することで実現する。さらに、複数のPE101のそれぞれは、1つの入力データと1つの重みの乗算処理を含む演算を実行すると共に、複数の入力データそれぞれに含まれる値がゼロではない要素を用いて畳み込み演算に含まれる乗算処理を実行する。
上述のように、畳み込み層の実現には非常に多くの乗算処理が必要となるが、推論装置100に含まれる各PE101は、乗算処理を実行する際に、ゼロである入力データと重みの乗算処理を実行しない。その結果、畳み込み層における乗算回数は減少する。
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
図2は、画像認識における中間層(隠れ層)の構造を説明するための図である。図2を参照すると、入力層と中間層が接続され、中間層と出力層が接続される。なお、第1の実施形態では、入力層に入力されるデータとして画像データを想定している。入力層は、取得した入力データから中間層に出力するためのデータを作成する。例えば、画像データがRGB(Red Green Blue)の3チャネルから構成されている場合には、入力層は、各色の画像データを生成し、中間層に出力する。中間層は、畳み込みニューラルネットワーク(CNN(Convolutional Neural Network))により入力データの特徴部分が抽出されたデータを1つのノードに結合し、特徴変数を出力する。出力層は、中間層から取得した特徴変数に基づき、入力データを分類する。
中間層には、複数の「層(レイヤ)」が含まれ、初段の層が入力層と接続され、最終段の層は全結合層と接続されている。
中間層をなす各層には、畳み込み層、活性化関数、プーリング層が含まれ得る。なお、図2に示す構成は例示であり、中間層の構成を限定する趣旨ではない。場合によっては、中間層に活性化関数、プーリング層が含まれていなくともよい。
畳み込み層は、取得した入力データから特徴量を抽出する。当該抽出された特徴量には活性化関数が適用され、当該活性化関数が適用された後の特徴量がプーリング層に入力される。プーリング層では、取得した特徴量を結合する。その際、プーリング層では、物体の位置が変動しても同一の物体と判断できるようにするための処理(不変性を得るための処理)が行われる。例えば、対象物の位置ずれを許容するための処理がプーリング層にて行われる。なお、図2では、「活性化関数」を適用するための層が、畳み込み層やプーリング層と独立した形で記載されているが、実際には、「活性化関数」が畳み込み層及びプーリング層のいずれかの層に含まれる構成であってもよい。
図2に示すように、中間層をなす各層は、縦続接続されており、前段の層の出力が後段の層の入力に相当する。
図3は、畳み込み層における演算を説明するための図である。図3を参照すると、畳み込み層は、入力データと重み(フィルタ)を乗算することで、特徴量を出力する。
なお、本願開示にて使用する各種パラメータは図3に図示するように定める。入力データにおける一の方向(図3では縦方向)のサイズを「H」と表記する。また、入力データにおける他の方向(図3では幅方向)のサイズを「W」と表記する。例えば、H=25、W=25であれば、H×W=625個の画素が1つの入力データのサイズとなる。さらに、層の入力チャネル数を「C」と表記する。
重みにおける一の方向(図3では縦方向)のサイズを「R」と表記する。また、重みにおける他の方向(図3では幅方向)のサイズを「S」と表記する。例えば、R=3、S=3とすれば、R×S=9が1つの重みのサイズである。
図3に示す「K」は層の出力チャネル数である。層の出力チャネル数Kと重みの種類数は一致する。例えば、図3に示す重みの種類数が「4」であれば、層の出力チャネル数Kも「4」となる。
1種類の重みには、入力チャネル数Cと同じ数の重みが含まれる。例えば、入力チャネル数Cが「3」であれば、1種類の重みには3つの重みが含まれる。1種類の重みに含まれるC個の重みは、C個の入力データそれぞれと対応付けられている。例えば、図3において、上段のC個の重みにおいて、一番手前の重みは一番手前の入力データと対応付けられている。
なお、本願開示において、入力チャネル数Cごとに区分された重みの集合を「重み群」と表記する。各重み群には、C個の重みが含まれる。また、重みの種類数は出力チャネル数Kに一致するので、畳み込み層における重みの数は、K×C個となる。さらに、本願開示において、一の入力データや一の重みを基準として他の入力データや重みに向かう方向を「チャネル方向」と表記する。同様に、一の重み群を基準として他の重み群に向かう方向を「カーネル方向」と表記する。例えば、図3に示す重み501から重み502に向かう方向がチャネル方向であり、重み群511から重み群512に向かう方向がカーネル方向である。
畳み込み層では、入力データから重みのサイズに相当するデータを抽出し、当該抽出したデータに含まれる要素と重みの対応する要素を乗算し、且つ、乗算結果をチャネル方向に加算する処理が実行される。例えば、図3に示すように、重みのサイズが3×3=9であれば、入力データから同じサイズのデータ(例えば、図3の一番手前に図示した入力データのうち四角の領域で囲まれたデータ;3×3=9のデータ)が抽出される。その後、抽出された入力データの各要素と対応する重みの各要素が乗算される。例えば、図3の例では、抽出された入力データにおける左上の要素「1」と対応する重み501の左上の要素「−1」が乗算される。畳み込み層では、このような処理が繰り返される(上述の例では9回繰り返される)。その後、乗算結果が加算される。上述の例では、(−1)+(−1)+1+0+0+0+(−1)+4+0=2となる。
抽出されたデータと重みの乗算は、対応する入力データと重みの間で実行される。例えば、図3において、一番手前に図示した入力データに対応する重みは一番手前に図示された重み501とする。同様に、中間に図示した入力データに対応する重みが中間に図示した重み、最奥に図示した入力データに対応する重みが最奥に図示した重み502である。この場合、対応する入力データと重みの間で上記乗加算処理が繰り返される。
さらに、上記乗加算処理の結果は、チャネル方向にて加算される。例えば、上述の例では、3チャネル(一番手前、中間、最奥)における乗加算結果が加算される。
上記乗加算処理及びその後の加算処理は、重み群ごとに行われる。図3の例では、上段に図示した重み群511と入力データを用いた演算が行われ、下段に図示した重み群512に関しても同様の処理(同じ入力データを用いた乗加算処理及びその後の加算処理)が実行される。
畳み込み層では、上記処理(乗加算処理及びチャネル方向への加算処理)を、抽出する入力データを変更しながら繰り返す。例えば、図3の一番手前の入力データに図示するように、抽出する領域をスライドさせながら入力データを切り出していく。当該切り出されたデータには、上記と同様の処理が適用される。
上述のような入力データの抽出と、当該抽出された入力データに重みを乗算し、チャネル方向に加算する処理を繰り返すことで畳み込み層の出力データが得られる。なお、上述のように、入力データと重みの乗加算処理は重み群ごとに実行されるため、得られる出力データの数と重みの種類(重み群の数)は一致する。例えば、16個の重み群が用意されていれば、16個の出力データが得られる(K=16)。なお、各出力データのサイズ(縦方向のサイズ、幅方向のサイズ)は、入力データからデータを抽出する際の領域(ウィンドウ)をスライドする際の仕様により定まる。図3の例では、各出力データには、12(4×3)個の要素が含まれるように、入力データからデータが抽出される。
第1の実施形態に係る推論装置10は、図3を用いて説明した畳み込み演算を推論の過程にて実行する。具体的には、図4に示すように、推論装置10は、その内部に、入力層を実現する入力層実行部11、中間層を実現する中間層実行部12、出力層を実現する出力層実行部13と、を含む。さらに、中間層実行部12には、畳み込み層を実現する畳み込み層実行部31、活性化関数を実行する活性化関数実行部32及びプーリング層を実現するプーリング層実行部33が各層に含まれる(図5参照)。なお、本願開示においては、図4及び図5に示す各種実行部のうち、畳み込み層実行部31について詳細に説明する。他の実行部に関しては、公知のアルゴリズム等により実現可能であるため、その説明を省略する。
各層の畳み込み層実行部31は、複数のプロセッシングエレメント(PE;Processing Element)を用いて図3を用いて説明した畳み込み演算(乗加算処理)を実行する。
図6は、畳み込み層実行部31に含まれるPEの動作を説明するための図である。図6には、入力チャネル数Cが「8」であり、出力チャネル数Kが「16」である場合の例を図示している。また、重みのサイズは8(例えば、S=2、R=4)である。なお、図6において、入力データ及び重みは1次元の配列(ベクトル)に展開して図示している。そのため、図6において、重みの各行は、異なる重み群(図3の例では、上段、下段の関係)を示す。なお、図6において、入力データ及び重みに付した色の濃淡は2つのデータの対応関係を示す。例えば、最も色の濃い最奥の入力データ及び重みは対応関係にある。上述のように、対応関係にある入力データと重みの間で乗算処理及び加算処理が行われる。より具体的には、チャネル方向の入力データと対応する重み群の乗算処理及びチャネル方向での加算処理が複数のPEを用いて実行される。
図6に示す例では、入力チャネル数Cが「8」であり、重み群の数(出力チャネル数K)が「16」であるから、128(8×16)回の入力データと重みの乗算処理が実行される。その後、チャネル方向での加算処理が実行される。畳み込み層実行部31は、当該乗算処理(上記例では128回)を含む畳み込み演算を複数のPEを用いて実行する。ここでは、図6に示すように、畳み込み層実行部31は、16個のPEを用いて畳み込み演算を実行するものとして以下の説明を行う。但し、PEの個数を16に限定する趣旨ではないことは勿論である。
畳み込み層実行部31は、複数のPEを用いて複数の重み群及び各重み群に含まれる複数の重みに関する畳み込み演算(乗加算)を並列に処理する。例えば、図6の例では、畳み込み層実行部31は、各重み群に含まれる8チャネル分の重みのうち4チャネル分の重みを並列に処理する。また、畳み込み層実行部31は、16個の重み群のうち4個の重み群を並列に処理する。
チャネル方向の並列処理に関し、例えば、PE(0、0)〜PE(3、0)は図6の1行目に含まれる最奥から4番目までの重みを並列に処理する(並列処理を開始する)。また、各PEは、並列数(上記の例では4)に相当する数だけスキップした位置にある入力データ及び重みを用いた畳み込み演算を逐次的に実行する。例えば、図6に示す例では、PE(0、0)は、1行目(最上段)の重み群に含まれる重みのうち、最奥の重みに関する演算が終了すると、奥から5番目の重みに関する畳み込み演算を実行する。
カーネル方向の分割に関し、例えば、PE(0、0)〜PE(0、3)は、図6に示す最奥の重みのうち1行目から4行目までの重みを並列に処理する(並列処理を開始する)。また、各PEは、並列数(上記例では4)に相当する数だけスキップした位置にある重み群に含まれ、対応するチャネルの重みを用いた畳み込み演算を逐次的に実行する。例えば、図6に示す例では、PE(0、0)は、最奥の重みの上から1行目、5行目、9行目、13行目の重みを用いた畳み込み演算を実行する。あるいは、PE(0、1)は、最奥の重みの上から2行目、6行目、10行目、14行目の重みを用いた畳み込み演算を実行する。
図7は、各PEにて実行される演算について説明するための図である。各PEでは、初めに入力データから要素の値が「0」以外の要素(以下、ノンゼロ要素と表記する)とそのインデックスを特定する。例えば、図7の例では、ノンゼロ要素として「1」及びそのインデックスとして「1」が特定される。
続いて、各PEでは、ノンゼロ要素のインデックスに対応する重みの要素と入力データのノンゼロ要素の乗算処理が行われる。当該乗算処理は、カーネル方向に順次行われる(逐次的に処理される)。図7の例では、入力データの「1」と重みの2列目の要素(2、1、3、0)が順次乗算され一次記憶領域に格納される。
最初のノンゼロ要素に関する乗算処理が終了すると、入力データにおける次のノンゼロ要素とそのインデックスが特定される。図7の例では、ノンゼロ要素として「2」及びそのインデックスとして「7」が特定される。次に、上記と同様に、ノンゼロ要素である「2」と重みの8列目の要素(1、0、2、1)が順次乗算され一次記憶領域に格納される。ノンゼロ要素と重みの乗算結果は、重み群ごとに加算され、各PEの出力データとなる。図7の例では、1行目の重み群に関する結果として「4」が、2行目の重み群に関する結果として「1」がそれぞれ出力される。
このように、各PEでは、畳み込み演算における入力データと重みの乗算処理と、重み群ごとの加算処理とが実行される。なお、各PEにおける演算結果(重み群ごとの加算結果)は、チャネル方向に加算されて最終的な畳み込み演算が終了することになる。つまり、畳み込み層における畳み込み演算では、入力データと重みの乗算処理が行われ、その後、重み群ごと(重み方向;即ち、S、Rの方向。図6の例では重みの行方向)の加算処理が行われる。その後、重み群ごとの加算結果は、チャネル方向にて加算される。
図8は、畳み込み層実行部31の内部構成の一例を示す図である。図8を参照すると、畳み込み層実行部31には、畳み込み層制御部40と、入力データ分割部41と、複数のPE42−1〜42−8と、待機部43と、結果加算部44と、各種記憶部と、が含まれている。各種記憶部には、入力データ記憶部51と、重み記憶部52と、結果記憶部53と、が含まれる。なお、以降の説明において、PE42−1〜42−8を区別する特段の理由が無い場合には、単に「PE42」と表記する。
上述のように、畳み込み層実行部31には複数のPE42が含まれる。当該複数のPE42は、チャネル方向に並列に畳み込み演算を行う単位で管理されている。図8の例では、PE42−1〜42−4を一組とするPE42の集合がチャネル方向の畳み込み演算を並列に実行する。同様に、PE42−5〜42−8を一組とするPE42の集合がチャネル方向の畳み込み演算を並列に実行する。各PE42は、1つの入力データと1つの重みの乗算処理を含む演算を実行する。また、各PE42は、複数の入力データそれぞれに含まれる値がゼロである要素を除外して畳み込み演算に含まれる乗算処理を実行する。
入力データ分割部41は、複数のPE42それぞれと接続されている。同様に、畳み込み層制御部40は、複数のPE42それぞれと接続されている。待機部43は、チャネル方向を並列に畳み込み演算をするPE42の集合ごとに設けられる。図8の例では、PE42−1〜42−4のそれぞれと待機部43が接続されている。待機部43は、結果加算部44と接続されている。なお、図8において、PE42−5〜42−8に対応する待機部及び当該待機部に接続される結果加算部の図示を省略している。
畳み込み層制御部40は、畳み込み層全体を制御する手段である。畳み込み層制御部40は、複数の入力データのそれぞれと、複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を複数のPE42を制御することで実現する。
より具体的には、畳み込み層制御部40は、複数の入力データのそれぞれ(複数チャネルの各入力データ)と、複数の入力データそれぞれに対応する重みそれぞれとの乗算処理のうち、一部の乗算処理が並列に処理されるように複数のPE42を制御する。例えば、図6において、畳み込み層制御部40は、4チャネル分の入力データと対応する重みの畳み込み演算(乗算処理を含む演算)が並列に実行されるように、各PE42を制御する。
また、畳み込み層制御部40は、複数の入力データのそれぞれ(複数チャネルの各入力データ)と、複数の重み群に含まれる複数の重みのそれぞれとの乗算処理のうち、異なる重み群の重みであって同一の入力データに対応する重みを用いた乗算処理の一部が並列に実行されるように複数のPE42を制御する。例えば、図6において、畳み込み層制御部40は、最奥の重みの1行目と対応する最奥の入力データの畳み込み演算(乗算処理を含む演算)と、最奥の重みの2行目と対応する最奥の入力データの畳み込み演算が並列して実行されるように、各PE42を制御する。
また、畳み込み層制御部40は、他層の制御モジュールと制御情報の交換を行い、推論装置10全体としての機能を実現する。より具体的には、畳み込み層制御部40は、前段の層から畳み込み演算終了の通知を受信すると、自身が管理するPE42を制御して畳み込み演算を実行する(PE42を制御して畳み込み演算を実行させる)。さらに、畳み込み層制御部40は、後段の層に対して自層における畳み込み演算の終了を通知する。
各層における畳み込み演算に利用する重みは、重み記憶部52に格納される。重み記憶部52に格納する重みは、推論装置10の動作前に予め設定されていてもよいし、上位装置(例えば、学習装置)から都度重みを受け取り、重み記憶部52に格納してもよい。重み記憶部52には、例えば、図6に示すような重みに関するデータが格納される。
畳み込み層制御部40は、重み記憶部52から重みを読み出し、各PE42に必要な重み(データ)を配布する。例えば、図8に示すPE42−4が図6に示すPE(0、0)に該当する場合には、畳み込み層制御部40は、図6に示す最奥の重みのうち1行目、5行目、9行目、13行目の重みと、最奥から5番目の重みのうち1行目、5行目、9行目、13行目の重みをPE42−4に配布する。
入力データ記憶部51は、入力データ(前段の層の出力データ)を記憶する。
入力データ分割部41は、畳み込み層制御部40からの指示に従い入力データを入力データ記憶部51から読み出す。具体的には、畳み込み層制御部40は、入力データ全体から抽出する入力データのサイズ及び位置を指定し、当該指定したデータを読み出すように入力データ分割部41に指示する。
入力データ分割部41は、指示に従って読み出したデータを各PE42に供給する。より具体的には、入力データ分割部41は、複数の入力データ(複数のチャネルを含む入力データ)を分割し、当該分割された入力データを乗算処理を並列に処理するPE42に供給する。即ち、入力データ分割部41は、読み出したデータをPE42ごとに分割して供給する。例えば、図6に示すように、チャネル方向並列数(チャネル方向で重みを並列に処理するPE42の数)が「4」であれば、入力データ分割部41は入力データを4分割し、分割された入力データを各PE42に供給する。図6に示す例では、8個の入力データが4分割され(図6の入力データに付した色の濃淡のように分割され)、4分割された各入力データは、各PE42に供給される。例えば、図6に示すPE(0、0)には、最奥の入力データと奥から5番目の入力データ(共に最も色の濃い入力データ)の2つが供給される。なお、対応するチャネルが同じであるPE42に関しては同じ入力データが供給される。例えば、図8では、PE42−1とPE42−5には同じ入力データが供給される。同様に、PE42−2とPE42−6には同じ入力データが供給される。
各PE42には、PE制御部60と、入力データ処理部61と、重み読み出し部62と、乗加算部63と、重み一次記憶部64と、演算結果記憶部65と、が含まれる。
入力データ分割部41が出力する入力データは、入力データ処理部61が取得する。畳み込み層制御部40が配布する重みは、PE制御部60が取得し、重み一次記憶部64に格納する。
PE42は、重み一次記憶部64に格納された重み(配布された重み)と入力データ分割部41から取得した入力データを用いて畳み込み演算を実行する。より具体的には、図7を用いて説明した処理、即ち、入力データと対応する重み間の乗算処理及び重み群ごとの加算処理を実行する。
入力データ処理部61は、入力した入力データから値がゼロ以外であるノンゼロ要素と当該ノンゼロ要素の位置を特定する。より具体的には、入力データ処理部61は、入力データからノンゼロ要素と対応するインデックスを抽出する。入力データ処理部61は、抽出したインデックスを重み読み出し部62に引き渡す。また、入力データ処理部61は、ノンゼロ要素を乗加算部63に引き渡す。
重み読み出し部62は、入力データと乗算される重みの要素のうち、上記ノンゼロ要素の位置(インデックス)に相当する位置の値を、重み群を記憶する記憶媒体から読み出す。より具体的には、重み読み出し部62は、取得したインデックスに相当する重みの要素を重み一次記憶部64から逐次読み出す。重み読み出し部62は、読み出した値を乗加算部63に引き渡す。
乗加算部63は、ノンゼロ要素と重み読み出し部62により読み出された値を乗算する。より具体的には、乗加算部63は、入力データ処理部61から取得したノンゼロ要素と重み読み出し部62から取得した重みの要素を乗算する。乗加算部63は、乗算結果をレジスタ等の一次記憶領域に保存する。
入力データ処理部61、重み読み出し部62及び乗加算部63は、上記処理を繰り返す。入力データ処理部61は、入力データに関して全てのノンゼロ要素を処理した場合には、その旨を乗加算部63に通知する。当該通知を取得すると、乗加算部63は、重み群ごとに乗算結果を加算し、加算結果を演算結果記憶部65に格納する。つまり、入力データに含まれるノンゼロ要素に関する乗算が終了すると、乗加算部63は、乗算結果を加算する。
PE制御部60は、演算結果が演算結果記憶部65に格納されると、入力データ分割部41から供給された入力データのうち処理をしていない入力データが存在するか否かを判断する。処理されていない入力データが存在する場合には、PE制御部60は、入力データ処理部61等を制御し、処理されていない入力データに関して上記説明した乗加算処理を実行する。例えば、図6に示すPE(0、0)に対し、最奥と奥から5番目の入力データが供給されている場合を考える。この場合、PE制御部60は、最初の入力データ(例えば、最奥の入力データ)に関する乗加算処理が終了すると、次の入力データ(例えば、奥から5番目の入力データ)に関する乗加算処理を実行するように入力データ処理部61等を制御する。即ち、各PE42は、一の入力データに関する畳み込み演算が終了すると、他の入力データに関する畳み込み演算を逐次的に実行する。
PE制御部60は、他の入力データ(次の入力データ)に関する畳み込み演算が終了すると、当該他の入力データによる演算結果と先の入力データによる演算結果をチャネル方向に加算し、その結果を演算結果記憶部65に格納する。
PE制御部60は、全ての入力データに関する畳み込み演算が終了し、その結果を演算結果記憶部65に格納すると、その旨を待機部43に通知する。
待機部43は、重みをチャネル方向に並列処理する複数のPE42それぞれの演算が終了するまで待機する手段である。待機部43は、接続された全てのPE42から上記通知(演算結果を格納した旨の通知)を取得すると、待機を解除し、各PE42の演算結果記憶部65から演算結果を読み出し、当該データを結果加算部44に引き渡す。
結果加算部44は、入力データのそれぞれと1つの重み群に含まれる複数の重みとの乗算結果を加算する手段である。当該加算処理は、チャネル方向における演算結果の加算に相当する。
結果加算部44は、加算結果を結果記憶部53に格納すると、その旨を畳み込み層制御部40に通知する。
畳み込み層制御部40は、全ての結果加算部44から上記通知(結果記憶部53に加算結果を格納した旨の通知)を取得すると、自層での演算は終了したものと判断し、その旨を後段の層(活性化関数)に通知する。
以上のように、第1の実施形態に係る推論装置10では、畳み込み層の計算をする際に、入力データのノンゼロ要素に限り重みの各要素と乗算している。その結果、畳み込み層にて実行する乗算回数が減少する。例えば、図7の例では、本来、4×8=32回の乗算が必要であったものが、2(ノンゼロ要素の数)×4=8回の乗算に減少する。
[第2の実施形態]
第2の実施形態について、図面を用いてより詳細に説明する。
第1の実施形態に係る推論装置10は、畳み込み層にて実行する乗算回数の減少を実現する。しかしながら、当該乗算回数の減少を実現するためにはハードウェアの規模が大きくなるという問題が生じる。具体的には、演算結果記憶部65のサイズが大きくなるという問題がある。
例えば、出力チャネル数(重み群の数)Kが「16」であり、カーネル方向に並列処理するPEの数(カーネル方向並列数;N)を「4」とすると、各PE42では、4種類(K/N=16/4=4)の重み群に関する加算結果を一時的に保持する必要がある。例えば、図7を参照すると、各行それぞれの重み群に関する4つの加算結果を一時的に保持する必要がある。各PE42は、少なくとも上記サイズ(容量)の演算結果記憶部65を備えなければならない。
ここで、1つの畳み込み層に含まれるPE42の数は、チャネル方向に並列処理するPE42の数(チャネル方向の並列数;M)とカーネル方向に並列処理するPE42の数(N)の乗算結果(M×N)となる。その結果、全PE42の数(M×N)×各PE42の演算結果記憶部65のサイズ(K/N)=M×Kのサイズを有する記憶媒体(メモリ)が必要となる。第2の実施形態では、当該M×Kのサイズよりも小さいサイズの演算結果記憶部65を備える推論装置10について説明する。
図9は、第2の実施形態に係る畳み込み層実行部31の内部構成の一例を示す図である。図8及び図9を参照すると、畳み込み層制御部40の内部に繰り返し制御部66を備える点が第1及び第2の実施形態で相違する。
第2の実施形態に係る畳み込み層制御部40は、各PE42における乗算処理をカーネル方向に時分割して実行するように、各PE42を制御する。例えば、図7に示すように、1つのPE42にて4つの重み群の乗算処理を実行する場合を考える。この場合、畳み込み層制御部40のサブモジュールである繰り返し制御部66は、図7に示す上から2行目までの乗算処理とその後の加算処理を実行するように各PE42を制御する。
各PE42は、2行目までの処理が終了すると、その演算結果を演算結果記憶部65に格納する。演算結果が格納されると、各PE42のPE制御部60は、その旨を待機部43に通知する。待機部43は、当該通知を受信すると各PE42の演算結果記憶部65から演算結果を読み出し、当該演算結果を結果加算部44に引き渡す。結果加算部44は、待機部43から演算結果を取得すると、取得した演算結果を一時的に結果記憶部53に格納する。その際、結果加算部44は、既に結果記憶部53に格納されている結果が存在すれば、当該既に格納されている結果と取得した演算結果を加算する。結果加算部44は、演算結果を結果記憶部53に格納すると当該事実を繰り返し制御部66に通知する。
繰り返し制御部66は、時分割された残りの処理(例えば、図7に示す上から3行目、4行目の重み群に関する処理)を各PE42が実行するように、各PE42を制御する。より具体的には、繰り返し制御部66は、各PE42のPE制御部60に対して、時分割された残りの処理を実行するように指示する。各PE42は、時分割された残りの処理を実行する。各PE42、待機部43、結果加算部44及び繰り返し制御部66は、時分割された残りの処理がなくなるまで上記動作を繰り返す。このようにして各PE42による演算結果は、結果記憶部53に格納される。結果加算部44は、各PE42から演算結果を受け取るたびに、結果記憶部53に格納された対応する演算結果(他のPE42による結果)を読み出す。その後、結果加算部44は、当該読み出した演算結果に取得した演算結果を加算することで、チャネル方向における演算結果の加算を実現する。
カーネル方向に時分割された畳み込み演算処理が終了した後は、畳み込み層制御部40は、第1の実施形態と同様に動作する。
このように、第2の実施形態に係る推論装置10は、1つの入力データと、異なる重み群に含まれる重みと、を乗算する複数の処理を時分割で複数のPE42のそれぞれに実行させる。即ち、第2の実施形態に係る推論装置10は、各PE42における畳み込み演算処理において、カーネル方向に時分割する。その結果、各PE42に必要となる演算結果記憶部65のサイズを小さくすることができる。具体的には、図7の例において、第1の実施形態では、4つの演算結果を保持できる容量の演算結果記憶部65が必要である。しかし、第2の実施形態では、時分割された1回の処理が終了するたびに、演算結果は結果記憶部53に格納(退避)されるので、2つの演算結果を保持できる容量の演算結果記憶部65を用意すればよいことになる。
上記効果をより一般化すると、以下のようになる。各PE42にてK/N個の重みを処理する必要がある状況において、時分割された1つの処理にてT(<K/N)個の重みを処理する場合を考える。この場合、第1の実施形態では、各PE42における演算結果記憶部65のサイズ(容量)がK/Nであったものが、第2の実施形態では、Tとなる。また、1つの畳み込み層全体として必要となる演算結果記憶部65のサイズは、第1の実施形態では、K×Mであったものが、第2の実施形態では、T×M×Nとなる。上述のように、Tは、K/Nよりも小さいので、T×N×M<K×Mの関係が成り立つ。
例えば、C=512、K=512、N=64、M=64、T=4とすれば、第1の実施形態(時分割処理なし)では、512×64=32768個の演算結果を保持できる記憶媒体(メモリ)が必要となる。対して、第2の実施形態(時分割あり)では、4×64×64=16384個の演算結果を保持できる記憶媒体が必要となる。
[第3の実施形態]
第3の実施形態について、図面を用いてより詳細に説明する。
第1及び第2の実施形態では、複数のPE42を用いてチャネル方向及びカーネル方向の重みを並列に処理している。その際、各PE42では、入力データに含まれるノンゼロ要素と重みの乗算処理が行われる。その後、並列に演算している他のPE42の処理が終了するとチャネル方向での加算処理が行われる。このように、入力データに含まれるノンゼロ要素と重みの乗算処理が行われるので、各PE42に入力する入力データのノンゼロ要素の数にばらつきが存在すると、各PE42にて演算処理が終了するタイミングがばらつく。即ち、各PE42に入力される入力データに含まれるノンゼロ要素の数に偏りが存在すると、PE42間での実行時間に偏りが生じる。PE42間での実行時間に偏りが生じると、実行時間が最も遅いPE42の処理終了を待つ必要があるため、畳み込み層の演算処理がPE42の最悪実行時間に律速される(実行時間が遅いPE42がボトルネックとなる)。なお、入力データ(即ち、前層の出力データ)に存在するノンゼロ要素は、アクティベーションスパーシティ(Activation Sparsity)とも称される。つまり、アクティベーションスパーシティに偏りが存在すると、PE42における実行時間の偏りが生じることになる。
第3の実施形態では、上記ボトルネックを極力解消するような推論装置10を説明する。
初めに、図10を参照しつつ、各PE42に入力するデータが異なると、その演算に要する時間が異なることを説明する。図10は、PE42に入力する異なる2つの入力データを示す図である。
図10(a)では、ノンゼロ要素が2個であるので、比較的早く処理結果が得られるのに対し、図10(b)ではノンゼロ要素が7個であるので、処理結果を得るまでに時間がかかる。例えば、図10に示す2つの入力データそれぞれを異なるPE42に入力し、並列処理する場合を考える。この場合、図10(b)の入力データを処理するPE42の演算が終了するまでの間、図10(a)の入力データを処理するPE42は待機中となる。つまり、図10(b)に示す入力データを処理するPE42は、畳み込み演算のボトルネックとなる。また、図10(b)に示す入力データを処理するPEの演算処理が終了するまでの間、他のPE42は待機中となるため、リソースの有効活用が行えない。
上記不都合(処理の遅いPE42がボトルネック、リソースの効率的な利用が阻害)を解消するため、第3の実施形態では、カーネル方向に重み群を並び替える。以下、カーネル方向にて重み群を並び替えることで上記不都合が解消されることを説明する。なお、本願開示において、重み群を並び替えるとは、入力データに対して乗算処理をする重み群の利用順序(計算順序)を変更することを示す。例えば、図3において、重み群511、重み群512の順で入力データとの乗算処理が行われているものを、重み群512、重み群511の順で入力データとの乗算処理を行うことが「カーネル方向での重み群の並び替え」に相当する。さらに、重み群の計算順序の変更を実現するために重み群が格納されているメモリ内の配置を変更することも「カーネル方向での重み群の並び替え」に相当する。つまり、メモリにアクセスして重み群を読み出すプロセッサ(畳み込み制御部)の動作を変更して重み群の並び替えを実現してもよいし、当該プロセッサの動作を変更せずメモリ内の配置を変更することで重み群の並び替えを実現してもよい。
図11は、第3の実施形態による問題解決を説明するための図である。なお、プーリング層による動作(プーリング前後)により変化するパラメータは入力データのサイズW、Hである。換言するならば、重みに関係するパラメータである、重みのサイズR、Sや入力チャネル数C、出力チャネル数Kに関してはプーリング前後で変化しない。つまり、図11の例では、2層目の重みのサイズR、Sや入力チャネル数C2、出力チャネル数K2はプーリングの前後で変化しない。なお、上述のように、プーリング処理により入力データのサイズW、Hは変化し、図11においても当該変化を図示している。従って、図11は、プーリング層の適用を暗黙的に仮定している。
上述したように、上記不都合が生じる原因は、アクティベーションスパーシティの偏り(ばらつき)である。図11の例では、2層目の入力となるデータ401とデータ402におけるアクティベーションスパーシティが大きく異なると、当該データ401及び402を使用した2層目の畳み込み演算の処理時間に大きな差が出ることがある。
図11に示すように、2層目の入力データは、その前段の層(1層目)の出力データである。従って、1層目の出力データにおけるアクティベーションスパーシティの偏りが、2層目の演算処理(実行時間)に影響を与える。
ここで、各層からの出力データは、活性化関数(例えば、ReLU関数)が適用されたものである。ReLU関数は、負の値を「0」に置換し、正の値はそのまま出力する関数である。そのため、活性化関数に入力するデータに負の値が多ければ、後段の層に入力するデータには「0」が多い傾向となる。逆に、活性化関数に入力するデータに正の値が多ければ、後段の層に入力するデータには「0」が少ない傾向となる。なお、上記活性化関数の特徴から、各層への入力データには負の値は含まれない。
活性化関数に入力するデータが正の値となるか負の値となるかは、畳み込み演算により定まる。畳み込み演算は、入力データと重みの双方から影響を受けるので、重みの各要素に負の値が多ければ、演算結果は負の値となる可能性が高くなる。即ち、重みに負の値が多く含まれていれば、活性化関数が適用された後の層の出力には「0」が多く含まれ、重みに正の値が多く含まれていれば、活性化関数が適用された後の層の出力にはノンゼロ要素が多く含まれる傾向となる。
上述のように、アクティベーションスパーシティの偏りが大きいと畳み込み演算の処理時間にも偏りが大きくなる。そこで、第3の実施形態では、2層目の入力、即ち、1層目の出力におけるアクティベーションスパーシティの偏りを抑制するために、1層目の重み群を並べ替える。具体的には、1層目の出力データにおいて、隣接するデータ間ではアクティベーションスパーシティのばらつきが極力発生しないように1層目の重み群を並べ替える。即ち、重み群の計算順序をカーネル方向にて入れ替える。
例えば、カーネル方向に並ぶ各重み群に含まれる負の数の総数を評価基準として算出し、当該評価基準が降順又は昇順となるように重みを並べ替える。但し、前段の層(1層目)で重み群を並べ替えると、1層目の出力データの順序が入れ替わる。例えば、図11において、重み群521に対応する出力データはデータ401、重み群522に対応する出力データはデータ402とする。ここで、重み群521と重み群522の順序を入れ替えると、1層目の出力データは、データ402とデータ401の順番となる。各層の重み群に含まれる重み(チャネル方向の重み)は、入力データのチャネルと対応付けて用意されるので、前段の出力データの順番が変わると、後段の層における入力データの対応関係が変わることになる。そこで、順番が変わった入力データに適合するように、自層における重み群に含まれる重みのチャネル方向の順番を変更する(入力データとの対応付けを変更する)必要がある。
図12は、第3の実施形態に係る畳み込み層制御部40の内部構成の一例を示す図である。図12を参照すると、畳み込み層制御部40は、重み取得部311と、評価指標計算部312と、重み群並び替え部313と、順序情報通知部314と、順序情報取得部315と、重み並び替え部316と、を含んで構成される。
重み取得部311は、重み記憶部52から重みを読み出す手段である。読み出された重みは、評価指標計算部312に引き渡される。
評価指標計算部312は、重み群を評価するための評価指標を計算する手段である。当該評価指標は、重み群の並び替えに使用される。図13は、第3の実施形態に係る畳み込み層制御部40の動作を説明するための図である。図13には、8個の重み群WG0〜WG7を図示している。また、各重み群には、4チャネル分の重みが含まれる。各チャネルに対応する重みのサイズは、2×2=4である。図13では、各チャネルに対応する重みをWC0〜WC3として図示している。つまり、図13に示す各行がカーネル方向の重み群を示し、重み群のそれぞれは、チャネル方向に4つの重みを有する。
図13(a)は、評価指標計算部312が取得した直後の重みを示している。評価指標計算部312は、各重み群における負の数の総数を計算する。例えば、図13(a)では、重み群WG0における負の数の総数は「5」であり、重み群WG1における負の数の総数は「4」と計算される。
重み群並び替え部313は、計算された評価指標に基づき入力データに対して乗算する重み群をカーネル方向に並べ替える手段である。例えば、重み群並び替え部313は、評価指標が降順となるように重み群を並び替える。図13(b)は、図13(a)に示す重み(重み群)を、評価指標が降順となるように並び替えた結果を示す。
重み群並び替え部313による重み群の並び替えが終了すると、畳み込み層制御部40は、第1及び第2の実施形態の畳み込み層制御部40と同様に動作する。より具体的には、畳み込み層制御部40は、重みを各PE42に設定し、各PE42による畳み込み演算が終了すると、その旨を後段の畳み込み層制御部40に通知する。
順序情報通知部314は、重み群並び替え部313による重み群並び替えに関する順序情報を他層に通知する手段である。より具体的には、順序情報通知部314は、順序情報を後段の畳み込み層制御部40に通知する。図13の例では、順序情報通知部314は、WG2、WG3、WG0、WG1、WG7、WG4、WG6、WG5という重み群の並び順を後段の畳み込み層制御部40に通知する。
順序情報取得部315は、前段の畳み込み層制御部40からの重み群の並び替えに関する順序情報を取得する手段である。
重み並び替え部316は、取得した順序情報に基づき、入力データと重み群に含まれる重みの対応関係を変更する手段である。より具体的には、重み並び替え部316は、前段の畳み込み層制御部40から取得した順序情報に基づき、自層の重み群に含まれる重みをチャネル方向に並び替える。図13の例では、WG2、WG3、WG0、WG1、WG7、WG4、WG6、WG5の順に各重み群に含まれる重みをチャネル方向に並び替える。重み並び替え部316は、重み記憶部52から重みを読み出し、各重み群に含まれる重みを上記順序情報に従ってチャネル方向に並び替え、並び替え後の重みを重み記憶部52に再び格納する。このように、重み並び替え部316は、前段の層にて重み群を並べ替えたことにより入力データが変更することに対応し、各重み群に含まれる重みと入力データの対応付けを変更する。重み並び替え部316による重みの並び替えが終了すると、畳み込み層制御部40は、第1及び第2の実施形態の畳み込み層制御部40と同様に動作する。
図14は、第3の実施形態に係る畳み込み層制御部40の動作を説明するためのフローチャートである。図14を参照しつつ、第3の実施形態に係る畳み込み層制御部40の動作を概説する。
図14(a)は、カーネル方向に重み群を並び替える場合の畳み込み層制御部40の動作を示すフローチャートである。
初めに、畳み込み層制御部40は、重み記憶部52から重みを取得する(ステップS101)。その後、畳み込み層制御部40は、評価指標を計算する(ステップS102)。その後、畳み込み層制御部40は、計算された評価指標に基づき重み群をカーネル方向に並び替える(ステップS103)。その後、畳み込み層制御部40は、並び替え後の重み群の順序に関する順序情報を後段の畳み込み層制御部40に通知する。
図14(b)は、チャネル方向に重みを並び替える場合の畳み込み層制御部40の動作を示すフローチャートである。
初めに、畳み込み層制御部40は、前段の畳み込み層制御部40から順序情報を取得する(ステップS201)。その後、畳み込み層制御部40は、取得した順序情報に基づき、各重み群に含まれる重みをチャネル方向に並び替える(ステップS202)。
以上のように、第3の実施形態では、アクティベーションスパーシティの偏りを抑制するように、カーネル方向にて重み群の並び替えを行う。当該並び替えは、出力データに含まれる「0」の数が、隣接するデータ間で極力揃うように行われる。例えば、図13(b)に示すように、各重み群の負の総数が降順となるように並び替えると、並び替え後の重み群の隣接するもの同士は、負の数が類似しているため、畳み込み演算の処理結果における「0」の数も似たものとなる可能性が高い。畳み込み演算の処理結果は、後段の層における入力データに相当するので、上記並び替えにより、後段の層におけるアクティベーションスパーシティの偏りが抑制される。当該事実は、後段の層にて並列に処理するPE42へのアクティベーションスパーシティの偏りが抑制されることを意味し、並列処理するPE42間での実行時間が大きく異なることを抑制できる。その結果、処理の遅いPE42がボトルネックとなることやリソースの効率的な利用が阻害されるといった問題点が解消され得る。
続いて、第1乃至第3の実施形態に係る推論装置10のハードウェア構成について説明する。
図15は、推論装置10のハードウェア構成の一例を示す図である。推論装置10は、所謂、情報処理装置(コンピュータ)により構成可能であり、図15に例示する構成を備える。例えば、推論装置10は、内部バスにより相互に接続される、CPU(Central Processing Unit)71、メモリ72、入出力インターフェイス73及び通信手段であるNIC(Network Interface Card)74等を備える。
なお、図15に示す構成は、推論装置10のハードウェア構成を限定する趣旨ではない。推論装置10は、図示しないハードウェアを含んでもよい。あるいは、推論装置10に含まれるCPU等の数も図15の例示に限定する趣旨ではなく、例えば、複数のCPUが推論装置10に含まれていてもよい。
メモリ72は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスク等)である。
入出力インターフェイス73は、図示しない表示装置や入力装置のインターフェイスとなる手段である。表示装置は、例えば、液晶ディスプレイ等である。入力装置は、例えば、キーボードやマウス等のユーザ操作を受け付ける装置である。
推論装置10の機能は、上述の処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ72に格納されたプログラムをCPU71が実行することで実現される。また、そのプログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。即ち、上記処理モジュールが行う機能は、何らかのハードウェアにおいてソフトウェアが実行されることによって実現できればよい。
[変形例]
第1乃至第3の実施形態にて説明した推論装置10は例示であって、その構成及び動作を限定する趣旨ではない。以下、各種変形例について説明する。
上記実施形態では、重みをチャネル方向に分割して畳み込み演算を実行する場合を主に説明したが、チャネル方向の分割は行われて無くともよい。例えば、図6では、4つのPEがチャネル方向の重みを並列に処理する場合を図示しているが、8つのPEがチャネル方向の重みを全て並列に処理してもよい。
上記実施形態では、各PE42は、それぞれに割り当てられた複数の重み群、複数の重みを逐次的に処理しているが、当該逐次的処理は行われなくともよい。例えば、図6において、上記実施形態では、PE(0、0)が1行目の重み群に含まれる最奥の重みを処理し、その後、奥から5番目の重みを処理している。しかし、4つのPE(0、0)〜PE(3、0)を一組とし、これらのPEにて1行目の重み群に含まれる最奥から4番目までの重みを並列に処理してもよい。その後、上記4つのPE(0、0)〜PE(3、0)は、1行目の重み群に含まれる奥から5番目〜8番目(最も手前)の重みを並列処理してもよい。
上記実施形態では、重み読み出し部62は、読み出した重みの要素が「0」であったとしても、当該「0」を乗加算部63に通知している。しかし、重み読み出し部62は、読み出した重みの値が「0」であれば、その旨を乗加算部63に通知する対応であってもよい。この場合、乗加算部63は、読み出された値が「0」である旨の通知を受けた場合は、入力データとの乗算処理を不実施とすることができる(乗算処理をスキップできる)。
上記実施形態では、各PE42に入力データ処理部61が含まれる構成を説明したが、入力データ処理部61に相当するモジュールを、カーネル方向のPE42にて共通に設けてもよい。上記説明したように、同じチャネルの入力データを処理するPE42には同じ入力データが入力されるので、入力データ処理部61によるノンゼロ要素検出に関する動作は同じとなる。従って、共通に設けられた入力データ処理部61からノンゼロ要素及びそのインデックスを各PE42に通知(ブロードキャスト)してもよい。
あるいは、各PE42に含まれる入力データ処理部61は、結果記憶部53の後段に配置されていてもよい。上記説明したように、前段の層の出力データは後段の層の入力データとなるので、後段の層にて入力データからノンゼロ要素及びそのインデックス検出処理が不要となるように、前段の層にて当該処理を予め実施してもよい。
上記実施形態では、各PE42に重み一次記憶部64が含まれる構成を説明したが、各PE42は、重み記憶部52から必要な重みを直接読み出してもよい。例えば、畳み込み層制御部40が、各PE42に対し、必要な重みのアドレス情報を通知してもよい。各PE42の重み読み出し部62は、当該アドレス情報に従って必要な重みを読み出してもよい。
上記実施形態では、待機部43と結果加算部44は異なるモジュールとして説明したが、一方のモジュールの機能が他方のモジュールにより実現されていてもよい。即ち、待機部43及び結果加算部44が統合されていてもよい。
第3の実施形態では、評価指標が降順となるように重み群を並び替えることを説明したが、評価指標が昇順となるように並び替えても良いことは勿論である。評価指標が降順となるように、重み群を並び替えると最初に「0」が多い入力データが後段の層にて並列処理されることになる。一方、評価指標が昇順となるように、重み群を並び替えると最初にノンゼロ要素が多い入力データが後段の層にて並列処理されることになる。
第3の実施形態として、重み群を評価する指標として、各重み群に含まれる負の数の総数を計算しているが、他の値を評価指標として計算してもよい。例えば、各重み群における要素の総和を評価指標として計算してもよい。例えば、図13(a)の例では、重み群WG0の評価指標として、各要素の総和として「−4」が計算される(−1+0+0−1+0+1+0−1+0+1+1−3+0+1+0−2=−4)。
第3の実施形態では、推論装置10が入力データを推論する過程にて重み群を並び替えているが、推論装置10に重み群を設定する前段階にて上記並び替えを実行してもよい。具体的には、図16に示すように、推論装置10に対して外部から学習済み重みを設定する重み設定装置80において重み群の並び替えを行ってもよい。あるいは、他者から得た学習済み重みを用いて推論装置10を動作させる場合に、事前に並び替えを実行してもよい。
さらにまた、図17に示すように、推論装置10に重みを提供する学習装置90にて、重み群の並び替えを行っても良い。即ち、学習装置90では、教師データを用いた「推論」、「推定誤差フィードバック(誤差逆伝搬)」、「重みアップデート」を繰り返す学習処理が行われる。当該一連の学習処理を「推論」、「推定誤差フィードバック」、「重みアップデート」、「重み(重み群)並び替え」としてもよい。学習装置90における推論部がアクティベーションスパーシティを活用する場合には、上記のように学習時のフローを変更することで、第3の実施形態にて説明した効果を学習装置90が享受できる。なお、畳み込みニューラルネットワークの活用(中間層の動作)の観点からは、推論装置10と学習装置90では相違する点はない。推論装置10への入力データは推論対象となるデータであり、学習装置90の推論部への入力データは教師データであるが、「推論」の観点からは両者に違いはない。即ち、上記説明した推論装置10に、誤差逆伝搬を行う誤差逆伝搬部91、重みアップデートを行う重みアップデート部92と、重み(重み群)の並び替えを行う並び替え部93と、を付加することで学習装置90を構成することができる(図18参照)。なお、誤差逆伝搬部91及び重みアップデート部92に関しては、公知のアルゴリズム等により実現可能である。また、並び替え部93に関しては、第3の実施形態にて説明した評価指標計算部312、重み群並び替え部313、重み並び替え部316等の機能により実現できる。
上記の実施形態の一部又は全部は、以下のようにも記載され得るが、以下には限られない。
[形態1]
上述の第1の視点に係る推論装置のとおりである。
[形態2]
前記制御部は、
前記複数の入力データのそれぞれと、前記複数の入力データそれぞれに対応する重みそれぞれとの乗算処理のうち、一部の乗算処理が並列に処理されるように前記複数のPEを制御する、好ましくは形態1の推論装置。
[形態3]
前記制御部は、
前記複数の入力データのそれぞれと、複数の前記重み群に含まれる複数の重みのそれぞれとの乗算処理のうち、異なる前記重み群の重みであって同一の入力データに対応する重みを用いた乗算処理の一部が並列に実行されるように前記複数のPEを制御する、好ましくは形態2の推論装置。
[形態4]
前記複数の入力データを分割し、前記分割された入力データを前記一部の乗算処理を並列に処理するPEに供給する、入力データ分割部をさらに備える、好ましくは形態3の推論装置。
[形態5]
前記一部の乗算処理を並列に処理する複数のPEそれぞれの演算が終了するまで待機する、待機部をさらに備える、好ましくは形態3又は4の推論装置。
[形態6]
前記複数の入力データのそれぞれと1つの重み群に含まれる複数の重みとの乗算結果を加算する結果加算部をさらに備える好ましくは形態3乃至5のいずれか一に記載の推論装置。
[形態7]
前記複数のPEのそれぞれは、
入力した入力データから値がゼロ以外であるノンゼロ要素と前記ノンゼロ要素の位置を特定する入力データ処理部と、
前記入力した入力データと乗算される重みの要素のうち、前記ノンゼロ要素の位置に相当する位置の値を、前記重み群を記憶する記憶媒体から読み出す重み読み出し部と、
前記ノンゼロ要素と前記重み読み出し部により読み出された値を乗算する、乗加算部と、
を備え、
前記乗加算部は、前記入力した入力データに含まれるノンゼロ要素に関する乗算が終了すると、乗算結果を加算する、好ましくは形態1乃至6のいずれか一に記載の推論装置。
[形態8]
前記複数のPEのそれぞれは、
前記乗加算部により算出された加算結果を記憶する、演算結果記憶部をさらに備える、好ましくは形態7の推論装置。
[形態9]
前記制御部は、
1つの入力データと、異なる重み群に含まれる重みと、を乗算する複数の処理を時分割で前記複数のPEのそれぞれに実行させる、好ましくは形態3乃至8のいずれか一に記載の推論装置。
[形態10]
前記制御部は、
前記重み群を評価するための評価指標を計算する、評価指標計算部と、
前記評価指標に基づき、入力データに対して乗算する前記重み群の順序を並び替える重み群並び替え部と、
を備える、好ましくは形態1乃至9のいずれか一に記載の推論装置。
[形態11]
前記制御部は、
前記重み群の並び替えに関する順序情報を、他層に通知する、順序情報通知部をさらに備える、好ましくは形態10の推論装置。
[形態12]
前記制御部は、
前記通知された順序情報を取得する、順序情報取得部と、
前記順序情報に基づき、入力データと前記重み群に含まれる重みの対応関係を変更する、重み並び替え部と、
をさらに備える、好ましくは形態11の推論装置。
[形態13]
上述の第2の視点に係る畳み込み演算実行方法のとおりである。
[形態14]
上述の第3の視点に係るプログラムのとおりである。
[形態15]
教師データを用いた重みの推論、重みの推定誤差のフィードバック、重みのアップデート、及び重みの並び替えを行う学習装置であって、
前記重みの並び替えは、
重みを評価するための評価指標に基づき行われる、学習装置。
なお、形態13及び形態14は、形態1と同様に、形態2〜形態12のように展開することが可能である。
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
10、100 推論装置
11 入力層実行部
12 中間層実行部
13 出力層実行部
31 畳み込み層実行部
32 活性化関数実行部
33 プーリング層実行部
40 畳み込み層制御部
41 入力データ分割部
42、42−1〜42−8、101 PE(Processing Element)
43 待機部
44 結果加算部
51 入力データ記憶部
52 重み記憶部
53 結果記憶部
60 PE制御部
61 入力データ処理部
62 重み読み出し部
63 乗加算部
64 重み一次記憶部
65 演算結果記憶部
66 繰り返し制御部
71 CPU(Central Processing Unit)
72 メモリ
73 入出力インターフェイス
74 NIC(Network Interface Card)
80 重み設定装置
90 学習装置
91 誤差逆伝搬部
92 重みアップデート部
93 並び替え部
102 制御部
311 重み取得部
312 評価指標計算部
313 重み群並び替え部
314 順序情報通知部
315 順序情報取得部
316 重み並び替え部
401、402 データ
501、502 重み
511、512、521、522 重み群

Claims (9)

  1. 複数のPE(Processing Element)と、
    複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を前記複数のPEを制御することで実現する、制御部と、
    を備え、
    前記複数のPEのそれぞれは、
    入力した入力データから値がゼロ以外であるノンゼロ要素と前記ノンゼロ要素の位置を特定する入力データ処理部と、
    前記入力した入力データと乗算される重みの要素のうち、前記ノンゼロ要素の位置に相当する位置の値を、前記重み群を記憶する記憶媒体から読み出す重み読み出し部と、
    前記ノンゼロ要素と前記重み読み出し部により読み出された値を乗算する、乗加算部と、
    を備え、
    前記乗加算部は、前記入力した入力データに含まれるノンゼロ要素に関する乗算が終了すると、乗算結果を加算する、推論装置。
  2. 前記制御部は、
    前記複数の入力データのそれぞれと、前記複数の入力データそれぞれに対応する重みそれぞれとの乗算処理のうち、一部の乗算処理が並列に処理されるように前記複数のPEを制御する、請求項1の推論装置。
  3. 前記制御部は、
    前記複数の入力データのそれぞれと、複数の前記重み群に含まれる複数の重みのそれぞれとの乗算処理のうち、異なる前記重み群の重みであって同一の入力データに対応する重みを用いた乗算処理の一部が並列に実行されるように前記複数のPEを制御する、請求項2の推論装置。
  4. 前記複数の入力データを分割し、前記分割された入力データを前記一部の乗算処理を並列に処理するPEに供給する、入力データ分割部をさらに備える、請求項3の推論装置。
  5. 前記複数の入力データのそれぞれと1つの重み群に含まれる複数の重みとの乗算結果を加算する結果加算部をさらに備える請求項3又は4に記載の推論装置。
  6. 前記制御部は、
    1つの入力データと、異なる重み群に含まれる重みと、を乗算する複数の処理を時分割で前記複数のPEのそれぞれに実行させる、請求項3乃至のいずれか一項に記載の推論装置。
  7. 前記制御部は、
    前記重み群を評価するための評価指標を計算する、評価指標計算部と、
    前記評価指標に基づき、入力データに対して乗算する前記重み群の順序を並び替える重み群並び替え部と、
    を備える、請求項1乃至のいずれか一項に記載の推論装置。
  8. それぞれが、1つの入力データと1つの重みの乗算処理を含む演算を実行する、複数のPE(Processing Element)を含み、
    複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を実現する、推論装置において、
    前記複数のPEのそれぞれが、
    前記複数の入力データそれぞれに含まれる値がゼロではないノンゼロ要素と前記ノンゼロ要素の位置を特定するステップと、
    前記入力した入力データと乗算される重みの要素のうち、前記ノンゼロ要素の位置に相当する位置の値を、前記重み群を記憶する記憶媒体から読み出すステップと、
    前記ノンゼロ要素と前記重み読み出しステップにより読み出された値の乗算処理を実行するステップと、
    前記入力した入力データに含まれるノンゼロ要素に関する乗算が終了すると、前記乗算処理の結果を加算するステップと、
    を含む、畳み込み演算実行方法。
  9. それぞれが、1つの入力データと1つの重みの乗算処理を含む演算を実行する、複数のPE(Processing Element)を含み、
    複数の入力データのそれぞれと、前記複数の入力データのそれぞれに対応する複数の重みを含む重み群と、を用いた畳み込みニューラルネットワークにおける畳み込み演算を実現する、推論装置に搭載されたコンピュータに、
    前記複数の入力データそれぞれに含まれる値がゼロではないノンゼロ要素と前記ノンゼロ要素の位置を特定する処理と、
    前記入力した入力データと乗算される重みの要素のうち、前記ノンゼロ要素の位置に相当する位置の値を、前記重み群を記憶する記憶媒体から読み出す処理と、
    前記ノンゼロ要素と前記重み読み出し処理により読み出された値の乗算処理を実行する処理と、
    前記入力した入力データに含まれるノンゼロ要素に関する乗算が終了すると、前記乗算処理の結果を加算する処理と、
    を実行させる、プログラム。
JP2019551133A 2017-10-23 2018-10-22 推論装置、畳み込み演算実行方法及びプログラム Active JP6927320B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017204610 2017-10-23
JP2017204610 2017-10-23
PCT/JP2018/039248 WO2019082859A1 (ja) 2017-10-23 2018-10-22 推論装置、畳み込み演算実行方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2019082859A1 JPWO2019082859A1 (ja) 2020-11-12
JP6927320B2 true JP6927320B2 (ja) 2021-08-25

Family

ID=66247809

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019551133A Active JP6927320B2 (ja) 2017-10-23 2018-10-22 推論装置、畳み込み演算実行方法及びプログラム

Country Status (3)

Country Link
US (1) US11580369B2 (ja)
JP (1) JP6927320B2 (ja)
WO (1) WO2019082859A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7379821B2 (ja) * 2019-01-09 2023-11-15 日本電信電話株式会社 推論処理装置および推論処理方法
WO2020225916A1 (ja) * 2019-05-09 2020-11-12 株式会社アラヤ 情報処理装置
US20210012178A1 (en) * 2019-07-11 2021-01-14 Facebook Technologies, Llc Systems, methods, and devices for early-exit from convolution
KR20210051920A (ko) * 2019-10-31 2021-05-10 삼성전자주식회사 신경망의 커널들을 정렬하는 전자 장치 및 이의 동작 방법
JP2022520912A (ja) * 2020-01-22 2022-04-04 深▲チェン▼市商▲湯▼科技有限公司 データ処理方法、装置及びチップ、電子機器、記憶媒体
US20210256357A1 (en) * 2020-02-04 2021-08-19 University Of Louisiana At Lafayette Embedded stochastic-computing accelerator architecture and method for convolutional neural networks
US11568248B2 (en) * 2020-03-31 2023-01-31 Ati Technologies Ulc Feature reordering based on similarity for improved memory compression transfers during machine learning jobs
US11551089B2 (en) * 2020-03-31 2023-01-10 Ati Technologies Ulc Feature reordering based on sparsity for improved memory compression transfers during machine learning jobs
CN112200295B (zh) * 2020-07-31 2023-07-18 星宸科技股份有限公司 稀疏化卷积神经网络的排序方法、运算方法、装置及设备
KR102883349B1 (ko) * 2021-01-25 2025-11-07 삼성전자주식회사 추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법
TWI769807B (zh) * 2021-05-04 2022-07-01 國立清華大學 基於記憶體內運算單元之軟硬體協同之壓縮運算方法及其系統
US20240289621A1 (en) * 2021-06-15 2024-08-29 Nec Corporation Neural network model conversion device and method
JP7719033B2 (ja) * 2022-05-18 2025-08-05 ルネサスエレクトロニクス株式会社 半導体装置
CN115186799A (zh) * 2022-06-15 2022-10-14 奥比中光科技集团股份有限公司 一种基于卷积神经网络的稀疏化计算方法及芯片
WO2024014002A1 (ja) * 2022-07-15 2024-01-18 日本電信電話株式会社 推論処理装置、推論処理方法、及び推論処理プログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5368687B2 (ja) * 2007-09-26 2013-12-18 キヤノン株式会社 演算処理装置および方法
JP5376920B2 (ja) 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP6365258B2 (ja) 2014-11-19 2018-08-01 株式会社デンソー 演算処理装置
US11423311B2 (en) * 2015-06-04 2022-08-23 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks
US9767381B2 (en) 2015-09-22 2017-09-19 Xerox Corporation Similarity-based detection of prominent objects using deep CNN pooling layers as features
US10310826B2 (en) 2015-11-19 2019-06-04 Intel Corporation Technologies for automatic reordering of sparse matrices
JP6561877B2 (ja) 2016-03-01 2019-08-21 株式会社デンソー 演算処理装置
US20180082181A1 (en) * 2016-05-13 2018-03-22 Samsung Electronics, Co. Ltd. Neural Network Reordering, Weight Compression, and Processing
US10891538B2 (en) * 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
CN106447034B (zh) * 2016-10-27 2019-07-30 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
US10872290B2 (en) * 2017-09-21 2020-12-22 Raytheon Company Neural network processor with direct memory access and hardware acceleration circuits

Also Published As

Publication number Publication date
WO2019082859A1 (ja) 2019-05-02
JPWO2019082859A1 (ja) 2020-11-12
US20210201120A1 (en) 2021-07-01
US11580369B2 (en) 2023-02-14

Similar Documents

Publication Publication Date Title
JP6927320B2 (ja) 推論装置、畳み込み演算実行方法及びプログラム
US20220292163A1 (en) Dilated convolution using systolic array
KR102631381B1 (ko) 컨볼루션 신경망 처리 방법 및 장치
US20220383067A1 (en) Buffer Addressing for a Convolutional Neural Network
US10353705B2 (en) Arithmetic processing device for deep learning and control method of the arithmetic processing device for deep learning
KR102879261B1 (ko) 컨볼루션 신경망 처리 방법 및 장치
US10642622B2 (en) Arithmetic processing device and control method of the arithmetic processing device
JP7007488B2 (ja) ハードウェアベースのプーリングのシステムおよび方法
CN114358237A (zh) 多核硬件中神经网络的实现方式
EP4024290A1 (en) Implementing fully-connected neural-network layers in hardware
CN110322001A (zh) 深度学习加速器及加快深度学习操作的方法
US12026607B1 (en) Memory operation for systolic array
KR20180060149A (ko) 컨볼루션 처리 장치 및 방법
CN109754359B (zh) 一种应用于卷积神经网络的池化处理的方法及系统
US11580193B2 (en) Computation device, computation method, and program
EP3633559B1 (en) Information processing apparatus, information processing method, non-transitory computer-readable storage medium
JP6958027B2 (ja) 演算処理装置及び演算処理装置の制御方法
WO2022206556A1 (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
KR101989793B1 (ko) 컨볼루션 신경망을 위한 가속기 인식 가지 치기 방법 및 기록 매체
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
JP2017130036A (ja) 情報処理装置、演算方法、および演算プログラム
KR102372869B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
KR20220134035A (ko) 컨볼루션 연산을 위한 프로세싱 인 메모리 방법
JP2020080048A (ja) 並列処理装置およびプログラム
CN110796229A (zh) 一种实现卷积运算的装置及方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200421

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210413

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210604

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210719

R150 Certificate of patent or registration of utility model

Ref document number: 6927320

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150