JP7314217B2 - 専用ニューラルネットワークトレーニングチップ - Google Patents
専用ニューラルネットワークトレーニングチップ Download PDFInfo
- Publication number
- JP7314217B2 JP7314217B2 JP2021142529A JP2021142529A JP7314217B2 JP 7314217 B2 JP7314217 B2 JP 7314217B2 JP 2021142529 A JP2021142529 A JP 2021142529A JP 2021142529 A JP2021142529 A JP 2021142529A JP 7314217 B2 JP7314217 B2 JP 7314217B2
- Authority
- JP
- Japan
- Prior art keywords
- dedicated hardware
- vector
- hardware chip
- scalar
- memory
- 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
Links
- 238000013528 artificial neural network Methods 0.000 title claims description 48
- 238000012549 training Methods 0.000 title claims description 23
- 239000013598 vector Substances 0.000 claims description 120
- 230000015654 memory Effects 0.000 claims description 70
- 239000011159 matrix material Substances 0.000 claims description 63
- 238000012545 processing Methods 0.000 claims description 39
- 230000009467 reduction Effects 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000004913 activation Effects 0.000 description 19
- 238000001994 activation Methods 0.000 description 19
- 238000000034 method Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000009471 action Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000017105 transposition Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Rehabilitation Tools (AREA)
- Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
Description
この明細書は、ハードウェアでのニューラルネットワーク計算の実行に関する。ニュー
ラルネットワークは機械学習モデルであり、各々が、モデルの1つ以上の層を用いて、受
信した入力に対する出力、たとえば分類などを生成する。一部のニューラルネットワーク
には、出力層に加えて1つ以上の隠れ層が含まれる。各隠れ層の出力は、ネットワーク内
の次の層、つまりネットワークの次の隠れ層または出力層への入力として用いられる。ネ
ットワークの各層は、それぞれのパラメータのセットの現在の値に従って、受信した入力
から出力を生成する。
本明細書では、機械学習ワークロード、特にトレーニング段階に最適化されたプログラ
ム可能な線形代数アクセラレータである専用ハードウェアチップに関する技術について説
明する。
具現化することができる。
応するコンピュータシステム、装置、および1つ以上のコンピュータ記憶装置に記録され
たコンピュータプログラムを含む。1つ以上のコンピュータのシステムが特定の操作また
はアクションを実行するように構成されているとは、動作中にそのシステムにそのような
操作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、また
はそれらの組み合わせがそのシステムにインストールされていることを意味する。1つ以
上のコンピュータプログラムが特定の操作またはアクションを実行するように構成される
とは、1つ以上のプログラムが、データ処理装置によって実行されると、データ処理装置
にそのような操作またはアクションを実行させる命令を含むことを意味する。
は組み合わせて任意選択で含むことができる。特に、一実施形態は、以下の特徴をすべて
組み合わせて含む。
ードウェアチップの計算動作を制御するように構成されたスカラープロセッサと、ベクト
ル処理ユニットの2次元配列を有するように構成されたベクトルプロセッサとを備えても
よく、ベクトル処理ユニットは、すべて、同じ命令を単一命令複数データ方式で実行し、
ベクトルプロセッサのロードおよびストア命令を通して互いに通信し、専用ハードウェア
チップはさらに、ベクトルプロセッサに結合され、乗算結果を得るために、少なくとも1
つの2次元行列を第2の1次元ベクトルまたは2次元行列と乗算するように構成された行
列乗算ユニットを備えてもよい。
構成されてもよい。スカラーメモリが、スカラープロセッサに高速のプライベートメモリ
を提供するように構成されてもよい。転置ユニットが、行列の転置演算を実行するように
構成されてもよい。削減および置換ユニットが、ベクトルアレイの異なるレーン間におい
て、数値上で削減を実行し、数値を置換するように構成されてもよい。高帯域幅メモリが
、専用ハードウェアチップのデータを記憶するように構成されてもよい。専用ハードウェ
アチップは、疎計算コアを備えてもよい。
ーフェイスまたはリソースを他の専用ハードウェアチップまたはリソースに接続するチッ
プ間相互接続とを備えてもよい。
ンターフェイスおよび高帯域幅メモリを他の専用ハードウェアチップに接続してもよい。
インターフェイスは、ホストコンピュータへのホストインターフェイスであってもよい。
インターフェイスは、ホストコンピュータのネットワークへの標準ネットワークインター
フェイスであってもよい。
実施の形態において実現することができる。専用ハードウェアチップは、機械学習用の3
2ビット以下の精度計算用に最適化されながらも、従来の0次元および1次元のテンソル
計算に加えて、より高次元のテンソル(つまり、2次元以上)をネイティブにサポートす
るプロセッサを含む。
において述べられる。主題の他の特徴、局面および利点は、詳細な説明、図面および特許
請求の範囲から明らかになる。
詳細な説明
複数の層を有するニューラルネットワークをトレーニングし、それを推論の計算に用い
ることができる。一般に、ニューラルネットワークの一部またはすべての層は、ニューラ
ルネットワークのトレーニング中に調整されるパラメータを有する。たとえば、一部また
はすべての層は、その層に対する、重みとも称されるパラメータの行列に、層出力の生成
の一部として、その層への入力を乗算できる。行列内のパラメータの値は、ニューラルネ
ットワークのトレーニング中に調整される。
ング手順を実行して、ニューラルネットワークのパラメータの値を調整して、たとえば、
パラメータの初期値からパラメータのトレーニングを経た値を判断する。トレーニングシ
ステムは、逆伝播として知られる誤差の逆伝播を、最適化方法と組み合わせて用いて、ニ
ューラルネットワークの各パラメータに関して目的関数の勾配を計算し、その勾配を用い
てパラメータの値を調整する。
つまり、ニューラルネットワークの層を介して入力を処理し、その入力に対するニューラ
ルネットワーク出力を生成できる。
算することができる。ニューラルネットワークは、ニューラルネットワークの各層を通し
て入力を処理することによって、この推論を計算する。いくつかの実装形態では、ニュー
ラルネットワークの層はシーケンスで配置される。
の入力を受け取り、それを各ニューラルネットワーク層を通してシーケンスで処理して推
論を生成し、1つのニューラルネットワーク層からの出力が次のニューラルネットワーク
層への入力として与えられる。ニューラルネットワーク層へのデータ入力、たとえば、ニ
ューラルネットワークへの入力、またはシーケンス内におけるその層の下の層の、あるニ
ューラルネットワーク層への出力は、その層への活性化入力と呼ぶことができる。
まり、任意の特定の層が複数の入力、複数の出力、またはそれらの両方を受け取ることが
できる。ニューラルネットワークの層は、ある層の出力を前の層への入力として送り返す
ことができるように構成することもできる。
ルチチップテンソル計算システムである。これらの操作は、ニューラルネットワークのト
レーニング、およびオプションで、ニューラルネットワークを用いて推論を計算するため
に重要である。
ために、複数の専用チップが操作を分散するように配置される。1つの実装形態では、ボ
ード上に4つのチップがあり、より大きなシステムでは、多くのボードがラック内で隣り
合っているか、またはそうでなければ相互にデータ通信を行なう。
~101dの例示的集合体を接続する高速接続の例示的トポロジを示す。各チップには2
つのプロセッサ(102a~102h)が含まれる。このトポロジは、1次元(1D)ト
ーラスであり、1Dトーラスでは、各チップは2つの隣接チップに直接接続される。示さ
れているように、一部の実装形態では、チップには、操作を実行するようソフトウェア命
令またはファームウェア命令でプログラムされたマイクロプロセッサコアが含まれる。図
1では、すべてのチップが単一のモジュール100上にある。図に示されているプロセッ
サ間の線は、高速データ通信リンクを表す。プロセッサは1つの集積回路基板上に有利に
製造されるが、複数の基板上に製造することもできる。チップ境界を越えて、リンクは、
チップ間ネットワークリンクであり、同じチップ上のプロセッサは、チップ内インターフ
ェイスリンクを介して通信する。リンクは、一度に1つのプロセッサのみがデータを送信
できる半二重リンクであってもよいし、データを両方向に同時に送信できる全二重リンク
であってもよい。この例示的トポロジを用いる並列処理およびその他については、201
7年2月21日に提出され、ここに引用により援用される、「PARALLEL PROCESSING OF R
EDUCTION AND BROADCAST OPERATIONS ON LARGE DATASETS OF NON-SCALAR DATA(非スカラ
ーデータの大規模データセットの削減およびブロードキャスト操作の並列処理)」と題さ
れる米国特許出願第62/461,758号において詳細に説明される。
チップのハイレベル図を示す。図示されているように、単一の専用ハードウェアチップに
は2つの独立したプロセッサ(202a、202b)が含まれる。各プロセッサ(202
a、202b)には、2つの異なるコア:(1)コンピュートコア、たとえば非常に長い
命令語(VLIW)マシン(203a、203b)、および(2)疎計算コア、つまり埋
め込み層アクセラレータ(205a、205b)が含まれる。
に長い命令語が、いくつかのコンピュートコアを並列で制御する。コンピュートコアは、
図3および図4を参照してより詳細に説明される。
次元データにマッピングし、残りの層が密に充填された入力データを処理するようにする
。たとえば、疎計算コアは、トレーニング中のニューラルネットワークの埋め込み層の計
算を実行できる。
る、予め構築されたルックアップテーブルを用いる。たとえば、ユーザ入力として一連の
クエリワードがある場合、各クエリワードはハッシュ識別子またはワンホットエンコード
されたベクトルに変換される。識別子をテーブルインデックスとして用いて、埋め込みテ
ーブルは対応する密なベクトルを返し、それは、次の層への入力活性化ベクトルになるこ
とができる。疎計算コアは、検索クエリワードにわたって削減操作を実行して、1つの密
な活性化ベクトルを作成することもできる。疎計算コアは、効率的な疎の、分散されたル
ックアップを実行し、なぜならば、埋め込みテーブルが巨大であり得、専用ハードウェア
チップの1つの限られた容量の高帯域幅メモリに収まらないためである。疎計算コア機能
に関する詳細は、2016年2月5日に提出された「MATRIX PROCESSING APPARATUS(行
列処理装置)」と題される米国特許出願第15/016,486号に記載され、それをこ
こに引用により援用する。
複数のコンピュートユニットを並列で制御するマシン、つまりVLIWマシンであること
ができる。各コンピュートコア(300)には、スカラーメモリ(304)、ベクトルメ
モリ(308)、スカラープロセッサ(303)、ベクトルプロセッサ(306)、およ
び拡張ベクトルユニット(つまり、行列乗算ユニット(MXU)(313)と、転置ユニ
ット(XU)(314)と、削減および置換ユニット(RPU)(316))が含まれる
。
ピュートコアを制御する。命令バンドルをフェッチしてデコードした後、スカラープロセ
ッサ自体は、スカラープロセッサ(303)およびスカラーメモリ(304)の複数のマ
ルチビットレジスタ、つまり32の32ビットレジスタを用いて、命令バンドルのスカラ
ースロットにおいて見いだされる命令を実行するのみである。スカラー命令セットには、
アドレス計算、ロード/ストア命令、分岐命令などで使用される通常の算術演算が含まれ
る。残りの命令スロットは、ベクトルプロセッサ(306)または他の拡張ベクトルユニ
ット(313、314、316)の命令をエンコードする。デコードされたベクトル命令
は、ベクトルプロセッサ(306)に転送される。
タの値を他のプロセッサおよびユニットに転送して、演算を実行できる。スカラープロセ
ッサは、ベクトルプロセッサから計算結果を直接取得することもできる。ただし、一部の
実装形態では、例示的なチップは、ベクトルプロセッサからスカラープロセッサへの低帯
域幅通信パスを有する。
る。このディスパッチャは、非スカラーVLIWスロットからデコードされた命令を受け
取り、それらの命令をベクトルプロセッサ(306)にブロードキャストする。ベクトル
プロセッサ(306)は、同じ命令を単一命令複数データ(SIMD)方式で実行するベ
クトル処理ユニットの2次元配列、すなわち128×8の配列からなる。ベクトル処理ユ
ニットは、図4を参照して詳細に説明される。
モリ(304)にアクセスする。このメモリは、はるかにより大きく、低速な高帯域幅メ
モリ(HBM)(310)によってバックアップされる。同様に、例示的なベクトルプロ
セッサ(306)は、小さい、高速な、プライベートベクトルメモリ(306)にアクセ
スする。このメモリも、HBM(310)によってバックアップされる。ワード粒度アク
セスは、スカラープロセッサ(303)とスカラーメモリ(304)との間、またはベク
トルプロセッサ(306)とベクトルメモリ(308)との間で起こる。ベクトルプロセ
ッサとベクトルメモリとの間のロードおよびストアの粒度は、128個の32ビットワー
ドのベクトルである。ダイレクトメモリアクセスは、スカラーメモリ(304)とHBM
(310)との間、およびベクトルメモリ(306)とHBM(310)との間で起こる
。いくつかの実装形態では、HBM(310)からプロセッサ(303、306)へのメ
モリ転送は、スカラーメモリまたはベクトルメモリを介してのみ実行できる。さらに、ス
カラーメモリとベクトルメモリとの間でダイレクトメモリ転送が行われない場合がある。
ット命令に加えて、各々が1つのレジスタ値を拡張ベクトルユニットに入力オペランドと
して送ることができる2次元、つまり128×8のベクトルユニットがある。各拡張ベク
トルユニットは、入力オペランドを受け取り、対応する演算を実行し、結果をベクトルプ
ロセッサ(306)に返す。拡張ベクトルユニットは、図4を参照して以下に説明される
。
図を示す。上で図示し説明したように、チップには2つのコンピュートコア(480a、
480b)と2つの疎計算コア(452a、452b)とが含まれる。
ターフェイスを含む共有領域がある。このインターフェイスは、ホストコンピュータへの
ホストインターフェイス、またはホストコンピュータのネットワークへの標準ネットワー
クインターフェイスとすることができる。共有領域は、下部に沿って高帯域幅メモリのス
タック(456a~456d)、およびインターフェイスとメモリとを接続するチップ間
相互接続(448)、ならびに他のチップからのデータも有し得る。相互接続は、インタ
ーフェイスをハードウェアチップ上の計算リソースに接続することもできる。高帯域幅メ
モリの複数のスタック、つまり2つのスタック(456a~456b、456c~456
d)が各コンピュートコア(480a、480b)に関連付けられる。
クトルメモリにおいて読込および読出し(446)、そのデータを処理する。コンピュー
トコア(480b)自体は、2次元に分割されたオンチップS-RAMであるベクトルメ
モリ(446)を含む。ベクトルメモリには、アドレスが浮動小数点数、つまり各々32
ビットである128個の数値を保持するアドレス空間がある。コンピュートコア(480
b)は、値を計算する計算ユニット、および計算ユニットを制御するスカラーユニットも
含む。計算ユニットはベクトルプロセッサを含んでもよく、スカラーユニットはスカラー
プロセッサを含んでもよい。専用チップの一部を形成し得るコンピュートコアは、行列乗
算ユニット、または行列、つまり128×128の行列の転置演算を実行する転置ユニッ
ト(422)などの別の拡張演算ユニット、ならびに削減および置換ユニットをさらに含
むことができる。
8×8から成り、これらはすべて、同じ命令を単一命令複数データ(SIMD)方式で実
行する。ベクトルプロセッサには、レーンとサブレーン、つまり128本のレーンおよび
8本のサブレーンがある。レーン内において、ベクトルユニットはロード命令およびスト
ア命令を介して互いに通信する。各ベクトルユニットは、一度に1つの4バイト値にアク
セスできる。同じレーンに属さないベクトルユニットは直接通信できない。これらのベク
トルユニットは、以下で説明する削減/置換ユニットを用いる必要がある。
方に用いることができるベクトルレジスタ(440)、つまり32個のレジスタを含む。
計算ユニットは、計算を実行するための2つの算術論理ユニット(ALU)(406c~
406d)を含む。一方のALU(406c)は浮動小数点加算を実行し、他方のALU
(406d)は浮動小数点乗算を実行する。両方のALU(406c~406d)は、シ
フト、マスク、比較などの他のさまざまな演算を実行できる。たとえば、コンピュートコ
ア(480b)は、ベクトルレジスタV1と第2のベクトルレジスタV2とを加算し、結
果を第3のベクトルレジスタV3に入れたい場合がある。この加算を計算するために、コ
ンピュートコア(480b)は複数の演算を1クロックサイクルで実行する。これらのレ
ジスタをオペランドとして用いて、各ベクトルユニットは、クロックサイクルごとに2つ
のALU命令と1つのロードおよび1つのストア命令とを同時に実行できる。ロードまた
はストア命令のベースアドレスは、スカラープロセッサで計算でき、ベクトルプロセッサ
に転送できる。各サブレーンにおけるベクトルユニットの各々は、ストライドや特別なイ
ンデックス付きアドレスレジスタなどのさまざまな方法を用いて、それ自体のオフセット
アドレスを計算できる。
(416)も含む。コンピュートコア(480b)は、これらの演算を実行するのに3ク
ロックサイクルかかり、なぜならば、それらは計算が複雑であるからである。EUP処理
には1クロックサイクル以上かかるため、結果を保存する先入れ先出しのデータストレー
ジがある。演算が終了すると、結果はFIFOに保存される。コンピュートコアは、後で
別の命令を用いて、FIFOからデータを引き出し、それをベクトルレジスタに格納でき
る。乱数生成器(420)により、コンピュートコア(480b)はサイクルごとに複数
の乱数、つまりサイクルごとに128の乱数を生成できる。
つの拡張演算ユニット、つまり、行列乗算演算を実行する行列乗算ユニット(448)と
、行列、すなわち128×128の行列の転置演算を実行する転置ユニット(422)と
、削減および置換ユニット(図4において別個のユニット424、426として示される
)とを有する。
される行列である一連の数値を読み込む必要があるため、行列乗算ユニット(438)は
データを取り込む。図示されているように、データはベクトルレジスタ(440)から来
る。各ベクトルレジスタには、128×8の数値、つまり32ビットの数値が含まれる。
しかしながら、データを行列乗算ユニット(448)に送って、数値をより小さなビット
サイズ、つまり32ビットから16ビットに変更すると、浮動小数点変換が発生する場合
がある。並直列変換器(440)は、ベクトルレジスタから数値が読み取られるときに、
2次元配列つまり128×8の行列が128個の数値のセットとして読み取られ、次の8
クロックサイクルの各々ごとに行列乗算ユニット(448)に送信されることを保証する
。行列乗算がその計算を完了した後、結果は非直列化され(442a、442b)、これ
は、結果行列が、ある数のクロックサイクルの間保持されることを意味する。たとえば、
128×8の配列の場合、128個の数値が8クロックサイクルの各々ごとに保持され、
次いでFIFOにプッシュされ、128×8の数値の2次元配列を1クロックサイクルで
取得してベクトルレジスタ(440)に格納できる。
として行列乗算ユニット(448)にシフトされる。行列および重みがロードされると、
コンピュートコア(480)は、数値のセット、つまり128×8を行列乗算ユニット(
448)に送ることができる。セットの各ラインに行列を乗算して、クロックサイクルご
とにある数の結果、つまり128を生成できる。コンピュートコアが行列乗算を実行して
いる間、コンピュートコアは、前の行列の計算プロセスが完了したときに、コンピュート
コアが乗算する次の行列が利用できるように、バックグラウンドにおいて次の行列になる
新たな数値のセットのシフトも行う。行列乗算ユニット(448)は、「LOW MATRIX MUL
TIPLY UNIT COMPOSED OF MULTI-BIT CELLS(マルチビットセルで構成された低行列乗算ユ
ニット)」と題される16113-8251001、および「MATRIX MULTIPLY UNIT WIT
H NUMERICS OPTIMIZED FOR NEURAL NETWORK APPLICATIONS(数値がニューラルネットワー
クアプリケーション向けに最適化された行列乗算ユニット)」と題される16113-8
252001に、より詳細に説明され、それらの両方をここに引用により援用する。
らを転置して、レーンを横切る数が他の次元の数値と転置されるようにする。一部の実装
形態では、ベクトルプロセッサは128×8のベクトルユニットを含む。したがって、1
28×128の行列を転置するには、完全な行列転置のために16個の個別の転置命令が
必要である。転置が終了すると、転置された行列が利用可能になる。ただし、転置された
行列をベクトルレジスタファイルに移動するには、明示的な命令が必要である。
換、レーン削減、置換されたレーン削減、およびセグメント化された置換されたレーン削減などのさまざまな操作をサポートすることで、クロスレーン通信の問題に対処する。図
示されているように、これらの計算は別々であるが、コンピュートコアは一方もしくは他
方または一方に連鎖された他方を用いることができる。削減ユニット(424)は、数値
からなる各ラインにおけるすべての数値を加算し、それらの数値を置換ユニット(426
)に供給する。置換ユニットは、異なるレーン間でデータを移動する。転置ユニット、削減ユニット、置換ユニット、および行列乗算ユニットは、各々、完了までに1クロックサ
イクル以上かかる。したがって、各ユニットにはFIFOが関連付けられ、計算結果をF
IFOにプッシュし、後で別の命令を実行して、データをFIFOからベクトルレジスタ
にプルできる。FIFOを用いることにより、コンピュートコアは、長々とした演算の間
、複数のベクトルレジスタを予約する必要がない。図示されているように、各ユニットは
ベクトルレジスタ(440)からデータを取得する。
ニットには2つの主要な機能があり、それは、(1)ループカウントおよびアドレス指定
を実行すること、ならびに(2)DMAコントローラがバックグラウンドにおいて高帯域
幅メモリ(456c~456d)とベクトルメモリ(446)との間で、および次いで例
示のシステムにおける他のチップへのチップ間接続(448)にデータを移動するよう、
ダイレクトメモリアドレス(DMA)要求を生成することである。スカラーユニットは、
命令メモリ(404)と、命令デコードおよび発行(402)と、スカラーレジスタすな
わち32ビットを含むスカラー処理ユニット(408)と、スカラーメモリ(410)と
、クロックサイクルごとに2つの演算を実行する2つのALU(406a、406b)と
を含む。スカラーユニットは、オペランドと即値とをベクトル演算に渡すことができる。
各命令は、ベクトルレジスタ(440)で実行される命令を含む命令バンドルとして、命
令デコードおよび発行(402)から送ることができる。各命令バンドルは非常に長い命
令語(VLIW)であり、各命令はある数のビット幅であり、ある数の命令フィールドに
分割される。
行することができる。特に、ニューラルネットワークをトレーニングする場合、システム
はホストインターフェイス(450)を用いてホストコンピュータからラベル付きトレー
ニングデータを受信する。ホストインターフェイスは、ニューラルネットワーク計算のた
めのパラメータを含む命令を受信することもできる。パラメータは、処理すべき層の数、
各層についての対応する重み入力のセット、活性化入力の初期セット、つまり推論の計算
またはトレーニングの対象となるニューラルネットワークへの入力であるトレーニングデ
ータ、各層の対応する入力および出力サイズ、ニューラルネットワーク計算のストライド
値、ならびに処理対象の層のタイプ、たとえば畳み込み層または全結合層、のうちの少な
くとも1つ以上を含むことができる。
に送ることができる。重み入力および活性化入力を行列乗算ユニットに送る前に、システ
ム内の他のコンポーネントが入力に対して他の計算を実行してもよい。一部の実装形態で
は、疎計算コアからコンピュートコアに活性化を送る方法が2つある。まず、疎計算コア
は、高帯域幅メモリを介して通信を送信することができる。大量のデータの場合、疎計算
コアは、ダイレクトメモリアドレス(DMA)命令を用いて活性化を高帯域幅メモリに格
納でき、これにより、コンピュートコアにおいてターゲット同期フラグが更新される。コ
ンピュートコアは、同期命令を用いてこの同期フラグを待つことができる。同期フラグが
セットされると、計算コアはDMA命令を用いて、活性化を高帯域幅メモリから対応する
ベクトルメモリにコピーする。
タ量が大きくない場合(つまり、コンピュートコアベクトルメモリに収まる場合)、疎計
算コアは、コンピュートコアに同期フラグで通知しながら、DMA命令を用いてコンピュ
ートコアのベクトルメモリに活性化を直接格納できる。コンピュートコアは、この同期フ
ラグを待ったのち、活性化に依存する計算を実行することができる。
をベクトル処理ユニットに与えることができる。ベクトル処理ユニットは、処理された出
力のベクトルまたは行列を格納できる。たとえば、ベクトル処理ユニットは、非線形関数
を行列乗算ユニットの出力に適用して、活性化された値を生成できる。いくつかの実装形
態では、ベクトル処理ユニットは、正規化された値、プールされた値、またはその両方を
生成する。処理された出力のベクトルは、たとえばニューラルネットワーク内の後続の層
で用いるために、行列乗算ユニットへの活性化入力として用いることができる。
らの出力をラベル付きトレーニングデータの期待される出力と比較して、誤差を判断でき
る。その後、システムは、ネットワークをトレーニングするために、逆伝播を実行して、
ニューラルネットワークを介して誤差を伝播できる。損失関数の勾配は、オンチップでベ
クトル処理ユニットの算術論理ユニットを用いて計算される。
活性化勾配が必要である。活性化勾配をコンピュートコアから疎計算コアに送るために、
例示のシステムでは、コンピュートコアDMA命令を用いて、ターゲット疎計算コアに同
期フラグで通知しながら、活性化勾配を高帯域幅メモリに保存できる。疎計算コアは、こ
の同期フラグを待ったのち、活性化勾配に依存する計算を実行することができる。
は、逆伝播誤差をネットワーク内の前の層からネットワークを通る逆方向パスに沿って重
みに適用して、重みを調整してニューラルネットワークのための新たな重みを決定する。
第2の行列乗算は、ニューラルネットワーク内の前の層へのフィードバックとして、元の
活性化に誤差を適用する。元の活性化は、順方向パス中に生成され、逆方向パス中に用い
るために保存されてもよい。計算には、浮動小数点加算、減算、および乗算を含む、ベク
トル処理ユニットにおける汎用命令を用いることができる。汎用命令には、比較、シフト
、マスク、および論理演算も含まれ得る。行列の乗算は非常に加速され得るが、ベクトル
処理ユニットの算術論理ユニットは、サイクルあたり、コアあたり128×8×2の演算
の速度で一般的な計算を実行する。
る構造およびそれらの構造的等価物を含む、デジタル電子回路系において、有形で実施さ
れるコンピュータソフトウェアもしくはファームウェアにおいて、コンピュータハードウ
ェアにおいて、またはそれらの1つ以上の組合せにおいて実現され得る。本明細書に記載
される主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわち、データ
処理装置による実行のために、または、データ処理装置の動作を制御するために有形の非
一時的な記憶媒体上でエンコードされたコンピュータプログラム命令の1つ以上のモジュ
ールとして実現され得る。コンピュータ記憶媒体は、機械可読記憶装置、機械可読記憶基
板、ランダムもしくはシリアルアクセスメモリデバイス、または、それらの1つ以上の組
合せであり得る。代替的に、または加えて、プログラム命令は、データ処理装置による実
行に対して好適な受信側装置への送信のために情報をエンコードするよう生成される、た
とえばマシンにより生成された電気信号、光信号、または電磁気信号などの、人為的に生
成された伝搬される信号上でエンコードすることができる。
マブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む
、データを処理するためのすべての種類の装置、デバイスおよびマシンを包含する。当該
装置は、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(
特定用途向け集積回路)といった特定目的論理回路でもあることができるかまたはそれを
さらに含み得る。当該装置は、ハードウェアに加えて、たとえばプロセッサファームウェ
ア、プロトコルスタック、データベース管理システム、オペレーティングシステム、また
は、それらの1つ以上の組合せを構成するコードといった、コンピュータプログラムにつ
いて実行環境を作成するコードをオプションとして含み得る。
ュール、ソフトウェアモジュール、スクリプトまたはコードとも称され、または記載され
得るコンピュータプログラムは、コンパイル型もしくはインタープリタ型言語、または宣
言型もしくは手続き型言語を含む任意の形態のプログラミング言語で記述され得、スタン
ドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、もし
くは、コンピューティング環境で使用するのに好適な他のユニットとして任意の形態で展
開され得る。プログラムは、ファイルシステムにおけるファイルに対応し得るが、対応す
る必要があるわけではない。プログラムは、当該プログラムに専用である単一のファイル
において、または、複数の連携ファイル(coordinated files)(たと
えばコードの1つ以上のモジュール、サブプログラムまたは部分を格納するファイル)に
おいて、他のプログラムまたはデータ(たとえばマークアップ言語ドキュメントに格納さ
れる1つ以上のスクリプト)を保持するファイルの一部に格納され得る。コンピュータプ
ログラムは、1つの場所に位置するかもしくは複数の場所にわたって分散されデータ通信
ネットワークによって相互接続される1つのコンピュータまたは複数のコンピュータ上で
実行されるように展開され得る。
することにより機能を実行するよう1つ以上のプログラマブルコンピュータが1つ以上の
コンピュータプログラムを実行することによって実行され得る。本プロセスおよび論理フ
ローは、たとえばFPGAもしくはASICといった特殊目的論理回路系によっても、ま
たは特殊目的論理回路計と1つ以上のプログラムされたコンピュータとの組み合わせによ
っても実行され得る。
もしくは特殊目的マイクロプロセッサもしくはその両方または任意の種類の中央処理ユニ
ットに基づき得る。一般に、中央処理ユニットは、リードオンリメモリもしくはランダム
アクセスメモリまたはその両方から命令およびデータを受け取る。コンピュータの必須の
要素は、命令を実行するための中央処理ユニットと、命令およびデータを格納するための
1つ以上のメモリデバイスとである。中央処理ユニットおよびメモリは、特殊目的論理回
路系によって補足され得るか、または特殊目的論理回路に組み込まれ得る。一般に、コン
ピュータはさらに、たとえば磁気ディスク、光磁気ディスクまたは光ディスクといった、
データを格納するための1つ以上の大容量記憶装置を含むか、当該1つ以上の大容量記憶
装置からデータを受け取るかもしくは当該1つ以上の大容量記憶装置にデータを転送する
よう動作可能に結合されるか、またはその両方を行う。しかしながら、コンピュータはそ
のような装置を有する必要はない。さらに、コンピュータはたとえば、携帯電話、携帯情
報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地
球測位システム(GPS)受信機、またはポータブル記憶装置(たとえばユニバーサルシ
リアルバス(USB)フラッシュドライブ)といった別のデバイスに埋め込まれ得る。
媒体は、例として、たとえばEPROM、EEPROMおよびフラッシュメモリデバイス
といった半導体メモリデバイスを含むすべての形態の不揮発性メモリ、媒体およびメモリ
デバイス;たとえば内部ハードディスクまたはリムーバブルディスクといった磁気ディス
ク;光磁気ディスク;ならびにCD-ROMおよびDVD-ROMディスクを含む。
RT(陰極線管)またはLCD(液晶ディスプレイ)モニタといったユーザに対して情報
を表示するための表示デバイスと、たとえばマウス、トラックボールといったユーザがコ
ンピュータに入力を与えることができるキーボードおよびポインティングデバイスとを有
するコンピュータ上で実現され得る。他の種類のデバイスが、同様に、ユーザとの対話を
与えるために用いられ得;たとえば、ユーザに提供されるフィードバックは、たとえば視
覚フィードバック、聴覚フィードバックまたは触覚フィードバックといった任意の形態の
感覚フィードバックであり得;ユーザからの入力は、音響入力、音声入力、または触覚入
力を含む任意の形態で受け取られ得る。加えて、コンピュータは、ユーザが使用するデバ
イスにドキュメントを送信しユーザが使用するデバイスからドキュメントを受信すること
によって、たとえば、ウェブブラウザから受信された要求に応答してユーザのデバイス上
のウェブブラウザにウェブページを送信することによって、ユーザと対話し得る。また、
コンピュータは、テキストメッセージまたは他の形式のメッセージを個人用デバイス、た
とえばスマートフォンなどに送信し、メッセージングアプリケーションを実行し、ユーザ
から応答メッセージを受信することにより、ユーザと対話できる。
ンポーネントを含む計算システムにおいて実現され得るか、たとえばアプリケーションサ
ーバといったミドルウェアコンポーネントを含む計算システムにおいて実現され得るか、
たとえば本明細書に記載される主題の実現例とユーザが対話することが可能であるグラフ
ィカルユーザインターフェイス、ウェブブラウザもしくはアプリを有するクライアントコ
ンピュータといったフロントエンドコンポーネントを含む計算システムにおいて実現され
得るか、または1つ以上のそのようなバックエンドコンポーネント、ミドルウェアコンポ
ーネントもしくはフロントエンドコンポーネントの任意の組合せの計算システムにおいて
実現され得る。システムのコンポーネントは、たとえば通信ネットワークといったデジタ
ルデータ通信の任意の形態または媒体によって相互接続され得る。通信ネットワークの例
は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)
、たとえばインターネットを含む。
とは一般に互いから遠隔にあり、典型的には通信ネットワークを通じて対話する。クライ
アントとサーバとの関係は、それぞれのコンピュータ上で実行されるとともに互いに対し
てクライアント-サーバ関係を有するコンピュータプログラムによって発生する。いくつ
かの実施形態では、サーバは、例えば、クライアントとして振る舞うユーザデバイスと対
話するユーザにデータを表示し、およびそのユーザからユーザ入力を受信する目的で、デ
ータ、例えば、HTMLページをユーザデバイスに送信する。ユーザデバイスで生成され
たデータ、例えば、ユーザ対話の結果は、ユーザデバイスからサーバで受信することがで
きる。
ップであって、専用ハードウェアチップの計算動作を制御するように構成されたスカラー
プロセッサと、ベクトル処理ユニットの2次元配列を有するように構成されたベクトルプ
ロセッサとを備え、ベクトル処理ユニットは、すべて、同じ命令を単一命令複数データ方
式で実行し、ベクトルプロセッサのロードおよびストア命令を通して互いに通信し、専用
ハードウェアチップはさらに、ベクトルプロセッサに結合され、乗算結果を得るために、
少なくとも1つの2次元行列を第2の1次元ベクトルまたは2次元行列と乗算するように
構成された行列乗算ユニットを備える。
されたベクトルメモリをさらに備える、実施形態1の専用ハードウェアチップである。
されたスカラーメモリをさらに備える、実施形態1または2の専用ハードウェアチップで
ある。
る、実施形態1~3のいずれか1つの専用ハードウェアチップである。
値を置換するように構成された、削減および置換ユニットをさらに備える、実施形態1~
4のいずれか1つの専用ハードウェアチップである。
メモリをさらに備える、実施形態1~5のいずれか1つの専用ハードウェアチップである
。
ウェアチップである。
たはリソースを他の専用ハードウェアチップまたはリソースに接続するチップ間相互接続
とをさらに備える、実施形態1~7のいずれか1つの専用ハードウェアチップである。
ェイスおよび高帯域幅メモリを他の専用ハードウェアチップに接続する、実施形態1~8
のいずれか1つの専用ハードウェアチップである。
スである、実施形態1~9のいずれか1つの専用ハードウェアチップである。
ットワークインターフェイスである、実施形態1~10のいずれか1つの専用ハードウェ
アチップである。
たは請求され得るものの範囲に対する限定としても解釈されるべきではなく、特定の発明
の特定の実施形態に特有の特徴であり得る記載として解釈されるべきである。別個の実施
形態の文脈で本明細書において記載されるある特徴は、単一の実施形態において組合せで
も実現され得る。反対に、単一の実施形態の文脈において記載されるさまざまな特徴は、
複数の実施形態において別々に、または任意の好適な部分的組合わせでも実現され得る。
さらに、特徴は、ある組合せにおいて作用すると上で記載され、最初はそのように請求さ
れていさえする場合もあるが、請求される組合せからの1つ以上の特徴はいくつかの場合
には当該組合せから削除され得、請求される組合せは、部分的組合わせまたは部分的組合
わせの変形例に向けられ得る。
結果を達成するために、示された当該特定の順もしくは連続した順で実行される必要があ
ると理解されるべきではなく、または、すべての示された動作が実行される必要があると
理解されるべきではない。ある状況においては、マルチタスキングおよび並列処理が有利
であり得る。さらに、上述の実施形態におけるさまざまなシステムモジュールおよびコン
ポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解され
るべきではなく、記載されるプログラムコンポーネントおよびシステムは一般に単一のソ
フトウェア製品に統合され得るかまたは複数のソフトウェア製品にパッケージ化され得る
ことが理解されるべきである。
えば、請求項において記載されるアクションは、異なる順で実行され得、それでも望まし
い結果を達成し得る。一例として、添付の図において示されるプロセスは、望ましい結果
を達成するために、示された特定の順または連続する順であることを必ずしも必要としな
い。ある場合においては、マルチタスキングおよび並列処理が有利であり得る。
Claims (15)
- ニューラルネットワークをトレーニングするための専用ハードウェアチップであって、
前記専用ハードウェアチップの計算動作を制御するように構成されたスカラープロセッサと、
ベクトル処理ユニットの2次元配列を有するベクトルプロセッサと、
前記ベクトルプロセッサに結合され、乗算結果を得るために、少なくとも第1の2次元行列を第1の1次元ベクトルまたは第2の2次元行列と乗算するように構成された行列乗算ユニットと、
ベクトルアレイの異なるレーン間において、数値上で削減を実行し、前記数値を置換するように構成された、削減および置換ユニットとを備える、専用ハードウェアチップ。 - 前記ベクトルプロセッサに高速のプライベートメモリを提供するように構成されたベクトルメモリをさらに備える、請求項1に記載の専用ハードウェアチップ。
- 前記スカラープロセッサに高速のプライベートメモリを提供するように構成されたスカラーメモリをさらに備える、請求項1に記載の専用ハードウェアチップ。
- 行列の転置演算を実行するように構成された転置ユニットをさらに備える、請求項1~3のいずれかに記載の専用ハードウェアチップ。
- 前記専用ハードウェアチップのデータを記憶するように構成された高帯域幅メモリをさらに備える、請求項1~4のいずれかに記載の専用ハードウェアチップ。
- 疎計算コアをさらに含む、請求項1~5のいずれかに記載の専用ハードウェアチップ。
- インターフェイスと、
前記専用ハードウェアチップ上の前記インターフェイスまたはリソースを他の専用ハードウェアチップまたはリソースに接続するチップ間相互接続とをさらに備える、請求項1~6のいずれかに記載の専用ハードウェアチップ。 - 複数の高帯域幅メモリをさらに備え、前記チップ間相互接続は、前記インターフェイスおよび前記高帯域幅メモリを他の専用ハードウェアチップに接続する、請求項7に記載の専用ハードウェアチップ。
- 前記インターフェイスは、ホストコンピュータへのホストインターフェイスである、請求項7に記載の専用ハードウェアチップ。
- 前記インターフェイスは、ホストコンピュータのネットワークへの標準ネットワークインターフェイスである、請求項7に記載の専用ハードウェアチップ。
- スカラーメモリ(304)、ベクトルメモリ(308)、前記スカラープロセッサ(303)、前記ベクトルプロセッサ(306)、および前記行列乗算ユニットを備え、前記スカラープロセッサはVLIW命令フェッチ/実行ループを実行し、前記専用ハードウェアチップを制御し、命令バンドルをフェッチしてデコードした後、前記スカラープロセッサ自体は、前記スカラープロセッサおよび前記スカラーメモリの複数のマルチビットビットレジスタを用いて、前記命令バンドルのスカラースロットにおいて見いだされる命令を実行するのみであり、スカラー命令セットは、アドレス計算、ロード/ストア命令、および分岐命令で使用される算術演算を含み、残りの命令スロットは、前記ベクトルプロセッサ(306)および前記行列乗算ユニットについての命令をエンコードする、請求項7に記載の専用ハードウェアチップ。
- 各ベクトル処理ユニットは32個のレジスタを含み、各ベクトル処理ユニットは、浮動小数点演算および整数演算の少なくとも1つを実行するために用いられ得る、請求項1~11のいずれかに記載の専用ハードウェアチップ。
- 各ベクトル処理ユニットは、各クロックサイクルにおいて、2つのそれぞれの算術論理ユニット(ALU)命令、それぞれのロード命令、およびそれぞれのストア命令を実行するよう構成される、請求項1~12のいずれかに記載の専用ハードウェアチップ。
- 各ベクトル処理ユニットは、各クロックサイクルにおいて、前記それぞれのロード命令および前記それぞれのストア命令を実行するためにオフセットメモリアドレスを演算するよう構成される、請求項13に記載の専用ハードウェアチップ。
- 前記ベクトルプロセッサは複数のレーンを含み、前記ベクトルプロセッサにおける前記ベクトル処理ユニットの各々は、前記複数のレーンのそれぞれのレーンに位置し、
同じレーンに位置する前記ベクトル処理ユニットのうちの1つ以上は、それぞれのロード命令およびストア命令を介して互いと通信するよう構成される、請求項1~14のいずれかに記載の専用ハードウェアチップ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2023114361A JP2023145517A (ja) | 2017-05-17 | 2023-07-12 | 専用ニューラルネットワークトレーニングチップ |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762507771P | 2017-05-17 | 2017-05-17 | |
US62/507,771 | 2017-05-17 | ||
JP2019549507A JP6938661B2 (ja) | 2017-05-17 | 2018-05-17 | 専用ニューラルネットワークトレーニングチップ |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019549507A Division JP6938661B2 (ja) | 2017-05-17 | 2018-05-17 | 専用ニューラルネットワークトレーニングチップ |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023114361A Division JP2023145517A (ja) | 2017-05-17 | 2023-07-12 | 専用ニューラルネットワークトレーニングチップ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022003532A JP2022003532A (ja) | 2022-01-11 |
JP7314217B2 true JP7314217B2 (ja) | 2023-07-25 |
Family
ID=62784215
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019549507A Active JP6938661B2 (ja) | 2017-05-17 | 2018-05-17 | 専用ニューラルネットワークトレーニングチップ |
JP2021142529A Active JP7314217B2 (ja) | 2017-05-17 | 2021-09-01 | 専用ニューラルネットワークトレーニングチップ |
JP2023114361A Pending JP2023145517A (ja) | 2017-05-17 | 2023-07-12 | 専用ニューラルネットワークトレーニングチップ |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019549507A Active JP6938661B2 (ja) | 2017-05-17 | 2018-05-17 | 専用ニューラルネットワークトレーニングチップ |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023114361A Pending JP2023145517A (ja) | 2017-05-17 | 2023-07-12 | 専用ニューラルネットワークトレーニングチップ |
Country Status (8)
Country | Link |
---|---|
US (2) | US11275992B2 (ja) |
EP (3) | EP4361832A2 (ja) |
JP (3) | JP6938661B2 (ja) |
KR (4) | KR102661910B1 (ja) |
CN (2) | CN110622134B (ja) |
DK (1) | DK3568756T3 (ja) |
TW (3) | TWI728247B (ja) |
WO (1) | WO2018213598A1 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10853070B1 (en) * | 2017-10-23 | 2020-12-01 | Habana Labs Ltd. | Processor suspension buffer and instruction queue |
US11645358B2 (en) * | 2019-01-29 | 2023-05-09 | Hewlett Packard Enterprise Development Lp | Generation of executable files corresponding to neural network models |
US10997116B2 (en) * | 2019-08-06 | 2021-05-04 | Microsoft Technology Licensing, Llc | Tensor-based hardware accelerator including a scalar-processing unit |
KR102496734B1 (ko) * | 2019-10-22 | 2023-02-06 | 에스앤즈 주식회사 | 분산환경 패킷 전송 기반의 스트리밍 데이터 딥러닝 처리 가속화 시스템 및 이를 이용한 멀티 로케이션 멀티 스트리밍 이상상태 탐지 시스템 |
CN111047036B (zh) * | 2019-12-09 | 2023-11-14 | Oppo广东移动通信有限公司 | 神经网络处理器、芯片和电子设备 |
US11054998B1 (en) * | 2019-12-12 | 2021-07-06 | Facebook, Inc. | High bandwidth memory system with distributed request broadcasting masters |
US11755683B2 (en) | 2019-12-23 | 2023-09-12 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors (FAST) in machine learning |
US11462003B2 (en) | 2020-03-25 | 2022-10-04 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
US11797830B2 (en) | 2020-03-25 | 2023-10-24 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
US20210312266A1 (en) * | 2020-04-01 | 2021-10-07 | Microsoft Technology Licensing, Llc | Deep neural network accelerator with independent datapaths for simultaneous processing of different classes of operations |
CN113867788A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 一种计算装置、芯片、板卡、电子设备和计算方法 |
CN112148453A (zh) * | 2020-09-29 | 2020-12-29 | 深圳致星科技有限公司 | 用于隐私计算的计算芯片及网络计算系统 |
CN112416433B (zh) * | 2020-11-24 | 2023-01-17 | 中科寒武纪科技股份有限公司 | 一种数据处理装置、数据处理方法及相关产品 |
EP4012623A1 (en) * | 2020-12-10 | 2022-06-15 | Toyota Jidosha Kabushiki Kaisha | Efficient and stable training of a neural network in compressed form |
US20240037378A1 (en) * | 2020-12-24 | 2024-02-01 | Intel Corporation | Accelerated scale-out performance of deep learning training workload with embedding tables |
CN112860318A (zh) * | 2021-01-29 | 2021-05-28 | 成都商汤科技有限公司 | 一种数据传输方法、芯片、设备和存储介质 |
TW202238368A (zh) | 2021-03-29 | 2022-10-01 | 美商谷歌有限責任公司 | 記憶體通道控制器之晶片上互連 |
US11782871B2 (en) | 2021-04-27 | 2023-10-10 | Microchip Technology Inc. | Method and apparatus for desynchronizing execution in a vector processor |
TWI808000B (zh) * | 2022-09-20 | 2023-07-01 | 創鑫智慧股份有限公司 | 矩陣裝置及其操作方法 |
CN115713103B (zh) * | 2022-11-24 | 2023-08-18 | 辉羲智能科技(上海)有限公司 | 片上-片间互连的神经网络芯片联合性能预测方法及系统 |
TWI830669B (zh) * | 2023-02-22 | 2024-01-21 | 旺宏電子股份有限公司 | 編碼方法及編碼電路 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013101210A1 (en) | 2011-12-30 | 2013-07-04 | Intel Corporation | Transpose instruction |
WO2016171928A1 (en) | 2015-04-23 | 2016-10-27 | Google Inc. | Energy efficient processor core architecture for image processor |
WO2016186801A1 (en) | 2015-05-21 | 2016-11-24 | Google Inc. | Neural network processor |
US20160378465A1 (en) | 2015-06-23 | 2016-12-29 | Intel Corporation | Efficient sparse array handling in a processor |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5841071B2 (ja) | 1981-10-13 | 1983-09-09 | 東北電子産業株式会社 | 生体誘導加熱装置 |
JPH04290155A (ja) | 1991-03-19 | 1992-10-14 | Fujitsu Ltd | 並列データ処理方式 |
CA2040903C (en) * | 1991-04-22 | 2003-10-07 | John G. Sutherland | Neural networks |
US5872988A (en) * | 1992-06-17 | 1999-02-16 | U.S. Philips Corporation | Parallel data processing device having a concatenated data path between elementary processors |
US5423051A (en) * | 1992-09-24 | 1995-06-06 | International Business Machines Corporation | Execution unit with an integrated vector operation capability |
WO2002084451A2 (en) | 2001-02-06 | 2002-10-24 | Victor Demjanenko | Vector processor architecture and methods performed therein |
US7305540B1 (en) * | 2001-12-31 | 2007-12-04 | Apple Inc. | Method and apparatus for data processing |
US7219085B2 (en) * | 2003-12-09 | 2007-05-15 | Microsoft Corporation | System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit |
US8396582B2 (en) * | 2008-03-08 | 2013-03-12 | Tokyo Electron Limited | Method and apparatus for self-learning and self-improving a semiconductor manufacturing tool |
US9785565B2 (en) * | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
US9589443B2 (en) | 2014-09-02 | 2017-03-07 | At&T Intellectual Property I, L.P. | Method and apparatus for providing an emergency notification for an allergic reaction |
KR102277439B1 (ko) * | 2014-10-21 | 2021-07-14 | 삼성전자주식회사 | 재구성 가능 프로세서 및 그 동작 방법 |
US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US10192162B2 (en) * | 2015-05-21 | 2019-01-29 | Google Llc | Vector computation unit in a neural network processor |
GB2543554B (en) * | 2015-10-22 | 2019-01-23 | Advanced Risc Mach Ltd | Handling exceptional conditions for vector arithmetic instruction |
US9904874B2 (en) * | 2015-11-05 | 2018-02-27 | Microsoft Technology Licensing, Llc | Hardware-efficient deep convolutional neural networks |
US9898441B2 (en) | 2016-02-05 | 2018-02-20 | Google Llc | Matrix processing apparatus |
US11507761B2 (en) * | 2016-02-25 | 2022-11-22 | Hewlett Packard Enterprise Development Lp | Performing complex multiply-accumulate operations |
US11416281B2 (en) * | 2016-12-31 | 2022-08-16 | Intel Corporation | Systems, methods, and apparatuses for heterogeneous computing |
-
2018
- 2018-05-17 EP EP24163748.7A patent/EP4361832A2/en active Pending
- 2018-05-17 DK DK18735433.7T patent/DK3568756T3/da active
- 2018-05-17 EP EP18735433.7A patent/EP3568756B1/en active Active
- 2018-05-17 TW TW107116869A patent/TWI728247B/zh active
- 2018-05-17 KR KR1020227045015A patent/KR102661910B1/ko active IP Right Grant
- 2018-05-17 TW TW111120440A patent/TWI812254B/zh active
- 2018-05-17 KR KR1020247013765A patent/KR20240056801A/ko active Application Filing
- 2018-05-17 JP JP2019549507A patent/JP6938661B2/ja active Active
- 2018-05-17 CN CN201880018006.8A patent/CN110622134B/zh active Active
- 2018-05-17 KR KR1020197026557A patent/KR102312264B1/ko active IP Right Grant
- 2018-05-17 WO PCT/US2018/033215 patent/WO2018213598A1/en unknown
- 2018-05-17 TW TW110117076A patent/TWI769810B/zh active
- 2018-05-17 US US15/983,056 patent/US11275992B2/en active Active
- 2018-05-17 KR KR1020217031994A patent/KR102481428B1/ko active IP Right Grant
- 2018-05-17 CN CN202310655432.5A patent/CN116644790A/zh active Pending
- 2018-05-17 EP EP22171943.8A patent/EP4083789B1/en active Active
-
2021
- 2021-09-01 JP JP2021142529A patent/JP7314217B2/ja active Active
-
2022
- 2022-03-14 US US17/694,598 patent/US20220261622A1/en active Pending
-
2023
- 2023-07-12 JP JP2023114361A patent/JP2023145517A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013101210A1 (en) | 2011-12-30 | 2013-07-04 | Intel Corporation | Transpose instruction |
WO2016171928A1 (en) | 2015-04-23 | 2016-10-27 | Google Inc. | Energy efficient processor core architecture for image processor |
WO2016186801A1 (en) | 2015-05-21 | 2016-11-24 | Google Inc. | Neural network processor |
US20160342891A1 (en) | 2015-05-21 | 2016-11-24 | Google Inc. | Neural Network Processor |
US20160378465A1 (en) | 2015-06-23 | 2016-12-29 | Intel Corporation | Efficient sparse array handling in a processor |
Also Published As
Publication number | Publication date |
---|---|
KR20210123435A (ko) | 2021-10-13 |
KR102312264B1 (ko) | 2021-10-12 |
KR102661910B1 (ko) | 2024-04-26 |
TWI728247B (zh) | 2021-05-21 |
KR20230003443A (ko) | 2023-01-05 |
US11275992B2 (en) | 2022-03-15 |
TW202311939A (zh) | 2023-03-16 |
CN110622134B (zh) | 2023-06-27 |
TW201908965A (zh) | 2019-03-01 |
DK3568756T3 (da) | 2022-09-19 |
EP4083789A1 (en) | 2022-11-02 |
US20180336456A1 (en) | 2018-11-22 |
TW202132978A (zh) | 2021-09-01 |
TWI812254B (zh) | 2023-08-11 |
JP6938661B2 (ja) | 2021-09-22 |
EP3568756B1 (en) | 2022-07-06 |
KR102481428B1 (ko) | 2022-12-23 |
EP4361832A2 (en) | 2024-05-01 |
JP2023145517A (ja) | 2023-10-11 |
EP4083789B1 (en) | 2024-05-15 |
WO2018213598A1 (en) | 2018-11-22 |
EP3568756A1 (en) | 2019-11-20 |
CN116644790A (zh) | 2023-08-25 |
JP2020519981A (ja) | 2020-07-02 |
KR20190111132A (ko) | 2019-10-01 |
CN110622134A (zh) | 2019-12-27 |
JP2022003532A (ja) | 2022-01-11 |
TWI769810B (zh) | 2022-07-01 |
US20220261622A1 (en) | 2022-08-18 |
KR20240056801A (ko) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7314217B2 (ja) | 専用ニューラルネットワークトレーニングチップ | |
JP7135181B2 (ja) | 低レイテンシ行列乗算ユニット | |
JP7312879B2 (ja) | ハードウェアにおける行列乗算の実行 | |
TW202414199A (zh) | 用於訓練神經網路之方法、系統及非暫時性電腦可讀儲存媒體 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210930 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210930 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221122 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20230221 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230309 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230613 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230712 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7314217 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |