JP2020135549A - 演算処理装置、情報処理装置および演算処理方法 - Google Patents
演算処理装置、情報処理装置および演算処理方法 Download PDFInfo
- Publication number
- JP2020135549A JP2020135549A JP2019029741A JP2019029741A JP2020135549A JP 2020135549 A JP2020135549 A JP 2020135549A JP 2019029741 A JP2019029741 A JP 2019029741A JP 2019029741 A JP2019029741 A JP 2019029741A JP 2020135549 A JP2020135549 A JP 2020135549A
- Authority
- JP
- Japan
- Prior art keywords
- arithmetic
- bit
- data
- bits
- circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 121
- 230000010365 information processing Effects 0.000 title claims description 10
- 238000003672 processing method Methods 0.000 title claims description 7
- 238000009826 distribution Methods 0.000 claims abstract description 30
- 238000013528 artificial neural network Methods 0.000 claims abstract description 28
- 238000004364 calculation method Methods 0.000 claims description 65
- 238000006243 chemical reaction Methods 0.000 claims description 44
- 238000013139 quantization Methods 0.000 description 52
- 238000000034 method Methods 0.000 description 26
- 230000008569 process Effects 0.000 description 19
- 230000008859 change Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 230000007423 decrease Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000013144 data compression Methods 0.000 description 4
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000006866 deterioration Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002542 deteriorative effect Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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
- 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/499—Denomination or exception handling, e.g. rounding or overflow
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
-
- 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
-
- 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/30101—Special purpose registers
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/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
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Operations Research (AREA)
- Probability & Statistics with Applications (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
Abstract
【課題】ニューラルネットワークによる推論処理の認識精度を維持しつつ、演算効率を向上する。【解決手段】演算処理装置は、複数の固定小数点数データを格納するレジスタと、演算命令にしたがって固定小数点数データの演算を実行する演算回路と、前記レジスタが保持する複数の固定小数点数データの最上位ビットの位置の分布についての統計情報を取得する取得回路と、前記統計情報に基づいて最も数の多い最上位ビットの位置である最多ビット位置を特定し、特定した前記最多ビット位置に基づいて、演算に使用する固定小数点数データのビット幅を特定する特定回路と、を備え、前記演算回路は、前記レジスタから出力される固定小数点数データのビットのうち、前記特定回路が特定したビット幅に対応するビットを使用して演算を実行する。【選択図】図1
Description
本発明は、演算処理装置、情報処理装置および演算処理方法に関する。
深層学習等に使用される演算処理装置において、演算命令の実行により得られた固定小数点数データのビット位置の分布に基づいて固定小数点数データの小数点位置を更新することで、深層学習の精度を向上する手法が提案されている(例えば、特許文献1参照)。
複数のデータを最大値に合わせて正規化する場合に、値が小さいデータが失われることを抑止するために、正規化の対象データと対象外データとを判定し、対象外データを、正規化の範囲の境界値に置き換える手法が提案されている(例えば、特許文献2参照)。
ニューラルネットワークを用いた画像認識等の推論処理は、リアルタイム性が求められている。リアルタイム性を実現するために、例えば、32ビットの浮動小数点数データを16ビットの固定小数点数データに変換するなど、演算に使用するデータを圧縮して演算効率を向上することが考えられる。一方、データの圧縮によりデータの有効桁数が減る場合にも、認識精度は維持される必要がある。
1つの側面では、本発明は、ニューラルネットワークによる推論処理の認識精度を維持しつつ、演算効率を向上することを目的とする。
一つの観点によれば、演算処理装置は、複数の固定小数点数データを格納するレジスタと、演算命令にしたがって固定小数点数データの演算を実行する演算回路と、前記レジスタが保持する複数の固定小数点数データの最上位ビットの位置の分布についての統計情報を取得する取得回路と、前記統計情報に基づいて最も数の多い最上位ビットの位置である最多ビット位置を特定し、特定した前記最多ビット位置に基づいて、演算に使用する固定小数点数データのビット幅を特定する特定回路と、を備え、前記演算回路は、前記レジスタから出力される固定小数点数データのビットのうち、前記特定回路が特定したビット幅に対応するビットを使用して演算を実行する。
1つの側面では、本発明は、ニューラルネットワークの認識精度を維持しつつ、演算効率を向上することができる。
以下、図面を用いて実施形態が説明される。
図1は、一実施形態における演算処理装置の一例を示す。図1に示す演算処理装置100は、ニューラルネットワークにおける画像処理等の推論に使用される専用のプロセッサでもよく、GPU(Graphics Processing Unit)またはCPU(Central Processing Unit)等のプロセッサでもよい。
演算処理装置100は、レジスタ2、演算回路4、取得回路6および特定回路8を有する。レジスタ2には、複数の固定小数点数データが格納される。演算回路4は、演算命令に基づいてレジスタ2から出力される固定小数点数データを使用して演算を実行し、演算結果を出力する。演算結果は、レジスタ2に格納されてもよく、図示しないメモリに格納されてもよい。
例えば、演算回路4の入力ビット数は16ビットであり、演算回路4により演算可能な固定小数点数データのビット数は、1ビットの符号ビットを含めて16ビット、8ビット、5ビット、4ビット、3ビットまたは2ビットである。すなわち、演算回路4は、16ビットの演算以外に、2つの8ビットの固定小数点数データの演算を並列に実行可能であり、3つの5ビットの固定小数点数データの演算を並列に実行可能である。
また、演算回路4は、4つの4ビットの固定小数点数データの演算を並列に実行可能であり、5つの3ビットの固定小数点数データの演算を並列に実行可能であり、8つの2ビットの固定小数点数データの演算を並列に実行可能である。演算回路4は、特定回路8が特定したビット幅に応じて設定される数の固定小数点数データを使用して演算を実行する。演算結果は、例えば、レジスタ2に格納される。
なお、演算回路4は、SIMD(Single Instruction Multiple Data)命令を実行するSIMD演算回路でもよい。この場合、演算回路4は、16ビットの演算を単独に実行でき、または8ビット、4ビット、2ビットのいずれかの演算を並列に実行できる。
取得回路6は、演算命令に基づいてレジスタ2から出力される複数の固定小数点数データを受信し、受信した複数の固定小数点数データの最上位ビットの位置の分布を示す統計情報を取得する。特定回路8は、取得回路6が取得した統計情報に基づいて、最も数の多い最上位ビットの位置である最多ビット位置を特定する。特定回路8は、特定した最多ビット位置に基づいて、演算に使用する固定小数点数データのビット幅を特定し、特定したビット幅を示すビット幅情報を演算回路4に出力する。なお、特定したビット幅の最下位ビットは、丸め対象のビットであってもよい。この場合、演算回路4は、ビット幅より1ビット少ないビット数のデータを使用して演算を実行する。1ビットの符号ビットがデータに付加される場合、演算回路4が演算に使用する符号ビットを含むデータのビット幅は、特定回路8が特定したビット幅と同じである。
例えば、取得回路6および特定回路8は、演算回路4と並列に動作し、演算回路4は、演算命令に基づく演算の実行中に特定回路8により特定されたビット幅に基づいて、次の演算命令を実行する。なお、取得回路6および特定回路8は、演算命令の実行前にレジスタ2から出力されるデータのグループに基づいて統計情報を取得し、ビット幅を特定してもよい。演算回路4は、特定回路8により特定されたビット幅のデータを使用して、当該演算命令を実行してもよい。この場合、演算に使用するデータの統計情報を用いて特定されたビット幅のデータの演算を実行することができ、後述する認識処理の認識精度をさらに向上することができる。
なお、推論処理を実行するデータを、所定数のデータを含む複数のグループに分け、取得回路6は、データのグループ毎に統計情報を取得してもよい。この場合、特定回路8は、統計情報に基づいてグループ毎にビット幅を特定する。演算回路4は、グループの1つで特定されたビット幅に対応するビットを使用して次のグループの演算を実行する。
図2は、図1の演算処理装置100の推論処理時の動作の一例を示す。すなわち、図2は、演算処理装置100による演算処理方法を示す。図2において、網掛けの細長い矩形の各々は、固定小数点数データを示し、矩形の左端が最上位ビットを示す。16ビットの固定小数点数データにおいて、符号ビットを除くデータ部は15ビットである。入力データの左右の太い縦線は、15ビットのデータ部の最上位ビットと最下位ビットとを示し、図2の上側の14から0までの数値は、ビット番号を示す。
図2に示す例では、演算を実行するためにレジスタ2に保持されるデータは、16ビットの固定小数点数データであり、取得回路6が1回の統計情報の取得に使用するデータの数は12個であるとする。また、各固定小数点数データは、絶対値を示し、正値または負値のいずれである。各固定小数点データの最上位ビットは、正値では符号ビットを除いて上位側に最初に”1”が現れるビットであり、負値では符号ビットを除いて上位側に最初に”0”が現れるビットである。
取得回路6は、折れ線グラフのヒストグラムで示すように、演算命令に基づいてレジスタ2から出力される固定小数点数データの最上位ビットの位置の分布(度数)を示す統計情報を取得する。図2の統計情報は、最上位ビットがビット13、12、11である固定小数点数データがそれぞれ1つずつあり、最上位ビットがビット10である固定小数点データが2つあり、最上位ビットがビット9である固定小数点データが3つあることを示す。また、統計情報は、最上位ビットがビット8である固定小数点数データが1つあり、最上位ビットがビット7である固定小数点数データが2つあることを示し、最上位ビットがビット6である固定小数点データが1つあることを示す。最上位ビットがビット14である固定小数点数データと、ビット5からビット0である固定小数点数データとは存在しない。
特定回路8は、統計情報に基づいて、度数が最も多い最上位ビットの位置(最多ビット位置)を特定し、特定した最多ビット位置に基づいて、演算回路4が演算に使用するデータのビット幅を特定する。図2に示す例では、特定回路8は、12個の入力データのうちの最大値の最上位ビットであるビット14から最多ビット位置のビット9までの6ビットをビット幅に特定し、特定したビット幅を示すビット幅情報を出力する。例えば、ビット幅情報は、ビット幅を示す値(例えば、”6”)を含んでもよく、最多ビット位置のビット番号(例えば、”9”)を含んでもよい。
演算回路4は、特定回路8から受信するビット幅情報により決まる演算の並列数に応じた演算を実行し、演算結果を出力する。例えば、演算回路4は、ビット幅情報が7ビット、6ビットまたは5ビットを示す場合、2つのデータを使用した演算を並列に実行する(16≧(7+1)×2、16≧(6+1)×2、16≧(5+1)×2)。演算回路4は、ビット幅情報が4ビットを示す場合、3つのデータを使用した演算を並列に実行する(16≧(4+1)×3)。演算回路4は、ビット幅情報が3ビットを示す場合、4つのデータを使用した演算を並列に実行する(16≧(3+1)×4)。演算回路4は、ビット幅情報が2ビットを示す場合、5つのデータを使用した演算を並列に実行する(16≧(2+1)×5)。演算回路4は、ビット幅情報が1ビットを示す場合、8つのデータを使用した演算を並列に実行する(16≧(1+1)×8)。なお、演算回路4は、ビット幅情報が8ビットから15ビットを示す場合、1つのデータを使用した演算を単独で実行する。
ビット幅は、演算回路4が実行する演算に使用されるデータのビット数に対応しており、元の15ビットのデータのビット数より少ない。すなわち、特定回路8により特定されたビット幅に応じて、演算回路4は、データを圧縮(量子化)し、圧縮した複数のデータの演算を並列に実行する。なお、データの圧縮は、レジスタ2と演算回路4との間に設けられるデータ圧縮回路により実行されてもよい。この場合、ビット幅情報は、データ圧縮回路にも供給される。
なお、演算回路4は、ビット幅情報で示されるビット幅の固定小数点数データの最下位ビットを丸め処理することで、演算対象ビットから除いてもよい。この場合、演算回路4は、ビット幅情報が6ビットを示す場合、2つのデータを使用した演算を並列に実行する(16≧6×2)。演算回路4は、ビット幅情報が5ビットを示す場合、3つのデータを使用した演算を並列に実行する(16≧5×3)。演算回路4は、ビット幅情報が4ビットを示す場合、4つのデータを使用した演算を並列に実行する(16≧4×4)。演算回路4は、ビット幅情報が3ビットを示す場合、5つのデータを使用した演算を並列に実行する(16≧3×5)。演算回路4は、ビット幅情報が2ビットを示す場合、8つのデータを使用した演算を並列に実行する(16≧2×8)。
以上のように、演算に使用するデータの最上位ビットの位置の分布に基づいて、演算に使用するデータのビット幅を決めることで、データを圧縮(量子化)できるため、データをそのまま使用して演算する場合に比べて、演算の並列数を増やすことができる。ニューラルネットワークによる推論処理の精度に与える影響は、推論処理に使用する固定小数点数データの上位側のビットほど大きい。一方、下位ビット側が推論処理の精度に与える影響は小さいため、下位ビット側を演算対象から外しても、認識精度は変わらない場合が多い。したがって、図2に示す手法を演算処理装置100に適用することで、ニューラルネットワークによる推論処理の認識精度を維持しつつ、演算効率を向上することができる。
図3は、図1の演算処理装置100の推論処理時の動作フローの一例を示す。すなわち、図3は、演算処理装置100による演算処理方法を示す。
まず、ステップS10において、演算処理装置100は、図示しない命令デコーダにより演算命令をデコードする。次に、ステップS12において、演算命令のデコード結果に基づいて、演算に使用可能な複数のデータがレジスタ2から出力される。ステップS12の後、ステップS14、S16では、演算回路4による演算が実行され、ステップS20、S22、S24、S26では、取得回路6による統計情報の取得と、特定回路8によるビット幅の特定が実行される。
ステップS14において、演算回路4は、特定回路8からのビット幅情報に基づいて、レジスタ2から出力された複数のデータのうち、演算に使用可能な数のデータを選択する。演算回路4は、選択した所定数のデータの各々について、演算に使用するビットをビット幅情報に基づいて選択し、選択したビットを使用して演算を実行する。
例えば、演算回路4が選択するビットは、符号ビットを除く最上位ビットからビット幅情報で示される最多ビット位置までのビットである。なお、演算回路4は、選択したビットの最下位ビットの丸め処理を実行した後、データの演算を実行してもよい。次に、ステップS16において、演算回路4は、演算結果を出力し、動作を終了する。
例えば、特定回路8は、データのビット幅を特定した後、ビット幅情報を示す信号を出力し続ける(レベル固定)。このため、ステップS14で演算回路4が受信するビット幅情報は、既に実行した演算命令で使用したデータから特定されたものでもよい。
一方、ステップS20において、取得回路6は、ステップS12でレジスタ2から出力されたデータの統計情報を取得する。なお、ステップS20による統計情報の取得は、所定数のデータを含むグループ毎に実行されてもよい。この場合、ステップS22、S24、S26の動作は、グループ毎に取得された統計情報に基づいて実行される。
次に、ステップS22において、特定回路8は、統計情報に基づいて、最上位ビットの位置の分布において、最も数が多い最上位ビットの位置である最多ビット位置を特定する。
次に、ステップS24において、特定回路8は、最大のデータの最上位ビットの位置と、最多ビット位置とに基づいて、演算に使用するデータのビット幅を特定する。次に、ステップS26において、特定回路8は、特定したビット幅を示すビット幅情報を出力し、動作を終了する。ビット幅情報が出力されたとき、演算回路4が、デコードされた演算命令の実行を開始している場合、ビット幅情報は、ビット幅情報が出力された後の演算命令で使用されてもよい。
以上、図1から図3に示す実施形態では、ニューラルネットワークによる推論処理の認識精度を維持しつつ、演算効率を向上することができる。
図4は、別の実施形態における演算処理装置の一例を示す。図4に示す演算処理装置102は、命令制御部10、レジスタ部20、ベクトルユニット30およびスカラユニット40を有する。命令制御部10は、メモリインタフェース50を介して命令メモリ52に接続される。ベクトルユニット30およびスカラユニット40は、メモリインタフェース60を介してデータメモリ62に接続される。例えば、メモリインタフェース50、60に、メモリアクセスコントローラ(MAC)が使用されてもよい。
命令制御部10は、例えば、プログラムカウンタPCおよび命令デコーダDEC等を有する。命令制御部10は、プログラムカウンタPCが示すアドレスに基づいて命令メモリ52から命令をフェッチし、フェッチした命令を命令デコーダDECに供給する。命令デコーダDECは、フェッチされた命令をデコードし、デコード結果を演算ユニットであるレジスタ部20、ベクトルユニット30およびスカラユニット40に発行する。なお、命令制御部10は、命令をプリフェッチしておく命令バッファや命令キャッシュを有してもよい。
レジスタ部20は、ベクトルユニット30が使用するベクトルレジスタREG(REG00−REG77)およびベクトルアキュムレートレジスタA_REG(A_REG0−AREG_7)を有する。例えば、各ベクトルレジスタREGは、16ビットであり、8個のベクトルレジスタREGn0−REGn7(nは0から7の整数のいずれか)を含む8セットのレジスタ群(REG00−REG07〜REG70−REG77)のいずれかに割り当てられる。例えば、8個のベクトルアキュムレートレジスタA_REGの各々は、16ビットに所定数のビットを追加している。
ベクトルレジスタREGn0−REGn7およびベクトルアキュムレートレジスタA_REG0〜A_REG7は、1ビットの符号ビットを含む演算対象データのビット数に応じて、演算エレメント数が変化する。例えば、演算対象データが9ビットから16ビットの場合、演算エレメント数は1であり、演算対象データが6ビットから8ビットの場合、演算エレメント数は2である。演算対象データが5ビットの場合、演算エレメント数は3であり、演算対象データが4ビットの場合、演算エレメント数は4である。演算対象データが3ビットの場合、演算エレメント数は5であり、演算対象データが2ビットの場合、演算エレメント数は8である。
また、レジスタ部20は、スカラユニット40が使用するスカラレジスタSR(SR0−SR31)と、スカラアキュムレートレジスタSAとを有する。例えば、各スカラレジスタSRは、16ビットであり、スカラアキュムレートレジスタSAは、16ビットに所定数のビットを追加している。なお、レジスタ部20が有するレジスタの数、ビット数および種類は、図4に限定されない。以下では、レジスタ部20内の各種レジスタは、単にレジスタとも称される。
ベクトルユニット30は、例えば、8要素の演算ユニットを有する。ベクトルユニット30は、整数演算、ベクトルアキュムレートレジスタA_REGを用いた積和演算などを実行する機能を有する。また、ベクトルユニット30は、ベクトルアキュムレートレジスタA_REGのクリア、積和演算(MAC:Multiply and Accumulate)、累積加算、ベクトルレジスタREGへのデータの転送などを実行する。さらに、ベクトルユニット30は、データメモリ62からのデータのロードと、データメモリ62へのデータのストアを実行する。
ベクトルユニット30の各演算ユニットは、統計取得部32、量子化部34、データ変換部36および整数演算器(OP)38を有する。統計取得部32、量子化部34およびデータ変換部36は、整数演算器38毎に設けられる。統計取得部32は取得回路の一例であり、量子化部34は特定回路の一例であり、整数演算器38は演算回路の一例である。なお、データ変換部36の機能は、整数演算器38に含まれてもよい。ベクトルユニット30は、例えば、ベクトルレジスタREGn0−REGn7に保持されるデータを入力し、8要素の演算ユニットの整数演算器38で演算を並列に実行する。そして、ベクトルユニット30は、演算結果である出力データを他のセットのベクトルレジスタREGn0−REGn7に格納する。また、ベクトルユニット30は、8要素の整数演算器38でそれぞれ積和演算を実行し、積和演算結果の累積加算値をベクトルアキュムレートレジスタA_REG0〜A_REG7にそれぞれ格納する。
スカラユニット40は、統計取得部42、量子化部44、データ変換部46および整数演算器(OP)48を有する。統計取得部42は取得回路の一例であり、量子化部44は特定回路の一例であり、整数演算器48は演算回路の一例である。なお、データ変換部46の機能は、整数演算器48に含まれてもよい。スカラユニット40は、四則演算、シフト演算、分岐、ロード・ストアなどを実行する機能を有する。スカラユニット40は、スカラレジスタSRとスカラアキュムレートレジスタSAとを使用して演算を実行する。例えば、整数演算器48は、スカラレジスタSRのいずれかに格納されている入力データを演算し、演算結果である出力データを別のスカラレジスタSRに格納する。整数演算器48は、積和演算を実行する場合、積和演算の結果をスカラアキュムレートレジスタSAに格納する。スカラユニット40による演算結果は、スカラレジスタSR、スカラアキュムレートレジスタSAまたはデータメモリ62のいずれかに格納される。
各統計取得部32、42の機能は、図1に示す取得回路6の機能と同様である。すなわち、各統計取得部32、42は、演算命令に基づいてレジスタ部20から出力される複数の固定小数点数データを受信し、受信した複数の固定小数点数データの最上位ビットの位置の分布を示す統計情報を取得する。なお、各統計取得部32、42は、複数の演算命令で使用される数百または数千から数万のデータの統計情報を取得してもよい。
量子化部34、44の機能は、図1に示す特定回路8の機能と同様である。すなわち、各量子化部34、44は、対応する統計取得部42が取得した統計情報に基づいて、最も度数が多い最上位ビットの位置である最多ビット位置を特定する。各量子化部34、44は、特定した最多ビット位置に基づいて、演算に使用する固定小数点数データのビット幅を特定し、ビット幅情報として出力する。各量子化部34は、特定したビット幅を示すビット幅情報を、対応するデータ変換部36に出力する。量子化部44は、特定したビット幅を示すビット幅情報をデータ変換部46に出力する。
なお、ビット幅情報は、最大のデータの最上位ビットからのビット数を示す情報でもよく、ビット幅で示されるデータの最下位ビットを示すビット番号でもよい。例えば、符号ビットを除くデータ部が15ビットでありデータ部の最上位ビットのビット番号が”14”であるとする。この場合、量子化部34は、特定したビット幅(=5ビット)に基づいて、ビット番号10を示すビット幅情報を出力してもよい。
各データ変換部36は、演算命令に基づいてレジスタ部20から出力される複数のデータの中から整数演算器38で演算可能な数のデータを、ビット幅情報に基づいて選択する。各データ変換部36は、選択した所定数のデータのビット数を、ビット幅情報に基づいて圧縮(量子化)する。例えば、データ変換部36は、ビット幅情報に基づいて、圧縮後のデータの総ビット数が整数演算器38の入力ビット数以下になるように、レジスタ部20から出力される所定数の固定小数点数データを圧縮する。
各データ変換部36は、圧縮したデータの最下位ビットの丸め処理を実行し、丸め処理を実行した所定数のデータを整数演算器38に出力する。丸め処理に最下位ビットの情報を、最下位ビットより上位のビットに含ませることでより、整数演算器38に出力するデータのビット数を削減することができ、整数演算器38に出力するデータ数を増加することができる。この結果、整数演算器38が実行する演算の並列数を増加させることができ、演算効率を向上することができる。
データ変換部46の機能は、データ変換部36の機能と同様である。すなわち、データ変換部46は、レジスタ部20から出力される複数のデータの中から整数演算器48で演算可能な数のデータを、ビット幅情報に基づいて選択し、選択した所定数のデータのビット数を、ビット幅情報に基づいて圧縮(量子化)する。例えば、データ変換部36は、ビット幅情報に基づいて、圧縮後のデータの総ビット数が整数演算器48の入力ビット数以下になるように、レジスタ部20から出力される所定数の固定小数点数データを圧縮する。また、データ変換部46は、圧縮したデータの最下位ビットの丸め処理を実行し、丸め処理を実行した所定数のデータを整数演算器48に出力する。各データ変換部36、46において、選択されなかったデータは、後続の演算命令の実行時に順次使用される。
各統計取得部32、各量子化部34および各データ変換部36は、整数演算器38毎に設けられる。なお、1つの統計取得部32、1つの量子化部34および1つのデータ変換部36が、複数の整数演算器38に共通に設けられてもよい。この場合、統計取得部32は、レジスタ部20から各整数演算器38に供給される複数のデータの統計情報を取得する。量子化部34は、統計情報に基づいて特定したビット幅を示すビット幅情報を複数のデータ変換部36に出力する。データ変換部36は、ビット幅情報に基づいて、各整数演算器38に供給する固定小数点数データのビット数を圧縮(量子化)する。統計取得部32、量子化部34およびデータ変換部36を共通化することで、共通化しない場合に比べて、ベクトルユニット30の回路規模を削減することができる。
整数演算器38は、16ビットの演算器である。整数演算器38は、16ビットデータの演算だけでなく、2つの8ビットデータの並列演算、3つの5ビットデータの並列演算、4つの4ビットデータの並列演算、5つの3ビットデータの並列演算または8つの2ビットデータの並列演算を実行可能である。なお、各データは、符号ビットを含むため、演算に使用されるデータ値を表すビット数は、データのビット数より1ビット少ない。
整数演算器48は、16ビットの演算器である。整数演算器48は、16ビットデータの演算だけでなく、2つの8ビットデータの並列演算、3つの5ビットデータの並列演算、4つの4ビットデータの並列演算、5つの3ビットデータの並列演算または8つの2ビットデータの並列演算を実行可能である。なお、各データは、符号ビットを含むため、演算に使用されるデータ値を表すビット数は、データのビット数より1ビット少ない。
なお、整数演算器38は、演算を実行するデータの並列数の認識が必要な場合、量子化部34から出力されるビット幅情報を受けてもよい。同様に、整数演算器48は、演算を実行するデータの並列数の認識が必要な場合、量子化部44から出力されるビット幅情報を受けてもよい。また、整数演算器38、48は、SIMD演算器でもよい。この場合、各整数演算器38、48は、16ビットの演算を単独に実行でき、または8ビット、4ビット、2ビットのいずれかの演算を並列に実行できる。
図5は、図4の演算処理装置102が実装される情報処理装置の一例を示す。図5に示す情報処理装置200は、例えば、サーバであり、ホストマシン70と、ホストマシン70にアクセス可能に接続された端末装置80と、専用インターフェースを介してホストマシン70に接続された演算処理装置102(図4)とを有する。なお、演算処理装置102は、ホストマシン70のマザーボードに実装されてもよい。また、演算処理装置102の変わりに、図1に示した演算処理装置100がホストマシン70に接続されてもよい。情報処理装置200は、演算処理装置102を動作させて、ニューラルネットワークによる推論処理を実行する。
ホストマシン70は、CPU等のプロセッサ71と、演算処理装置102と接続するための高速入出力インターフェース72と、メインメモリ73と、内部バス74とを有する。さらに、ホストマシン70は、内部バス74に接続された大容量のHDD(Hard Disk Drive)などの補助記憶装置75と、端末装置80と接続するために内部バス74に接続された低速入出力インターフェース76とを有する。ホストマシン70は、演算処理装置102を制御する制御装置の一例である。
プロセッサ71は、補助記憶装置75に記憶されているプログラムをメインメモリ73に展開したプログラムを実行する。高速入出力インターフェース72は、例えば、PCI Expressインターフェースである。メインメモリ73は、例えば、SDRAM(Synchronous Dynamic Random Access Memory)やHBM(High Bandwidth Memory)であり、プロセッサ71が実行するプログラムやデータを記憶する。
内部バス74は、プロセッサ71の動作速度に比べて低速の周辺機器とプロセッサ71とを接続し、両者の通信を中継する。低速入出力インターフェース76は、例えば、USB(Universal Serial Bus)インターフェースであり、端末装置80のキーボードやマウスとの接続を行い、または、イーサーネットのネットワークとの接続を行う。補助記憶装置75には、推論処理用プログラムと、推論処理用データ等とが記憶される。
情報処理装置200の利用者は、端末装置80からホストマシン70にアクセスし、演算処理装置102に推論処理等を実行させる。ホストマシン70は、端末装置80からの指示にしたがい、演算処理装置102に実行させる推論処理用プログラムを演算処理装置102に送信する。そして、演算処理装置102は、受信したプログラムを実行し、ホストマシン70から送信される画像データ等の推論処理を実行する。
図6は、ニューラルネットワークの推論モデルで使用する所定数の固定小数点数データの最上位ビットの分布の一例を示す。例えば、図6に示す分布は、図4の統計取得部32または統計取得部42により取得される。図6に示す分布は、上述した図2と同様に、正値および負値の両方(絶対値)を示しており、最上位ビットは、正値では符号ビットを除いて上位側に最初に”1”が現れるビットであり、負値では符号ビットを除いて上位側に最初に”0”が現れるビットである。統計取得部42および量子化部44の動作は、統計取得部32および量子化部34の動作と同様であるため、以下では、統計取得部32および量子化部34の動作が説明される。
図6は、量子化(圧縮)する前のデータ(例えば、符号ビットを除く15ビット;ビット15からビット0)を示す。本実施形態では、ニューラルネットワークの推論モデルにおいて、各レイヤーで使用するデータのビット幅の最大値は、推論に使用する全データのうち、最大データを最上位ビットとする15ビットであるとする。
図6の分布において、量子化部34は、統計情報において最も度数が多い最上位ビットの位置である最多ビット位置をビット10に特定する。また、量子化部34は、統計情報において最も度数が2番目に多い最上位ビットの位置である第2ビット位置をビット9に特定する。また、量子化部34は、第2ビット位置が最多ビット位置に対して1ビット下位側であることを検出し、最多ビット位置での度数と第2位置での度数との差が、閾値未満であるか判定する。
図6の例では、度数の差が閾値未満であるため、量子化部34は、第2ビット位置(ビット9)を丸め対象のビット位置に特定する。すなわち、量子化部34は、第2ビット位置を最多ビット位置として特定する。そして、量子化部34は、最上位ビット(ビット14)から丸め対象ビット(ビット9)までのビット幅(6ビット)を示すビット幅情報を出力する。なお、量子化部34は、丸め対象ビットのビット番号9をビット幅情報として出力してもよい。
なお、量子化部34は、第2ビット位置が最多ビット位置の1ビット下位側でない場合、最多ビット位置を丸め対象のビット位置に特定する。また、量子化部34は、第2ビット位置が最多ビット位置の1ビット下位側であり、最多ビット位置の度数と第2ビット位置の度数との差が閾値以上の場合、最多ビット位置を丸め対象のビット位置に特定する。そして、量子化部34は、最上位ビット(ビット14)から丸め対象ビット(ビット10)までのビット幅(5ビット)を示すビット幅情報を出力する。
また、量子化部34は、第2ビット位置が最多ビット位置のnビット下位側にあり(例えば、nは、1、2、3のいずれか)、最多ビット位置の度数と第2ビット位置の度数との差が閾値未満の場合、第2ビット位置を最多ビット位置として特定してもよい。
例えば、データの最上位ビットの度数は、隣接する複数ビットにまたがって分布する場合がある。この場合、最多ビット位置が丸め対象ビットになると、最多ビット位置の下位ビット側に位置する第2ビット位置のデータが切り捨てられてしまい、認識精度が低下するおそれがある。最多ビット位置の下位側に2番目に度数の多い第2ビット位置がある場合、第2ビット位置を最多ビット位置として丸め対象ビットに特定することで、認識精度の低下を抑止することができる。したがって、認識精度を低下させることなく、整数演算器38が演算に使用するデータのビット数を削減することができる。この結果、整数演算器38で並列に実行するデータ数を増加させることができ、演算処理装置102の演算効率を向上することができる。
なお、図6に破線の矢印で示す範囲に最上位ビットがあるデータは”0”として切り捨てられる。しかし、推論処理では、値が小さいデータは推論結果に与える影響が小さいため、”0”として切り捨てても認識精度は劣化しない。
図7は、ニューラルネットワークの推論モデルで使用する所定数の固定小数点数データの最上位ビットの分布の変化の一例を示す。図7に示すように、統計情報は、演算対象のデータのグループ毎に異なる。統計情報に応じて最多ビット位置が変わると、量子化部34、44が出力するビット幅情報も変わる。
例えば、カメラで撮影した動画像に含まれる各画像を用いて、演算処理装置102により推論処理を実行する場合、時間的に隣接する画像の特徴は互いに似ているため、最上位ビットの位置の分布は互いに似たものになる。このため、例えば、画像毎のデータを1つのグループとして、グループ毎に推論処理を実行する場合、隣接するグループの最上位ビットの位置の分布は互いに似たものになる。
したがって、1つの前のグループのデータの統計情報から得られたビット幅を、次のグループの演算の実行時に使用する場合、推論処理の認識精度を、低下させることなく維持することができる。例えば、動画像に含まれる時間的に連続した3つの画像の最上位ビットの位置の分布が、時間の早い順に図7の(A)、(B)、(C)であるとする。分布(A)、(B)、(C)は、互いに似ているため、例えば、分布(A)から得られるビット幅を使用して、分布(B)のデータの演算を実行しても、推論処理での認識精度を維持することができる。同様に、分布(B)から得られるビット幅を使用して、分布(C)のデータの演算を実行しても、推論処理での認識精度を維持することができる。
一方、動画像に含まれる撮影時間が離れた2つの画像は、類似度が低いため、それぞれの画像の統計情報から得られる最多ビット位置は大きくずれやすく、最多ビット位置から特定されるビット幅も異なりやすい。したがって、後述する図13および図14で説明する手法を用いて、分布(A)、(B)、(C)に対して最適なビット幅を設定した場合、分布(A)、(B)、(C)の画像と撮影時間が異なる画像の推論処理の認識精度は低下するおそれがある。
これに対して、この実施形態では、1つ前のグループのデータの統計情報に基づいて特定されたビット幅を使用して、次のグループのデータの演算処理を実行する。撮影時間が隣接した類似度が高い画像データの統計情報に基づいてビット幅を特定し、特定したビット幅を使用して推論処理を実行することで、動画像の各画像の認識精度を維持することができる。
図8は、量子化部34、44が特定した最多ビット位置から所定ビットずらしてビット幅を設定する場合の推論処理での認識精度の変化の一例を示す。特定した最多ビット位置に対して上位ビット側にずらしてビット幅情報を設定する場合、最多ビット位置のデータが欠落するため、認識精度は著しく低下する。このため、最多ビット位置は、ビット幅情報に含める必要がある。
一方、特定した最多ビット位置に対して下位ビット側にずらしてビット幅情報を設定する場合、認識精度は僅かに向上する。しかし、ビット幅が増えることで、整数演算器38、48での演算の並列数が減ると、演算効率が低下する。このため、下位ビット側へのずらし量は、図6で説明したように、最多ビット位置に対して1ビット程度にすることが好ましい。これにより、推論処理の認識精度を維持しつつ、演算効率を向上することができる。
図9は、閾値を変えた場合の認識精度の変化の一例を示す。閾値は、図6で説明したように、度数が2番目に多い第2ビット位置が最多ビット位置に対して1ビット下位側である場合、第2ビット位置を丸め対象ビットとするかの判定に使用される。閾値は、最多ビット位置での度数と、最多ビット位置に対して1つ下位側のビットの度数との差を示し、例えば、最多ビット位置での度数を100%とした場合の比率で示される。図9において、0%の閾値は、最多ビット位置を常に丸め対象ビットとすることを示す。
図9の右側の縦軸は、閾値を変えた場合のビット幅の変化(平均値)の例を示す。ここで、ビット幅は、演算に使用するデータのビット数を決めるために量子化部34または量子化部44により特定される。例えば、ビット幅の変化の平均値は、推論処理用のニューラルネットワークの全レイヤーの平均値である。
図9では、閾値を5%以上に設定する場合、認識精度がほぼ最大になり、閾値を5%未満に設定する場合、閾値が0%に近づくにしたがって認識精度は低下していく。このため、閾値は、5%以上に設定することが好ましい。また、閾値が5%の場合、閾値が10%以上の場合に比べて、ビット幅の平均を少なくできる。ビット幅が増えると並列に演算できるデータの数が減るため、ビット幅は小さい方が好ましい。以上より、5%の閾値が、認識精度および演算の並列数の両方に取って好ましいことが分かる。
図10は、データのビット幅の変更前後における固定小数点数データの最上位ビットの分布の一例を示す。統計取得部42、量子化部44およびデータ変換部46の動作は、統計取得部32、量子化部34およびデータ変換部36の動作と同様であるため、以下では、統計取得部32、量子化部34およびデータ変換部36の動作が説明される。なお、元のデータのヒストグラム以外のヒストグラムは、説明のためのものであり、統計取得部32等により生成されるものではない。ビット幅の変更前のヒストグラムは、図6と同様であり、統計取得部32により取得される統計情報である。
図10に示す例では、最多ビット位置での度数と、最多ビット位置に対して1つ下位側の度数が2番目に多い第2ビット位置の度数との差は、図6で説明したように、閾値未満(例えば、5%未満)である。このため、量子化部34は、最多ビット位置に対して1つ下位側のビットを丸め対象ビットに設定する。これにより、丸め対象ビットより下位側の最上位ビットがあるデータは、”0”に設定され、ヒストグラムの度数から取り除かれる。
量子化部34から出力されるビット幅情報に基づいて、データ変換部36が丸め対象ビットの丸め処理を実行した後、丸め対象ビットに最上位ビットがあるデータの最上位ビットは、丸め対象ビットより1ビット上位側に移動する。そして、ビット14からビット10の5ビットに符号ビットをそれぞれ付加したデータを使用して2つの演算が並列に実行される。
図11は、推論処理に使用するデータに応じた認識精度の一例を示す。図11(A)は、図6に示した手法を用いて、図4の演算処理装置102によりデータの最上位ビットの分布に応じてデータのビット幅を変更する場合であって、ビット幅の平均が4ビットの場合の認識精度を示す。図11(B)は、データのビット幅を4ビットに固定した場合の認識精度を示す。図11(C)は、浮動小数点演算器を有する他の演算処理装置により、32ビットの浮動小数点数データを使用して推論処理を実行した場合の認識精度を示す。
図11(A)は、ニューラルネットワークの全てのレイヤーでの推論処理に使用した固定小数点数データのビット幅の平均が4ビットである例を示す。例えば、図11(A)では、図11(B)と比較するために、データのビット幅の平均が4ビットになるような画像データを使用して推論処理が実行される。図11(B)は、ニューラルネットワークの全てのレイヤーでの推論処理に使用した固定小数点数のデータのビット幅を4ビットに固定した例を示す。図11(C)は、ニューラルネットワークの全てのレイヤーでの推論処理に使用したデータが32ビットの浮動小数点数データである例を示す。
図11では、推論に使用するデータのビット幅の平均が4ビットの場合、データのビット幅を4ビットに固定する場合に比べて、推論処理の認識精度を向上することができ、32ビット浮動小数点数データを使用する場合と同等以上の認識精度を得ることができる。データのビット幅を4ビットに固定する場合も、ビット幅の平均は4ビットである。ビット幅の平均が同じ場合、整数演算器38、48による命令の実行効率は、ほぼ同じになる。したがって、図6に示した手法を用いることで、整数演算器38、48による命令の実行効率が同等の場合にも、認識精度を向上することができる。
図12は、図4の演算処理装置102の推論処理時の動作フローの一例を示す。すなわち、図12は、演算処理装置102による演算処理方法を示す。図3と同様の動作については、詳細な説明は省略する。なお、ベクトルユニット30とスカラユニット40は、演算に使用するデータの数が異なることを除き同様に動作するため、以下では、ベクトルユニット30の動作について説明される。
まず、ステップS30において、図4の命令デコーダDECは、演算命令をデコードする。次に、ステップS32において、演算命令のデコード結果に基づいてレジスタ部20から演算に使用可能な複数のデータが出力される。ステップS32の後、ステップS34からステップS44では、データ変換部36によるデータのビット幅の変換と、整数演算器38による演算が実行される。また、ステップS50からステップS58では、統計取得部32による統計情報の取得と、量子化部34によるビット幅の特定が実行される。
ステップS34において、データ変換部36は、量子化部34からのビット幅情報に基づいて、レジスタ部20から出力された複数のデータのうち、演算に使用可能な数のデータを選択する。すなわち、量子化部34は、演算に使用するデータの総ビット数が16ビット以下になるようにデータを選択する。
例えば、ビット幅情報が2ビットを示すとき、最下位ビットの丸め処理後の1ビットのデータに符号ビットを加えたデータのビット数は2ビットであるため、データ変換部36は、8個のデータを選択する。ビット幅情報が3ビットを示すとき、最下位ビットの丸め処理後の2ビットのデータに符号ビットを加えたデータのビット数は3ビットであるため、データ変換部36は、5個のデータを選択する。同様にして、ビット幅情報が4ビットを示すとき、データ変換部36は、4個のデータを選択し、ビット幅情報が5ビットを示すとき、データ変換部36は、3個のデータを選択する。ビット幅情報が6ビット、7ビット、8ビットを示すとき、最下位ビットの丸め処理後のデータに符号ビットを加えたデータのビット数は、それぞれ6ビット、7ビット、8ビットであるため、データ変換部36は、2個のデータを選択する。ビット幅情報が9ビット以上15ビット以下を示すとき、データ変換部36は、1つの16ビットデータを選択する。
次に、ステップS36において、データ変換部36は、ステップS34で選択したデータの各々から、ビット幅情報に対応するビット数を、符号ビットを除く上位ビット側から抽出することで、データを量子化(圧縮)する。次に、ステップS38において、データ変換部36は、量子化したデータの最下位ビットの丸め処理を実行し、丸め処理後のデータを整数演算器38に出力する。なお、ステップS36、S38の動作の順序は逆にされてもよい。次に、ステップS40において、整数演算器38は、受信したデータを使用して演算を実行し、演算結果を出力する。
次に、ステップS42において、データ変換部36は、レジスタ部20から出力されたデータのうち、演算に使用しない未使用データがある場合、動作をステップS44に移行し、未使用データがない場合、動作を終了する。ステップS44において、データ変換部36は、未使用データの情報をレジスタ部20に出力し、動作を終了する。レジスタ部20は、未使用データを次の演算で使用するために、破棄することなく保持する。なお、ステップS42、S44の動作は、ステップS34からステップS40の間に実行されてもよい。
一方、ステップS50において、統計取得部32は、ステップS32でレジスタ部20から出力されたデータの統計情報を取得する。なお、統計取得部32は、演算に使用されなかった未使用データがレジスタ部20から出力された場合、未使用データの統計情報は取得しない。これは、未使用データの統計情報は、レジスタ部20から最初に出力されたときに取得しているためである。これにより、同一のデータが重複して統計情報として取得されることを抑止することができる。統計情報の取得に使用するか否かを判定するために、レジスタ部20から出力されるデータは、未使用データであることを示す未使用フラグが付加されてもよい。
次に、ステップS52において、統計取得部32は、統計情報の取得に使用したデータが規定のデータ数に到達した場合、量子化部34に動作の開始を指示し、動作をステップS54に移行し、規定のデータ数に到達していない場合、動作を終了する。規定のデータ数とは、図7で説明したグループに含まれるデータ数でもよい。
次に、ステップS54において、量子化部34は、統計取得部32が取得した統計情報を用いて、最も度数が多い最上位ビットの位置である最多ビット位置を検出する。なお、2番目に度数が多い第2ビット位置が最多ビット位置に対して1ビット下位側にあり、最多ビット位置の度数と第2ビット位置の度数との差が閾値未満の場合、量子化部34は、第2ビット位置を最多ビット位置として設定する。次に、ステップS56において、量子化部34は、演算に使用するデータのビット幅を特定する。なお、演算に使用するデータは、丸め処理により失われるビットを含む。次に、ステップS58において、量子化部34は、ステップS56で決定したビット幅情報をデータ変換部36に出力し、動作を終了する。
図13は、他の演算処理装置において、ニューラルネットワークの学習処理後に実施されるデータのビット幅の圧縮フローの一例を示す。例えば、図13に示すフローは、推論処理用のニューラルネットワークのレイヤー毎に実行される。
まず、ステップS60において、演算処理装置は、学習結果に基づいて、ニューラルネットワークの所定のレイヤーでの演算に使用する固定小数点数データのビット幅を仮設定する。次に、ステップS62において、演算処理装置は、ステップS60で仮設定したビット幅のデータを使用して演算を実行することで、推論処理を行う。
次に、ステップS64において、演算処理装置は、推論処理用のニューラルネットワークの出力を期待値と比較することで、認識精度を判定する。認識精度が劣化している場合、動作はステップS30に戻され、演算に使用するデータのビット幅の再設定が行われる。認識精度の劣化がない場合、処理はステップS66に移行される。例えば、ステップS60では、初期のビット幅は、設定可能なビット幅のうち最も小さいビット幅に設定され、ビット幅は、ステップS64から戻る毎に順次増加される。すなわち、データの圧縮率は、初期が高く、ステップS64から戻る毎に順次低下する。このため、ステップS64において、認識精度の劣化がないと判定されたビット幅は、認識精度が劣化しない最小のビット幅(最大の圧縮率)である。
ステップS66において、演算処理装置は、認識精度が劣化しないと判定したビット幅を推論処理用のニューラルネットワークで使用するデータのビット幅に決定し、動作を終了する。例えば、図13に示す動作は、大量のサンプルデータを用いて、全てのサンプルデータで認識精度が維持できるデータのビット幅を決定する。
図14は、図13で決定したビット幅に合わせて設計されたニューラルネットワークの推論モデルの一例を示す。例えば、推論モデルによる推論処理用の演算は、推論処理用の演算処理装置により実行される。図14に示す推論処理用のニューラルネットワークは、入力から出力に向けてレイヤー1、レイヤー2、レイヤー3、レイヤー4が順に接続され、レイヤー4から推論結果が出力される。なお、推論モデルに含まれるレイヤーの数は、図14に限定されない。レイヤー1からレイヤー4に示すNビット、Mビット、Lビット、Kビットのデータは、図13のステップS66で決定したビット幅であり、丸め処理により最下位ビットが取り除かれ、符号ビットが最上位ビットに付加されたデータである。
図14に示す例では、レイヤー1では、入力データのうち、上位のNビットの固定小数点数データと重みデータ等とを使用して演算処理が実行され、Nビットよりビット幅が大きい出力データがレイヤー2に出力される。レイヤー2では、レイヤー1からのデータのうち、上位のMビットの固定小数点数データと重みデータ等とを使用して演算処理が実行され、Mビットよりビット幅が大きい出力データがレイヤー3に出力される。
レイヤー3では、レイヤー2からのデータのうち、上位のLビットの固定小数点数データと重みデータ等とを使用して演算処理が実行され、Lビットよりビット幅が大きい出力データがレイヤー4に出力される。レイヤー4では、レイヤー3からのデータのうち、上位のKビットの固定小数点数データと重みデータ等とを使用して演算処理が実行され、演算結果が推論結果として出力される。
例えば、演算処理装置が16ビットの演算器を有し、Nが”4”である場合、4つのデータの演算を並列に実行可能である。Mが”3”の場合、5つのデータの演算を並列に実行可能であり、Lが”5”の場合、3つのデータの演算を並列に実行可能である。
なお、Nビット、Mビット、Lビット、Kビットは、図13で説明したように、大量のサンプルデータを使用して求めたレイヤー毎の平均的なビット幅であり、推論処理を実行する実際のデータの特徴に依存するものではない。このため、各レイヤーのデータのビットが、Nビット、Mビット、Lビット、Kビットにそれぞれ固定される場合、図7で説明したように、推論処理による認識精度は低下するおそれがある。
以上、図4から図12に示す実施形態においても、図1から図3に示した実施形態を同様の効果を得ることができる。さらに、図4から図12に示す実施形態では、最多ビット位置の下位側に2番目に度数の多い第2ビット位置がある場合、第2ビット位置を最多ビット位置として丸め対象ビットに特定することで、認識精度の低下を抑止することができる。したがって、認識精度を低下させることなく、整数演算器38、48が演算に使用するデータのビット数を削減することができる。この結果、整数演算器38、48で並列に実行するデータ数を増加させることができ、演算処理装置102の演算効率を向上することができる。
丸め処理に最下位ビットの情報を、最下位ビットより上位のビットに含ませることでより、整数演算器38に出力するデータのビット数を削減することができ、整数演算器38に出力するデータ数を増加することができる。この結果、整数演算器38が実行する演算の並列数を増加させることができ、演算効率を向上することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
2 レジスタ
4 演算回路
6 取得回路
8 特定回路
10 命令制御部
20 レジスタ部
30 ベクトルユニット
32 統計取得部
34 量子化部
36 データ変換部
38 整数演算器
40 スカラユニット
42 統計取得部
44 量子化部
46 データ変換部
48 整数演算器
50 メモリインタフェース
52 命令メモリ
60 メモリインタフェース
62 データメモリ
70 ホストマシン
100、102 演算処理装置
200 情報処理装置
DEC 命令デコーダ
PC プログラムカウンタ
4 演算回路
6 取得回路
8 特定回路
10 命令制御部
20 レジスタ部
30 ベクトルユニット
32 統計取得部
34 量子化部
36 データ変換部
38 整数演算器
40 スカラユニット
42 統計取得部
44 量子化部
46 データ変換部
48 整数演算器
50 メモリインタフェース
52 命令メモリ
60 メモリインタフェース
62 データメモリ
70 ホストマシン
100、102 演算処理装置
200 情報処理装置
DEC 命令デコーダ
PC プログラムカウンタ
Claims (10)
- 複数の固定小数点数データを格納するレジスタと、
演算命令にしたがって固定小数点数データの演算を実行する演算回路と、
前記レジスタが保持する複数の固定小数点数データの最上位ビットの位置の分布についての統計情報を取得する取得回路と、
前記統計情報に基づいて最も数の多い最上位ビットの位置である最多ビット位置を特定し、特定した前記最多ビット位置に基づいて、演算に使用する固定小数点数データのビット幅を特定する特定回路と、
を備え、
前記演算回路は、前記レジスタから出力される固定小数点数データのビットのうち、前記特定回路が特定したビット幅に対応するビットを使用して演算を実行する
演算処理装置。 - 前記特定回路は、前記最多ビット位置の下位ビット側に、2番目に数の多い最上位ビットの位置である第2ビット位置がある場合、前記第2ビット位置を前記最多ビット位置として前記ビット幅を特定する
請求項1に記載の演算処理装置。 - 前記特定回路は、前記最多ビット位置の1ビット下位側に、前記第2ビット位置がある場合のみ、前記第2ビット位置を前記最多ビット位置として前記ビット幅を特定する
請求項2に記載の演算処理装置。 - 前記特定回路は、前記統計情報の取得に使用した複数の固定小数点数データの最大値の最上位ビットから前記最多ビット位置までを前記ビット幅に特定し、
前記演算回路は、前記最多ビット位置の値を丸めたデータを使用して演算を実行する
請求項1ないし請求項3のいずれか1項に記載の演算処理装置。 - 前記レジスタから出力される所定数の固定小数点数データを、圧縮後のデータの総ビット数が前記演算回路の入力ビット数以下になるように、前記ビット幅に基づいて圧縮するデータ変換部を備え、
前記演算回路は、前記データ変換部が圧縮した複数のデータを並列に実行する
請求項1ないし請求項4のいずれか1項に記載の演算処理装置。 - 前記取得回路は、所定数の固定小数点数データのグループ毎に前記統計情報を取得し、
前記特定回路は、前記統計情報に基づいて前記グループ毎に前記ビット幅を特定し、
前記演算回路は、前記グループの1つで特定された前記ビット幅に対応するビットを使用して次のグループの演算を実行する
請求項1ないし請求項5のいずれか1項に記載の演算処理装置。 - 複数の前記演算回路と、前記演算回路の各々に対応する前記取得回路および前記特定回路とを備え、
前記取得回路および前記特定回路は、前記演算回路毎に設けられる
請求項1ないし請求項6のいずれか1項に記載の演算処理装置。 - 複数の前記演算回路を備え、
前記取得回路および前記特定回路は、複数の前記演算回路に共通に設けられる
請求項1ないし請求項6のいずれか1項に記載の演算処理装置。 - 演算処理装置と、前記演算処理装置を制御する制御装置とを備え、ニューラルネットワークによる推論処理を実行する情報処理装置であって、
前記演算処理装置は、
複数の固定小数点数データを格納するレジスタと、
演算命令にしたがって固定小数点数データの演算を実行する演算回路と、
前記レジスタが保持する複数の固定小数点数データの最上位ビットの位置の分布についての統計情報を取得する取得回路と、
前記統計情報に基づいて最も数の多い最上位ビットの位置である最多ビット位置を特定し、特定した前記最多ビット位置に基づいて、演算に使用する固定小数点数データのビット幅を特定する特定回路と、
を備え、
前記演算回路は、前記レジスタから出力される固定小数点数データのビットのうち、前記特定回路が特定したビット幅に対応するビットを使用して演算を実行する
情報処理装置。 - 複数の固定小数点数データを格納するレジスタと、演算命令にしたがって固定小数点数データの演算を実行する演算回路と、を備える演算処理装置の演算処理方法であって、
前記演算処理装置が有する取得回路が、前記レジスタが保持する複数の固定小数点数データの最上位ビットの位置の分布についての統計情報を取得し、
前記演算処理装置が有する特定回路が、前記統計情報に基づいて最も数の多い最上位ビットの位置である最多ビット位置を特定し、特定した前記最多ビット位置に基づいて、演算に使用する固定小数点数データのビット幅を特定し、
前記演算回路が、前記レジスタから出力される固定小数点数データのビットのうち、前記特定回路が特定したビット幅に対応するビットを使用して演算を実行する
演算処理方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019029741A JP2020135549A (ja) | 2019-02-21 | 2019-02-21 | 演算処理装置、情報処理装置および演算処理方法 |
EP20154828.6A EP3699752A1 (en) | 2019-02-21 | 2020-01-31 | Arithmetic processing device, information processing apparatus, and arithmetic processing method |
US16/782,109 US20200272462A1 (en) | 2019-02-21 | 2020-02-05 | Arithmetic processing device, information processing apparatus, and arithmetic processing method |
CN202010097471.4A CN111598212A (zh) | 2019-02-21 | 2020-02-17 | 运算处理装置、信息处理设备以及运算处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019029741A JP2020135549A (ja) | 2019-02-21 | 2019-02-21 | 演算処理装置、情報処理装置および演算処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020135549A true JP2020135549A (ja) | 2020-08-31 |
Family
ID=69423134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019029741A Pending JP2020135549A (ja) | 2019-02-21 | 2019-02-21 | 演算処理装置、情報処理装置および演算処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200272462A1 (ja) |
EP (1) | EP3699752A1 (ja) |
JP (1) | JP2020135549A (ja) |
CN (1) | CN111598212A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022024080A (ja) * | 2020-12-11 | 2022-02-08 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | ニューラルネットワークの積和演算方法及び装置 |
JP7546254B2 (ja) | 2021-07-06 | 2024-09-06 | 日本電信電話株式会社 | 処理システム、処理方法及び処理プログラム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200302283A1 (en) * | 2019-03-18 | 2020-09-24 | Microsoft Technology Licensing, Llc | Mixed precision training of an artificial neural network |
JP2022094508A (ja) * | 2020-12-15 | 2022-06-27 | 富士通株式会社 | 演算処理装置、演算処理方法および演算処理プログラム |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006048590A (ja) | 2004-08-09 | 2006-02-16 | Matsushita Electric Ind Co Ltd | 正規化処理装置及び正規化処理方法 |
JP2009099084A (ja) * | 2007-10-19 | 2009-05-07 | Kyocera Corp | 変換装置 |
JP6540725B2 (ja) | 2017-01-30 | 2019-07-10 | 富士通株式会社 | 演算処理装置、方法、およびプログラム |
-
2019
- 2019-02-21 JP JP2019029741A patent/JP2020135549A/ja active Pending
-
2020
- 2020-01-31 EP EP20154828.6A patent/EP3699752A1/en not_active Withdrawn
- 2020-02-05 US US16/782,109 patent/US20200272462A1/en not_active Abandoned
- 2020-02-17 CN CN202010097471.4A patent/CN111598212A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022024080A (ja) * | 2020-12-11 | 2022-02-08 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | ニューラルネットワークの積和演算方法及び装置 |
JP7320582B2 (ja) | 2020-12-11 | 2023-08-03 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | ニューラルネットワークの積和演算方法及び装置 |
JP7546254B2 (ja) | 2021-07-06 | 2024-09-06 | 日本電信電話株式会社 | 処理システム、処理方法及び処理プログラム |
Also Published As
Publication number | Publication date |
---|---|
CN111598212A (zh) | 2020-08-28 |
US20200272462A1 (en) | 2020-08-27 |
EP3699752A1 (en) | 2020-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020135549A (ja) | 演算処理装置、情報処理装置および演算処理方法 | |
CN110413255B (zh) | 人工神经网络调整方法和装置 | |
US11043962B2 (en) | Information processing apparatus, information processing method, and recording medium | |
US10726336B2 (en) | Apparatus and method for compression coding for artificial neural network | |
US9851945B2 (en) | Bit remapping mechanism to enhance lossy compression in floating-point applications | |
WO2018139266A1 (ja) | 演算処理装置、情報処理装置、方法、およびプログラム | |
US10491239B1 (en) | Large-scale computations using an adaptive numerical format | |
US10884744B2 (en) | System and method of loop vectorization by compressing indices and data elements from iterations based on a control mask | |
US20190095175A1 (en) | Arithmetic processing device and arithmetic processing method | |
CN110555450A (zh) | 人脸识别神经网络调整方法和装置 | |
US10936939B2 (en) | Operation processing apparatus, information processing apparatus and information processing method | |
JP2019139338A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
CN113222102B (zh) | 用于神经网络模型量化的优化方法 | |
CN111507465B (zh) | 一种可配置的卷积神经网络处理器电路 | |
WO2023124372A1 (zh) | 浮点数处理装置、方法、电子设备、存储介质及芯片 | |
CN116451769A (zh) | 语言模型的量化方法及电子设备 | |
EP3671432B1 (en) | Arithmetic processing device and method of controlling arithmetic processing device | |
JP7272121B2 (ja) | 演算処理装置、制御方法、及び制御プログラム | |
US12001237B2 (en) | Pattern-based cache block compression | |
US20210012192A1 (en) | Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program | |
US20220188077A1 (en) | Arithmetic processing device, arithmetic processing method, and storage medium | |
US20240201948A1 (en) | Combined sparse and block floating arithmetic | |
US11394396B2 (en) | Lossless machine learning activation value compression | |
CN115905236A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN118331535A (zh) | 浮点数尾数压缩方法、装置、发送端、接收端及介质 |