JP6794336B2 - ニューラルネットワーク装置 - Google Patents

ニューラルネットワーク装置 Download PDF

Info

Publication number
JP6794336B2
JP6794336B2 JP2017222259A JP2017222259A JP6794336B2 JP 6794336 B2 JP6794336 B2 JP 6794336B2 JP 2017222259 A JP2017222259 A JP 2017222259A JP 2017222259 A JP2017222259 A JP 2017222259A JP 6794336 B2 JP6794336 B2 JP 6794336B2
Authority
JP
Japan
Prior art keywords
data
reverse
router
storage unit
neural network
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
JP2017222259A
Other languages
English (en)
Other versions
JP2019095861A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2017222259A priority Critical patent/JP6794336B2/ja
Priority to US15/911,366 priority patent/US11461617B2/en
Publication of JP2019095861A publication Critical patent/JP2019095861A/ja
Application granted granted Critical
Publication of JP6794336B2 publication Critical patent/JP6794336B2/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/08Learning methods
    • 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/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Neurology (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明の実施形態は、ニューラルネットワーク装置に関する。
近年、ハードウェア化したニューラルネットワークを用いて、脳型プロセッサを実現する技術が提案されている。脳型プロセッサでは、内部で学習器がニューラルネットワークに誤差データを与えて、ニューラルネットワークに設定されている重み係数等を最適化する。
従来のニューラルネットワークは、通常の演算処理を停止した状態で学習処理を実行し、重み係数を最適化する。このため、従来のニューラルネットワークは、外部のプロセッサにより学習処理を実行させることができた。
しかし、脳型プロセッサを実現する場合、ニューラルネットワークは、演算処理と学習処理とを並行して実行しなければならない。従って、この場合、ニューラルネットワークは、外部装置から受信した演算対象データを順方向に伝播させる処理と、学習用の誤差データを逆方向に伝播させる処理とを並行して実行しなければならない。
しかし、ニューラルネットワークに対して順方向にデータを伝播させる処理と逆方向にデータを伝播させる処理とを並行に実行した場合、ニューラルネットワーク内でのトラフィックが停滞し、コストの増大および処理時間の増加を招いてしまう。
米国特許出願公開第2016/0336064号明細書 米国特許出願公開第2016/0284400号明細書 米国特許出願公開第2015/0088797号明細書
Geoffrey W. Burr, "Analog resistive neuromorphic hardware", IBM Research - Almaden., BioComp Summer School, 2017年6月30日
本発明が解決しようとする課題は、演算処理と学習処理とを並行に実行しつつ、内部でのトラフィックの停滞を軽減したニューラルネットワーク装置を提供することにある。
実施形態に係るニューラルネットワーク装置は、複数のコアと、複数のルータとを備える。前記複数のコアは、それぞれが、ニューラルネットワークにおける一部の構成要素の演算および処理を実行する。前記複数のルータは、前記複数のコアのそれぞれから出力されたデータを、前記ニューラルネットワークの構成に従って演算および処理が実行されるように、前記複数のコアの何れか1つのコアに転送する。前記複数のルータのそれぞれは、入力回路と、出力回路と、を有する。前記複数のコアのそれぞれは、前記ニューラルネットワークを順方向に伝播する順方向データ、および、前記ニューラルネットワークを逆方向に伝播する逆方向データの少なくとも一方を送信する。前記入力回路は、前記複数のコアおよび前記複数のルータのうちの何れか1つから、前記順方向データおよび前記逆方向データを受信する。前記出力回路または前入力回路は、データの受信を要求する要求信号を受信した場合であって、前記逆方向データを記憶させるための空き容量が存在しない場合、記憶している前記逆方向データを削除する。
実施形態に係るニューラルネットワーク装置の構成を示す図。 順方向処理の内容を示す図。 逆方向処理の内容を示す図。 データ処理部の構成を示す図。 ニューラルネットワークに含まれる構成要素とコアとの対応関係図。 複数のコアおよび複数のルータの間で送受信されるデータを示す図。 データの構成の一例を示す図。 ルータの構成を示す図。 入力回路および出力回路の構成を示す図。 入力回路の受信部の処理を示すフローチャート。 入力回路のルータ内送信部の処理を示すフローチャート。 出力回路のルータ内受信部の処理を示すフローチャート。 出力回路の送信部の処理を示すフローチャート。 第1変形例に係る出力記憶部の構成を示す図。 第2変形例に係るルータ内受信部の処理を示すフローチャート。 第3変形例に係るルータ内受信部の処理を示すフローチャート。
以下、図面を参照しながら実施形態に係るニューラルネットワーク装置10について説明する。実施形態に係るニューラルネットワーク装置10は、ニューラルネットワークにおける通常のデータ処理と学習処理とを並行に実行しつつ、内部でのトラフィックの混雑を軽減することができる。
図1は、実施形態に係るニューラルネットワーク装置10の構成を示す図である。ニューラルネットワーク装置10は、データ処理部20と、通信部22と、学習部24と、設定部26とを備える。
データ処理部20、通信部22、学習部24および設定部26は、1つの半導体装置内に実装されてもよいし、1つの基板上に設けられた複数の半導体装置に実装されていてもよいし、複数の基板に設けられた複数の半導体装置に実装されていてもよい。また、学習部24および設定部26は、同一のプロセッサにより実現されてもよい。
ニューラルネットワーク装置10は、外部装置から入力データを受信する。ニューラルネットワーク装置10は、受信した入力データに対してニューラルネットワークを用いた演算処理を実行する。そして、ニューラルネットワーク装置10は、ニューラルネットワークを用いた演算処理の結果である出力データを外部装置に送信する。
データ処理部20は、ニューラルネットワークに基づく通常の演算処理を実行する。データ処理部20は、例えば、ニューラルネットワークに基づく通常の演算処理として、パターン認識処理、データ解析処理および制御処理等の様々な情報処理を実行する。
また、データ処理部20は、通常の演算処理と並行して、学習処理を実行する。データ処理部20は、学習処理により、通常の演算処理をより適切に行うように、ニューラルネットワークに含まれる複数の係数(重み)を変更する。
通信部22は、外部装置とデータの送受信をする。具体的には、通常の演算処理において、通信部22は、外部装置から、演算対象となる入力データを受信する。また、通信部22は、外部装置へ、演算結果である出力データを送信する。
学習部24は、通常の演算処理においてデータ処理部20から出力された出力データを取得する。そして、学習処理において、学習部24は、出力データの誤差を表す誤差データを算出して、データ処理部20に与える。
さらに、学習部24は、データ処理部20が複数の層に対して誤差データを逆方向に伝播した結果得られた情報に基づき、ニューラルネットワークに含まれる複数の係数(重み)を変更する。例えば、学習部24は、ニューラルネットワークに含まれる複数の係数のそれぞれについて、誤差の勾配を算出する。そして、学習部24は、誤差の勾配を例えば0とする方向に、複数の係数を変更する。
設定部26は、学習部24によりニューラルネットワークに含まれる複数の係数が変更された場合、データ処理部20に対して、変更後の係数を設定する。
図2は、ニューラルネットワークにおける通常の演算処理(順方向処理)の内容を示す図である。
ニューラルネットワークは、複数の層を含む。複数の層のそれぞれは、受け取ったデータに対して所定の演算および処理をする。ニューラルネットワークに含まれる複数の層のそれぞれは、複数のノードを含む。1つの層に含まれるノードの数は、層毎に異なってもよい。
それぞれのノードには、活性化関数が設定されている。活性化関数は、層毎に異なってもよい。また、同一の層において、ノード毎に活性化関数が異なってもよい。また、それぞれのノードとノードとを結ぶリンクには、係数(重み)が設定されている。ニューラルネットワークは、ノードから次のノードへとデータを伝播する場合に、そのデータに対してリンクに設定された係数を乗じる。これらの係数は、学習処理により適切に変更される。
データ処理部20は、ニューラルネットワークにおける通常の演算処理において、ニューラルネットワークにおける複数の層に対してデータを順方向に伝播させながら演算を実行させる順方向処理を実行する。例えば、順方向処理において、データ処理部20は、入力層に入力データを与える。続いて、順方向処理において、データ処理部20は、それぞれの層から出力されたデータを、直後の層へと順方向に伝播させる。そして、順方向処理において、データ処理部20は、出力層から出力されたデータを、出力データとして外部装置へと送信する。
ここで、本実施形態においては、ニューラルネットワークにおける通常の演算処理において、複数の層を順方向に伝播するデータを、順方向データと呼ぶ。
図3は、ニューラルネットワークにおける学習処理(逆方向処理)の内容を示す図である。それぞれのノードには、誤差関数が設定されている。誤差関数は、そのノードに設定されている活性化関数の導関数である。すなわち、誤差関数は、そのノードに設定されている活性化関数の微分である。
学習部24は、順方向処理が終了した場合、順方向処理で出力された出力データに対する誤差を表す誤差データを算出する。続いて、逆方向処理において、データ処理部20は、学習部24により生成された誤差データを出力層に与える。そして、逆方向処理において、データ処理部20は、それぞれの層から出力された複数のデータを、直前の層へと逆方向に伝播させる。
ここで、本実施形態においては、ニューラルネットワークにおける学習処理において、複数の層を逆方向に伝播するデータを、逆方向データと呼ぶ。
図4は、データ処理部20の構成を示す図である。データ処理部20は、複数のコア30と、複数のルータ40と、通信路42(42−1,42−2)と、を有する。
複数のコア30は、それぞれが、ニューラルネットワークにおける一部の構成要素の演算および処理を実行する。複数のコア30のそれぞれは、プロセッサであってもよいし、専用のハードウェア回路であってもよいし、デジタル回路であってもよいし、アナログ回路であってもよい。また、複数のコア30のそれぞれは、記憶部を有し、ニューラルネットワークに含まれる係数を記憶してもよい。
複数のルータ40は、複数のコア30のそれぞれから出力されたデータを、ニューラルネットワークの構成に従って演算および処理が実行されるように、通信路42を介して複数のコア30の何れか1つのコア30に転送する。
例えば、複数のルータ40のそれぞれは、通信路42の分岐点に配置される。複数のルータ40のそれぞれは、通信路42を介して複数の他のルータ40と直接接続される。複数のルータ40のそれぞれは、通信路42を介して直接接続された他のルータ40とデータを送受信する。
また、複数のルータ40のそれぞれは、さらに、1または複数のコア30と接続され、接続されたコア30とデータを送受信してもよい。本実施形態においては、複数のコア30は、複数のルータ40に対して一対一に対応して設けられ、対応して設けられたルータ40とデータを送受信する。
このような複数のルータ40のそれぞれは、当該ルータ40と接続された送信元であるルータ40またはコア30から受信したデータを、送信先である当該ルータ40と接続された他のルータ40またはコア30へとデータを転送する。
例えば、複数のルータ40は、第1配列方向および第2配列方向に並べてマトリクス状に配列される。例えば、第2配列方向は、第1配列方向に直交する方向である。例えば、通信路42は、第1配列方向に配列された複数の第1通信路42−1と、第1配列方向とは直交する第2配列方向に配列された複数の第2通信路42−2とを含むクロスバーネットワークである。複数のルータ40は、このようなクロスバーネットワークにおける、第1通信路42−1と第2通信路42−2との交点に設けられる。これにより、複数のルータ40は、何れかのコア30から出力されたデータを、複数のコア30の何れにも転送することができる。
図5は、ニューラルネットワークに含まれる構成要素と、その構成要素での処理を実行するコア30との対応関係を示す図である。
複数のコア30のそれぞれには、ニューラルネットワークに含まれる複数の構成要素のうちの何れかが予め割り当てられている。複数のコア30のそれぞれは、ニューラルネットワークに含まれる複数の構成要素のうち、予め割り当てられた構成要素の演算または処理を実行する。
ニューラルネットワークに含まれる構成要素とは、例えば、ノードにおける活性化関数の演算および誤差関数の演算、リンクに設定された係数の乗算、および、係数が乗算されたデータの加算、外部装置からのデータの入力、外部装置へのデータの出力、誤差データの取得、および、勾配データの出力等である。ニューラルネットワークに含まれる全ての構成要素が少なくとも何れかのコア30で実行されるように、複数のコア30のそれぞれに構成要素が割り当てられている。
1つのコア30において実行される処理は、例えば、1つのノードで実行される処理であってもよい。例えば、ある1つのコア30は、ある層のある1つのノードにおける、リンクに設定された係数の乗算、前段の層から受け取った複数のデータの加算、活性化関数の演算または誤差関数の演算等を実行する。
また、1つのコア30において実行される演算および処理は、1つのノードの一部分の演算であってもよい。例えば、ある1つのコア30は、1つのノードにおける活性化関数の演算を実行し、他の1つのコア30は、そのノードにおける係数の乗算および加算を実行してもよい。また、1つのコア30において実行される演算および処理は、1つの層に含まれる複数のノードにおける全ての処理であってもよい。
このようにデータ処理部20は、ニューラルネットワークに含まれる複数の構成要素の処理を複数のコア30に分散して実行することができる。
図6は、複数のコア30および複数のルータ40の間で送受信されるデータを示す図である。
複数のコア30のそれぞれは、ニューラルネットワークを順方向に伝播する順方向データ、および、ニューラルネットワークを逆方向に伝播する逆方向データの少なくとも一方を、当該コア30に接続されたルータ40に送信する。また、複数のコア30のそれぞれは、順方向データおよび逆方向データの少なくとも一方を、当該コア30に接続されたルータ40から受信する。
また、複数のルータ40のそれぞれは、順方向データおよび逆方向データを、当該ルータ40と接続されたコア30または他のルータ40から受信する。また、複数のルータ40のそれぞれは、受信した順方向データおよび逆方向データを、当該ルータ40と接続されたコア30または他のルータ40に送信する。
ここで、コア30は、順方向データまたは逆方向データを送信する場合、送信に先だって、当該コア30に接続されたルータ40に対して順方向データまたは逆方向データの受信を要求する要求信号を送信する。また、ルータ40は、順方向データまたは逆方向データを送信する場合、送信に先だって、送信先である、当該ルータ40に接続されたコア30または他のルータ40に対して、要求信号を送信する。
コア30は、要求信号を受信した場合、受信可能であれば、要求信号の送信元のルータ40に対して許可信号を送信する。ルータ40は、要求信号を受信した場合、受信可能であれば、要求信号の送信元のコア30または他のルータ40に対して許可信号を送信する。
コア30は、許可信号を受信した場合、当該コア30に接続されたルータ40に対して順方向データまたは逆方向データを送信する。また、ルータ40は、許可信号を受信した場合、送信先である、当該ルータ40に接続された他のルータ40またはコア30に対して、順方向データまたは逆方向データを送信する。
図7は、データの構成の一例を示す図である。順方向データおよび逆方向データは、例えば、図7に示すように、例えば、実体データと、ヘッダとを含む。実体データは、ニューラルネットワークにおいて演算および処理がされる対象である。ヘッダは、パケットを目的のコア30へと転送させるために必要な情報、および、実体データに対して演算および処理をするために必要な情報等を含む。
例えば、ヘッダは、IDと、データ種別と、前処理アドレスと、次処理アドレスと、を含む。IDは、当該実体データの元となる入力データを識別するための情報である。
データ種別は、実体データが、順方向に伝播される順方向データ(通常の演算処理において伝播されるデータ)であるか、逆方向に伝播される逆方向データ(学習処理において伝播されるデータ)であるかを識別する情報である。
前処理アドレスは、当該データを出力したコア30を識別するアドレスである。前処理アドレスは、ニューラルネットワークにおける当該データを生成した層およびノードを識別する情報であってもよい。
次処理アドレスは、ニューラルネットワークにおける当該データに対して次に演算または処理をするコア30を識別するアドレスである。次処理アドレスは、ニューラルネットワークにおける、当該データに対して演算または処理をする構成要素(層またはノード等)を識別する情報であってもよい。
ヘッダは、以上のような構成に限らず、ルータ40が、実体データをニューラルネットワークの構成に従って演算および処理が実行されるように適切なコア30に転送することができれば、他の構成であってもよい。
図8は、ルータ40の構成を示す図である。ルータ40は、少なくとも1つの入力回路50と、少なくとも1つの出力回路60とを有する。
少なくとも1つの入力回路50のそれぞれは、複数のコア30または複数のルータ40のうちの何れか1つから、順方向データおよび逆方向データを受信する。例えば、少なくとも1つの入力回路50のそれぞれは、予め設定された何れか1つのコア30または1つのルータ40に通信路42を介して接続され、接続された1つのコア30または1つのルータ40から順方向データおよび逆方向データを受信する。
少なくとも1つの出力回路60のそれぞれは、複数のコア30または複数のルータ40のうちの何れか1つに、順方向データおよび逆方向データを送信する。例えば、少なくとも1つの出力回路60のそれぞれは、予め設定された何れか1つのコア30またはルータ40に通信路42を介して接続され、接続された1つのコア30または1つのルータ40に順方向データおよび逆方向データを送信する。
入力回路50は、当該ルータ40が有する全ての出力回路60と接続される。ただし、入力回路50は、当該入力回路50と接続している同一のコア30またはルータ40に接続された出力回路60とは、接続されていなくてもよい。すなわち、入力回路50は、当該入力回路50と同一のコア30またはルータ40に接続された出力回路60とは、接続されていなくてもよい。
例えば、ルータ40は、入力回路50および出力回路60の第1の組と、入力回路50および出力回路60の第2の組と、入力回路50および出力回路60の第3の組と、入力回路50および出力回路60の第4の組と、入力回路50および出力回路60の第5の組とを有する。第1の組および第2の組は、マトリクス状における第1配列方向に隣接する他のルータ40に接続される。第3の組および第4の組は、マトリクス状における第2配列方向に隣接する他のルータ40に接続される。第5の組は、当該ルータ40に対応して設けられたコア30に接続される。
なお、図8の接続例では、入力回路50は、複数の出力回路60のそれぞれと互いに異なる信号線により接続されている。しかし、入力回路50は、複数の出力回路60のそれぞれと共通のバスにより接続されていてもよい。すなわち、ルータ40は、少なくとも1つの入力回路50のそれぞれおよび少なくとも1つの出力回路60のそれぞれが、同一のバスに接続される構成であってもよい。この場合、入力回路50は、宛先となる出力回路60の識別子を付加したデータをバスに送信する。出力回路60は、バスから、自身の識別子が付加されたデータを選択して受信する。これにより、入力回路50は、少なくとも1つの出力回路60のうち、特定の1つの出力回路60に順方向データおよび逆方向データを送信することができる。
図9は、入力回路50および出力回路60の構成を示す図である。なお、図9の例においては、入力回路50と出力回路60とが一対一で接続されているが、入力回路50は、当該ルータ40内の1または複数の出力回路60と接続される。また、出力回路60は、当該ルータ40内の1または複数の入力回路50と接続される。
入力回路50は、受信部52と、入力記憶部54と、ルータ内送信部56とを含む。受信部52は、当該入力回路50に通信路42を介して接続されたコア30またはルータ40から要求信号、順方向データおよび逆方向データを受信する。なお、受信部52の処理の詳細は、後述において図10を参照してさらに説明する。
入力記憶部54は、受信部52が受信した順方向データおよび逆方向データを記憶する。入力記憶部54は、先入れ、先出し方式のバッファ(FIFOバッファ)である。また、入力記憶部54は、例えば、順方向データおよび逆方向データのデータサイズ毎にデータをシフトするシフトレジスタであってもよい。
ルータ内送信部56は、当該ルータ40内の1または複数の出力回路60のそれぞれに、第1の要求信号、第2の要求信号、順方向データおよび逆方向データを送信する。なお、ルータ内送信部56の処理の詳細は、後述において図11を参照してさらに説明する。
出力回路60は、ルータ内受信部62と、出力記憶部64と、送信部66とを含む。ルータ内受信部62は、当該ルータ40内の1または複数の入力回路50のそれぞれから、第1の要求信号、第2の要求信号、順方向データおよび逆方向データを受信する。なお、ルータ内受信部62の処理の詳細は、後述において図12を参照してさらに説明する。
出力記憶部64は、順方向データバッファ72と、逆方向データバッファ74とを含む。順方向データバッファ72は、ルータ内受信部62が受信した順方向データを記憶する。順方向データバッファ72は、先入れ、先出し方式のバッファ(FIFOバッファ)である。また、順方向データバッファ72は、例えば、順方向データのデータサイズ毎にデータをシフトするシフトレジスタであってもよい。
逆方向データバッファ74は、ルータ内受信部62が受信した逆方向データを記憶する。逆方向データバッファ74は、先入れ、先出し方式のバッファ(FIFOバッファ)である。また、逆方向データバッファ74は、例えば、逆方向データのデータサイズ毎にデータをシフトするシフトレジスタであってもよい。
送信部66は、当該出力回路60に通信路42を介して接続されたコア30またはルータ40に、要求信号、順方向データおよび逆方向データを送信する。なお、送信部66の処理の詳細は、後述において図13を参照してさらに説明する。
図10は、入力回路50の受信部52の処理を示すフローチャートである。当該入力回路50に通信路42を介して接続されたコア30またはルータ40から要求信号が送信された場合、受信部52は、以下のS11〜S16の処理を実行する。
まず、S11において、受信部52は、当該入力回路50に通信路42を介して接続されたコア30またはルータ40から要求信号を受信する。続いて、S12において、受信部52は、入力記憶部54に空き容量が存在するか否かを判断する。
入力記憶部54に空き容量が存在しない場合(S12のNo)、S13において、受信部52は、処理を一定時間待機する。受信部52は、一定時間待機した後、処理をS12に戻し、入力記憶部54に空き容量ができるまでS12およびS13の処理を繰り返す。なお、受信部52は、一定回数または所定時間以上待機しても入力記憶部54に空き容量ができない場合には、要求信号の送信元のコア30またはルータ40に不許可信号を送信して、処理を終了してもよい。
入力記憶部54に空き容量が存在する場合(S12のYes)、S14において、受信部52は、許可信号を、要求信号の送信元のコア30またはルータ40に送信する。要求信号の送信元のコア30またはルータ40は、許可信号を受信した場合、順方向データまたは逆方向データを当該入力回路50に送信する。
続いて、S15において、受信部52は、要求信号の送信元のコア30またはルータ40から、順方向データまたは逆方向データを受信する。そして、S16において、受信部52は、受信した順方向データまたは逆方向データを入力記憶部54に書き込む。受信部52は、S16の処理後、本フローを終了する。
図11は、入力回路50のルータ内送信部56の処理を示すフローチャートである。ルータ内送信部56は、ニューラルネットワーク装置10の動作中、下記のS21からS28の処理を繰り返して実行する。
S21において、ルータ内送信部56は、入力記憶部54を監視して、入力記憶部54に順方向データまたは逆方向データが存在するか否かを判断する。ルータ内送信部56は、入力記憶部54に順方向データおよび逆方向データが存在しない場合(S21のNo)、S21の処理を繰り返す。
入力記憶部54に順方向データまたは逆方向データが存在する場合(S21のYes)、S22において、ルータ内送信部56は、まだ未送信であって、最も過去に書き込まれた1つの順方向データまたは1つの逆方向データを、入力記憶部54から読み出す。
続いて、S23において、ルータ内送信部56は、読み出した順方向データまたは逆方向データのヘッダを参照して、当該ルータ40に接続されたコア30またはルータ40の中から1つの送信先を決定する。例えば、ルータ内送信部56は、ヘッダを解析して、読み出した順方向データまたは逆方向データに対して次の演算および処理を実行するコア30のアドレス(例えば、次処理アドレス)を検出する。次処理アドレスを検出した後、ルータ内送信部56は、当該ルータ40から、検出したコア30へと適切に(例えば、最短時間または最短距離で)データを転送できる1つの経路を見つけ出す。そして、ルータ内送信部56は、当該ルータ40に接続されたコア30またはルータ40の中から、見つけ出した1つの経路上のコア30またはルータ40を送信先として決定する。
続いて、S24において、ルータ内送信部56は、順方向データを読み出した場合には、送信先として決定したコア30またはルータ40に接続された出力回路60に対して、順方向データの受信を要求する第1の要求信号を送信する。また、ルータ内送信部56は、逆方向データを読み出した場合には、送信先として決定したコア30またはルータ40に接続された出力回路60に対して、逆方向データの受信を要求する第2の要求信号を送信する。
出力回路60は、第1の要求信号を受信した場合、順方向データを受信可能であれば、第1の要求信号の送信元に許可信号を送信する。また、出力回路60は、第2の要求信号を受信した場合、逆方向データを受信可能であれば、第2の要求信号の送信元に許可信号を送信する。
続いて、S25において、ルータ内送信部56は、送信先として決定したコア30またはルータ40に接続された出力回路60から、許可信号を受信したか否かを判断する。許可信号を受信していない場合(S25のNo)、S26において、ルータ内送信部56は、処理を一定時間待機する。ルータ内送信部56は、一定時間待機した後、処理をS25に戻し、許可信号が受信できるまでS25およびS26の処理を繰り返す。なお、ルータ内送信部56は、一定回数または所定時間以上待機しても許可信号を受信できない場合、または、出力回路60から不許可信号を受信した場合には、処理をS21に戻してもよい。
許可信号を受信した場合(S25のYes)、S27において、ルータ内送信部56は、送信先として決定したコア30またはルータ40に接続された出力回路60に対して、読み出した順方向データまたは逆方向データを送信する。続いて、S28において、ルータ内送信部56は、送信した順方向データまたは逆方向データを入力記憶部54から削除する。ルータ内送信部56は、S28の処理後、処理をS21に戻して、本フローを繰り返し実行する。
図12は、出力回路60のルータ内受信部62の処理を示すフローチャートである。当該ルータ40が有する少なくとも1つの入力回路50の何れかから、当該出力回路60へと第1の要求信号または第2の要求信号が送信された場合、ルータ内受信部62は、以下のS41〜S52の処理を実行する。
まず、S41において、ルータ内受信部62は、何れかの入力回路50から、第1の要求信号または第2の要求信号を受信する。続いて、S42において、ルータ内受信部62は、順方向データの受信要求か(すなわち、第1の要求信号を受信したか)、または、逆方向データの受信要求か(すなわち、第2の要求信号を受信したか)を判断する。
順方向データの受信要求の場合(S42のYes)、ルータ内受信部62は、処理をS43に進める。S43において、ルータ内受信部62は、出力記憶部64における順方向データバッファ72に空き容量が存在するか否かを判断する。
順方向データバッファ72に空き容量が存在しない場合(S43のNo)、S44において、ルータ内受信部62は、処理を一定時間待機する。ルータ内受信部62は、一定時間待機した後、処理をS43に戻し、順方向データバッファ72に空き容量ができるまでS43およびS44の処理を繰り返す。なお、ルータ内受信部62は、一定回数または所定時間以上待機しても空き容量ができない場合には、第1の要求信号の送信元の入力回路50に不許可信号を送信して、処理を終了してもよい。
順方向データバッファ72に空き容量が存在する場合(S43のYes)、S45において、ルータ内受信部62は、許可信号を、第1の要求信号の送信元の入力回路50に送信する。第1の要求信号の送信元の入力回路50は、許可信号を受信した場合、順方向データを当該出力回路60に送信する。
続いて、S46において、ルータ内受信部62は、第1の要求信号の送信元の入力回路50から、順方向データを受信する。そして、S47において、ルータ内受信部62は、受信した順方向データを順方向データバッファ72に書き込む。ルータ内受信部62は、S47の処理後、本フローを終了する。
S43〜S47を実行することにより、出力回路60は、順方向データを記憶するための空き容量が無い場合には、空き容量を確保するまで受信を待機する。これにより、出力回路60は、順方向データを確実に送信先のコア30に転送することができる。
逆方向データの受信要求の場合(S42のNo)、ルータ内受信部62は、処理をS48に進める。S48において、ルータ内受信部62は、出力記憶部64における逆方向データバッファ74に空き容量が存在するか否かを判断する。
出力記憶部64における逆方向データバッファ74に空き容量が存在しない場合(S48のNo)、S49において、ルータ内受信部62は、出力記憶部64における逆方向データバッファ74に記憶されている逆方向データを削除する。例えば、逆方向データバッファ74がFIFOバッファである場合、ルータ内受信部62は、逆方向データバッファ74における先頭に記憶された1つの逆方向データを削除する。すなわち、最も過去に書き込まれた1つの逆方向データを逆方向データバッファ74から削除する。これにより、ルータ内受信部62は、出力記憶部64における逆方向データバッファ74に空き容量を確保することができる。
S49で逆方向データを逆方向データバッファ74から削除した後、または、そもそも逆方向データバッファ74に空き容量が存在した場合(S48のYes)、S50において、ルータ内受信部62は、許可信号を、第2の要求信号の送信元の入力回路50に送信する。第2の要求信号の送信元の入力回路50は、許可信号を受信した場合、逆方向データを当該出力回路60に送信する。
続いて、S51において、ルータ内受信部62は、第2の要求信号の送信元の入力回路50から、逆方向データを受信する。そして、S52において、ルータ内受信部62は、受信した逆方向データを逆方向データバッファ74に書き込む。ルータ内受信部62は、S52の処理後、本フローを終了する。
S48〜S52を実行することにより、出力回路60は、逆方向データを記憶するための空き容量が無い場合には、出力記憶部64から逆方向データを削除して、空き容量を確保し、直ぐに逆方向データを受信する。これにより、出力回路60は、逆方向データの滞留を無くし、トラフィックをスムーズにすることができる。
図13は、出力回路60の送信部66の処理を示すフローチャートである。送信部66は、ニューラルネットワーク装置10の動作中、下記のS61からS67の処理を繰り返して実行する。
S61において、送信部66は、出力記憶部64を監視して、出力記憶部64に、順方向データまたは逆方向データが存在するか否かを判断する。送信部66は、出力記憶部64に順方向データおよび逆方向データが存在しない場合(S61のNo)、S61の処理を繰り返す。
出力記憶部64に順方向データまたは逆方向データが存在する場合(S61のYes)、S62において、送信部66は、当該出力回路60に通信路42を介して接続されたコア30またはルータ40に、要求信号を送信する。コア30またはルータ40は、要求信号を受信した場合、順方向データおよび逆方向データを受信可能であれば、許可信号を送信元のコア30またはルータ40に送信する。
続いて、S63において、送信部66は、当該出力回路60に接続されたコア30またはルータ40から許可信号を受信したか否かを判断する。許可信号を受信していない場合(S63のNo)、S64において、送信部66は、処理を一定時間待機する。送信部66は、一定時間待機した後、処理をS63に戻し、許可信号が受信できるまでS63およびS64の処理を繰り返す。なお、送信部66は、一定回数または所定時間以上待機しても許可信号を受信できない場合、または、当該出力回路60に接続されたコア30またはルータ40から不許可信号を受信した場合には、処理をS61に戻してもよい。
許可信号を受信した場合(S63のYes)、S65において、送信部66は、まだ未送信であって、最も過去に書き込まれた1つの順方向データまたは1つの逆方向データを、出力記憶部64の順方向データバッファ72または逆方向データバッファ74から読み出す。なお、送信部66は、順方向データバッファ72に記憶された順方向データと逆方向データバッファ74に記憶された逆方向データとを交互に読み出してもよい。また、送信部66は、順方向データバッファ72に記憶された順方向データを3回読み出した後に、逆方向データバッファ74に記憶された逆方向データを1回読み出すといったように、逆方向データよりも順方向データを優先して読み出してもよい。
続いて、S66において、送信部66は、当該出力回路60に通信路42を介して接続されたコア30またはルータ40に対して、読み出した順方向データまたは逆方向データを送信する。続いて、S67において、送信部66は、送信した順方向データまたは逆方向データを出力記憶部64から削除する。送信部66は、S67の処理後、処理をS61に戻して、本フローを繰り返し実行する。
以上のように本実施形態に係るニューラルネットワーク装置10は、ニューラルネットワークにおける学習処理(逆方向処理)において伝播される逆方向データが、何れかのルータ40で滞留した場合、滞留した逆方向データを削除して、逆方向データの転送をスムーズにする。これにより、ニューラルネットワーク装置10は、内部でのトラフィックの停滞を軽減することができる。
また、ニューラルネットワーク装置10は、ニューラルネットワークにおける通常の演算処理(順方向処理)において伝播される順方向データが、何れかのルータ40で停滞しても削除しない。これにより、ニューラルネットワーク装置10は、外部装置から与えられる入力データに対する演算を確実に実行することができる。また、ニューラルネットワーク装置10は、逆方向データが転送できなくなることにより学習精度が低下するが、少なくとも演算を確実に実行することができるので、データ削除による影響を少なくすることができる。
また、ニューラルネットワーク装置10は、ルータ40での逆方向データの滞留を無くすことができるので、ルータ40内での順方向データを記憶するための記憶容量を大きくし、逆方向データを記憶するための記憶容量を小さくすることができる。これにより、ニューラルネットワーク装置10は、少ないメモリ容量で効率良くデータ転送を実現し、コストを小さくすることができる。
図14は、第1変形例に係る出力回路60内の出力記憶部64の構成を示す図である。出力記憶部64は、例えば、図14に示すような構成であってもよい。なお、第1変形例については、上述で説明した構成の相違点を中心に説明する。第2変形例以降も同様である。
第1変形例に係る出力記憶部64は、データ記憶部82と、メモリコントローラ84とを含む。データ記憶部82は、ランダムアクセスが可能なメモリであり、順方向データおよび逆方向データを記憶する。メモリコントローラ84は、データ記憶部82に対するアクセス制御をする。
メモリコントローラ84は、データ記憶部82に対して、順方向データを記憶させるための第1の記憶容量、および、逆方向データを記憶させるための第2の記憶容量を設定している。例えば、メモリコントローラ84は、データ記憶部82に対して、順方向データを記憶させるための第1の記憶容量を少なくとも有する順方向データ領域と、逆方向データを記憶させるための第2の記憶容量を少なくとも有する逆方向データ領域とを設定している。
ルータ内受信部62は、順方向データの受信を要求する第1の要求信号を何れか1つの入力回路50から受信した場合、データ記憶部82に記憶されている順方向データの合計容量が、第1の記憶容量に達しているか否かを判断する。ルータ内受信部62は、順方向データの合計容量が第1の記憶容量に達していない場合には、第1の要求信号を送信した入力回路50に許可信号を返信する。
ルータ内受信部62は、順方向データの合計容量が第1の記憶容量に達している場合には、許可信号を返信せず、順方向データの合計容量が第1の記憶容量を下回った後に、許可信号を返信する。
また、ルータ内受信部62は、逆方向データの受信を要求する第2の要求信号を何れか1つの入力回路50から受信した場合、データ記憶部82に記憶されている逆方向データの合計容量が、第2の記憶容量に達しているか否かを判断する。ルータ内受信部62は、逆方向データの合計容量が第2の記憶容量に達していない場合には、第2の要求信号を送信した入力回路50に許可信号を返信する。
ルータ内受信部62は、逆方向データの合計容量が第2の記憶容量に達している場合には、データ記憶部82に記憶されている何れか1つの逆方向データを削除する。そして、ルータ内受信部62は、逆方向データを削除した後に、許可信号を返信する。
また、メモリコントローラ84は、データ記憶部82に記憶された順方向データおよび逆方向データの書き込み順を管理する。そして、送信部66は、メモリコントローラ84により管理された書き込み順に従い、最も過去に書き込まれた1つの順方向データまたは1つの逆方向データを読み出して、当該出力回路60に接続されたコア30またはルータ40に送信する。
なお、メモリコントローラ84は、データ記憶部82に記憶されている順方向データの合計容量の時間変化および逆方向データの合計容量の時間変化に応じて、順方向データを記憶させるための第1の記憶容量および逆方向データを記憶させるための第2の記憶容量を変更してもよい。例えば、メモリコントローラ84は、一定時間毎に、順方向データの受信量と逆方向データの受信量の比率を算出し、比率の変化に応じて、第1の記憶容量と第2の記憶容量の比率を変更する。
このような第1変形例に係る出力回路60は、ランダムアクセス可能なメモリを用いて順方向データおよび逆方向データを記憶することができる。
図15は、第2変形例に係る出力回路60のルータ内受信部62の処理を示すフローチャートである。出力記憶部64が、例えば、図14に示すようなランダムアクセス可能なデータ記憶部82とメモリコントローラ84を含む構成である場合、出力回路60は、図15に示すような処理を実行してもよい。
まず、S71において、ルータ内受信部62は、何れかの入力回路50から、第1の要求信号または第2の要求信号を受信する。続いて、S72において、ルータ内受信部62は、データ記憶部82に空き容量が存在するか否かを判断する。
データ記憶部82に空き容量が存在しない場合(S72のNo)、ルータ内受信部62は、処理をS73に進める。S73において、ルータ内受信部62は、順方向データの受信要求か(すなわち、第1の要求信号を受信したか)、または、逆方向データの受信要求か(すなわち、第2の要求信号を受信したか)を判断する。
順方向データの受信要求の場合(S73のYes)、ルータ内受信部62は、処理をS74に進める。S74において、ルータ内受信部62は、処理を一定時間待機する。ルータ内受信部62は、一定時間待機した後、処理をS72に戻し、データ記憶部82に空き容量ができるまでS72、S73およびS74の処理を繰り返す。なお、ルータ内受信部62は、一定回数または所定時間以上待機しても空き容量ができない場合には、第1の要求信号の送信元の入力回路50に不許可信号を送信して、処理を終了してもよい。
逆方向データの受信要求の場合(S73のNo)、ルータ内受信部62は、処理をS75に進める。S75において、ルータ内受信部62は、データ記憶部82に記憶されている逆方向データを削除する。例えば、ルータ内受信部62は、最も過去に書き込まれた1つの逆方向データをデータ記憶部82から削除する。これにより、ルータ内受信部62は、データ記憶部82に空き容量を確保することができる。なお、ルータ内受信部62は、データ記憶部82に逆方向データが存在しない場合には、処理をせずに次の処理に進める。
データ記憶部82に空き容量が存在すると判断された場合(S72のYes)または1つの逆方向データをデータ記憶部82から削除した場合(S75)、S76において、ルータ内受信部62は、許可信号を、第1の要求信号または第2の要求信号の送信元の入力回路50に送信する。第1の要求信号または第2の要求信号の送信元の入力回路50は、許可信号を受信した場合、順方向データまたは逆方向データを当該出力回路60に送信する。
続いて、S77において、ルータ内受信部62は、第1の要求信号または第2の要求信号の送信元の入力回路50から、順方向データまたは逆方向データを受信する。そして、S78において、ルータ内受信部62は、受信した逆方向データをデータ記憶部82に書き込む。なお、ルータ内受信部62は、データ記憶部82に逆方向データが存在せずに、S75で空き容量を確保できなかった場合には、S77で受信した逆方向データを書き込まず破棄する。
このような第2変形例に係る出力回路60は、データ記憶部82に順方向データまたは逆方向データを区別なく記憶させることができる。さらに、第2変形例に係る出力回路60は、データ記憶部82の空き容量が存在しない場合に、逆方向データを受信した場合には、滞留した逆方向データを削除して、逆方向データの転送をスムーズにすることができる。
また、入力回路50は、通信路42を介して接続されたコア30またはルータ40から要求信号を受信した場合、入力記憶部54に空き容量が存在するか否かを判断している。そして、入力回路50は、入力記憶部54に空き容量が存在しない場合、入力記憶部54に空き容量ができるまで処理を一定時間待機している。そこで、第2変形例において、入力回路50は、コア30またはルータ40から要求信号を受信した場合であって、入力記憶部54に空き容量が存在しない場合、当該ルータ40内の出力回路60に対して、逆方向データの削除を指示する信号を送信してもよい。これにより、出力回路60のデータ記憶部82に空き容量ができ、入力回路50が、出力回路60へデータを送信することが可能となる。そして、入力回路50は、出力回路60へデータを送信することができると、入力記憶部54に空き容量を作成することができる。
図16は、第3変形例に係る出力回路60のルータ内受信部62の処理を示すフローチャートである。出力記憶部64が、例えば、図14に示すようなランダムアクセス可能なデータ記憶部82とメモリコントローラ84を含む構成である場合、出力回路60は、図16に示すような処理を実行してもよい。
まず、S81において、ルータ内受信部62は、何れかの入力回路50から、第1の要求信号または第2の要求信号を受信する。続いて、S82において、ルータ内受信部62は、データ記憶部82に空き容量が存在するか否かを判断する。
データ記憶部82に空き容量が存在しない場合(S82のNo)、ルータ内受信部62は、処理をS83に進める。S83において、ルータ内受信部62は、データ記憶部82に逆方向データが存在するか否かを判断する。
データ記憶部82に逆方向データが存在しない場合(S83のNo)、ルータ内受信部62は、処理をS84に進める。S84において、ルータ内受信部62は、処理を一定時間待機する。ルータ内受信部62は、一定時間待機した後、処理をS82に戻し、データ記憶部82に空き容量ができるまでS82、S83およびS84の処理を繰り返す。なお、ルータ内受信部62は、一定回数または所定時間以上待機しても空き容量ができない場合には、第1の要求信号または第2の要求信号の送信元の入力回路50に不許可信号を送信して、処理を終了してもよい。
データ記憶部82に逆方向データが存在する場合(S83のYes)、ルータ内受信部62は、処理をS85に進める。S85において、ルータ内受信部62は、データ記憶部82に記憶されている逆方向データを削除する。例えば、ルータ内受信部62は、最も過去に書き込まれた1つの逆方向データをデータ記憶部82から削除する。これにより、ルータ内受信部62は、データ記憶部82に空き容量を存在させることができる。
データ記憶部82に空き容量が存在すると判断された場合(S82のYes)または1つの逆方向データをデータ記憶部82から削除した場合(S85)、S86において、ルータ内受信部62は、許可信号を、第1の要求信号または第2の要求信号の送信元の入力回路50に送信する。
続いて、S87において、ルータ内受信部62は、第1の要求信号または第2の要求信号の送信元の入力回路50から、順方向データまたは逆方向データを受信する。そして、S88において、ルータ内受信部62は、受信した順方向データまたは逆方向データをデータ記憶部82に書き込む。ルータ内受信部62は、S88の処理後、本フローを終了する。
このような第3変形例に係る出力回路60は、データ記憶部82に順方向データまたは逆方向データを区別なく記憶させることができる。さらに、第3変形例に係る出力回路60は、データ記憶部82の空き容量が存在しない場合に、滞留した逆方向データを削除して、順方向データおよび逆方向データの転送をスムーズにすることができる。
以上、実施形態に係るニューラルネットワーク装置10およびいくつかの変形例を説明した。実施形態および変形例においては、入力回路50に備えられる入力記憶部54は、通常のFIFOバッファまたはシフトレジスタを想定している。しかし、入力回路50に備えられる入力記憶部54は、ランダムアクセス可能なメモリであってもよい。この場合、入力回路50の受信部52は、出力回路60のルータ内受信部62と同様の処理を実行してもよい。
すなわち、入力回路50は、要求信号を受信した場合であって、入力記憶部54における逆方向データを記憶させるための空き容量が存在しない場合、入力記憶部54に記憶されている逆方向データを削除する。例えば、この場合、入力回路50は、最も過去に書き込まれた逆方向データを削除する。また、入力回路50は、第1変形例、第2変形例および第3変形例で説明したルータ内受信部62と同様の処理を入力記憶部54に対して実行してもよい。
また、入力回路50に備えられる入力記憶部54がFIFOバッファまたはシフトレジスタである場合、入力回路50は、要求信号を受信した場合であって、入力記憶部54における逆方向データを記憶させるための空き容量が存在しない場合、FIFOバッファにおける先頭に記憶された1つの逆方向データを削除する。ただし、FIFOバッファにおける先頭に記憶されたデータが、順方向データである場合には、入力回路50は、実施形態で説明した処理を実行する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
10 ニューラルネットワーク装置
20 データ処理部
22 通信部
24 学習部
26 設定部
30 コア
40 ルータ
42 通信路
50 入力回路
52 受信部
54 入力記憶部
56 ルータ内送信部
60 出力回路
62 ルータ内受信部
64 出力記憶部
66 送信部
72 順方向データバッファ
74 逆方向データバッファ
82 データ記憶部
84 メモリコントローラ

Claims (13)

  1. それぞれが、ニューラルネットワークにおける一部の構成要素の演算および処理を実行する複数のコアと、
    前記複数のコアのそれぞれから出力されたデータを、前記ニューラルネットワークの構成に従って演算および処理が実行されるように、前記複数のコアの何れか1つのコアに転送する複数のルータと、
    を備え、
    前記複数のルータのそれぞれは、入力回路と、出力回路と、を有し、
    前記複数のコアのそれぞれは、前記ニューラルネットワークを順方向に伝播する順方向データ、および、前記ニューラルネットワークを逆方向に伝播する逆方向データの少なくとも一方を送信し、
    前記入力回路は、前記複数のコアおよび前記複数のルータのうちの何れか1つから、前記順方向データおよび前記逆方向データを受信し、
    前記出力回路または前記入力回路は、
    データの受信を要求する要求信号を受信した場合であって、前記逆方向データを記憶させるための空き容量が存在しない場合、記憶している前記逆方向データを削除する
    ニューラルネットワーク装置。
  2. 前記出力回路は、
    出力記憶部と、
    前記入力回路から前記順方向データおよび前記逆方向データを受信し、受信した前記順方向データおよび前記逆方向データを前記出力記憶部に書き込むルータ内受信部と、
    前記出力記憶部に記憶された前記順方向データおよび前記逆方向データを、前記複数のコアおよび前記複数のルータのうちの何れか1つに送信する送信部と、
    を含み、
    前記ルータ内受信部は、
    前記入力回路から前記逆方向データの受信を要求する要求信号を受信した場合であって、前記逆方向データを記憶させるための空き容量が前記出力記憶部に存在しない場合、前記出力記憶部に記憶されている前記逆方向データを削除する
    請求項1に記載のニューラルネットワーク装置。
  3. 前記入力回路は、前記複数のコアおよび前記複数のルータのうち何れか1つのコアまたはルータに接続され、当該入力回路に接続されたコアまたはルータから前記順方向データまたは前記逆方向データを受信し、
    前記出力回路は、前記複数のコアおよび前記複数のルータのうち何れか1つのコアまたはルータに接続され、当該出力回路に接続されたコアまたはルータに前記順方向データまたは前記逆方向データを送信する
    請求項2に記載のニューラルネットワーク装置。
  4. 前記入力回路は、
    入力記憶部と、
    当該ルータに接続されたコアまたはルータから前記順方向データおよび前記逆方向データを受信し、受信した前記順方向データおよび前記逆方向データを前記入力記憶部に書き込む受信部と、
    前記入力記憶部に記憶された前記順方向データまたは前記逆方向データを読み出し、読み出した前記順方向データまたは前記逆方向データの送信先となる、当該ルータに接続されたコアまたはルータを決定し、決定したコアまたはルータに接続された出力回路に、読み出した前記順方向データまたは前記逆方向データを送信するルータ内送信部と、
    を含む請求項3に記載のニューラルネットワーク装置。
  5. 前記出力記憶部は、前記順方向データを記憶する順方向データバッファを含み、
    前記送信部は、最も過去に書き込まれた前記順方向データを前記順方向データバッファから読み出し、読み出した前記順方向データを前記送信先に送信する
    請求項4に記載のニューラルネットワーク装置。
  6. 前記出力記憶部は、前記逆方向データを記憶して書き込み順に出力する逆方向データバッファをさらに含み、
    前記送信部は、最も過去に書き込まれた前記逆方向データを前記逆方向データバッファから読み出し、読み出した前記逆方向データを前記送信先に送信する
    請求項5に記載のニューラルネットワーク装置。
  7. 前記送信部は、送信した前記順方向データまたは前記逆方向データを前記出力記憶部から削除する
    請求項2から6の何れか1項に記載のニューラルネットワーク装置。
  8. 前記ルータ内受信部は、前記逆方向データを記憶させるための空き容量が前記出力記憶部に存在しない場合、最も過去に書き込まれた1つの前記逆方向データを前記出力記憶部から削除する
    請求項2から7の何れか1項に記載のニューラルネットワーク装置。
  9. 前記ルータ内受信部は、前記要求信号を受信した場合、前記要求信号を送信した入力回路に、前記逆方向データの送信を許可する許可信号を送信する
    請求項2から8の何れか1項に記載のニューラルネットワーク装置。
  10. 前記出力記憶部は、
    前記順方向データおよび前記逆方向データを記憶するランダムアクセス可能なデータ記憶部と、
    前記データ記憶部に対するアクセス制御をするメモリコントローラと、
    を含み、
    前記メモリコントローラは、前記データ記憶部に対して、前記順方向データを記憶させるための記憶容量および前記逆方向データを記憶させるための記憶容量を設定しており、
    前記ルータ内受信部は、前記逆方向データの受信を要求する要求信号を何れか1つの入力回路から受信した場合であって、前記データ記憶部に記憶されている前記逆方向データの合計容量が、前記逆方向データを記憶させるための記憶容量に達している場合、前記データ記憶部に記憶されている何れか1つの前記逆方向データを削除する
    請求項2から5の何れか1項に記載のニューラルネットワーク装置。
  11. 前記出力記憶部は、
    前記順方向データおよび前記逆方向データを記憶するランダムアクセス可能なデータ記憶部を含み、
    前記ルータ内受信部は、前記逆方向データの受信を要求する要求信号を何れか1つの入力回路から受信した場合であって、前記データ記憶部の空き容量が存在しない場合、前記データ記憶部に記憶されている前記逆方向データを削除する
    請求項2から5の何れか1項に記載のニューラルネットワーク装置。
  12. 前記出力記憶部は、
    前記順方向データおよび前記逆方向データを記憶するランダムアクセス可能なデータ記憶部を含み、
    前記ルータ内受信部は、前記順方向データまたは前記逆方向データの受信を要求する要求信号を何れか1つの入力回路から受信した場合であって、前記データ記憶部の空き容量が存在しない場合、前記データ記憶部に記憶されている何れか1つの前記逆方向データを削除する
    請求項2から5の何れか1項に記載のニューラルネットワーク装置。
  13. 前記複数のコアは、前記複数のルータに対して一対一に対応して設けられ、対応して設けられたルータとデータを送受信する
    請求項1から12の何れか1項に記載のニューラルネットワーク装置。
JP2017222259A 2017-11-17 2017-11-17 ニューラルネットワーク装置 Active JP6794336B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017222259A JP6794336B2 (ja) 2017-11-17 2017-11-17 ニューラルネットワーク装置
US15/911,366 US11461617B2 (en) 2017-11-17 2018-03-05 Neural network device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017222259A JP6794336B2 (ja) 2017-11-17 2017-11-17 ニューラルネットワーク装置

Publications (2)

Publication Number Publication Date
JP2019095861A JP2019095861A (ja) 2019-06-20
JP6794336B2 true JP6794336B2 (ja) 2020-12-02

Family

ID=66533079

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017222259A Active JP6794336B2 (ja) 2017-11-17 2017-11-17 ニューラルネットワーク装置

Country Status (2)

Country Link
US (1) US11461617B2 (ja)
JP (1) JP6794336B2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802489B1 (en) 2017-12-29 2020-10-13 Apex Artificial Intelligence Industries, Inc. Apparatus and method for monitoring and controlling of a neural network using another neural network implemented on one or more solid-state chips
US11210586B1 (en) 2018-04-20 2021-12-28 Perceive Corporation Weight value decoder of neural network inference circuit
US11468145B1 (en) 2018-04-20 2022-10-11 Perceive Corporation Storage of input values within core of neural network inference circuit
US10977338B1 (en) 2018-04-20 2021-04-13 Perceive Corporation Reduced-area circuit for dot product computation
US12093696B1 (en) * 2018-04-20 2024-09-17 Perceive Corporation Bus for transporting output values of a neural network layer to cores specified by configuration data
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11954220B2 (en) 2018-05-21 2024-04-09 Pure Storage, Inc. Data protection for container storage
US12086431B1 (en) 2018-05-21 2024-09-10 Pure Storage, Inc. Selective communication protocol layering for synchronous replication
US11455409B2 (en) 2018-05-21 2022-09-27 Pure Storage, Inc. Storage layer data obfuscation
US11675503B1 (en) 2018-05-21 2023-06-13 Pure Storage, Inc. Role-based data access
US11763133B2 (en) * 2018-08-31 2023-09-19 Servicenow Canada Inc. Data point suitability determination from edge device neural networks
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US11157692B2 (en) * 2019-03-29 2021-10-26 Western Digital Technologies, Inc. Neural networks using data processing units
US11941533B1 (en) 2019-05-21 2024-03-26 Perceive Corporation Compiler for performing zero-channel removal
KR20210030653A (ko) * 2019-09-10 2021-03-18 주식회사 모빌린트 복수 개의 코어를 갖는 연산 장치
US10956807B1 (en) 2019-11-26 2021-03-23 Apex Artificial Intelligence Industries, Inc. Adaptive and interchangeable neural networks utilizing predicting information
US12081646B2 (en) 2019-11-26 2024-09-03 Apex Ai Industries, Llc Adaptively controlling groups of automated machines
US11366434B2 (en) 2019-11-26 2022-06-21 Apex Artificial Intelligence Industries, Inc. Adaptive and interchangeable neural networks
US11367290B2 (en) 2019-11-26 2022-06-21 Apex Artificial Intelligence Industries, Inc. Group of neural networks ensuring integrity
US10691133B1 (en) * 2019-11-26 2020-06-23 Apex Artificial Intelligence Industries, Inc. Adaptive and interchangeable neural networks
US11907571B2 (en) 2020-07-13 2024-02-20 SK Hynix Inc. Read threshold optimization systems and methods using domain transformation
JP7358312B2 (ja) * 2020-08-25 2023-10-10 株式会社東芝 記憶装置およびニューラルネットワーク装置
US11355204B2 (en) 2020-09-03 2022-06-07 SK Hynix Inc. Efficient read-threshold calculation method for parametric PV-level modeling
US20220114135A1 (en) * 2020-09-21 2022-04-14 Mostafizur Rahman Computer architecture for artificial intelligence and reconfigurable hardware
US11430530B2 (en) * 2021-01-25 2022-08-30 SK Hynix Inc. Deep learning based program-verify modeling and voltage estimation for memory devices
US11514999B2 (en) 2021-04-16 2022-11-29 SK Hynix Inc. Systems and methods for parametric PV-level modeling and read threshold voltage estimation
US11749354B2 (en) 2021-07-13 2023-09-05 SK Hynix Inc. Systems and methods for non-parametric PV-level modeling and read threshold voltage estimation
US11769555B2 (en) 2021-07-27 2023-09-26 SK Hynix Inc. Read threshold voltage estimation systems and methods for parametric PV-level modeling
US11769556B2 (en) 2021-07-27 2023-09-26 SK Hynix Inc. Systems and methods for modeless read threshold voltage estimation
US11854629B2 (en) 2021-11-22 2023-12-26 SK Hynix Inc. System and method for non-parametric optimal read threshold estimation using deep neural network

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02271463A (ja) * 1989-04-13 1990-11-06 Seiko Epson Corp ニューラルネットワークシミュレータ
JPH04344970A (ja) * 1991-05-23 1992-12-01 Nippon Telegr & Teleph Corp <Ntt> ニューラルネット処理装置
JPH05307624A (ja) 1991-09-05 1993-11-19 Ricoh Co Ltd 信号処理装置
JPH05216859A (ja) 1991-12-11 1993-08-27 Ricoh Co Ltd 信号処理装置
US5485548A (en) 1992-08-01 1996-01-16 Ricoh Company, Ltd. Signal processing apparatus using a hierarchical neural network
JPH0784976A (ja) * 1993-09-10 1995-03-31 Toshiba Corp ニューラルネットワーク
JPH086916A (ja) * 1994-06-22 1996-01-12 Hitachi Ltd リカレント型ニューラルネットワーク学習方法及びその装置
JPH09259100A (ja) * 1996-03-19 1997-10-03 Toshiba Corp ニューラルネットワーク装置
JPH1153335A (ja) * 1997-07-31 1999-02-26 Ricoh Co Ltd 並列bp逐次学習処理装置
JP4740763B2 (ja) * 2006-02-15 2011-08-03 株式会社日立製作所 ストレージシステム及びストレージコントローラ
US20130320989A1 (en) * 2011-03-07 2013-12-05 Hitachi, Ltd. Battery state estimation method and battery control system
US8909576B2 (en) * 2011-09-16 2014-12-09 International Business Machines Corporation Neuromorphic event-driven neural computing architecture in a scalable neural network
US8977583B2 (en) * 2012-03-29 2015-03-10 International Business Machines Corporation Synaptic, dendritic, somatic, and axonal plasticity in a network of neural cores using a plastic multi-stage crossbar switching
US9159020B2 (en) * 2012-09-14 2015-10-13 International Business Machines Corporation Multiplexing physical neurons to optimize power and area
KR20150034900A (ko) 2013-09-26 2015-04-06 삼성전자주식회사 뉴런 회로들을 연결하는 시냅스 회로, 뉴로모픽 회로를 구성하는 단위 셀 및 뉴로모픽 회로
US10474948B2 (en) 2015-03-27 2019-11-12 University Of Dayton Analog neuromorphic circuit implemented using resistive memories
EP3089080A1 (en) * 2015-04-27 2016-11-02 Universität Zürich Networks and hierarchical routing fabrics with heterogeneous memory structures for scalable event-driven computing systems
US9934463B2 (en) 2015-05-15 2018-04-03 Arizona Board Of Regents On Behalf Of Arizona State University Neuromorphic computational system(s) using resistive synaptic devices
JP6502799B2 (ja) 2015-09-04 2019-04-17 株式会社東芝 信号発生装置および伝送装置
JP6309936B2 (ja) * 2015-11-17 2018-04-11 ファナック株式会社 クーラント監視機能を有する制御装置
JP6602279B2 (ja) 2016-09-20 2019-11-06 株式会社東芝 メムキャパシタ、ニューロ素子およびニューラルネットワーク装置
US10425358B2 (en) * 2016-09-29 2019-09-24 International Business Machines Corporation Network switch architecture supporting multiple simultaneous collective operations
US10885425B2 (en) * 2016-12-20 2021-01-05 Intel Corporation Network traversal using neuromorphic instantiations of spike-time-dependent plasticity
US11062203B2 (en) * 2016-12-30 2021-07-13 Intel Corporation Neuromorphic computer with reconfigurable memory mapping for various neural network topologies
JP6556768B2 (ja) 2017-01-25 2019-08-07 株式会社東芝 積和演算器、ネットワークユニットおよびネットワーク装置
WO2018154494A1 (en) * 2017-02-23 2018-08-30 Cerebras Systems Inc. Accelerated deep learning
KR102008287B1 (ko) * 2017-05-23 2019-08-07 고려대학교 산학협력단 양방향 선입 선출 메모리와 이를 이용하는 컨볼루션 연산 처리 장치
JP6773621B2 (ja) 2017-09-15 2020-10-21 株式会社東芝 演算装置

Also Published As

Publication number Publication date
US20190156180A1 (en) 2019-05-23
US11461617B2 (en) 2022-10-04
JP2019095861A (ja) 2019-06-20

Similar Documents

Publication Publication Date Title
JP6794336B2 (ja) ニューラルネットワーク装置
CN101841471B (zh) 具有连接成多维矩阵的节点的系统及其控制方法以及设备
TWI583153B (zh) 用於促進訊息單向排序之裝置、系統和方法
JP5148707B2 (ja) 待ち行列形成方法
US11620501B2 (en) Neural network apparatus
US10079782B2 (en) Facilitating communication of data packets using credit-based flow control
US20160065449A1 (en) Bandwidth-Weighted Equal Cost Multi-Path Routing
WO2022012576A1 (zh) 路径规划方法、装置、路径规划设备及存储介质
WO2021114768A1 (zh) 数据处理装置、方法、芯片、处理器、设备及存储介质
CN116915708A (zh) 路由数据包的方法、处理器及可读存储介质
KR102153814B1 (ko) 로드 균형을 위한 확률 기반 적응형 라우팅 알고리즘
JP6853479B2 (ja) 情報処理システム、情報処理装置、及び情報処理システムの制御方法
US9170979B2 (en) Converging interconnect node controlling operation related to associated future item in dependence upon data predicted based on current transaction data item passing through
US20180375801A1 (en) Apparatus and method for distribution of congestion information in a switch
US20120047220A1 (en) Data transfer device and data transfer system
JP5783008B2 (ja) ストレージ装置、ストレージシステム、データ更新方法およびデータ管理プログラム
JP7003021B2 (ja) ニューラルネットワーク装置
JP4724743B2 (ja) データ転送装置およびデータ転送装置の制御方法
KR20210004348A (ko) 멀티코어 뉴로모픽 장치 및 그 장치에서 수행되는 글로벌 라우팅 방법
JP2020005017A (ja) 動的可変容量メモリ装置及び記憶容量動的可変方法
JP5379075B2 (ja) データ入出力装置、データ記憶方法及びプログラム
CN117221212B (zh) 片上光网络低拥塞路由方法及相关设备
JP2018207396A (ja) 情報処理装置、情報処理方法及びプログラム
CN107087010B (zh) 中间数据传输方法及系统、分布式系统
JP6148641B2 (ja) 端末収容ルーティング装置、端末収容ルーティング装置の動作方法および通信システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190816

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200630

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201111

R151 Written notification of patent or utility model registration

Ref document number: 6794336

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151