JP2023145517A - 専用ニューラルネットワークトレーニングチップ - Google Patents
専用ニューラルネットワークトレーニングチップ Download PDFInfo
- Publication number
- JP2023145517A JP2023145517A JP2023114361A JP2023114361A JP2023145517A JP 2023145517 A JP2023145517 A JP 2023145517A JP 2023114361 A JP2023114361 A JP 2023114361A JP 2023114361 A JP2023114361 A JP 2023114361A JP 2023145517 A JP2023145517 A JP 2023145517A
- Authority
- JP
- Japan
- Prior art keywords
- dedicated hardware
- vector
- chip
- hardware chip
- scalar
- 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.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 49
- 238000012549 training Methods 0.000 title claims abstract description 24
- 239000013598 vector Substances 0.000 claims abstract description 119
- 239000011159 matrix material Substances 0.000 claims abstract description 59
- 238000012545 processing Methods 0.000 claims abstract description 37
- 230000015654 memory Effects 0.000 claims description 67
- 230000009467 reduction Effects 0.000 claims description 17
- 238000004364 calculation method Methods 0.000 claims description 15
- 238000004891 communication Methods 0.000 claims description 12
- 238000006467 substitution reaction Methods 0.000 claims description 3
- 238000000034 method Methods 0.000 abstract description 14
- 230000004913 activation Effects 0.000 description 19
- 238000001994 activation Methods 0.000 description 19
- 238000004590 computer program Methods 0.000 description 12
- 230000017105 transposition Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000000758 substrate Substances 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
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process 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
- 230000001537 neural effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000717 retained effect 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)
Abstract
【課題】ニューラルネットワークをトレーニングするための専用ハードウェアチップを含む方法、システムおよび装置を提供する。【解決手段】専用ハードウェアチップが有するコンピュートコア300は、専用ハードウェアチップの計算動作を制御するスカラープロセッサを備える。コンピュートコアはまた、ベクトル処理ユニットの2次元配列を有するベクトルプロセッサ306を備える。ベクトル処理ユニットは、すべて、同じ命令を単一命令複数データ方式で実行し、ベクトルプロセッサのロードおよびストア命令を通して互いと通信する。コンピュートコアはさらに、ベクトルプロセッサに結合され、乗算結果を得るために、少なくとも1つの2次元行列を、第2の1次元ベクトル又は2次元行列と乗算する行列乗算ユニット313を備える。【選択図】図3
Description
背景
この明細書は、ハードウェアでのニューラルネットワーク計算の実行に関する。ニューラルネットワークは機械学習モデルであり、各々が、モデルの1つ以上の層を用いて、受信した入力に対する出力、たとえば分類などを生成する。一部のニューラルネットワークには、出力層に加えて1つ以上の隠れ層が含まれる。各隠れ層の出力は、ネットワーク内の次の層、つまりネットワークの次の隠れ層または出力層への入力として用いられる。ネットワークの各層は、それぞれのパラメータのセットの現在の値に従って、受信した入力から出力を生成する。
この明細書は、ハードウェアでのニューラルネットワーク計算の実行に関する。ニューラルネットワークは機械学習モデルであり、各々が、モデルの1つ以上の層を用いて、受信した入力に対する出力、たとえば分類などを生成する。一部のニューラルネットワークには、出力層に加えて1つ以上の隠れ層が含まれる。各隠れ層の出力は、ネットワーク内の次の層、つまりネットワークの次の隠れ層または出力層への入力として用いられる。ネットワークの各層は、それぞれのパラメータのセットの現在の値に従って、受信した入力から出力を生成する。
概要
本明細書では、機械学習ワークロード、特にトレーニング段階に最適化されたプログラム可能な線形代数アクセラレータである専用ハードウェアチップに関する技術について説明する。
本明細書では、機械学習ワークロード、特にトレーニング段階に最適化されたプログラム可能な線形代数アクセラレータである専用ハードウェアチップに関する技術について説明する。
一般に、本明細書で説明される主題の革新的な一態様は、特別なハードウェアチップで具現化することができる。
この態様の他の実施形態は、各々、方法のアクションを実行するように構成された、対応するコンピュータシステム、装置、および1つ以上のコンピュータ記憶装置に記録されたコンピュータプログラムを含む。1つ以上のコンピュータのシステムが特定の操作またはアクションを実行するように構成されているとは、動作中にそのシステムにそのような操作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせがそのシステムにインストールされていることを意味する。1つ以上のコンピュータプログラムが特定の操作またはアクションを実行するように構成されるとは、1つ以上のプログラムが、データ処理装置によって実行されると、データ処理装置にそのような操作またはアクションを実行させる命令を含むことを意味する。
前述の実施形態および他の実施形態は各々、以下の特徴のうちの1つ以上を単独でまたは組み合わせて任意選択で含むことができる。特に、一実施形態は、以下の特徴をすべて組み合わせて含む。
ニューラルネットワークをトレーニングするための専用ハードウェアチップは、専用ハードウェアチップの計算動作を制御するように構成されたスカラープロセッサと、ベクトル処理ユニットの2次元配列を有するように構成されたベクトルプロセッサとを備えてもよく、ベクトル処理ユニットは、すべて、同じ命令を単一命令複数データ方式で実行し、ベクトルプロセッサのロードおよびストア命令を通して互いに通信し、専用ハードウェアチップはさらに、ベクトルプロセッサに結合され、乗算結果を得るために、少なくとも1つの2次元行列を第2の1次元ベクトルまたは2次元行列と乗算するように構成された行列乗算ユニットを備えてもよい。
ベクトルメモリが、ベクトルプロセッサに高速のプライベートメモリを提供するように構成されてもよい。スカラーメモリが、スカラープロセッサに高速のプライベートメモリを提供するように構成されてもよい。転置ユニットが、行列の転置演算を実行するように構成されてもよい。削減および置換ユニットが、ベクトルアレイの異なるレーン間において、数値上で削減を実行し、数値を置換するように構成されてもよい。高帯域幅メモリが
、専用ハードウェアチップのデータを記憶するように構成されてもよい。専用ハードウェアチップは、疎計算コアを備えてもよい。
、専用ハードウェアチップのデータを記憶するように構成されてもよい。専用ハードウェアチップは、疎計算コアを備えてもよい。
専用ハードウェアチップは、インターフェイスと、専用ハードウェアチップ上のインターフェイスまたはリソースを他の専用ハードウェアチップまたはリソースに接続するチップ間相互接続とを備えてもよい。
専用ハードウェアチップは、高帯域幅メモリを備えてもよい。チップ間相互接続は、インターフェイスおよび高帯域幅メモリを他の専用ハードウェアチップに接続してもよい。インターフェイスは、ホストコンピュータへのホストインターフェイスであってもよい。インターフェイスは、ホストコンピュータのネットワークへの標準ネットワークインターフェイスであってもよい。
この明細書において記載される主題は、以下の利点の1つ以上を実現するように特定の実施の形態において実現することができる。専用ハードウェアチップは、機械学習用の32ビット以下の精度計算用に最適化されながらも、従来の0次元および1次元のテンソル計算に加えて、より高次元のテンソル(つまり、2次元以上)をネイティブにサポートするプロセッサを含む。
この明細書の主題の1つ以上の実施形態の詳細は、添付の図面および以下の詳細な説明において述べられる。主題の他の特徴、局面および利点は、詳細な説明、図面および特許請求の範囲から明らかになる。
さまざまな図面の同様の参照番号および名称は、同様の要素を示す。
詳細な説明
複数の層を有するニューラルネットワークをトレーニングし、それを推論の計算に用いることができる。一般に、ニューラルネットワークの一部またはすべての層は、ニューラルネットワークのトレーニング中に調整されるパラメータを有する。たとえば、一部またはすべての層は、その層に対する、重みとも称されるパラメータの行列に、層出力の生成の一部として、その層への入力を乗算できる。行列内のパラメータの値は、ニューラルネットワークのトレーニング中に調整される。
詳細な説明
複数の層を有するニューラルネットワークをトレーニングし、それを推論の計算に用いることができる。一般に、ニューラルネットワークの一部またはすべての層は、ニューラルネットワークのトレーニング中に調整されるパラメータを有する。たとえば、一部またはすべての層は、その層に対する、重みとも称されるパラメータの行列に、層出力の生成の一部として、その層への入力を乗算できる。行列内のパラメータの値は、ニューラルネットワークのトレーニング中に調整される。
特に、トレーニング中、トレーニングシステムは、ニューラルネットワークのトレーニング手順を実行して、ニューラルネットワークのパラメータの値を調整して、たとえば、パラメータの初期値からパラメータのトレーニングを経た値を判断する。トレーニングシステムは、逆伝播として知られる誤差の逆伝播を、最適化方法と組み合わせて用いて、ニューラルネットワークの各パラメータに関して目的関数の勾配を計算し、その勾配を用いてパラメータの値を調整する。
トレーニングされたニューラルネットワークは、順方向伝播を用いて推論を計算でき、
つまり、ニューラルネットワークの層を介して入力を処理し、その入力に対するニューラルネットワーク出力を生成できる。
つまり、ニューラルネットワークの層を介して入力を処理し、その入力に対するニューラルネットワーク出力を生成できる。
たとえば、入力が与えられると、ニューラルネットワークはその入力に対する推論を計算することができる。ニューラルネットワークは、ニューラルネットワークの各層を通して入力を処理することによって、この推論を計算する。いくつかの実装形態では、ニューラルネットワークの層はシーケンスで配置される。
したがって、受け取った入力から推論を計算するために、ニューラルネットワークはその入力を受け取り、それを各ニューラルネットワーク層を通してシーケンスで処理して推論を生成し、1つのニューラルネットワーク層からの出力が次のニューラルネットワーク層への入力として与えられる。ニューラルネットワーク層へのデータ入力、たとえば、ニューラルネットワークへの入力、またはシーケンス内におけるその層の下の層の、あるニューラルネットワーク層への出力は、その層への活性化入力と呼ぶことができる。
いくつかの実装形態では、ニューラルネットワークの層は有向グラフで配置される。つまり、任意の特定の層が複数の入力、複数の出力、またはそれらの両方を受け取ることができる。ニューラルネットワークの層は、ある層の出力を前の層への入力として送り返すことができるように構成することもできる。
ある例示的システムは、行列乗算やその他の多次元配列の計算に最適化された高性能マルチチップテンソル計算システムである。これらの操作は、ニューラルネットワークのトレーニング、およびオプションで、ニューラルネットワークを用いて推論を計算するために重要である。
ある例示的システムでは、システムがトレーニングおよび推論計算を効率的に実行するために、複数の専用チップが操作を分散するように配置される。1つの実装形態では、ボード上に4つのチップがあり、より大きなシステムでは、多くのボードがラック内で隣り合っているか、またはそうでなければ相互にデータ通信を行なう。
図1は、ボード上において円形トポロジで接続された専用ハードウェアチップ101a~101dの例示的集合体を接続する高速接続の例示的トポロジを示す。各チップには2つのプロセッサ(102a~102h)が含まれる。このトポロジは、1次元(1D)トーラスであり、1Dトーラスでは、各チップは2つの隣接チップに直接接続される。示されているように、一部の実装形態では、チップには、操作を実行するようソフトウェア命令またはファームウェア命令でプログラムされたマイクロプロセッサコアが含まれる。図1では、すべてのチップが単一のモジュール100上にある。図に示されているプロセッサ間の線は、高速データ通信リンクを表す。プロセッサは1つの集積回路基板上に有利に製造されるが、複数の基板上に製造することもできる。チップ境界を越えて、リンクは、チップ間ネットワークリンクであり、同じチップ上のプロセッサは、チップ内インターフェイスリンクを介して通信する。リンクは、一度に1つのプロセッサのみがデータを送信できる半二重リンクであってもよいし、データを両方向に同時に送信できる全二重リンクであってもよい。この例示的トポロジを用いる並列処理およびその他については、2017年2月21日に提出され、ここに引用により援用される、「PARALLEL PROCESSING OF REDUCTION AND BROADCAST OPERATIONS ON LARGE DATASETS OF NON-SCALAR DATA(非スカラーデータの大規模データセットの削減およびブロードキャスト操作の並列処理)」と題される米国特許出願第62/461,758号において詳細に説明される。
図2は、ニューラルネットワークをトレーニングするための例示的な専用ハードウェアチップのハイレベル図を示す。図示されているように、単一の専用ハードウェアチップに
は2つの独立したプロセッサ(202a、202b)が含まれる。各プロセッサ(202a、202b)には、2つの異なるコア:(1)コンピュートコア、たとえば非常に長い命令語(VLIW)マシン(203a、203b)、および(2)疎計算コア、つまり埋め込み層アクセラレータ(205a、205b)が含まれる。
は2つの独立したプロセッサ(202a、202b)が含まれる。各プロセッサ(202a、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号に記載され、それをここに引用により援用する。
列処理装置)」と題される米国特許出願第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~456d)が各コンピュートコア(480a、480b)に関連付けられる。
チップは、データを高帯域幅メモリ(456c~456d)に保存し、そのデータをベクトルメモリにおいて読込および読出し(446)、そのデータを処理する。コンピュートコア(480b)自体は、2次元に分割されたオンチップS-RAMであるベクトルメモリ(446)を含む。ベクトルメモリには、アドレスが浮動小数点数、つまり各々32ビットである128個の数値を保持するアドレス空間がある。コンピュートコア(480b)は、値を計算する計算ユニット、および計算ユニットを制御するスカラーユニットも含む。計算ユニットはベクトルプロセッサを含んでもよく、スカラーユニットはスカラー
プロセッサを含んでもよい。専用チップの一部を形成し得るコンピュートコアは、行列乗算ユニット、または行列、つまり128×128の行列の転置演算を実行する転置ユニット(422)などの別の拡張演算ユニット、ならびに削減および置換ユニットをさらに含むことができる。
プロセッサを含んでもよい。専用チップの一部を形成し得るコンピュートコアは、行列乗算ユニット、または行列、つまり128×128の行列の転置演算を実行する転置ユニット(422)などの別の拡張演算ユニット、ならびに削減および置換ユニットをさらに含むことができる。
ベクトルプロセッサ(306)は、ベクトル処理ユニットの2次元配列、すなわち128×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)に格納できる。
がある。並直列変換器(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 MULTIPLY UNIT COMPOSED OF MULTI-BIT CELLS(マルチビットセルで構成された低行列乗算ユニット)」と題される16113-8251001、および「MATRIX MULTIPLY UNIT WITH NUMERICS OPTIMIZED FOR NEURAL NETWORK APPLICATIONS(数値がニューラルネットワークアプリケーション向けに最適化された行列乗算ユニット)」と題される16113-8252001に、より詳細に説明され、それらの両方をここに引用により援用する。
転置ユニットは、行列を転置する。転置ユニット(422)は、数値を取り込み、それらを転置して、レーンを横切る数が他の次元の数値と転置されるようにする。一部の実装形態では、ベクトルプロセッサは128×8のベクトルユニットを含む。したがって、128×128の行列を転置するには、完全な行列転置のために16個の個別の転置命令が必要である。転置が終了すると、転置された行列が利用可能になる。ただし、転置された行列をベクトルレジスタファイルに移動するには、明示的な命令が必要である。
削減/置換ユニット(またはユニット424、426)は、置換、レーン回転、回転置換、レーン削減、置換されたレーン削減、およびセグメント化された置換されたレーン削減などのさまざまな操作をサポートすることで、クロスレーン通信の問題に対処する。図示されているように、これらの計算は別々であるが、コンピュートコアは一方もしくは他方または一方に連鎖された他方を用いることができる。削減ユニット(424)は、数値からなる各ラインにおけるすべての数値を加算し、それらの数値を置換ユニット(426)に供給する。置換ユニットは、異なるレーン間でデータを移動する。転置ユニット、削減ユニット、置換ユニット、および行列乗算ユニットは、各々、完了までに1クロックサイクル以上かかる。したがって、各ユニットにはFIFOが関連付けられ、計算結果をFIFOにプッシュし、後で別の命令を実行して、データを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)であり、各命令はある数のビット幅であり、ある数の命令フィールドに分割される。
命令メモリ(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つのコンピュータまたは複数のコンピュータ上で実行されるように展開され得る。
において、または、複数の連携ファイル(coordinated files)(たとえばコードの1つ以上のモジュール、サブプログラムまたは部分を格納するファイル)において、他のプログラムまたはデータ(たとえばマークアップ言語ドキュメントに格納される1つ以上のスクリプト)を保持するファイルの一部に格納され得る。コンピュータプログラムは、1つの場所に位置するかもしくは複数の場所にわたって分散されデータ通信ネットワークによって相互接続される1つのコンピュータまたは複数のコンピュータ上で実行されるように展開され得る。
本明細書に記載されるプロセスおよび論理フローは、入力データ上で動作し出力を生成することにより機能を実行するよう1つ以上のプログラマブルコンピュータが1つ以上のコンピュータプログラムを実行することによって実行され得る。本プロセスおよび論理フローは、たとえばFPGAもしくはASICといった特殊目的論理回路系によっても、または特殊目的論理回路計と1つ以上のプログラムされたコンピュータとの組み合わせによっても実行され得る。
コンピュータプログラムの実行に好適であるコンピュータは、汎用マイクロプロセッサもしくは特殊目的マイクロプロセッサもしくはその両方または任意の種類の中央処理ユニットに基づき得る。一般に、中央処理ユニットは、リードオンリメモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令を実行するための中央処理ユニットと、命令およびデータを格納するための1つ以上のメモリデバイスとである。中央処理ユニットおよびメモリは、特殊目的論理回路系によって補足され得るか、または特殊目的論理回路に組み込まれ得る。一般に、コンピュータはさらに、たとえば磁気ディスク、光磁気ディスクまたは光ディスクといった、データを格納するための1つ以上の大容量記憶装置を含むか、当該1つ以上の大容量記憶装置からデータを受け取るかもしくは当該1つ以上の大容量記憶装置にデータを転送するよう動作可能に結合されるか、またはその両方を行う。しかしながら、コンピュータはそのような装置を有する必要はない。さらに、コンピュータはたとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶装置(たとえばユニバーサルシリアルバス(USB)フラッシュドライブ)といった別のデバイスに埋め込まれ得る。
コンピュータプログラム命令およびデータを格納するのに好適であるコンピュータ可読媒体は、例として、たとえばEPROM、EEPROMおよびフラッシュメモリデバイスといった半導体メモリデバイスを含むすべての形態の不揮発性メモリ、媒体およびメモリデバイス;たとえば内部ハードディスクまたはリムーバブルディスクといった磁気ディスク;光磁気ディスク;ならびにCD-ROMおよびDVD-ROMディスクを含む。
ユーザとの対話を与えるために、本明細書に記載される主題の実施形態は、たとえばCRT(陰極線管)または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つの専用ハードウェアチップである。
メモリをさらに備える、実施形態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 (12)
- ニューラルネットワークをトレーニングするための専用ハードウェアチップであって、
前記専用ハードウェアチップの計算動作を制御するように構成されたスカラープロセッサと、
ベクトル処理ユニットの2次元配列を有するように構成されたベクトルプロセッサとを備え、前記ベクトル処理ユニットは、すべて、同じ命令を単一命令複数データ方式で実行し、前記ベクトルプロセッサのロードおよびストア命令を通して互いに通信し、前記専用ハードウェアチップはさらに、
前記ベクトルプロセッサに結合され、乗算結果を得るために、少なくとも1つの2次元行列を第2の1次元ベクトルまたは2次元行列と乗算するように構成された行列乗算ユニットを備える、専用ハードウェアチップ。 - 前記ベクトルプロセッサに高速のプライベートメモリを提供するように構成されたベクトルメモリをさらに備える、請求項1に記載の専用ハードウェアチップ。
- 前記スカラープロセッサに高速のプライベートメモリを提供するように構成されたスカラーメモリをさらに備える、請求項1に記載の専用ハードウェアチップ。
- 行列の転置演算を実行するように構成された転置ユニットをさらに備える、請求項1に記載の専用ハードウェアチップ。
- 前記ベクトルアレイの異なるレーン間において、数値上で削減を実行し、前記数値を置換するように構成された、削減および置換ユニットをさらに備える、請求項1に記載の専用ハードウェアチップ。
- 前記専用ハードウェアチップのデータを記憶するように構成された高帯域幅メモリをさらに備える、請求項1に記載の専用ハードウェアチップ。
- 疎計算コアをさらに含む、請求項1に記載の専用ハードウェアチップ。
- インターフェイスと、
前記専用ハードウェアチップ上の前記インターフェイスまたはリソースを他の専用ハードウェアチップまたはリソースに接続するチップ間相互接続とをさらに備える、請求項1に記載の専用ハードウェアチップ。 - 複数の高帯域幅メモリをさらに備え、前記チップ間相互接続は、前記インターフェイスおよび前記高帯域幅メモリを他の専用ハードウェアチップに接続する、請求項8に記載の専用ハードウェアチップ。
- 前記インターフェイスは、ホストコンピュータへのホストインターフェイスである、請求項8に記載の専用ハードウェアチップ。
- 前記インターフェイスは、ホストコンピュータのネットワークへの標準ネットワークインターフェイスである、請求項8に記載の専用ハードウェアチップ。
- スカラーメモリ(304)、ベクトルメモリ(308)、前記スカラープロセッサ(303)、前記ベクトルプロセッサ(306)、および前記行列乗算ユニットを備え、前記スカラープロセッサはVLIW命令フェッチ/実行ループを実行し、前記専用ハードウェアチップを制御し、命令バンドルをフェッチしてデコードした後、前記スカラープロセッ
サ自体は、前記スカラープロセッサおよび前記スカラーメモリの複数のマルチビットビットレジスタを用いて、前記命令バンドルのスカラースロットにおいて見いだされる命令を実行するのみであり、前記スカラー命令セットは、アドレス計算、ロード/ストア命令、および分岐命令で使用される算術演算を含み、残りの命令スロットは、前記ベクトルプロセッサ(306)および前記行列乗算ユニットについての命令をエンコードする、請求項8に記載の専用ハードウェアチップ。
Applications Claiming Priority (4)
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 | 専用ニューラルネットワークトレーニングチップ |
JP2021142529A JP7314217B2 (ja) | 2017-05-17 | 2021-09-01 | 専用ニューラルネットワークトレーニングチップ |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021142529A Division JP7314217B2 (ja) | 2017-05-17 | 2021-09-01 | 専用ニューラルネットワークトレーニングチップ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023145517A true JP2023145517A (ja) | 2023-10-11 |
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 (2)
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 | 専用ニューラルネットワークトレーニングチップ |
Country Status (8)
Country | Link |
---|---|
US (2) | US11275992B2 (ja) |
EP (3) | EP4361832A2 (ja) |
JP (3) | JP6938661B2 (ja) |
KR (4) | KR102661910B1 (ja) |
CN (2) | CN116644790A (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 |
US11797830B2 (en) | 2020-03-25 | 2023-10-24 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
US11462003B2 (en) | 2020-03-25 | 2022-10-04 | 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 | 成都商汤科技有限公司 | 一种数据传输方法、芯片、设备和存储介质 |
KR20230062651A (ko) | 2021-03-29 | 2023-05-09 | 구글 엘엘씨 | 메모리 채널 제어기들에 대한 온칩 상호접속 |
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 | 旺宏電子股份有限公司 | 編碼方法及編碼電路 |
Family Cites Families (23)
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 |
US20140164733A1 (en) * | 2011-12-30 | 2014-06-12 | Ashish Jha | Transpose instruction |
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 | 삼성전자주식회사 | 재구성 가능 프로세서 및 그 동작 방법 |
US9772852B2 (en) * | 2015-04-23 | 2017-09-26 | Google Inc. | Energy efficient processor core architecture for image processor |
US9965824B2 (en) * | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US9747546B2 (en) * | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10192162B2 (en) * | 2015-05-21 | 2019-01-29 | Google Llc | Vector computation unit in a neural network processor |
US20160378465A1 (en) * | 2015-06-23 | 2016-12-29 | Intel Corporation | Efficient sparse array handling in a 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 |
EP3286762A4 (en) * | 2016-02-25 | 2018-04-18 | Hewlett-Packard Enterprise Development LP | Performing complex multiply-accumulate operations |
WO2018125250A1 (en) * | 2016-12-31 | 2018-07-05 | Intel Corporation | Systems, methods, and apparatuses for heterogeneous computing |
-
2018
- 2018-05-17 KR KR1020227045015A patent/KR102661910B1/ko active IP Right Grant
- 2018-05-17 TW TW107116869A patent/TWI728247B/zh active
- 2018-05-17 US US15/983,056 patent/US11275992B2/en active Active
- 2018-05-17 DK DK18735433.7T patent/DK3568756T3/da active
- 2018-05-17 TW TW111120440A patent/TWI812254B/zh active
- 2018-05-17 KR KR1020217031994A patent/KR102481428B1/ko active IP Right Grant
- 2018-05-17 KR KR1020247013765A patent/KR20240056801A/ko active Application Filing
- 2018-05-17 CN CN202310655432.5A patent/CN116644790A/zh active Pending
- 2018-05-17 CN CN201880018006.8A patent/CN110622134B/zh active Active
- 2018-05-17 JP JP2019549507A patent/JP6938661B2/ja active Active
- 2018-05-17 EP EP24163748.7A patent/EP4361832A2/en active Pending
- 2018-05-17 WO PCT/US2018/033215 patent/WO2018213598A1/en unknown
- 2018-05-17 KR KR1020197026557A patent/KR102312264B1/ko active IP Right Grant
- 2018-05-17 EP EP18735433.7A patent/EP3568756B1/en active Active
- 2018-05-17 EP EP22171943.8A patent/EP4083789B1/en active Active
- 2018-05-17 TW TW110117076A patent/TWI769810B/zh 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
Also Published As
Publication number | Publication date |
---|---|
US20180336456A1 (en) | 2018-11-22 |
TWI812254B (zh) | 2023-08-11 |
EP3568756B1 (en) | 2022-07-06 |
TWI728247B (zh) | 2021-05-21 |
KR20240056801A (ko) | 2024-04-30 |
TW201908965A (zh) | 2019-03-01 |
EP4361832A2 (en) | 2024-05-01 |
KR102661910B1 (ko) | 2024-04-26 |
DK3568756T3 (da) | 2022-09-19 |
JP6938661B2 (ja) | 2021-09-22 |
EP4083789A1 (en) | 2022-11-02 |
KR102481428B1 (ko) | 2022-12-23 |
KR20230003443A (ko) | 2023-01-05 |
US20220261622A1 (en) | 2022-08-18 |
WO2018213598A1 (en) | 2018-11-22 |
JP7314217B2 (ja) | 2023-07-25 |
KR20210123435A (ko) | 2021-10-13 |
TWI769810B (zh) | 2022-07-01 |
KR20190111132A (ko) | 2019-10-01 |
EP3568756A1 (en) | 2019-11-20 |
CN110622134A (zh) | 2019-12-27 |
JP2020519981A (ja) | 2020-07-02 |
CN116644790A (zh) | 2023-08-25 |
JP2022003532A (ja) | 2022-01-11 |
TW202132978A (zh) | 2021-09-01 |
CN110622134B (zh) | 2023-06-27 |
EP4083789B1 (en) | 2024-05-15 |
KR102312264B1 (ko) | 2021-10-12 |
TW202311939A (zh) | 2023-03-16 |
US11275992B2 (en) | 2022-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7314217B2 (ja) | 専用ニューラルネットワークトレーニングチップ | |
JP7312879B2 (ja) | ハードウェアにおける行列乗算の実行 | |
JP7444936B2 (ja) | 低レイテンシ行列乗算ユニット | |
US20140040597A1 (en) | Predication in a vector processor | |
JP2023508812A (ja) | ニューラルネットワーク計算を加速するためのハードウェア回路 | |
TW202414199A (zh) | 用於訓練神經網路之方法、系統及非暫時性電腦可讀儲存媒體 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230807 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230807 |