JP7314217B2 - 専用ニューラルネットワークトレーニングチップ - Google Patents

専用ニューラルネットワークトレーニングチップ Download PDF

Info

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
Application number
JP2021142529A
Other languages
English (en)
Other versions
JP2022003532A (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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2022003532A publication Critical patent/JP2022003532A/ja
Priority to JP2023114361A priority Critical patent/JP2023145517A/ja
Application granted granted Critical
Publication of JP7314217B2 publication Critical patent/JP7314217B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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
    • 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
    • G06F9/3887Concurrent 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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つ以上のプログラムが、データ処理装置によって実行されると、データ処理装置
にそのような操作またはアクションを実行させる命令を含むことを意味する。
前述の実施形態および他の実施形態は各々、以下の特徴のうちの1つ以上を単独でまた
は組み合わせて任意選択で含むことができる。特に、一実施形態は、以下の特徴をすべて
組み合わせて含む。
ニューラルネットワークをトレーニングするための専用ハードウェアチップは、専用ハ
ードウェアチップの計算動作を制御するように構成されたスカラープロセッサと、ベクト
ル処理ユニットの2次元配列を有するように構成されたベクトルプロセッサとを備えても
よく、ベクトル処理ユニットは、すべて、同じ命令を単一命令複数データ方式で実行し、
ベクトルプロセッサのロードおよびストア命令を通して互いに通信し、専用ハードウェア
チップはさらに、ベクトルプロセッサに結合され、乗算結果を得るために、少なくとも1
つの2次元行列を第2の1次元ベクトルまたは2次元行列と乗算するように構成された行
列乗算ユニットを備えてもよい。
ベクトルメモリが、ベクトルプロセッサに高速のプライベートメモリを提供するように
構成されてもよい。スカラーメモリが、スカラープロセッサに高速のプライベートメモリ
を提供するように構成されてもよい。転置ユニットが、行列の転置演算を実行するように
構成されてもよい。削減および置換ユニットが、ベクトルアレイの異なるレーン間におい
て、数値上で削減を実行し、数値を置換するように構成されてもよい。高帯域幅メモリが
、専用ハードウェアチップのデータを記憶するように構成されてもよい。専用ハードウェ
アチップは、疎計算コアを備えてもよい。
専用ハードウェアチップは、インターフェイスと、専用ハードウェアチップ上のインタ
ーフェイスまたはリソースを他の専用ハードウェアチップまたはリソースに接続するチッ
プ間相互接続とを備えてもよい。
専用ハードウェアチップは、高帯域幅メモリを備えてもよい。チップ間相互接続は、イ
ンターフェイスおよび高帯域幅メモリを他の専用ハードウェアチップに接続してもよい。
インターフェイスは、ホストコンピュータへのホストインターフェイスであってもよい。
インターフェイスは、ホストコンピュータのネットワークへの標準ネットワークインター
フェイスであってもよい。
この明細書において記載される主題は、以下の利点の1つ以上を実現するように特定の
実施の形態において実現することができる。専用ハードウェアチップは、機械学習用の3
2ビット以下の精度計算用に最適化されながらも、従来の0次元および1次元のテンソル
計算に加えて、より高次元のテンソル(つまり、2次元以上)をネイティブにサポートす
るプロセッサを含む。
この明細書の主題の1つ以上の実施形態の詳細は、添付の図面および以下の詳細な説明
において述べられる。主題の他の特徴、局面および利点は、詳細な説明、図面および特許
請求の範囲から明らかになる。
ボード上において円形トポロジで接続された専用ハードウェアチップの例示的集合体を接続する高速接続の例示的トポロジを示す。 ニューラルネットワークをトレーニングするための例示的な専用ハードウェアチップのハイレベル図を示す。 コンピュートコアのハイレベルの例を示す。 ニューラルネットワークのためにトレーニングを実行するチップのより詳細な図を示す。
さまざまな図面の同様の参照番号および名称は、同様の要素を示す。
詳細な説明
複数の層を有するニューラルネットワークをトレーニングし、それを推論の計算に用い
ることができる。一般に、ニューラルネットワークの一部またはすべての層は、ニューラ
ルネットワークのトレーニング中に調整されるパラメータを有する。たとえば、一部また
はすべての層は、その層に対する、重みとも称されるパラメータの行列に、層出力の生成
の一部として、その層への入力を乗算できる。行列内のパラメータの値は、ニューラルネ
ットワークのトレーニング中に調整される。
特に、トレーニング中、トレーニングシステムは、ニューラルネットワークのトレーニ
ング手順を実行して、ニューラルネットワークのパラメータの値を調整して、たとえば、
パラメータの初期値からパラメータのトレーニングを経た値を判断する。トレーニングシ
ステムは、逆伝播として知られる誤差の逆伝播を、最適化方法と組み合わせて用いて、ニ
ューラルネットワークの各パラメータに関して目的関数の勾配を計算し、その勾配を用い
てパラメータの値を調整する。
トレーニングされたニューラルネットワークは、順方向伝播を用いて推論を計算でき、
つまり、ニューラルネットワークの層を介して入力を処理し、その入力に対するニューラ
ルネットワーク出力を生成できる。
たとえば、入力が与えられると、ニューラルネットワークはその入力に対する推論を計
算することができる。ニューラルネットワークは、ニューラルネットワークの各層を通し
て入力を処理することによって、この推論を計算する。いくつかの実装形態では、ニュー
ラルネットワークの層はシーケンスで配置される。
したがって、受け取った入力から推論を計算するために、ニューラルネットワークはそ
の入力を受け取り、それを各ニューラルネットワーク層を通してシーケンスで処理して推
論を生成し、1つのニューラルネットワーク層からの出力が次のニューラルネットワーク
層への入力として与えられる。ニューラルネットワーク層へのデータ入力、たとえば、ニ
ューラルネットワークへの入力、またはシーケンス内におけるその層の下の層の、あるニ
ューラルネットワーク層への出力は、その層への活性化入力と呼ぶことができる。
いくつかの実装形態では、ニューラルネットワークの層は有向グラフで配置される。つ
まり、任意の特定の層が複数の入力、複数の出力、またはそれらの両方を受け取ることが
できる。ニューラルネットワークの層は、ある層の出力を前の層への入力として送り返す
ことができるように構成することもできる。
ある例示的システムは、行列乗算やその他の多次元配列の計算に最適化された高性能マ
ルチチップテンソル計算システムである。これらの操作は、ニューラルネットワークのト
レーニング、およびオプションで、ニューラルネットワークを用いて推論を計算するため
に重要である。
ある例示的システムでは、システムがトレーニングおよび推論計算を効率的に実行する
ために、複数の専用チップが操作を分散するように配置される。1つの実装形態では、ボ
ード上に4つのチップがあり、より大きなシステムでは、多くのボードがラック内で隣り
合っているか、またはそうでなければ相互にデータ通信を行なう。
図1は、ボード上において円形トポロジで接続された専用ハードウェアチップ101a
~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は、ニューラルネットワークをトレーニングするための例示的な専用ハードウェア
チップのハイレベル図を示す。図示されているように、単一の専用ハードウェアチップに
は2つの独立したプロセッサ(202a、202b)が含まれる。各プロセッサ(202
a、202b)には、2つの異なるコア:(1)コンピュートコア、たとえば非常に長い
命令語(VLIW)マシン(203a、203b)、および(2)疎計算コア、つまり埋
め込み層アクセラレータ(205a、205b)が含まれる。
各コア(203a、203b)は、密線形代数問題に対して最適化される。単一の非常
に長い命令語が、いくつかのコンピュートコアを並列で制御する。コンピュートコアは、
図3および図4を参照してより詳細に説明される。
例示的な疎計算コア(205a、205b)は、非常に疎である高次元データを密な低
次元データにマッピングし、残りの層が密に充填された入力データを処理するようにする
。たとえば、疎計算コアは、トレーニング中のニューラルネットワークの埋め込み層の計
算を実行できる。
この疎から密へのマッピングを実行するために、疎計算コアは、埋め込みテーブルであ
る、予め構築されたルックアップテーブルを用いる。たとえば、ユーザ入力として一連の
クエリワードがある場合、各クエリワードはハッシュ識別子またはワンホットエンコード
されたベクトルに変換される。識別子をテーブルインデックスとして用いて、埋め込みテ
ーブルは対応する密なベクトルを返し、それは、次の層への入力活性化ベクトルになるこ
とができる。疎計算コアは、検索クエリワードにわたって削減操作を実行して、1つの密
な活性化ベクトルを作成することもできる。疎計算コアは、効率的な疎の、分散されたル
ックアップを実行し、なぜならば、埋め込みテーブルが巨大であり得、専用ハードウェア
チップの1つの限られた容量の高帯域幅メモリに収まらないためである。疎計算コア機能
に関する詳細は、2016年2月5日に提出された「MATRIX PROCESSING APPARATUS(行
列処理装置)」と題される米国特許出願第15/016,486号に記載され、それをこ
こに引用により援用する。
図3は、コンピュートコア(300)のハイレベルの例を示す。コンピュートコアは、
複数のコンピュートユニットを並列で制御するマシン、つまりVLIWマシンであること
ができる。各コンピュートコア(300)には、スカラーメモリ(304)、ベクトルメ
モリ(308)、スカラープロセッサ(303)、ベクトルプロセッサ(306)、およ
び拡張ベクトルユニット(つまり、行列乗算ユニット(MXU)(313)と、転置ユニ
ット(XU)(314)と、削減および置換ユニット(RPU)(316))が含まれる
例示的なスカラープロセッサは、VLIW命令のフェッチ/実行ループを実行し、コン
ピュートコアを制御する。命令バンドルをフェッチしてデコードした後、スカラープロセ
ッサ自体は、スカラープロセッサ(303)およびスカラーメモリ(304)の複数のマ
ルチビットレジスタ、つまり32の32ビットレジスタを用いて、命令バンドルのスカラ
ースロットにおいて見いだされる命令を実行するのみである。スカラー命令セットには、
アドレス計算、ロード/ストア命令、分岐命令などで使用される通常の算術演算が含まれ
る。残りの命令スロットは、ベクトルプロセッサ(306)または他の拡張ベクトルユニ
ット(313、314、316)の命令をエンコードする。デコードされたベクトル命令
は、ベクトルプロセッサ(306)に転送される。
ベクトル命令とともに、スカラープロセッサ(303)は、最大3つのスカラーレジス
タの値を他のプロセッサおよびユニットに転送して、演算を実行できる。スカラープロセ
ッサは、ベクトルプロセッサから計算結果を直接取得することもできる。ただし、一部の
実装形態では、例示的なチップは、ベクトルプロセッサからスカラープロセッサへの低帯
域幅通信パスを有する。
ベクトル命令ディスパッチャは、スカラープロセッサとベクトルプロセッサとの間にあ
る。このディスパッチャは、非スカラーVLIWスロットからデコードされた命令を受け
取り、それらの命令をベクトルプロセッサ(306)にブロードキャストする。ベクトル
プロセッサ(306)は、同じ命令を単一命令複数データ(SIMD)方式で実行するベ
クトル処理ユニットの2次元配列、すなわち128×8の配列からなる。ベクトル処理ユ
ニットは、図4を参照して詳細に説明される。
例示的なスカラープロセッサ(303)は、小さい、高速な、プライベートスカラーメ
モリ(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を参照して以下に説明される
図4は、ニューラルネットワークのためにトレーニングを実行するチップのより詳細な
図を示す。上で図示し説明したように、チップには2つのコンピュートコア(480a、
480b)と2つの疎計算コア(452a、452b)とが含まれる。
チップには、ホストコンピュータ(450)または複数のホストコンピュータへのイン
ターフェイスを含む共有領域がある。このインターフェイスは、ホストコンピュータへの
ホストインターフェイス、またはホストコンピュータのネットワークへの標準ネットワー
クインターフェイスとすることができる。共有領域は、下部に沿って高帯域幅メモリのス
タック(456a~456d)、およびインターフェイスとメモリとを接続するチップ間
相互接続(448)、ならびに他のチップからのデータも有し得る。相互接続は、インタ
ーフェイスをハードウェアチップ上の計算リソースに接続することもできる。高帯域幅メ
モリの複数のスタック、つまり2つのスタック(456a~456b、456c~456
d)が各コンピュートコア(480a、480b)に関連付けられる。
チップは、データを高帯域幅メモリ(456c~456d)に保存し、そのデータをベ
クトルメモリにおいて読込および読出し(446)、そのデータを処理する。コンピュー
トコア(480b)自体は、2次元に分割されたオンチップS-RAMであるベクトルメ
モリ(446)を含む。ベクトルメモリには、アドレスが浮動小数点数、つまり各々32
ビットである128個の数値を保持するアドレス空間がある。コンピュートコア(480
b)は、値を計算する計算ユニット、および計算ユニットを制御するスカラーユニットも
含む。計算ユニットはベクトルプロセッサを含んでもよく、スカラーユニットはスカラー
プロセッサを含んでもよい。専用チップの一部を形成し得るコンピュートコアは、行列乗
算ユニット、または行列、つまり128×128の行列の転置演算を実行する転置ユニッ
ト(422)などの別の拡張演算ユニット、ならびに削減および置換ユニットをさらに含
むことができる。
ベクトルプロセッサ(306)は、ベクトル処理ユニットの2次元配列、すなわち12
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つのストア命令とを同時に実行できる。ロードまた
はストア命令のベースアドレスは、スカラープロセッサで計算でき、ベクトルプロセッサ
に転送できる。各サブレーンにおけるベクトルユニットの各々は、ストライドや特別なイ
ンデックス付きアドレスレジスタなどのさまざまな方法を用いて、それ自体のオフセット
アドレスを計算できる。
計算ユニットは、平方根や逆数などの演算を実行する拡張単項パイプライン(EUP)
(416)も含む。コンピュートコア(480b)は、これらの演算を実行するのに3ク
ロックサイクルかかり、なぜならば、それらは計算が複雑であるからである。EUP処理
には1クロックサイクル以上かかるため、結果を保存する先入れ先出しのデータストレー
ジがある。演算が終了すると、結果はFIFOに保存される。コンピュートコアは、後で
別の命令を用いて、FIFOからデータを引き出し、それをベクトルレジスタに格納でき
る。乱数生成器(420)により、コンピュートコア(480b)はサイクルごとに複数
の乱数、つまりサイクルごとに128の乱数を生成できる。
上記のように、専用のハードウェアチップの一部として実装できる各プロセッサは、3
つの拡張演算ユニット、つまり、行列乗算演算を実行する行列乗算ユニット(448)と
、行列、すなわち128×128の行列の転置演算を実行する転置ユニット(422)と
、削減および置換ユニット(図4において別個のユニット424、426として示される
)とを有する。
行列乗算ユニットは、2つの行列間で行列乗算を実行する。コンピュートコアは、乗算
される行列である一連の数値を読み込む必要があるため、行列乗算ユニット(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)に格納できる。
複数すなわち128のサイクルからなる期間にわたって、重みが、行列を乗算する数値
として行列乗算ユニット(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に、より詳細に説明され、それらの両方をここに引用により援用する。
転置ユニットは、行列を転置する。転置ユニット(422)は、数値を取り込み、それ
らを転置して、レーンを横切る数が他の次元の数値と転置されるようにする。一部の実装
形態では、ベクトルプロセッサは128×8のベクトルユニットを含む。したがって、1
28×128の行列を転置するには、完全な行列転置のために16個の個別の転置命令が
必要である。転置が終了すると、転置された行列が利用可能になる。ただし、転置された
行列をベクトルレジスタファイルに移動するには、明示的な命令が必要である。
削減/置換ユニット(またはユニット424、426)は、置換、レーン回転、回転置
換、レーン削減、置換されたレーン削減、およびセグメント化された置換されたレーン削減などのさまざまな操作をサポートすることで、クロスレーン通信の問題に対処する。図
示されているように、これらの計算は別々であるが、コンピュートコアは一方もしくは他
方または一方に連鎖された他方を用いることができる。削減ユニット(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)であり、各命令はある数のビット幅であり、ある数の命令フィールドに
分割される。
チップ400を用いて、ニューラルネットワークのトレーニングの少なくとも一部を実
行することができる。特に、ニューラルネットワークをトレーニングする場合、システム
はホストインターフェイス(450)を用いてホストコンピュータからラベル付きトレー
ニングデータを受信する。ホストインターフェイスは、ニューラルネットワーク計算のた
めのパラメータを含む命令を受信することもできる。パラメータは、処理すべき層の数、
各層についての対応する重み入力のセット、活性化入力の初期セット、つまり推論の計算
またはトレーニングの対象となるニューラルネットワークへの入力であるトレーニングデ
ータ、各層の対応する入力および出力サイズ、ニューラルネットワーク計算のストライド
値、ならびに処理対象の層のタイプ、たとえば畳み込み層または全結合層、のうちの少な
くとも1つ以上を含むことができる。
重み入力のセットおよび活性化入力のセットは、コンピュートコアの行列乗算ユニット
に送ることができる。重み入力および活性化入力を行列乗算ユニットに送る前に、システ
ム内の他のコンポーネントが入力に対して他の計算を実行してもよい。一部の実装形態で
は、疎計算コアからコンピュートコアに活性化を送る方法が2つある。まず、疎計算コア
は、高帯域幅メモリを介して通信を送信することができる。大量のデータの場合、疎計算
コアは、ダイレクトメモリアドレス(DMA)命令を用いて活性化を高帯域幅メモリに格
納でき、これにより、コンピュートコアにおいてターゲット同期フラグが更新される。コ
ンピュートコアは、同期命令を用いてこの同期フラグを待つことができる。同期フラグが
セットされると、計算コアはDMA命令を用いて、活性化を高帯域幅メモリから対応する
ベクトルメモリにコピーする。
次に、疎計算コアは、通信をコンピュートコアベクトルメモリに直接送信できる。デー
タ量が大きくない場合(つまり、コンピュートコアベクトルメモリに収まる場合)、疎計
算コアは、コンピュートコアに同期フラグで通知しながら、DMA命令を用いてコンピュ
ートコアのベクトルメモリに活性化を直接格納できる。コンピュートコアは、この同期フ
ラグを待ったのち、活性化に依存する計算を実行することができる。
行列乗算ユニットは、重み入力および活性化入力を処理し、出力のベクトルまたは行列
をベクトル処理ユニットに与えることができる。ベクトル処理ユニットは、処理された出
力のベクトルまたは行列を格納できる。たとえば、ベクトル処理ユニットは、非線形関数
を行列乗算ユニットの出力に適用して、活性化された値を生成できる。いくつかの実装形
態では、ベクトル処理ユニットは、正規化された値、プールされた値、またはその両方を
生成する。処理された出力のベクトルは、たとえばニューラルネットワーク内の後続の層
で用いるために、行列乗算ユニットへの活性化入力として用いることができる。
トレーニングデータのバッチについての処理済み出力のベクトルが計算されると、それ
らの出力をラベル付きトレーニングデータの期待される出力と比較して、誤差を判断でき
る。その後、システムは、ネットワークをトレーニングするために、逆伝播を実行して、
ニューラルネットワークを介して誤差を伝播できる。損失関数の勾配は、オンチップでベ
クトル処理ユニットの算術論理ユニットを用いて計算される。
ある例示的システムでは、ニューラルネットワークを介した逆伝播を実行するために、
活性化勾配が必要である。活性化勾配をコンピュートコアから疎計算コアに送るために、
例示のシステムでは、コンピュートコアDMA命令を用いて、ターゲット疎計算コアに同
期フラグで通知しながら、活性化勾配を高帯域幅メモリに保存できる。疎計算コアは、こ
の同期フラグを待ったのち、活性化勾配に依存する計算を実行することができる。
行列乗算ユニットは、逆伝播のために2つの行列乗算演算を実行する。一方の行列乗算
は、逆伝播誤差をネットワーク内の前の層からネットワークを通る逆方向パスに沿って重
みに適用して、重みを調整してニューラルネットワークのための新たな重みを決定する。
第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ディスクを含む。
ユーザとの対話を与えるために、本明細書に記載される主題の実施形態は、たとえばC
RT(陰極線管)またはLCD(液晶ディスプレイ)モニタといったユーザに対して情報
を表示するための表示デバイスと、たとえばマウス、トラックボールといったユーザがコ
ンピュータに入力を与えることができるキーボードおよびポインティングデバイスとを有
するコンピュータ上で実現され得る。他の種類のデバイスが、同様に、ユーザとの対話を
与えるために用いられ得;たとえば、ユーザに提供されるフィードバックは、たとえば視
覚フィードバック、聴覚フィードバックまたは触覚フィードバックといった任意の形態の
感覚フィードバックであり得;ユーザからの入力は、音響入力、音声入力、または触覚入
力を含む任意の形態で受け取られ得る。加えて、コンピュータは、ユーザが使用するデバ
イスにドキュメントを送信しユーザが使用するデバイスからドキュメントを受信すること
によって、たとえば、ウェブブラウザから受信された要求に応答してユーザのデバイス上
のウェブブラウザにウェブページを送信することによって、ユーザと対話し得る。また、
コンピュータは、テキストメッセージまたは他の形式のメッセージを個人用デバイス、た
とえばスマートフォンなどに送信し、メッセージングアプリケーションを実行し、ユーザ
から応答メッセージを受信することにより、ユーザと対話できる。
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてバックエンドコ
ンポーネントを含む計算システムにおいて実現され得るか、たとえばアプリケーションサ
ーバといったミドルウェアコンポーネントを含む計算システムにおいて実現され得るか、
たとえば本明細書に記載される主題の実現例とユーザが対話することが可能であるグラフ
ィカルユーザインターフェイス、ウェブブラウザもしくはアプリを有するクライアントコ
ンピュータといったフロントエンドコンポーネントを含む計算システムにおいて実現され
得るか、または1つ以上のそのようなバックエンドコンポーネント、ミドルウェアコンポ
ーネントもしくはフロントエンドコンポーネントの任意の組合せの計算システムにおいて
実現され得る。システムのコンポーネントは、たとえば通信ネットワークといったデジタ
ルデータ通信の任意の形態または媒体によって相互接続され得る。通信ネットワークの例
は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)
、たとえばインターネットを含む。
計算システムはクライアントおよびサーバを含むことができる。クライアントとサーバ
とは一般に互いから遠隔にあり、典型的には通信ネットワークを通じて対話する。クライ
アントとサーバとの関係は、それぞれのコンピュータ上で実行されるとともに互いに対し
てクライアント-サーバ関係を有するコンピュータプログラムによって発生する。いくつ
かの実施形態では、サーバは、例えば、クライアントとして振る舞うユーザデバイスと対
話するユーザにデータを表示し、およびそのユーザからユーザ入力を受信する目的で、デ
ータ、例えば、HTMLページをユーザデバイスに送信する。ユーザデバイスで生成され
たデータ、例えば、ユーザ対話の結果は、ユーザデバイスからサーバで受信することがで
きる。
実施形態1は、ニューラルネットワークをトレーニングするための専用ハードウェアチ
ップであって、専用ハードウェアチップの計算動作を制御するように構成されたスカラー
プロセッサと、ベクトル処理ユニットの2次元配列を有するように構成されたベクトルプ
ロセッサとを備え、ベクトル処理ユニットは、すべて、同じ命令を単一命令複数データ方
式で実行し、ベクトルプロセッサのロードおよびストア命令を通して互いに通信し、専用
ハードウェアチップはさらに、ベクトルプロセッサに結合され、乗算結果を得るために、
少なくとも1つの2次元行列を第2の1次元ベクトルまたは2次元行列と乗算するように
構成された行列乗算ユニットを備える。
実施形態2は、ベクトルプロセッサに高速のプライベートメモリを提供するように構成
されたベクトルメモリをさらに備える、実施形態1の専用ハードウェアチップである。
実施形態3は、スカラープロセッサに高速のプライベートメモリを提供するように構成
されたスカラーメモリをさらに備える、実施形態1または2の専用ハードウェアチップで
ある。
実施形態4は、行列の転置演算を実行するように構成された転置ユニットをさらに備え
る、実施形態1~3のいずれか1つの専用ハードウェアチップである。
実施形態5は、ベクトルアレイの異なるレーン間において、数値上で削減を実行し、数
値を置換するように構成された、削減および置換ユニットをさらに備える、実施形態1~
4のいずれか1つの専用ハードウェアチップである。
実施形態6は、専用ハードウェアチップのデータを記憶するように構成された高帯域幅
メモリをさらに備える、実施形態1~5のいずれか1つの専用ハードウェアチップである
実施形態7は、疎計算コアをさらに含む、実施形態1~6のいずれか1つの専用ハード
ウェアチップである。
実施形態8は、インターフェイスと、専用ハードウェアチップ上のインターフェイスま
たはリソースを他の専用ハードウェアチップまたはリソースに接続するチップ間相互接続
とをさらに備える、実施形態1~7のいずれか1つの専用ハードウェアチップである。
実施形態9は、複数の高帯域幅メモリをさらに備え、チップ間相互接続は、インターフ
ェイスおよび高帯域幅メモリを他の専用ハードウェアチップに接続する、実施形態1~8
のいずれか1つの専用ハードウェアチップである。
実施形態10は、インターフェイスは、ホストコンピュータへのホストインターフェイ
スである、実施形態1~9のいずれか1つの専用ハードウェアチップである。
実施形態11は、インターフェイスは、ホストコンピュータのネットワークへの標準ネ
ットワークインターフェイスである、実施形態1~10のいずれか1つの専用ハードウェ
アチップである。
本明細書は多くの特定の実現例の詳細を含んでいるが、これらは如何なる発明の範囲ま
たは請求され得るものの範囲に対する限定としても解釈されるべきではなく、特定の発明
の特定の実施形態に特有の特徴であり得る記載として解釈されるべきである。別個の実施
形態の文脈で本明細書において記載されるある特徴は、単一の実施形態において組合せで
も実現され得る。反対に、単一の実施形態の文脈において記載されるさまざまな特徴は、
複数の実施形態において別々に、または任意の好適な部分的組合わせでも実現され得る。
さらに、特徴は、ある組合せにおいて作用すると上で記載され、最初はそのように請求さ
れていさえする場合もあるが、請求される組合せからの1つ以上の特徴はいくつかの場合
には当該組合せから削除され得、請求される組合せは、部分的組合わせまたは部分的組合
わせの変形例に向けられ得る。
同様に、動作が図においては特定の順に示されているが、そのような動作は、望ましい
結果を達成するために、示された当該特定の順もしくは連続した順で実行される必要があ
ると理解されるべきではなく、または、すべての示された動作が実行される必要があると
理解されるべきではない。ある状況においては、マルチタスキングおよび並列処理が有利
であり得る。さらに、上述の実施形態におけるさまざまなシステムモジュールおよびコン
ポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解され
るべきではなく、記載されるプログラムコンポーネントおよびシステムは一般に単一のソ
フトウェア製品に統合され得るかまたは複数のソフトウェア製品にパッケージ化され得る
ことが理解されるべきである。
主題の特定の実施形態が記載された。他の実施形態は以下の請求の範囲内にある。たと
えば、請求項において記載されるアクションは、異なる順で実行され得、それでも望まし
い結果を達成し得る。一例として、添付の図において示されるプロセスは、望ましい結果
を達成するために、示された特定の順または連続する順であることを必ずしも必要としな
い。ある場合においては、マルチタスキングおよび並列処理が有利であり得る。

Claims (15)

  1. ニューラルネットワークをトレーニングするための専用ハードウェアチップであって、
    前記専用ハードウェアチップの計算動作を制御するように構成されたスカラープロセッサと、
    ベクトル処理ユニットの2次元配列を有するベクトルプロセッサと、
    前記ベクトルプロセッサに結合され、乗算結果を得るために、少なくとも第1の2次元行列を第1の1次元ベクトルまたは第2の2次元行列と乗算するように構成された行列乗算ユニットと、
    ベクトルアレイの異なるレーン間において、数値上で削減を実行し、前記数値を置換するように構成された、削減および置換ユニットとを備える、専用ハードウェアチップ。
  2. 前記ベクトルプロセッサに高速のプライベートメモリを提供するように構成されたベクトルメモリをさらに備える、請求項1に記載の専用ハードウェアチップ。
  3. 前記スカラープロセッサに高速のプライベートメモリを提供するように構成されたスカラーメモリをさらに備える、請求項1に記載の専用ハードウェアチップ。
  4. 行列の転置演算を実行するように構成された転置ユニットをさらに備える、請求項1~3のいずれかに記載の専用ハードウェアチップ。
  5. 前記専用ハードウェアチップのデータを記憶するように構成された高帯域幅メモリをさらに備える、請求項1~のいずれかに記載の専用ハードウェアチップ。
  6. 疎計算コアをさらに含む、請求項1~のいずれかに記載の専用ハードウェアチップ。
  7. インターフェイスと、
    前記専用ハードウェアチップ上の前記インターフェイスまたはリソースを他の専用ハードウェアチップまたはリソースに接続するチップ間相互接続とをさらに備える、請求項1~のいずれかに記載の専用ハードウェアチップ。
  8. 複数の高帯域幅メモリをさらに備え、前記チップ間相互接続は、前記インターフェイスおよび前記高帯域幅メモリを他の専用ハードウェアチップに接続する、請求項に記載の専用ハードウェアチップ。
  9. 前記インターフェイスは、ホストコンピュータへのホストインターフェイスである、請求項に記載の専用ハードウェアチップ。
  10. 前記インターフェイスは、ホストコンピュータのネットワークへの標準ネットワークインターフェイスである、請求項に記載の専用ハードウェアチップ。
  11. スカラーメモリ(304)、ベクトルメモリ(308)、前記スカラープロセッサ(303)、前記ベクトルプロセッサ(306)、および前記行列乗算ユニットを備え、前記スカラープロセッサはVLIW命令フェッチ/実行ループを実行し、前記専用ハードウェアチップを制御し、命令バンドルをフェッチしてデコードした後、前記スカラープロセッサ自体は、前記スカラープロセッサおよび前記スカラーメモリの複数のマルチビットビットレジスタを用いて、前記命令バンドルのスカラースロットにおいて見いだされる命令を実行するのみであり、スカラー命令セットは、アドレス計算、ロード/ストア命令、および分岐命令で使用される算術演算を含み、残りの命令スロットは、前記ベクトルプロセッサ(306)および前記行列乗算ユニットについての命令をエンコードする、請求項に記載の専用ハードウェアチップ。
  12. 各ベクトル処理ユニットは32個のレジスタを含み、各ベクトル処理ユニットは、浮動小数点演算および整数演算の少なくとも1つを実行するために用いられ得る、請求項1~11のいずれかに記載の専用ハードウェアチップ。
  13. 各ベクトル処理ユニットは、各クロックサイクルにおいて、2つのそれぞれの算術論理ユニット(ALU)命令、それぞれのロード命令、およびそれぞれのストア命令を実行するよう構成される、請求項1~12のいずれかに記載の専用ハードウェアチップ。
  14. 各ベクトル処理ユニットは、各クロックサイクルにおいて、前記それぞれのロード命令および前記それぞれのストア命令を実行するためにオフセットメモリアドレスを演算するよう構成される、請求項13に記載の専用ハードウェアチップ。
  15. 前記ベクトルプロセッサは複数のレーンを含み、前記ベクトルプロセッサにおける前記ベクトル処理ユニットの各々は、前記複数のレーンのそれぞれのレーンに位置し、
    同じレーンに位置する前記ベクトル処理ユニットのうちの1つ以上は、それぞれのロード命令およびストア命令を介して互いと通信するよう構成される、請求項1~14のいずれかに記載の専用ハードウェアチップ。
JP2021142529A 2017-05-17 2021-09-01 専用ニューラルネットワークトレーニングチップ Active JP7314217B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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