JP7065877B2 - チップ装置および関連製品 - Google Patents

チップ装置および関連製品 Download PDF

Info

Publication number
JP7065877B2
JP7065877B2 JP2019553977A JP2019553977A JP7065877B2 JP 7065877 B2 JP7065877 B2 JP 7065877B2 JP 2019553977 A JP2019553977 A JP 2019553977A JP 2019553977 A JP2019553977 A JP 2019553977A JP 7065877 B2 JP7065877 B2 JP 7065877B2
Authority
JP
Japan
Prior art keywords
hardware
data block
basic
data
integrated circuit
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
JP2019553977A
Other languages
English (en)
Other versions
JP2020530916A (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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Publication of JP2020530916A publication Critical patent/JP2020530916A/ja
Application granted granted Critical
Publication of JP7065877B2 publication Critical patent/JP7065877B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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/048Activation functions
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2218/00Aspects of pattern recognition specially adapted for signal processing
    • G06F2218/02Preprocessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

本開示は、通信およびチップ技術の分野に関し、特にチップ装置および関連製品に関する。
人工ニューラルネットワーク(ANN)は、20世紀80年代以降の人工知能の分野における研究ホットスポットである。それは情報処理の観点から人間の脳ニューロンネットワークを抽象化し、単純なモデルを確立し、そして異なる接続方法に従って異なるネットワークを形成する。エンジニアリングおよび学界では、それはしばしばニューラルネットワークまたは類ニューラルネットワークと直接呼ばれる。ニューラルネットワークは、互いに接続された多数のノード(またはニューロン)からなる計算モデルである。既存のニューラルネットワークの計算は、CPU(Central Processing Unit,中央処理装置)またはGPU(GraphicsProcessing Unit,グラフィック処理装置)に基づいて実現され、このような計算は消費電力が大きく、計算時間が長い。
本開示の実施形態は、計算時間を短縮し、モジュールの電力消費を低減することができるニューラルネットワーク計算方法および関連製品を提供する。
第1の態様では、本開示の実施形態は、メインユニットと複数の基本ユニットとを備えるチップ装置において適用されるニューラルネットワークの計算方法を提供する。この方法は、以下のステップを含む。メインユニットは計算予定データブロックと演算コマンドとを取得し、演算コマンドに従って計算予定データブロックを配信データブロックとブロードキャストデータブロックとに分割する。メインユニットは配信データブロックを分割して複数の基本データブロックを得て、前記複数の基本データブロックを複数の基本ユニットに配信し、メインユニットはブロードキャストデータブロックを複数の基本ユニットにブロードキャストする。基本ユニットは、基本データブロックおよびブロードキャストデータブロックに対して内積演算を行い演算結果を得て、その演算結果をメインユニットに送信する。メインユニットは演算結果を処理し、前記計算予定データブロックと演算コマンドとのコマンド結果を得る。
任意選択で、メインユニットはブロードキャストデータブロックを複数の基本ユニットにブロードキャストすることは、以下を含む。
前記メインユニットは、前記ブロードキャストデータブロックを複数の基本ユニットに一回でブロードキャストする。
任意選択で、前記基本ユニットは、基本データブロックおよびブロードキャストデータブロックに対して内積演算を行い演算結果を得て、その演算結果をメインユニットに送信することは、以下を含む。
基本ユニットは、基本データブロックおよびブロードキャストデータブロックに対して内積処理を行い内積処理の結果を得て、その内積処理の結果を累算して演算結果を得て、その演算結果をメインユニットに送信する。
任意選択で、前記演算結果は内積処理の結果であり、メインユニットは演算結果を処理し、前記計算予定データブロックと演算コマンドとのコマンド結果を得ることは、以下を含む。
前記メインユニットは前記演算結果を累算して累算結果を得て、その累算結果を配列し前記計算予定データブロックと演算コマンドとのコマンド結果とを得る。
任意選択で、前記メインユニットはブロードキャストデータブロックを複数の基本ユニットにブロードキャストすることは、以下を含む。
前記ブロードキャストデータブロックを複数の部分ブロードキャストデータブロックに分割し、その複数の部分ブロードキャストデータブロックを前記複数の基本ユニットに数回でブロードキャストする。
任意選択で、前記基本ユニットは、基本データブロックおよびブロードキャストデータブロックに対して内積演算を行い演算結果を得て、その演算結果をメインユニットに送信することは、以下を含む。
前記基本ユニットは、前記部分ブロードキャストデータブロックおよび基本データブロックに対して内積処理を一回行い内積処理の結果を得て、その内積処理の結果を累算して部分演算結果を得て、その部分演算結果をメインユニットに送信する。
任意選択で、前記基本ユニットは、基本データブロックおよびブロードキャストデータブロックに対して内積演算を行い演算結果を得て、その演算結果をメインユニットに送信することは、以下を含む。
前記基本ユニットは、当該部分ブロードキャストデータブロックをn回繰り返し使用して当該部分ブロードキャストデータブロックおよびn個の基本データブロックの内積演算を行いn個の部分処理結果を得て、n個の部分処理結果を累算してn個の部分演算結果を得て、そのn個の部分演算結果をメインユニットに送信し、ここで、nは2以上の整数となる。
第2の態様では、メインユニットと複数の基本ユニットとを備えるチップ装置が提供される。前記基本ユニットは、計算予定データブロックと演算コマンドとを取得し、演算コマンドに従って計算予定データブロックを配信データブロックとブロードキャストデータブロックとに分割する。配信データブロックを分割して複数の基本データブロックを得て、複数の基本データブロックを複数の基本ユニットに配信し、ブロードキャストデータブロックを複数の基本ユニットにブロードキャストする。基本ユニットは、基本データブロックおよびブロードキャストデータブロックに対して内積演算を行い演算結果を得て、その演算結果をメインユニットに送信する。メインユニットは、演算結果を処理して、計算予定データブロックと演算コマンドとのコマンド結果を得る。
任意選択で、チップ装置は、分岐ユニットをさらに備える。分岐ユニットは、メインユニットと基本ユニットとの間に配置される。分岐ユニットはデータを転送するために使用される。
任意選択で、メインユニットは具体的に、ブロードキャストデータブロックを複数の基本ユニットに一回でブロードキャストするために使用される。
任意選択で、基本ユニットは具体的に、基本データブロックおよびブロードキャストデータブロックに対して内積処理を行い内積処理の結果を得て、その内積処理の結果を累算して演算結果を得て、その演算結果をメインユニットに送信するために使用される。
任意選択で、メインユニットは、演算結果が内積処理の結果である場合、演算結果を累算して累算結果を得て、累算結果を配列して計算予定データブロックと演算コマンドとのコマンド結果を得る。
任意選択で、メインユニットは具体的に、ブロードキャストデータブロックを複数の部分ブロードキャストデータブロックに分割し、複数の部分ブロードキャストデータブロックを複数の基本ユニットに数回でブロードキャストするために使用される。
任意選択で、基本ユニットは具体的に、部分ブロードキャストデータブロックおよび基本データブロックに対して内積処理を行い内積処理の結果を得て、その内積処理の結果を累算して部分演算結果を得て、部分演算結果をメインユニットに送信するために使用される。
任意選択で、基本ユニットは具体的に、部分ブロードキャストデータブロックをn回繰り返し使用して部分ブロードキャストデータブロックおよびn個の基本データブロックの内積演算を行い、n個の部分処理結果を得て、n個の部分処理結果をそれぞれ累算した後、n個の部分演算結果を得て、n個の部分演算結果をメインユニットに送信するために使用され、ここで、nは2以上の整数である。
任意選択で、メインユニットは、メインレジスタまたはメインオンチップキャッシュ回路の1つまたは任意の組み合わせを備える。
基礎ユニットは、基本レジスタまたは基本オンチップキャッシュ回路の1つまたは任意の組み合わせを備える。
任意選択で、メインユニットは、ベクトル演算回路、算術論理演算回路、アキュムレータ回路、マトリックス転置回路、直接メモリアクセス回路、またはデータ並べ替え回路のうちの1つまたは任意の組み合わせを備える。
任意選択で、ユニットは内積演算回路またはアキュムレータ回路などのうちの1つまたは任意の組合せを備える。
任意選択で、分岐ユニットは複数の分岐ユニットであり、メインユニットは複数の分岐ユニットにそれぞれ接続され、各分岐ユニットは少なくとも1つの基礎ユニットに接続される。
任意選択で、分岐ユニットは複数の分岐ユニットであり、複数の分岐ユニットは直列に接続されてからメインユニットに接続され、各分岐ユニットはそれぞれ少なくとも1つの基礎ユニットに接続される。
任意選択で、分岐ユニットは具体的に、メインユニットと基礎ユニットとの間のデータを転送するために使用される。
任意選択で、分岐ユニットは具体的に、メインユニットと基礎ユニットまたは他の分岐ユニットとの間のデータを転送するために使用される。
任意選択で、データは、ベクトル、マトリックス、三次元データブロック、四次元データブロック、およびn次元データブロックのうちの1つまたは任意の組み合わせである。
任意選択で、演算コマンドが乗算コマンドであれば、乗数データブロックがブロードキャストデータブロックであり、被乗数データブロックが配信データブロックであると確定される。
演算コマンドが畳み込みコマンドであれば、入力データブロックはブロードキャストデータブロックであり、畳み込みカーネルは配信データブロックであると確定される。
第3の態様では、第2の態様によって提供されるチップ装置の適用方法が提供される。当該チップ装置はマトリックスとマトリックスの乗算、マトリックスとベクトルの乗算、畳み込み演算、または完全接続演算のうちの1つまたは任意の組み合わせを行うために使用される。
第4の態様では、第2の態様によって提供されるチップ装置を集積するチップが提供される。
第5の態様では、第6の態様によって提供されるチップを備えるスマートデバイスが提供される。
本開示の実施形態を実施すると、以下の有益な効果が得られる。
わかるように、本開示の実施形態によれば、データと演算コマンドを受信した後、データは配信データとブロードキャストデータに分割され、配信データは基本データブロックに分割されてから、複数の基本ユニットに配信されて内積演算が行われる。このように、演算量が最も多い内積演算を複数の基本ユニットに分散して同時に行うので、演算時間が短縮され、消費電力が節約されるという利点がある。
本開示の実施形態における技術案をより明確に例示するために、実施形態の説明に使用される図面を以下に簡単に説明する。以下の説明における図面は、本開示のいくつかの実施形態であることは明らかであり、当業者にとっては、これらの図面に基づいて他の図面を創造的な仕事をすることなく得ることもできる。
図1aは、本開示によって提供されるチップ装置の概略構造図である。 図1bは、本開示によって提供される別のチップ装置の概略構造図である。 図1cは、本開示によって提供されるチップ装置のデータ配信の概略図である。 図1dは、チップ装置のデータ返しの概略図である。 図2は、本開示の実施形態によって提供されるニューラルネットワークの計算方法の概略フローチャートである。 図2aは、本開示の実施形態によって提供されるマトリックスAにマトリックスBをかける概略図である。 図3は、本開示の実施形態によって提供されるニューラルネットワークの計算方法の概略フローチャート図である。 図3aは、完全接続1の単一サンプルデータの概略図である。 図3bは、完全接続2のマルチサンプルデータの概略図である。 図3cは、畳み込み1のM個の畳み込みカーネルデータの概略図である。 図3dは、畳み込み2入力データの概略図である。 図3eは、入力データの3次元データブロックの演算ウィンドウの概略図である。 図3fは、入力データの三次元データブロックの別の演算ウィンドウの概略図である。 図3gは、入力データの三次元データブロックのさらに別の演算ウィンドウの概略図である。
本開示の実施形態における技術案は、本開示の実施形態における添付の図面を参照して以下に明確かつ完全に説明されるが、記載された実施形態は本開示の実施形態の一部であり全ての実施形態ではない。本開示の実施形態に基づいて、当業者が創造的な仕事をすることなくて得られる他のすべての実施形態は、本開示の範囲に属する。
本開示の明細書、特許請求の範囲および図面に記載の「第1」、「第2」、「第3」、「第4」等の用語は、異なる対象を区別するためのものであり、特定の順序を説明するわけではない。さらに、用語「含む」、「備える」およびそれらの変形は、非排他的な包含をカバーすることを意図している。例えば、一連のステップまたはユニットを含むプロセス、方法、システム、製品、または装置は、列挙されたステップまたはユニットに限定されず、任意選択で、列挙されていないステップまたはユニットも含む。或いは、任意選択で、これらのプロセス、方法、製品または機器に固有の他のステップユニットも含む。
本明細書での「実施形態」は、実施形態に関連して説明された特定の特徴、構造、または特性が本開示の少なくとも1つの実施形態に含まれてもよいことを意味する。本明細書の様々な箇所でのこの単語の出現は、必ずしも同じ実施形態を指しているわけではなく、他の実施形態と相互に排他的で独立なまたは代替的な実施形態ではない。当業者は、本明細書に記載の実施形態を他の実施形態と組み合わせることができることを明示的または黙示的に理解するであろう。
以下にCPUを例として、ニューラルネットワークの演算方法を説明する。ニューラルネットワークではマトリックスとマトリックスとの乗算が広く用いられているが、ここではマトリックスAとマトリックスBの乗算を例としてCPUにおける論理積演算を説明する。以下に示すように、マトリックスAとマトリックスBとの論理積の結果がCとなり、つまりC=A*Bであるとする。
Figure 0007065877000001
Figure 0007065877000002
したがって、CPUまたはGPUでは、一行ずつ計算する必要があり、1行目の計算を終えてから2行目の計算を行い、そして3行目の計算を行い、すべての行の計算を完成させるまで。ニューラルネットワークでは、数千行のデータの場合もあるため、計算時間が非常に長い。計算中、CPUは長時間稼働状態にあり、エネルギー消費量も多くなる。
図1bを参照する。図1bはチップ装置の概略構造図であり、図1bに示すように、チップ装置は、メインユニット回路、基本ユニット回路、および分岐ユニット回路を備える。メインユニット回路はレジスタおよび/またはオンチップキャッシュ回路を備える。メインユニットはさらにベクトル演算回路、ALU(Arithmetic and Logic Unit,算術論理ユニット)回路、アキュムレータ回路、マトリックス転置回路、およびDMA(Direct Memory Access,直接メモリアクセス)回路、データ並べ替え回路などのうちの1つまたは任意の組み合わせを備えてもよい。各基礎ユニットはベースレジスタおよび/またはベースオンチップキャッシュ回路を備えてもよい。各基礎ユニットはさらに内積演算回路、ベクトル演算回路、アキュムレータ回路などのうちの1つまたは任意の組み合わせを備えてもよい。前記回路は全て集積回路としてもよい。分岐ユニットが存在する場合、メインユニットは分岐ユニットに接続され、その分岐ユニットは基本ユニットに接続される。基本ユニットはデータブロック間での内積演算を行い、メインユニットは外部データを送受信し、そして外部データを分岐ユニットに配信する。分岐ユニットはメインユニットまたは基本ユニットのデータを送受信するために用いられる。メインユニットについては、接続されるユニットの数が限られているので、より多い基本ユニットのアクセスを実現するためにメインユニットと基本ユニットとの間に分岐ユニットを追加する必要があることで、複雑なデータブロックの計算を実現する。よって、図1bに示す構造は、複雑なデータの計算に適している。
分岐ユニットと基礎ユニットとの接続構造は任意でよく、図1bのH型構造に限定されない。任意選択で、メインユニットから基礎ユニットへは、ブロードキャストや配信の構成であり、基礎ユニットからメインユニットへは、収集(gather)の構成である。ブロードキャスト、配信および収集の定義は以下のとおりである。
メインユニットから基礎ユニットへのデータ伝送方法は以下を含んでもよい。
メインユニットは複数の分岐ユニットにそれぞれ接続され、各分岐ユニットは複数の基礎ユニットにそれぞれ接続されている。
メインユニットは1つの分岐ユニットに接続され、当該分岐ユニットは1つの分岐ユニットに接続され、以下同様であり、複数の分岐ユニットは直列に接続され、そして各分岐ユニットは複数の基礎ユニットに接続される。
メインユニットは複数の分岐ユニットにそれぞれ接続され、各分岐ユニットは複数の基礎ユニットと直列に接続される。
メインユニットは1つの分岐ユニットに接続され、当該分岐ユニットは1つの分岐ユニットに接続され、以下同様であり、複数の分岐ユニットは直列に接続され、そして各分岐ユニットは複数の基礎ユニットと直列に接続される。
データを配信するとき、メインユニットは一部または全部の基礎ユニットにデータを送信し、データを受信する各基礎ユニットによって受信されるデータは異なってもよい。
データをブロードキャストするとき、メインユニットは一部または全部の基礎ユニットにデータを送信し、データを受信する各基礎ユニットは同じデータを受信する。
データが収集されるとき、一部または全部の基礎ユニットがデータをメインユニットに送信する。注意すべきことは、図1aまたは図1bに示されるチップ装置は独立の物理的チップであってもよいが、もちろん実際の応用では、当該チップ装置は他のチップ(例えばCPU、GPU)に集積されてもよい。本発明の実施形態は、上記のチップ装置の物理的表現を限定しない。
図1cを参照する。図1cは、チップ装置のデータ配信の概略図である。図1cの矢印で示すように、矢印はデータ配信方向であり。図1cに示すように、メインユニットが外部データを受信した後、外部データを分割してから、複数の分岐ユニットに配信し、分岐ユニットは分割データをメインユニットに送信する。
図1dを参照する。図1dは、チップ装置のデータ返しの概略図である。図1dの矢印で示すように、矢印はデータ返し方向である。図1dに示すように、基本ユニットはデータ(例えば内積計算結果)を分岐ユニットに返して、分岐ユニットはメインユニットに返す。
図1aを参照する。図1aは別のチップ装置の概略構造図である。チップ装置はメインユニットと基本ユニットを備え、当該メインユニットは基本ユニットに接続されている。図1aに示される構造は、基本ユニットがメインユニットに直接物理的に接続されているので、当該構造は接続する基本ユニットの数は制限され、簡単なデータ計算に適している。
図2を参照する。図2は、上記のチップ装置を使用してニューラルネットワークの計算方法を提供する。当該方法は、図1aまたは図1bに示すようなチップ装置を使用して実行される。当該方法は図2に示すように、以下のステップを含む。
ステップS201で、チップ装置のメインユニットは、計算予定データブロックと演算コマンドとを取得する。
上記ステップS201における計算予定データブロックは、具体的に、マトリックス、ベクトル、3次元データ、4次元データ、多次元データ等であってもよく、本開示は前述のデータブロックの具体的な表現を、特に限定しない。演算コマンドは、具体的に、乗算コマンド、畳み込みコマンド、加算コマンド、減算コマンド、BLAS(英語:Basic Linear Algebra Subprograms、基本線形代数サブプログラム)関数または活性化関数等であってもよい。
ステップS202で、メインユニットは、演算コマンドに応じて、計算予定データブロックを配信データブロックとブロードキャストデータブロックとに分割する。
前述のステップS202の実施方法は、具体的には以下の通りである。
当該演算コマンドが乗算コマンドであれば、乗数データブロックはブロードキャストデータブロックであり、被乗数データブロックは配信データブロックであると確定される。
演算コマンドが畳み込みコマンドであれば、入力データブロックはブロードキャストデータブロックであり、畳み込みカーネルは配信データブロックであると確定される。
ステップS2031で、メインユニットは、配信データブロックを分割処理して複数の基本データブロックを得て、当該複数の基本データブロックを複数の基本ユニットに配信する。
ステップS2032において、メインユニットは、ブロードキャストデータブロックを複数の基本ユニットにブロードキャストする。
任意選択で、前述のステップS2031およびステップS2032は繰り返して実行されても良い。データ量が比較的多い場合、メインユニットは配信データブロックを分割して複数の基本データブロックを得て、各基本データブロックをm個の基本データサブブロックに分割し、ブロードキャストデータブロックもm個のブロードキャストデータサブブロックに分割する。メインユニットは毎回1つの基本データサブブロックを配信し、1つのブロードキャストデータサブブロックをブロードキャストする。当該基本データサブブロックおよびブロードキャストデータサブブロックは、並列ニューラルネットワーク計算の実行可能なデータブロックである。例えば、1000*1000のマトリックスAに1000*1000のマトリックスBをかけるのを例にとると、基本データブロックはマトリックスAのz行目のデータであり、基本データサブブロックはマトリックスAのz行目のデータの最初の20列のデータであり、ブロードキャストデータサブブロックは、マトリックスBのz行目の列の最初の20行のデータであってもよい。
上記ステップS203における基本データブロックは、具体的に内積演算が可能な最小データブロックであってもよい。マトリックス乗算を例にとると、基本データブロックはマトリックスの1行のデータであってもよい。例えば、畳み込み演算の場合、基本データブロックは畳み込みカーネルの重みであってもよい。
前述のステップS203における配信の方法については、以下の実施形態の説明を参照してもよく、ここで贅言しない。ブロードキャストデータブロックをブロードキャストする方法については、以下の実施形態の説明を参照してもよく、ここで贅言しない。
ステップS2041で、チップ装置の基本ユニットは、基本データブロックとブロードキャストデータブロックに対して内積演算を行い、演算結果(中間結果かもしれない)を得る。
ステップS2042で、演算結果が中間結果でなければ、演算結果をメインユニットに返す。
上記ステップS204における返し方式については、以下の実施形態の説明を参照してもよく、ここで贅言しない。
ステップS205で、メインユニットは、演算結果を処理して計算予定データブロックと演算コマンドとのコマンド結果とを得る。
上記ステップS205の処理方式は、累算、配列等でもよく、本開示は上記処理の具体的な方式に限定されなく、その具体的な方式は例えば非線形変換等を含み、異なる演算コマンドに応じて構成されてもよい。
本開示によって提供される技術案において、演算を行うとき、メインユニットは計算予定データブロックおよび演算コマンドを含む外部データを受信し、計算予定データブロックおよび演算コマンドを取得し、演算コマンドに従って計算予定データブロックの配信データブロックおよびブロードキャストデータブロックを確定し、配信データブロックを複数の基本データブロックに分割し、ブロードキャストデータブロックを複数の基本ユニットにブロードキャストし、複数の基本データブロックを複数の基本ユニットに配信する。複数の基本ユニットはそれぞれ、基本データブロックとブロードキャストデータブロックとに対して内積演算を行い、演算結果を得る。複数の基本ユニットは、その演算結果をメインユニットに返し、メインユニットは、返された演算結果に従って演算コマンドのコマンド結果を得る。この技術案の技術的なポイントは以下にある。ニューラルネットワークに関して、大量の演算がデータブロックとデータブロックとの間の内積演算にあり、内積演算のオーバーヘッドが大きく、計算時間が長いので、本開示の実施形態は、当該演算コマンドと演算予定コマンドによって、まず計算予定データブロック内の配信データブロックとブロードキャストデータブロックを区別する。ブロードキャストデータブロックは、内積演算を行う際に使用しなければならないデータブロックであり、配信データブロックは、内積演算において分割可能なデータブロックである。マトリックス乗算を例にとると、例えば、計算予定データブロックはマトリックスAとマトリックスBであり、演算コマンドはマトリックス乗算コマンド(A*B)であり、マトリックス乗算において、被乗数マトリックスAは複数の基本データブロックに分割可能であり、乗数マトリックスBはブロードキャストであってもよいので、マトリックス乗算の規則に従って、マトリックスAは分割可能なデータブロックであり、マトリックスBはブロードキャストデータブロックであると確定される。マトリックス乗算の定義によれば、被乗数マトリックスAの各行のデータがそれぞれ乗数マトリックスBと内積演算を行う必要があるので、本出願の技術案ではマトリックスAをM個の基本データブロックに分割する。そのM個の基本データブロックでは、各基本データブロックが、マトリックスAの1行のデータであってもよい。そのため、マトリックス乗算では、時間のかかる演算時間を複数の基本ユニットによってそれぞれ行うため、内積演算では、複数の基本ユニットで結果を高速で並列に算出することができることで、計算時間を短縮される。より短い計算時間はまた、チップ装置の動作時間を短縮することができ、それによって消費電力を低減することができる。
本開示によって提供される技術案の効果が、実際的な例を通して以下に説明される。図2aに示すように、マトリックスAにベクトルBをかける概略図である。図2aに示すように、マトリックスAはM行、L列で、ベクトルBはL行である。演算器がマトリックスAの1行とベクトルBとの内積を算出するのに要する時間をt1とすると、CPUまたはGPUで計算する場合、1行の計算を終えた後に次の行を計算する必要があり、GPUまたはCPUで計算する方法では計算する時間T0=m*t1となる。本開示の実施形態によって提供される技術案によれば、M個の基本ユニットを有すると仮定すると、マトリックスAはM個の基本データブロックに分割され、各基本データブロックはマトリックスAの1行の行データであり、M個の基本ユニットが内積演算を同時に行う場合、計算時間はt1であり、本開示の実施形態によって提供される技術案を採用するのに必要な時間はT1=t1+t2+t3である。ここで、t2はメインユニットがデータを分割する時間で、t3は内積演算の演算結果を処理してコマンド結果を得るのに必要な時間である。データ分割および演算結果を処理する計算量が非常に小さいので、かかる時間が非常に短いので、T0>>T1である。よって、本開示の実施形態の技術案を採用するのは、計算時間を大幅に短縮することができる。同時に、演算予定データの電力消費について、T0>>T1により、本開示によって提供されるチップ装置は、その作業時間短い。チップ装置の作業時間が非常に短い場合、そのエネルギー消費量は長い作業時間よりもはるかに少ないと実験によって証明されたので、エネルギーを節約するという利点がある。
上記ステップS203において、メインユニットは、ブロードキャストデータブロックを複数の基本ユニットにブロードキャストすることを実現する方法はたくさんある。具体的には以下の通りである。
方式A:ブロードキャストデータブロックを複数の基本ユニットに一回でブロードキャストする。(ブロードキャストとは、「一対多数」のデータ送信、つまり、メインユニットが複数の(全部または一部の)基礎ユニットに同じデータブロックを同時に送信することを指す)。例えば、マトリックスA*マトリックスBにおいて、マトリックスBはブロードキャストデータブロックであり、マトリックスBを複数の基本ユニットに一回でブロードキャストする。別の例で、畳み込みでは、入力データはブロードキャストデータブロックであり、入力データブロックを一回で複数の基本ユニットにブロードキャストする。この方式の利点は、メインユニットと基本ユニットのデータ伝送量を節約できることである。つまり、すべてのブロードキャストデータを1回のブロードキャストで複数の基本ユニットに送信できる。
方法B:ブロードキャストデータブロックを複数の部分ブロードキャストデータブロックに分割し、複数の部分ブロードキャストデータブロックを複数の基本ユニットに例えば数回でブロードキャストする。例えば、マトリックスBは複数の基本ユニットに数回でブロードキャストされる。具体的に、毎回、マトリックスBのN列のデータをブロードキャストする。この方式の利点は、基本ユニットの構成を削減できることである。基本ユニットに配置されるレジスタの記憶容量が大きくない。データ量の大きいマトリックスBである場合、一回でマトリックスBを基本ユニットに配信すると、これらのデータを格納するために比較的大きなレジスタ容量が必要である。基本ユニット数が多いため、レジスタ容量を大きくすることが必然的にコストアップに大きな影響を与えるので、ここでブロードキャストデータブロックを数回でブロードキャストする方式を採用する。すなわち、基本ユニットは、毎回ブロードキャストされるブロードキャストデータブロックのデータの一部を格納するだけでよく、それによってコストが削減される。
説明したいことは、前述のステップS203において複数の基本データブロックを複数の基本ユニットに配信するのに、上述の方式Aまたは方式Bを採用してもよい。相違点は、その伝送方式がユニキャスト方式で、かつ伝送されるデータが基本データブロックであることだけである。
前述のステップS204の実施方法は、具体的には以下の通りである。
方式Aによってブロードキャストデータブロックをブロードキャストするおよび方式Aによって基本データブロックを配信する場合(図3aに示すように)、基本ユニットは基本データブロックおよびブロードキャストデータブロックに対して内積処理を行い、内積処理の結果を得る。すなわち一回で1行の内積演算を行い、その内積処理の結果(演算結果の一つ)をメインユニットに送信し、メインユニットがその内積処理の結果を累算する。もちろん実際の応用では、基本ユニットが内積処理の結果を累算した後、累算結果(演算結果のもう一つ)をメインユニットに送信する。上記方法によれば、メインユニットと基本ユニットとの間のデータ伝送量を低減し、計算速度を向上させることができる。
方式Bのブロードキャストデータブロックが採用される場合、任意選択の技術案では、基本ユニットが部分ブロードキャストデータブロックを受信するたびに、基本ユニットは、基本データブロックと部分ブロードキャストデータブロックとの部分内積演算を行い、処理結果をメインユニットに送信し、メインユニットは処理結果を累算する。別の任意選択の案では、基本ユニットがn個の基本データブロックを受信する場合、ブロードキャストデータブロックを繰り返し使用し、当該ブロードキャストデータブロックとn個の基本データブロックの内積演算を行い、n個の部分処理結果を得る。基本ユニットは、そのn個の処理結果をメインユニットに送信し、メインユニットは、n個の処理結果をそれぞれ累算する。もちろん、上記の累算は基本ユニットでも行うことができる。
上記の場合、ブロードキャストデータブロックのデータ量は一般的に非常に大きく、かつ配信データブロックも大きい。チップ装置は、ハードウェアの構成に属するため、配置される基本ユニットの数は理論上で無限であるが、実際には、その数は限られており、一般的には数十個の基本ユニットである。技術の発展に伴い、例えば増えることで、その数は絶えず変化する可能性がある。しかし、ニューラルネットワークにおけるマトリックスとマトリックスの乗算では、マトリックスAの行数が数千行になり、マトリックスBの列数も数千列になるので、一回のブロードキャストデータでマトリックスBを基本ユニットに送信するのは実現できない。そして、毎回マトリックスBの一部のデータ、例えば最初の5列のデータをブロードキャストするという実現方法でもよい。マトリックスAについても同様の方法を採用してもよい。基本ユニットについては、毎回部分内積計算を行えばよく、そして、部分内積計算の結果をレジスタに格納し、その行の全ての内積演算が実行された後、その行の全ての内積演算の結果を累算して一種類の演算結果を得て、その演算結果をメインユニットに送信する。この方式は、計算速度を向上させる利点を有する。
図3を参照する。図3はニューラルネットワークの計算方法を提供する。この実施形態における計算は、マトリックスA*マトリックスBの計算方式によって説明されている。マトリックスA*マトリックスBは図3aに示すマトリックスの概略図であってもよい。説明の便宜上、図3に示したニューラルネットワークの計算方法は図1bに示したチップ装置で行われる。図1bに示すように、チップ装置は16個の基本ユニットを有する。ここでは説明と割り当ての便宜のために、Mの値は32、Nの値は15、Lの値は20になるように設定してもよい。当然のことながら、計算装置は、任意の数の基本ユニットを有してもよいことを理解されたい。この方法は図3に示すように、以下のステップを含む。
ステップS301において、メインユニットは、マトリックスA、マトリックスB、および乗法演算コマンドA*Bを受信する。
ステップS302において、メインユニットは、乗法演算コマンドA*Bに従って、マトリックスBがブロードキャストデータブロックであり、マトリックスAが配信データブロックであると確定し、マトリックスAを32個の基本データブロックに分割し、各基本データブロックがマトリックスAの1行のデータである。
ステップS303において、メインユニットは、32個の基本データブロックを均等に16個の基本ユニットに割り当て、32個の基本データブロックを均等に16個の基本ユニットに割り当てることは、各基本ユニットが2個の基本データブロックを受信することである。この2つのデータブロックの割り当て方法は、任意の繰り返さない割り当て順序にしてもよい。
上記ステップS303の割り当て方法は、他のいくつかの割り当て方法を採用してもよい。例えば、各基礎ユニットにデータブロックの数を均等に割り当てられない場合、データベースは各基礎ユニットに不均等に割り当てられてもよい。そのなかのいくつかの均等に割り当てられないデータブロックを分割してから、均等に割り当てるなどの方法でもよい。本開示の実施形態は、上記の基本データブロックが複数の基本ユニットに割り当てられる方法を限定しない。
ステップS304において、メインユニットは、マトリックスBの最初の数列(例えば最初の5列)の部分データを抽出し、マトリックスBの最初の5列の部分データを16個の基本ユニットにブロードキャストする。
ステップS305において、16個の基本ユニットは、最初の5列の部分データを繰り返し使用し2つの基本データブロックと内積演算および累積演算を行い、32*5個の前処理結果を得て、その32*5個の前処理結果をメインユニットに送信する。
ステップS306において、メインユニットは、マトリックスBの5列の部分データを抽出し、マトリックスBの5列の部分データを16個の基本ユニットにブロードキャストする。
ステップS307において、16個の基本ユニットは、中央の5列の部分データを繰り返し使用して2個の基本データブロックと内積演算および累積演算を行い、32*5個の中処理結果を得て、その32*5個の中処理結果をメインユニットに送信する。
ステップS308において、メインユニットは、マトリックスBの最後の5列の部分データを抽出し、マトリックスBの最後の5列の部分データを16個の基本ユニットにブロードキャストする。
ステップS309において、16個の基本ユニットは、最後の5列の部分データを繰り返し使用して2個の基本データブロックと内積演算および累積演算を行い、32*5個の後処理結果を得て、32*5個の後処理結果をメインユニットに送信する。
ステップS310、メインユニットは、32*5個の前処理結果、32*5個の中処理結果、および32*5個の後処理結果を前、中、後に準じて組み合わせて、32*15のマトリックスCを得る。このマトリックスCは、マトリックスA*マトリックスBのコマンド結果である。
図3に示す技術案は、マトリックスAを32個の基本データブロックに分割し、次にマトリックスBをバッチでブロードキャストするので、基本ユニットはコマンド結果をバッチで得ることができる。内積が16個の基本ユニットに分割されて計算されるので、計算時間が大幅に短縮され、計算時間が短くエネルギー消費が少ないという利点がある。
図1aを参照する。図1aは、本開示により提供されるチップ装置であり、チップ装置は、メインユニットと基本ユニットとを備え、メインユニットはハードウェアチップ装置であり、基本ユニットもハードウェアチップ装置である。
メインユニットは、ニューラルネットワーク演算における各連続的演算、並びに基本ユニットとのデータ伝送を行うように用いられる。
基本ユニットは、メインユニットによって伝送されたデータに基づき、ニューラルネットワークにおける並列で加速される演算を行い、演算結果をメインユニットに送信するように用いられる。
上記の並列で加速される演算には、データブロックとデータブロックとの間の乗法演算、畳み込み演算などの大規模で並列化可能な演算が含まれるが、これらに限定されない。
上記の各連続的演算には、累積演算、マトリックス転置演算、データ配列演算などの連続的演算が含まれるが、これらに限定されない。
メインユニットと複数の基本ユニットについて、メインユニットは、計算予定データブロックおよび演算コマンドを取得し、演算コマンドに応じて、計算予定データブロックを配信データブロックとブロードキャストデータブロックとに分割する。配信データブロックを分割して複数の基本データブロックを得て、複数の基本データブロックを複数の基本ユニットに配信し、ブロードキャストデータブロックを複数の基本ユニットにブロードキャストする。基本ユニットは、基本データブロックとブロードキャストデータブロックとに対して内積演算を行い演算結果を得て、その演算結果をメインユニットに送信する。前記メインユニットは前記演算結果を処理し、計算予定データブロックと演算コマンドとのコマンド結果を得る。
任意選択で、チップ装置はさらに分岐ユニットを備え、当該分岐ユニットは、メインユニットと基本ユニットとの間に配置され、データを転送するように用いられる。
任意選択で、メインユニットは具体的に、ブロードキャストデータブロックを複数の基本ユニットに一回でブロードキャストするように用いられる。
任意選択で、基本ユニットは具体的に、基本データブロックおよびブロードキャストデータブロックに対して内積処理を行い内積処理の結果を得て、その内積処理の結果を累算して演算結果を得て、その演算結果をメインユニットに送信するように用いられる。
任意選択で、メインユニットは、演算結果が内積処理の結果である場合、演算結果を累算して累算結果を得、累算結果を配列して計算予定データブロックと演算コマンドとのコマンド結果を得るように用いられる。
任意選択で、メインユニットは具体的に、ブロードキャストデータブロックを複数の部分ブロードキャストデータブロックに分割し、複数の部分ブロードキャストデータブロックを複数の基本ユニットに数回でブロードキャストするように用いられる。
任意選択で、基本ユニットは具体的に、部分ブロードキャストデータブロックおよび基本データブロックに対して内積処理を一回行い内積処理の結果を得て、内積処理の結果を累算して部分演算結果を得て、部分演算結果をメインユニットに送信するように用いられる。
任意選択で、基本ユニットは具体的に、部分ブロードキャストデータブロックをn回繰り返し使用して部分ブロードキャストデータブロックとn個の基本データブロックとの内積演算を行い、n個の部分処理結果を得て、n個の部分処理結果をそれぞれに累算した後、n個の部分演算結果を得て、n個の部分演算結果をメインユニットに送信するように用いられる。ここ、nは2以上の整数である。
本開示の実施形態は、図1aに示されるようなチップ装置の適用方法をさらに提供する。当該方法は具体的に、マトリックスとマトリックスの乗法演算、マトリックスとベクトルの乗法演算、畳み込み演算、または完全接続演算のうちの1つまたは任意の組み合わせを実行するように使用され得る。
具体的には、メインユニットは、pooling(プール化)演算、正則化(規格化)演算、例えばbatch normalization(バッチ正規化)、lrnなどのニューラルネットワーク演算ステップを行ってもよい。
本出願の実施形態はまた、図1aまたは図1bに示すようなチップ装置を備えるチップを提供する。
本願の実施形態は、上記のチップを備えるスマートデバイスをさらに提供し、当該チップには、図1aまたは図1bに示すようなチップ装置が集積されている。スマートデバイスは、スマートフォン、タブレットコンピュータ、パーソナルデジタルアシスタント、スマートウォッチ、スマートカメラ、スマートTV、スマート冷蔵庫などを含むが、これらに限定されない。上述のデバイスは例示の目的のためだけであり、本出願の実施形態は上記デバイスの特定の形に限定されない。
上記のマトリックスかけるマトリックスの演算は、図3に示す実施形態の説明を参照してもよく、ここでは贅言しない。
チップ装置を使用し完全接続演算を行う。
完全接続層の入力データが長さLのベクトル(例えば図3aに示す「完全接続1-単一サンプル」のベクトルB)であり(すなわち、ニューラルネットワークの入力が単一サンプルである)、完全接続層の出力が長さMのベクトルであり、完全接続層の重みがM*Lのマトリックス(例えば「図3b完全接続1-単一サンプル」のマトリックスA)である場合、完全接続層の重みマトリックスをマトリックスA(すなわち、分割データブロック)とし、入力データをベクトルB(すなわち、ブロードキャストデータブロック)として、図2に示す方法1に従って演算を行う。具体的な演算方法は次のとおりであってもよい。
完全接続層の入力データがマトリックスであり(すなわち、ニューラルネットワークの入力が複数のサンプルに対しバッチで演算を行う場合)(完全接続層の入力データがN個の入力サンプルを表し、各サンプルは長さLのベクトルであり、入力データはL*Nのマトリックスで表され、例えば「図3b完全接続1―複数のサンプル」のマトリックスBで表す)、各サンプルに対した完全接続層の出力は長さMのベクトルである場合、完全接続層の出力データは「図3a完全接続―1複数のサンプル」の結果マトリックスのようなM*Nのマトリックスであり、完全接続層の重みはM*Lのマトリックスであり(例えば「図3a完全接続―1複数のサンプル」のマトリックスA)、完全接続層の重みマトリックスをマトリックスA(すなわち分割データブロック)とし、入力データマトリックスをマトリックスB(すなわちブロードキャストデータブロック)とし、または完全接続層の重みマトリックスをマトリックスB(ブロードキャストデータブロック)とし、入力ベクトルをマトリックスA(分割データブロック)とし、上述した図2に示す方法1に従って演算する。
チップ装置
チップ装置を使用して人工ニューラルネットワーク演算を行う場合、ニューラルネットワークにおける畳み込み層、プール化層、および正規化層(規格化層とも呼ばれ、例えばBN(Batch normalization)またはLRN(Local Response Normalization))などの入力データは、「図3d畳み込み2-入力データ」に示されるように(明確に表すため、各サンプルを表す3次元データブロックは、例としてC=5、H=10、W=12を用いて説明されるが、実際の使用において、N、C、H、Wの大きさは図3dに示す値に限定されず)、図3dの各3次元データブロックは1つのサンプルがこの層の入力データに対応することを表す。各3次元データブロックの3つの次元はそれぞれC、H、Wで、そのような3次元データブロックはN個ある。
上記のニューラルネットワーク層の計算を行う際、メインユニットは入力データを受信した後、各入力データのサンプルに対して、メインユニットのデータ並べ替え回路を用いて、入力データをある順序で並べる。当該順序は任意の順序であってもよい。
任意選択で、当該順序は、例えばNHWCおよびNWHCなどのように、上記の概略図に表されるC次元座標の変化が最も速い方式で入力データを並べる。中には、Cがデータブロックの最内層の次元で、Nがデータブロックの最外層の次元で、HとWが中間層の次元である。こうする結果は、Cのデータが隣接しているので、演算の並列度を向上させることを容易にし、そして複数の特徴マップの並列演算を実行することをより容易にする。
以下は、C、H、およびWが異なるニューラルネットワーク演算に対してどのように理解されるかを説明する。畳み込みとプール化の場合、HとWは畳み込みとプール化の演算を行うときの関連する演算ウィンドウのスライドする次元である(演算ウィンドウがW次元においてスライドする例は例え図3eの「畳み込み3―スライドA」および図3fの「畳み込み3―スライドB」の2つの図に示され、演算ウィンドウがH次元においてスライドすることは例え図3gに示される)。演算ウィンドウのサイズとM個の畳み込みカーネルの1つの畳み込みカーネルのサイズとが一致する。図3cに示されるようなM個の畳み込みカーネルで、各畳み込みカーネルは5*3*3の三次元データブロックであり、その演算ウィンドウも5*3*3の三次元データブロックである。図3cに示されるM個の畳み込みカーネルのKHとKWは、KHに対応する次元が入力データのH次元であり、KWに対応する次元が入力データのW次元であることを示している。図3e、3f、3gの灰色部分のキューブは毎回演算ウィンドウをスライドして計算を行うのに使用されるデータである。そのスライド方向は、Hをスライド方向として、その後Wをスライド方向としてもよく、またはWをスライド方向とし、次いでHをスライド方向としてもよい。具体的に、畳み込みの場合、各スライディングウィンドウでの演算は、図の灰色部分のキューブで表されるデータブロックと「図3cの畳み込み1―畳み込みカーネル」で表されるM個の畳み込みカーネルデータブロックとに対してそれぞれ行われる内積演算である。畳み込みでは、各スライディングウィンドウ位置について各畳み込みカーネルに対応する値を出力する。プール化の場合、各スライディングウィンドウでの演算は、図の灰色のキューブで表されるデータブロックがH次元およびW次元において(図の例では、灰色のデータブロックのうち、同一平面上の9つの数値のうち)最大値を選択するか、平均値を計算するなどの演算である。プール化では、スライディングウィンドウの位置ごとにC個の値が出力される。Cは、単一サンプルの3次元データブロックにおいて、HとW以外の別の次元である。Nは、合計N個のサンプルでこの層の演算を同時に実行することを表す。正則化アルゴリズムのLRNでは、C次元の定義は以下の通りである。毎回の基本的LRN演算では、C次元に沿って1つの連続データブロック(すなわち、Y*1*1のデータブロック)選択される。ここで、Y*1*1のデータブロックのYがC次元における値であり、Yの値がC次元の最大値以下であり、1番目の1はH次元を表し、2番目の1はW次元を表す。残りの2つの次元はHおよびW次元と定義し、すなわち各サンプルの3次元データブロックのそれぞれについて、LRN正則化演算が実行されるたびに、同じW座標および同じH座標で異なるC座標における連続的一部のデータに対して演算を行う。正則化アルゴリズムBNの場合、N個のサンプルの3次元データブロック内の同じC次元の座標を持つすべての数値に対して平均値および分散(または標準偏差)を求める。
「図3c~図3g」において、1つのキューブを使って1つの数値を表し、重みとも呼ばれる。概略図で使用される数字は、例に限定される。実際の場合、次元データは任意の数値であり得る(ある次元が1である場合も含み、その場合、4次元データブロックは自動的に3次元データブロックになる。例えば、同時に計算されるサンプル数が1の場合、入力データは3次元データブロックである。他の例で、畳み込みカーネルの数量が1の場合、畳み込みとデータは3次元データブロックとなる)。チップ装置を用いて入力データBと畳み込みカーネルAとの畳み込み演算を行う。
畳み込み層の場合、その重み(すべての畳み込みカーネル)は「図3c畳み込み1―畳み込みカーネル」に示すように、畳み込みカーネルの数はMで、各畳み込みカーネルはC個のKH行KW列のマトリックスから構成されるので、畳み込み層の重みは、4の次元がそれぞれM、C、KH、KWである4次元データブロックとして表すことができる。「図3d畳み込み2―入力データ」に示すように、畳み込み層の入力データは4次元データブロックで、N個の3次元データブロックからなり、各3次元データブロックは、C個のH行W列の特徴マトリックスから構成される(すなわち、4つの次元はそれぞれN、C、H、Wのデータブロックである)。メインユニットからK個の基礎ユニットのうちのある1個にM個の畳み込みカーネルうちのそれぞれの畳み込みカーネルの重みを配信し、基礎ユニットのオンチップキャッシュおよび/またはレジスタに格納する(この時点ではM個の畳み込みカーネルは配信データブロックであり、各畳み込みカーネルは基本データブロックであってもよいが、もちろん、実際の応用では、基本データブロックは、1つの畳み込みカーネルの1つの平面マトリックスのようなより小さな温度にも変更されてもよい)。具体的な配信方法は下記の通りであってもよい。畳み込みカーネルの数M≦Kの場合、1つの畳み込みカーネルの重みをM個の基礎ユニットにそれぞれ配信する。畳み込みカーネルの数M>Kの場合、1つまたは複数の畳み込みカーネルの重みを各基礎ユニットにそれぞれ配信する(i番目の基礎ユニットに配信される畳み込みカーネル重みセットはAiであり、合計Mi個の畳み込みカーネルを有する)。各基礎ユニットにおいて、例えばi番目の基本ユニットにおいて、受信された、メインユニットによって配信された畳み込みカーネル重みAiをそのレジスタおよび/またはオンチップキャッシュに格納し、入力データの各部分(すなわち図3e、図3fまたは3gに示されるようなスライディングウィンドウ)をブロードキャスト方式で各基礎ユニットに伝送し(上記のブロードキャストの方式は、前述の方式Aまたは方式Bを採用してもよい)、ブロードキャストする場合、数回のブロードキャストの方式で全ての基本ユニットに演算ウィンドウの重みをブロードキャストすることができ、具体的に、毎回一部の演算ウィンドウの重みをブロードキャストしてもよく、例えば毎回1つの平面のマトリックスをブロードキャストするが、図3eを例にとると、毎回C平面のKH*KWマトリックスをブロードキャストすることができ、もちろん実際の応用では、C平面のKH*HWマトリックスの最初のn行または最初のn列のデータを一回でブロードキャストすることができ、本開示は、上記の部分データの伝送方法および部分データの配列方式を限定しない。;入力データの並べ方は、任意の次元順序の並べ方に変換し、次に入力データの各部分を順序に従い順次でメインユニットにブロードキャストする。任意選択で、前述の配信データである畳み込みカーネルの送信方式も、入力データの演算ウィンドウと類似的方法送信方式を採用してもよく、ここでは贅言しない。任意選択で、入力データの並べ方は、Cが最も内側のループに変換される。こうする結果は、Cのデータが隣接になるので、畳み込み演算の並列度を向上し、複数の特徴マップにおいて並列演算を実行することをより容易にする。任意選択で、入力データの並べ方を次元順序がNHWCまたはNWHCである並べ方に変換する。各基礎ユニット、例えばi番目の基礎ユニットが、重みAiにおける畳み込みカーネルと受信されたブロードキャストデータの対応部分(即ち、演算ウィンドウ)との内積を計算する。重みAiの対応部分のデータは、オンチップキャッシュから直接読み出し使用することができ、または繰り返し使用のために先ずレジスタに読み取ることができる。各基礎ユニットの内積演算の結果は累算され、そしてメインユニットに伝送し返される。基礎ユニットが毎回内積演算を実行して得た部分和をメインユニットに伝送し返されて累算する。毎回基礎ユニットが内積演算を行って得た部分和を、基礎ユニットのレジスタおよび/またはオンチップキャッシュに格納して、累算が終了後、メインユニットに返送される。各基本ユニットが内積演算を行って得た部分和を、場合によっては基礎ユニットのレジスタおよび/またはオンチップキャッシュへの部分および部分格納して累算し、場合によってはメインユニットに送信して累算し、累算が終了後、メインユニットに返送する。
チップ装置を用いたBLAS(英語:Basic Linear Algebra Subprograms、基本線形代数サブプログラム)関数の実現方法
GEMM、GEMM計算は、BLASライブラリー内のマトリックス - マトリックス乗算の演算を指す。この演算の通常の表現は次のとおりである。C=alpha*op(A)*op(B)+beta*C。ここでAとBは入力の2つのマトリックス、Cは出力マトリックス、alphaとbetaはスカラー、opはマトリックスAまたはBに対するある操作を表する。さらに、マトリックスAおよびBの幅と高さを説明するためのパラメータとして、いくつかの補助となる整数がある。
当該装置を使用してGEMM計算を実現するステップは次のとおりである。
入力マトリックスAおよびマトリックスBにそれぞれのop操作を行う。 op操作は、マトリックスの転置操作であってもよいが、もちろん、非線形関数演算、プール化などの他の操作であってもよい。マトリックスop操作は、メインユニットのベクトル演算機能を使用して実現される。あるマトリックスのopが空であってもよい場合、メインユニットはそのマトリックスに対していかなる操作も行わない。
op(A)とop(B)との間のマトリックス乗算は、図2に示す方法によって行われる。
メインユニットのベクトル演算機能を用いて、op(A)*op(B)の結果の中の各値にalphaをかける操作を行う。
メインユニットのベクトル演算機能を用いて、マトリックスalpha*op(A)*op(B)とbeta*Cとの対応する位置の加算ステップを実現する。
GEMV
GEMV計算は、BLASライブラリーにおけるマトリックス-ベクター乗算の演算を指す。この演算の通常の表現は次のとおりである。C=alpha*op(A)*B+beta*C。ここで、Aは入力マトリックス、Bは入力ベクトル、Cは出力ベクトル、alphaとbetaはスカラー、opはマトリックスAに対するある操作を表す。
前記装置を使用してGEMV計算を実現するステップは以下の通りである。
入力マトリックスAに対して対応するop操作を行う、チップ装置は、図2に示す方法を使用してマトリックスop(A)とベクトルBとの間のマトリックス-ベクトル乗算を完了させる。メインユニットのベクトル演算機能を用いて、op(A)*Bの結果の各値にalphaをかける操作を行う。メインユニットのベクトル演算機能を用いて、マトリックスalpha*op(A)*Bとbeta*Cとの間の対応する位置の加算ステップを実現する。
チップ装置を用いた活性化関数の実現方法
活性化関数は、通常、1つのデータブロック(ベクトルまたは多次元マトリックスであってもよい)のデータそれぞれに対して非線形演算を実行することを指す。たとえば、活性化関数はy=max(m,x)であってもよく、ここでxは入力値、yは出力値、mは1つの定数である。活性化関数はy=tanh(x)であってもよく、xは入力値、y=sigmoid(x)である。活性化関数は区分線形関数であってもよい。活性化関数は1つのデータを入力し、1つのデータを出力する任意の関数であってもよい。
活性化関数を実現する場合、チップ装置は、メインユニットのベクトル計算機能を用いて、ベクトルを入力し、ベクトルの活性化ベクトルを算出する。メインユニットは、入力ベクトルの各値に活性化関数を適用し(活性化関数の入力も1つの数値で、出力も1つの数値である)、1つの数値出力から出力ベクトルへの対応する位置を算出する。
上記入力ベクトルのソースは、チップ装置の外部データ、およびチップ装置の分岐ユニットによって転送された基本ユニットの計算結果データを含むが、これらに限定されない。
上記計算結果データは、具体的に、マトリックスにベクトルをかける演算結果であってもよい。上記計算結果データは、さらに具体的に、マトリックスにマトリックスをかける演算結果であってもよい。上記入力データは、メインユニットがオフセットを施すことを実現した後の演算結果であってもよい。
チップ装置を使用してオフセットを施す操作を実現
2つのベクトルまたは2つのマトリックスの加算機能を、メインユニットによって実現することができる。メインユニットによって、マトリックスの各行にベクトルを加える、または各列に加える機能を実現することができる。
任意選択で、上記マトリックスは、装置がマトリックスとマトリックスの乗法演算を実行する結果からのものでもよい。マトリックスは、装置がマトリックスにベクトルをかける演算を実行する結果からのものでもよい。マトリックスは、装置のメインユニットが外部から受信したデータでもよい。ベクトルは、装置のメインユニットが外部から受信したデータであってもよい。
なお、上記の入力データおよび計算結果データは例に過ぎなく、実際の応用では他の種類やソースからのデータも可能であり、本開示の実施形態は上記のデータのソースや表現方法を限定するものではない。
前述の方法の実施形態では、簡潔さのために、それらはすべて一連の動作の組み合わせとして説明されているが、当業者は、本開示が説明された動作シーケンスによって限定されないことを理解されたい。なぜなら、特定のステップは、本開示に従って他のシーケンスでまたは同時に実行され得るからである。さらに、当業者はまた、本明細書に記載されている実施形態は任意選択可能な実施形態であり、関連する動作およびモジュールは必ずしも本開示によって必要とされないことを理解されたい。
上記の実施形態では、様々な実施形態の説明がそれぞれの重点があり、ある実施形態で詳述されていない部分は、他の実施形態の関連する説明を参照してもよい。
本明細書で提供されるいくつかの実施形態では、開示された装置は他の方法でも実施され得ることを理解されたい。例えば、上述した装置の実施形態は単なる例示であり、例えば、ユニットの分割は論理的な機能の分割のみであり、実際に実施する場合、他の分割方法、例えば複数のユニット又は構成要素を組み合わせてもよく、別のシステムに集積するか、または一部の特徴を無視したり行わなくてもよい。さらに、図示または説明した相互カップリングまたは直接カップリングまたは通信可能な接続は、何らかのインターフェース、デバイスまたはユニットを介した間接カップリングまたは通信可能な接続でもよく、電気的またはその他の方式でもよい。
また、本開示の各実施形態における各機能ユニットは、1つの処理ユニットに集積されていても、物理的に別々に存在していても、2つ以上の装置が集積されていてもよい。上記の集積されたユニット/モジュールはハードウェアの形で実施される。例えば、ハードウェアは、デジタル回路、アナログ回路などを含む回路としてもよい。ハードウェア構造の物理的実現は、物理装置を含むが、これらに限定されなく、物理装置はトランジスタ、メモリスタなどを含むがこれらに限定されない。計算装置内の計算モジュールは、CPU、GPU、FPGA、DSP、ASICなどの任意の適切なハードウェアプロセッサとしてもよい。記憶装置は、RRAM(登録商標)、DRAM、SRAM、EDRAM、HBM、HMCなどの任意の適切な磁気記憶媒体または光磁気記憶媒体としてもよい。
説明されたユニットは、物理的に分離されていてもいなくてもよく、すなわち一箇所に配置されてもよく、または複数のネットワークユニットにわたって分散されてもよい。実施形態の解決策の目的を達成するために、実際の必要性に応じていくつかまたはすべてのユニットを選択してもよい。
以上、本開示の実施形態について詳細に説明したが、具体的な例を用いて本開示の原理および実施形態を本明細書に記載したが、実施形態の上記の説明は、本開示の方法およびその核となる概念の理解をサポートすることのみを目的とする。同時に、当業者であれば、本開示の概念によって、実施形態および本出願の応用範囲において変更することがある。まとめて、上記の明細書の内容は本開示を限定するものとして解釈されるべきではない。

Claims (10)

  1. 演算コマンドに応じて、ニューラルネットワークにおける演算を行う、チップ装置において、
    前記チップ装置は、ハードウェアメイン集積回路と、前記ハードウェアメイン集積回路から分離された複数のハードウェア基礎集積回路と、複数のハードウェア分岐回路を備え、
    前記複数のハードウェア分岐回路のそれぞれは、前記ハードウェアメイン集積回路を前記複数のハードウェア基礎集積回路の別個のサブセットに接続し、各別個のサブセットはハードウェア基礎集積回路を複数含み、対応するハードウェア分岐回路に直接接続され、
    前記ハードウェアメイン集積回路は、前記複数のハードウェア分岐回路にデータを伝送するよう構成され、
    前記複数のハードウェア分岐回路のそれぞれは、前記ハードウェアメイン集積回路から伝送された前記データをそれ自体に接続された前記複数のハードウェア基礎集積回路の別個のサブセットに転送するよう構成され、
    前記複数のハードウェア基礎集積回路のそれぞれは、
    接続されたハードウェア分岐回路から転送された第1セットのデータを受信し、複数のハードウェア基礎集積回路は配信される第1セットのデータを受信し、
    接続されたハードウェア分岐回路から転送された第2セットのデータを受信し、各ハードウェア基礎集積回路は同じ第2セットのデータを受信し、
    ハードウェア基礎集積回路が受信した前記第1セットのデータと前記第2セットのデータに演算のセットを行い、
    接続されたハードウェア分岐回路に演算結果を返送するよう構成され、
    前記複数のハードウェア基礎集積回路は、それぞれの演算のセットを並列に行い、
    前記複数のハードウェア分岐回路のそれぞれは、それ自体に接続された前記複数のハードウェア基礎集積回路の別個のサブセットから返送された前記演算結果を前記ハードウェアメイン集積回路に転送するよう構成され、
    前記ハードウェアメイン集積回路は、前記複数のハードウェア分岐回路から転送された前記演算結果に計算演算のセットを直列に行い、
    前記演算コマンドが乗算コマンドであれば、乗数データブロックはブロードキャストデータブロックであり、被乗数データブロックは配信用のデータブロックであると確定し、
    前記演算コマンドが畳み込みコマンドであれば、入力データブロックはブロードキャストデータブロックであり、畳み込みカーネルは配信用のデータブロックであると確定する、
    ことを特徴とするチップ装置。
  2. 演算コマンドに応じて、第1データセットと第2データセットを用いてニューラルネットワークにおける演算を行う、チップ装置において、
    前記チップ装置は、ハードウェアメイン集積回路と複数のハードウェア基礎集積回路を含み、
    前記ハードウェアメイン集積回路は、
    前記第1データセットを複数の基本データブロックに分割し、
    前記複数の基本データブロックを前記複数のハードウェア基礎集積回路に配信し、前記複数の基本データブロックのそれぞれは、前記複数のハードウェア基礎集積回路の1つに配信され、少なくとも2つのハードウェア基礎集積回路は異なる基本データブロックを受信し、
    前記第2データセットからブロードキャストデータブロックを識別し、
    前記ブロードキャストデータブロックを前記複数のハードウェア基礎集積回路にブロードキャストし、前記複数のハードウェア基礎集積回路のそれぞれは、同じブロードキャストデータブロックを受信し、
    前記複数のハードウェア基礎集積回路のそれぞれは、
    前記ハードウェアメイン集積回路によって配信された対応の基本データブロックと前記ハードウェアメイン集積回路によってブロードキャストされたブロードキャストデータブロックを受信し、
    受信した基本データブロックと受信したブロードキャストデータブロックにニューラルネットワークにおける演算を行い、
    演算結果を前記ハードウェアメイン集積回路に返送するよう構成され、
    前記複数のハードウェア基礎集積回路は、それぞれの演算を並列に行い、
    前記ハードウェアメイン集積回路は、前記複数のハードウェア基礎集積回路から返送された前記演算結果に計算演算のセットを直列に行い、
    前記演算コマンドが乗算コマンドであれば、乗数データブロックはブロードキャストデータブロックであり、被乗数データブロックは配信用のデータブロックであると確定し、
    前記演算コマンドが畳み込みコマンドであれば、入力データブロックはブロードキャストデータブロックであり、畳み込みカーネルは配信用のデータブロックであると確定する、
    ことを特徴とするチップ装置。
  3. 請求項2に記載のチップ装置において、
    前記チップ装置はさらに、前記ハードウェアメイン集積回路と前記複数のハードウェア基礎集積回路との間に配置された複数のハードウェア分岐回路を備え、
    前記複数のハードウェア分岐回路は、前記ハードウェアメイン集積回路と前記複数のハードウェア基礎集積回路との間でデータを転送するために用いられる、
    ことを特徴とするチップ装置。
  4. 請求項2に記載のチップ装置において、
    前記演算は内積演算を含み、前記演算結果は内積演算結果を含み、
    前記複数のハードウェア基礎集積回路は、前記受信した基本データブロックおよび前記受信したブロードキャストデータブロックに対して前記内積演算を行い前記内積演算結果を得て、前記内積演算結果を累算して演算結果を得て、前記演算結果を前記ハードウェアメイン集積回路に返送するために用いられる、
    ことを特徴とするチップ装置。
  5. 請求項4に記載のチップ装置において、
    前記ハードウェアメイン集積回路は、前記複数のハードウェア基礎集積回路のそれぞれから受信した前記内積演算結果の累算して累算結果を得て、当該累算結果を配列して前記演算コマンドに対応するコマンド結果を得るために用いられる、
    ことを特徴とするチップ装置。
  6. 請求項2に記載のチップ装置において、
    前記ハードウェアメイン集積回路は、前記ブロードキャストデータブロックを複数の部分ブロードキャストデータブロックに分割し、前記複数の部分ブロードキャストデータブロックを前記複数のハードウェア基礎集積回路に数回でブロードキャストするために用いられ、各ブロードキャスト伝送は、前記複数のハードウェア基礎集積回路のそれぞれに同じ部分ブロードキャストデータブロックを伝送し、
    前記複数のハードウェア基礎集積回路のそれぞれは、それぞれの部分ブロードキャストデータブロックと前記それぞれの基本データブロックの間で内積演算を一回行った後内積演算結果を得て、前記内積演算結果を累算して部分演算結果を得て、前記部分演算結果を前記ハードウェアメイン集積回路に返送するために用いられる、
    ことを特徴とするチップ装置。
  7. 請求項6に記載のチップ装置において、
    前記複数のハードウェア基礎集積回路のそれぞれは、部分ブロードキャストデータブロックそれぞれをn回繰り返し使用して当該部分ブロードキャストデータブロックとn個の基本データブロックとの内積演算を行いn個の部分処理結果を得て、前記n個の部分処理結果をそれぞれ累算してn個の部分演算結果を得て、前記n個の部分演算結果を前記ハードウェアメイン集積回路に返送するために用いられ、nは2以上の整数である、
    ことを特徴とするチップ装置。
  8. 請求項1に記載のチップ装置において、
    前記複数のハードウェア分岐回路は、少なくとも一部が直列に接続されかつ少なくとも1つのハードウェア分岐回路が前記ハードウェアメイン集積回路に接続され、
    前記複数のハードウェア分岐回路の前記少なくとも1つのハードウェア分岐回路は、前記ハードウェアメイン集積回路から転送されたデータをそれ自体に接続された前記複数のハードウェア分岐回路の他の1つに送信するために用いられる、
    ことを特徴とするチップ装置。
  9. スマートデバイスにおいて、
    請求項1から8のいずれか一項に記載のチップ装置を備えることを特徴とするスマートデバイス。
  10. チップ装置によって実行されるニューラルネットワークにおける演算の方法において、
    前記チップ装置は、ハードウェアメイン集積回路と、複数のハードウェア分岐回路と、前記ハードウェアメイン集積回路から分離された複数のハードウェア基礎集積回路とを含み、前記ハードウェアメイン集積回路は前記複数のハードウェア分岐回路に接続され、前記複数のハードウェア分岐回路のそれぞれは前記複数のハードウェア基礎集積回路の別個のサブセットに接続され、各別個のサブセットは対応のハードウェア分岐回路に直接接続され、前記方法は以下のステップを含み:
    前記ハードウェアメイン集積回路は、前記複数のハードウェア分岐回路にデータを伝送し、
    前記複数のハードウェア分岐回路のそれぞれは、前記ハードウェアメイン集積回路から伝送された前記データを前記複数のハードウェア基礎集積回路の前記別個のサブセットに転送し、
    前記ハードウェア基礎集積回路のそれぞれは、
    接続されたハードウェア分岐回路から転送された第1セットのデータを受信し、異なるハードウェア基礎集積回路は異なる第1セットのデータを受信し、
    接続されたハードウェア分岐回路から転送された第2セットのデータを受信し、各ハードウェア基礎集積回路は同じ第2セットのデータを受信し、
    ハードウェア基礎集積回路が受信した前記第1セットのデータと前記第2セットのデータにニューラルネットワークにおける演算のセットを行い、それぞれの演算のセットを並列に行い、
    前記接続されたハードウェア分岐回路に演算結果を返送し、
    前記複数のハードウェア分岐回路のそれぞれは、それに自体に接続された前記複数のハードウェア基礎集積回路の別個のサブセットから返送された前記演算結果を前記ハードウェアメイン集積回路に転送し、
    前記ハードウェアメイン集積回路は、前記複数のハードウェア分岐回路から転送された前記演算結果にニューラルネットワークにおける計算演算のセットを直列に行い、
    前記方法は、
    前記ハードウェアメイン集積回路が、計算予定データブロックと演算コマンドとを取得し、当該演算コマンドに従って前記計算予定データブロックを配信データブロックとブロードキャストデータブロックとに分割すること;
    前記ハードウェアメイン集積回路が、前記配信データブロックを分割して複数の別個基本データブロックを得て、前記複数の別個基本データブロックのそれぞれを対応する前記ハードウェア基礎集積回路に前記第1セットのデータとして配信し、前記ブロードキャストデータブロックを前記ハードウェア基礎集積回路に前記第2セットのデータとしてブロードキャストすることと;
    含み、
    前記演算コマンドが乗算コマンドであれば、乗数データブロックはブロードキャストデータブロックであり、被乗数データブロックは配信データブロックであると確定し、
    前記演算コマンドが畳み込みコマンドであれば、入力データブロックはブロードキャストデータブロックであり、畳み込みカーネルは配信データブロックであると確定する、
    ことを特徴とする方法。
JP2019553977A 2017-08-31 2017-08-31 チップ装置および関連製品 Active JP7065877B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/099991 WO2019041251A1 (zh) 2017-08-31 2017-08-31 芯片装置及相关产品

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2019221534A Division JP6888074B2 (ja) 2019-12-06 2019-12-06 チップ装置および関連製品
JP2019221533A Division JP6888073B2 (ja) 2019-12-06 2019-12-06 チップ装置および関連製品

Publications (2)

Publication Number Publication Date
JP2020530916A JP2020530916A (ja) 2020-10-29
JP7065877B2 true JP7065877B2 (ja) 2022-05-12

Family

ID=65436282

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019553977A Active JP7065877B2 (ja) 2017-08-31 2017-08-31 チップ装置および関連製品

Country Status (7)

Country Link
US (7) US11409535B2 (ja)
EP (6) EP3651030A1 (ja)
JP (1) JP7065877B2 (ja)
KR (3) KR102477404B1 (ja)
CN (8) CN111860815A (ja)
TW (1) TWI749249B (ja)
WO (1) WO2019041251A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992743B (zh) * 2017-12-29 2020-06-16 华为技术有限公司 矩阵乘法器
CN116991225A (zh) * 2018-02-14 2023-11-03 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
CN110210610B (zh) * 2018-03-27 2023-06-20 腾讯科技(深圳)有限公司 卷积计算加速器、卷积计算方法及卷积计算设备
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
CN110162799B (zh) * 2018-11-28 2023-08-04 腾讯科技(深圳)有限公司 模型训练方法、机器翻译方法以及相关装置和设备
US11175946B2 (en) * 2018-12-06 2021-11-16 Advanced Micro Devices, Inc. Pipelined matrix multiplication at a graphics processing unit
US11657119B2 (en) * 2018-12-10 2023-05-23 Advanced Micro Devices, Inc. Hardware accelerated convolution
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
US20210406077A1 (en) * 2019-07-18 2021-12-30 Photonics Electronics Technology Research Association Method and system for parallel computation
US11481471B2 (en) * 2019-08-16 2022-10-25 Meta Platforms, Inc. Mapping convolution to a matrix processor unit
CN110516793B (zh) * 2019-08-27 2022-06-17 Oppo广东移动通信有限公司 一种池化处理方法及装置、存储介质
CN110826687B (zh) * 2019-08-30 2023-11-21 安谋科技(中国)有限公司 数据处理方法及其装置、介质和系统
US12039430B2 (en) * 2019-11-15 2024-07-16 Samsung Electronics Co., Ltd. Electronic device and method for inference binary and ternary neural networks
KR20210071471A (ko) * 2019-12-06 2021-06-16 삼성전자주식회사 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법
CN111161705B (zh) * 2019-12-19 2022-11-18 寒武纪(西安)集成电路有限公司 语音转换方法及装置
CN111126582B (zh) * 2019-12-20 2024-04-05 上海寒武纪信息科技有限公司 数据处理方法和相关产品
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US10713493B1 (en) * 2020-02-06 2020-07-14 Shenzhen Malong Technologies Co., Ltd. 4D convolutional neural networks for video recognition
CN113743598B (zh) * 2020-05-27 2023-08-04 杭州海康威视数字技术股份有限公司 一种ai芯片的运行方式的确定方法和装置
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
CN114115995A (zh) * 2020-08-27 2022-03-01 华为技术有限公司 人工智能芯片及运算板卡、数据处理方法及电子设备
CN112491555B (zh) * 2020-11-20 2022-04-05 山西智杰软件工程有限公司 医疗电子签名的处理方法及电子设备
CN112416433B (zh) * 2020-11-24 2023-01-17 中科寒武纪科技股份有限公司 一种数据处理装置、数据处理方法及相关产品
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
CN112953701B (zh) * 2021-02-04 2023-10-31 沈阳建筑大学 一种四维混沌电路装置
CN112799598B (zh) * 2021-02-08 2022-07-15 清华大学 一种数据处理方法、处理器及电子设备
CN113240570B (zh) * 2021-04-13 2023-01-06 华南理工大学 一种GEMM运算加速器及基于GoogLeNet的图像处理加速方法
CN112990370B (zh) * 2021-04-26 2021-09-10 腾讯科技(深圳)有限公司 图像数据的处理方法和装置、存储介质及电子设备
CN115481713A (zh) * 2021-06-15 2022-12-16 瑞昱半导体股份有限公司 改进卷积神经网络进行计算的方法
KR20230068572A (ko) * 2021-11-11 2023-05-18 삼성전자주식회사 메모리 어레이 내의 연결 회로
CN116150555A (zh) * 2021-11-19 2023-05-23 中科寒武纪科技股份有限公司 计算装置、利用计算装置实施卷积运算的方法及相关产品
CN114936633B (zh) * 2022-06-15 2023-06-30 北京爱芯科技有限公司 用于转置运算的数据处理单元及图像转置运算方法
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations
CN117974417B (zh) * 2024-03-28 2024-07-02 腾讯科技(深圳)有限公司 Ai芯片、电子设备及图像处理方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001188767A (ja) 1999-12-28 2001-07-10 Fuji Xerox Co Ltd ニューラルネットワーク演算装置及びニューラルネットワークの演算方法

Family Cites Families (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5023833A (en) * 1987-12-08 1991-06-11 California Institute Of Technology Feed forward neural network for unary associative memory
US5956703A (en) * 1995-07-28 1999-09-21 Delco Electronics Corporation Configurable neural network integrated circuit
JPH117438A (ja) * 1997-06-18 1999-01-12 Fuji Xerox Co Ltd 積和演算処理方法、装置及び記録媒体
US7672952B2 (en) * 2000-07-13 2010-03-02 Novell, Inc. System and method of semantic correlation of rich content
US6925479B2 (en) * 2001-04-30 2005-08-02 Industrial Technology Research Institute General finite-field multiplier and method of the same
US7065544B2 (en) * 2001-11-29 2006-06-20 Hewlett-Packard Development Company, L.P. System and method for detecting repetitions in a multimedia stream
US7737994B1 (en) * 2003-09-26 2010-06-15 Oracle America, Inc. Large-kernel convolution using multiple industry-standard graphics accelerators
US20050125477A1 (en) * 2003-12-04 2005-06-09 Genov Roman A. High-precision matrix-vector multiplication on a charge-mode array with embedded dynamic memory and stochastic method thereof
US7634137B2 (en) * 2005-10-14 2009-12-15 Microsoft Corporation Unfolded convolution for fast feature extraction
GB2453263A (en) * 2006-05-16 2009-04-01 Douglas S Greer System and method for modeling the neocortex and uses therefor
US8644643B2 (en) * 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
JP4942095B2 (ja) * 2007-01-25 2012-05-30 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチコア・プロセッサにより演算を行う技術
US20080288756A1 (en) * 2007-05-18 2008-11-20 Johnson Timothy J "or" bit matrix multiply vector instruction
US8190543B2 (en) * 2008-03-08 2012-05-29 Tokyo Electron Limited Autonomous biologically based learning tool
WO2010043401A2 (en) * 2008-10-15 2010-04-22 Martin Vorbach Data processing device
US20100122070A1 (en) * 2008-11-07 2010-05-13 Nokia Corporation Combined associative and distributed arithmetics for multiple inner products
US20110025816A1 (en) * 2009-07-31 2011-02-03 Microsoft Corporation Advertising as a real-time video call
US8577950B2 (en) * 2009-08-17 2013-11-05 International Business Machines Corporation Matrix multiplication operations with data pre-conditioning in a high performance computing architecture
US8583896B2 (en) * 2009-11-13 2013-11-12 Nec Laboratories America, Inc. Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
US8577820B2 (en) * 2011-03-04 2013-11-05 Tokyo Electron Limited Accurate and fast neural network training for library-based critical dimension (CD) metrology
US10078620B2 (en) * 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
CN102214160B (zh) * 2011-07-08 2013-04-17 中国科学技术大学 一种基于龙芯3a的单精度矩阵乘法优化方法
CN103631761B (zh) * 2012-08-29 2018-02-27 睿励科学仪器(上海)有限公司 并行处理架构进行矩阵运算并用于严格波耦合分析的方法
DE102013104567A1 (de) * 2013-05-03 2014-11-06 Infineon Technologies Ag Chipanordnung, Chipkartenanordnung und Verfahren zum Herstellen einer Chipanordnung
CN103440121B (zh) * 2013-08-20 2016-06-29 中国人民解放军国防科学技术大学 一种面向向量处理器的三角矩阵乘法向量化方法
DE102013109200A1 (de) * 2013-08-26 2015-02-26 Infineon Technologies Austria Ag Chip, Chip-Anordnung und Verfahren zum Herstellen eines Chips
CN104425299B (zh) * 2013-08-27 2017-08-11 珠海艾派克微电子有限公司 芯片加工装置以及应用芯片加工装置进行芯片加工的方法
US20150324686A1 (en) * 2014-05-12 2015-11-12 Qualcomm Incorporated Distributed model learning
CN104036451B (zh) * 2014-06-20 2018-12-11 深圳市腾讯计算机系统有限公司 基于多图形处理器的模型并行处理方法及装置
CN104317352B (zh) * 2014-10-13 2017-10-24 中国科学院光电技术研究所 一种自适应光学控制系统快速去倾斜分量处理方法
CN104346318B (zh) * 2014-10-15 2017-03-15 中国人民解放军国防科学技术大学 面向通用多核dsp的矩阵乘加速方法
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
CN105701120B (zh) * 2014-11-28 2019-05-03 华为技术有限公司 确定语义匹配度的方法和装置
CN104992430B (zh) * 2015-04-14 2017-12-22 杭州奥视图像技术有限公司 基于卷积神经网络的全自动的三维肝脏分割方法
CN104866855A (zh) * 2015-05-07 2015-08-26 华为技术有限公司 一种图像特征提取方法及装置
US10489703B2 (en) 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
US10417555B2 (en) * 2015-05-29 2019-09-17 Samsung Electronics Co., Ltd. Data-optimized neural network traversal
CN104866904B (zh) * 2015-06-16 2019-01-01 中电科软件信息服务有限公司 一种基于spark的遗传算法优化的BP神经网络并行化方法
CN106293893B (zh) * 2015-06-26 2019-12-06 阿里巴巴集团控股有限公司 作业调度方法、装置及分布式系统
CN105005911B (zh) * 2015-06-26 2017-09-19 深圳市腾讯计算机系统有限公司 深度神经网络的运算系统及运算方法
CN105608490B (zh) * 2015-07-29 2018-10-26 上海磁宇信息科技有限公司 细胞阵列计算系统以及其中的通信方法
WO2017031630A1 (zh) * 2015-08-21 2017-03-02 中国科学院自动化研究所 基于参数量化的深度卷积神经网络的加速与压缩方法
CN105260776B (zh) * 2015-09-10 2018-03-27 华为技术有限公司 神经网络处理器和卷积神经网络处理器
CN106548124B (zh) * 2015-09-17 2021-09-07 松下知识产权经营株式会社 主题推定系统、主题推定方法
CN106485318B (zh) * 2015-10-08 2019-08-30 上海兆芯集成电路有限公司 具有混合协处理器/执行单元神经网络单元的处理器
EP3154001B1 (en) * 2015-10-08 2019-07-17 VIA Alliance Semiconductor Co., Ltd. Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory
CN105608056A (zh) * 2015-11-09 2016-05-25 南京大学 一种基于Flink的大规模矩阵并行化的计算方法
CN105426344A (zh) * 2015-11-09 2016-03-23 南京大学 基于Spark的分布式大规模矩阵乘法的矩阵计算方法
CN105373517A (zh) * 2015-11-09 2016-03-02 南京大学 基于Spark的分布式稠密矩阵求逆并行化运算方法
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
WO2017106469A1 (en) * 2015-12-15 2017-06-22 The Regents Of The University Of California Systems and methods for analyzing perfusion-weighted medical imaging using deep neural networks
US10482380B2 (en) * 2015-12-30 2019-11-19 Amazon Technologies, Inc. Conditional parallel processing in fully-connected neural networks
CN109993285B (zh) * 2016-01-20 2020-02-07 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
CN106991478B (zh) * 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络反向训练的装置和方法
CN105512723B (zh) * 2016-01-20 2018-02-16 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN108510064B (zh) * 2016-04-18 2021-12-10 中国科学院计算技术研究所 包括多个核心处理模块的人工神经网络的处理系统及方法
US11055063B2 (en) * 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
CN105956659B (zh) * 2016-05-11 2019-11-22 北京比特大陆科技有限公司 数据处理装置和系统、服务器
US10796220B2 (en) * 2016-05-24 2020-10-06 Marvell Asia Pte, Ltd. Systems and methods for vectorized FFT for multi-dimensional convolution operations
CA2990709C (en) * 2016-05-26 2018-09-04 The Governing Council Of The University Of Toronto Accelerator for deep neural networks
CN106126481B (zh) * 2016-06-29 2019-04-12 华为技术有限公司 一种计算系统和电子设备
CN106203621B (zh) * 2016-07-11 2019-04-30 北京深鉴智能科技有限公司 用于卷积神经网络计算的处理器
CN106228240B (zh) * 2016-07-30 2020-09-01 复旦大学 基于fpga的深度卷积神经网络实现方法
US10891538B2 (en) * 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
US20180046903A1 (en) * 2016-08-12 2018-02-15 DeePhi Technology Co., Ltd. Deep processing unit (dpu) for implementing an artificial neural network (ann)
CN106407561B (zh) * 2016-09-19 2020-07-03 复旦大学 一种并行gpdt算法在多核soc上的划分方法
CN106446546B (zh) * 2016-09-23 2019-02-22 西安电子科技大学 基于卷积自动编解码算法的气象数据填补方法
CN106650922B (zh) * 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
CN106504232B (zh) * 2016-10-14 2019-06-14 北京网医智捷科技有限公司 一种基于3d卷积神经网络的肺部结节自动检测系统
US9779786B1 (en) * 2016-10-26 2017-10-03 Xilinx, Inc. Tensor operations and acceleration
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
JP6961011B2 (ja) * 2016-12-09 2021-11-05 ベイジン ホライズン インフォメーション テクノロジー カンパニー リミテッド データ管理のためのシステム及び方法
CN106844294B (zh) * 2016-12-29 2019-05-03 华为机器有限公司 卷积运算芯片和通信设备
US11562115B2 (en) * 2017-01-04 2023-01-24 Stmicroelectronics S.R.L. Configurable accelerator framework including a stream switch having a plurality of unidirectional stream links
IT201700008949A1 (it) * 2017-01-27 2018-07-27 St Microelectronics Srl Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti
CN106940815B (zh) * 2017-02-13 2020-07-28 西安交通大学 一种可编程卷积神经网络协处理器ip核
CN106951395B (zh) * 2017-02-13 2018-08-17 上海客鹭信息技术有限公司 面向压缩卷积神经网络的并行卷积运算方法及装置
US11663450B2 (en) * 2017-02-28 2023-05-30 Microsoft Technology Licensing, Llc Neural network processing with chained instructions
CN107066239A (zh) * 2017-03-01 2017-08-18 智擎信息系统(上海)有限公司 一种实现卷积神经网络前向计算的硬件结构
US10528147B2 (en) * 2017-03-06 2020-01-07 Microsoft Technology Licensing, Llc Ultrasonic based gesture recognition
WO2018174931A1 (en) * 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and appartus for tile configuration
CN106970896B (zh) * 2017-03-30 2020-05-12 中国人民解放军国防科学技术大学 面向向量处理器的二维矩阵卷积的向量化实现方法
US10186011B2 (en) * 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US10169298B1 (en) * 2017-05-11 2019-01-01 NovuMind Limited Native tensor processor, using outer product unit
CN110574051A (zh) * 2017-05-31 2019-12-13 英特尔公司 计算高效的基于四元数的机器学习系统
US10167800B1 (en) * 2017-08-18 2019-01-01 Microsoft Technology Licensing, Llc Hardware node having a matrix vector unit with block-floating point processing
US10963780B2 (en) * 2017-08-24 2021-03-30 Google Llc Yield improvements for three-dimensionally stacked neural network accelerators
US11222256B2 (en) * 2017-10-17 2022-01-11 Xilinx, Inc. Neural network processing system having multiple processors and a neural network accelerator

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001188767A (ja) 1999-12-28 2001-07-10 Fuji Xerox Co Ltd ニューラルネットワーク演算装置及びニューラルネットワークの演算方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Lili SONG et al.,C-Brain: A Deep Learning Accelerator that Tames the Diversity of CNNs through Adaptive Data-level Parallelization,Proceedings of the 53rd ACM/EDAC/IEEE Design Automation Conference,米国,IEEE,2016年06月05日,pages:1-6
Yunji Chen et al.,DaDianNao: A Machine-Learning Supercomputer,Proceedings of the 47th Annual IEEE/ACM International Symposium on Microarchitecture,米国,IEEE,2014年12月01日,pages:609-622

Also Published As

Publication number Publication date
KR102467688B1 (ko) 2022-11-15
CN110245751B (zh) 2020-10-09
CN111860815A (zh) 2020-10-30
KR20200037749A (ko) 2020-04-09
CN109729734B (zh) 2020-10-27
TW201913460A (zh) 2019-04-01
WO2019041251A1 (zh) 2019-03-07
US11531553B2 (en) 2022-12-20
KR102477404B1 (ko) 2022-12-13
CN109729734B8 (zh) 2020-11-24
CN109729734A (zh) 2019-05-07
EP3654209A1 (en) 2020-05-20
US11561800B2 (en) 2023-01-24
CN110231958B (zh) 2020-10-27
CN110083390B (zh) 2020-08-25
KR20200037748A (ko) 2020-04-09
EP3605402A1 (en) 2020-02-05
CN110245752B (zh) 2020-10-09
CN109902804A (zh) 2019-06-18
US20200057651A1 (en) 2020-02-20
CN110222308A (zh) 2019-09-10
KR20200008544A (ko) 2020-01-28
EP3654210A1 (en) 2020-05-20
US20200057648A1 (en) 2020-02-20
US11354133B2 (en) 2022-06-07
EP3651030A1 (en) 2020-05-13
EP3654208A1 (en) 2020-05-20
US20200057652A1 (en) 2020-02-20
US20190065208A1 (en) 2019-02-28
KR102481256B1 (ko) 2022-12-23
TWI749249B (zh) 2021-12-11
CN110245751A (zh) 2019-09-17
US11409535B2 (en) 2022-08-09
US11347516B2 (en) 2022-05-31
EP3651031A1 (en) 2020-05-13
US11775311B2 (en) 2023-10-03
US20200057650A1 (en) 2020-02-20
CN109902804B (zh) 2020-12-18
EP3605402A4 (en) 2020-10-21
CN110083390A (zh) 2019-08-02
US20200057647A1 (en) 2020-02-20
JP2020530916A (ja) 2020-10-29
CN110245752A (zh) 2019-09-17
EP3605402B1 (en) 2022-08-31
US11334363B2 (en) 2022-05-17
US20200057649A1 (en) 2020-02-20
CN110222308B (zh) 2020-12-29
CN110231958A (zh) 2019-09-13

Similar Documents

Publication Publication Date Title
JP7065877B2 (ja) チップ装置および関連製品
CN109615061B (zh) 一种卷积运算方法及装置
JP6888074B2 (ja) チップ装置および関連製品
JP6888073B2 (ja) チップ装置および関連製品
CN109615062B (zh) 一种卷积运算方法及装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210423

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220113

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220113

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220121

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20220125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220329

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220426

R150 Certificate of patent or registration of utility model

Ref document number: 7065877

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150