Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7296709B2 - ニューラルネットワークのパラメータを量子化する装置及びその方法 - Google Patents
[go: Go Back, main page]

JP7296709B2 - ニューラルネットワークのパラメータを量子化する装置及びその方法 - Google Patents

ニューラルネットワークのパラメータを量子化する装置及びその方法 Download PDF

Info

Publication number
JP7296709B2
JP7296709B2 JP2018197320A JP2018197320A JP7296709B2 JP 7296709 B2 JP7296709 B2 JP 7296709B2 JP 2018197320 A JP2018197320 A JP 2018197320A JP 2018197320 A JP2018197320 A JP 2018197320A JP 7296709 B2 JP7296709 B2 JP 7296709B2
Authority
JP
Japan
Prior art keywords
value
point format
neural network
mantissa
fixed
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
JP2018197320A
Other languages
English (en)
Other versions
JP2019079531A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2019079531A publication Critical patent/JP2019079531A/ja
Application granted granted Critical
Publication of JP7296709B2 publication Critical patent/JP7296709B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Nonlinear Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、ニューラルネットワークのパラメータを量子化する装置及びその方法に関する。
ニューラルネットワーク(neural network)の動作原理は、生物学的な脳をモデリングしたコンピュータ科学的アーキテクチャ(computational architecture)を基礎としている。ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワークを活用して入力データを分析し、有効な情報を抽出している。
最近では、深層神経網(DNN:deep neural network)を低電力で効率的に使用するためのハードウェア加速器に対する研究が活発に進められている。ニューラルネットワークを処理する装置は、複雑な入力データに対する多量の演算を必要とする。
特に、低電力でさほど性能が高くないデバイスにおいて、ニューラルネットワークを利用して、大量の入力データをリアルタイムに分析し、所望する情報を抽出するためには、ニューラルネットワークに係わる演算を効率的に処理することが要求される。
特開2012-198804号公報 特開2012-208843号公報
本発明が解決しようとする課題は、ニューラルネットワークのパラメータを量子化する装置及びその方法を提供するところにある。また、前記方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供するところにある。解決しようとする技術的課題は、前述のような技術的課題に限定されるものではなく、さらに他の技術的課題も存在する。
前述の技術的課題を達成するための技術的手段として、本開示の第1側面は、ニューラルネットワークが学習又は推論する過程で使用される浮動小数点(floating point)フォーマットのパラメータを獲得する段階;固定小数点(fixed point)フォーマットの小数部(fraction)長を適用し、前記固定小数点から捨てられるビット値のうち最も高い桁のビット値による前記固定小数点の四捨五入を行うために、整数算術演算論理ユニット(integer arithmetic logic unit:ALU)を使用して演算を行う段階;及び前記演算結果に基いて、前記浮動小数点フォーマットのパラメータを、前記固定小数点フォーマットのパラメータに量子化する段階;を含むニューラルネットワーク量子化装置において、ニューラルネットワークのパラメータを量子化する方法を提供することができる。
また、本開示の第2側面は、少なくとも1つのプログラムが保存されたメモリ;及び前記少なくとも1つのプログラムを実行することにより、前記ニューラルネットワークのパラメータを量子化するプロセッサと、を含み、前記プロセッサは、前記ニューラルネットワークが学習又は推論する過程で使用される浮動小数点フォーマットのパラメータを獲得し、固定小数点フォーマットの小数部長を適用し、前記固定小数点から捨てられるビット値のうち最も高い桁のビット値による前記固定小数点の四捨五入を行うために、整数ALUを使用して演算を行い、前記演算結果に基いて、前記浮動小数点フォーマットのパラメータを、前記固定小数点フォーマットのパラメータに量子化する、ニューラルネットワークのパラメータを量子化するニューラルネットワーク量子化装置を提供することができる。
また、本開示の第3側面は、第1側面の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供することができる。
一実施形態によるニューラルネットワークにおいて、浮動小数点フォーマットのパラメータを、固定小数点フォーマットのパラメータに量子化する例示について説明する図面である。 一実施形態によるニューラルネットワークにおいて行われる演算について説明するための図面である。 一実施形態によるニューラルネットワーク推論器のハードウェア構成を図示したブロック図である。 一実施形態による浮動小数点及び固定小数点について説明するための図面である。 一実施形態によるニューラルネットワーク量子化装置において、ニューラルネットワークのパラメータを量子化する方法のフローチャートである。 一実施形態によって、浮動小数点を固定小数点に量子化する過程において、ビット操作及び整数演算が行われる例示について説明するための図面である。 一実施形態によって、浮動小数点を固定小数点に量子化する過程において、四捨五入及びビット数調整が行われる例示について説明するための図面である。 一実施形態による浮動小数点実数を、固定小数点整数に量子化する過程について説明するための図面である。 一実施形態による浮動小数点実数を、固定小数点整数に量子化する過程について説明するための図面である。 一実施形態による浮動小数点実数を、固定小数点整数に量子化する過程について説明するための図面である。
本明細書で多様なところに出てくる「一部実施形態において」または「一実施形態において」というような語句は、必ずしもいずれも同一実施形態を示すものではない。
本開示の一部実施形態は、機能的なブロック構成、及び多様な処理段階によっても示される。そのような機能ブロックの一部または全部は、特定機能を遂行する多様な個数のハードウェア構成及び/またはソフトウェア構成によっても具現される。例えば、本開示の機能ブロックは、1以上のマイクロプロセッサによって具現されたり、所定機能のための回路構成によって具現されたりもする。また、例えば、本開示の機能ブロックは、多様なプログラミング言語またはスクリプティング言語によっても具現される。該機能ブロックは、1以上のプロセッサで実行されるアルゴリズムによっても具現される。また、本開示は、電子的な環境設定、信号処理及び/またはデータ処理などのために、従来技術を採用することができる。「メカニズム」、「要素」、「手段」及び「構成」のような用語は、広義に使用され、機械的であって物理的な構成としてだけに限定されるものではない。
また、図面に図示された構成要素間の連結線または連結部材は、機能的な連結、及び/または物理的または回路的な連結を例示的に示したものに過ぎない。実際の装置においては、代替可能であったり追加されたりする多様な機能的な連結、物理的な連結または回路連結により、構成要素間の連結が示される。
以下、添付された図面を参照し、本開示について詳細に説明する。
図1は、一実施形態によるニューラルネットワークにおいて、浮動小数点フォーマットのパラメータを、固定小数点フォーマットのパラメータに量子化する例示について説明する図面である。
図1を参照すれば、ニューラルネットワーク学習器10は、ニューラルネットワークを生成したり、ニューラルネットワークを訓練(train)(または、学習(learn))させたり、浮動小数点フォーマットのニューラルネットワークを、固定小数点フォーマットのニューラルネットワークに量子化したり、ニューラルネットワークを再訓練(retrain)したりする機能のような多様なプロセッシング機能を有するコンピューティングデバイスに該当する。例えば、ニューラルネットワーク学習器10は、PC(personal computer)、サーバデバイス、モバイルデバイスなどの多種のデバイスでもっても具現される。
ニューラルネットワーク学習器10は、与えられた初期ニューラルネットワークを反復的に訓練(学習)させることにより、訓練されたニューラルネットワーク11を生成することができる。このとき、初期ニューラルネットワークは、ニューラルネットワークの処理正確度確保次元において、浮動小数点フォーマットのパラメータ、例えば、32ビット浮動小数点精度(32bit floating point precision)のパラメータを有することができる。ここで、該パラメータは、例えば、ニューラルネットワークの入出力アクティベーション、ウェート、バイアスのようなニューラルネットワークに入出力される多種のデータを含んでもよい。該ニューラルネットワークの反復的な訓練が進められることにより、該ニューラルネットワークの浮動小数点パラメータは、与えられた入力に対し、さらに正確な出力を演算するために調整される(tuned)。
ニューラルネットワーク学習器10は、訓練されたニューラルネットワーク11を、ニューラルネットワーク推論器20のようなハードウェア加速器に伝達することができる。ニューラルネットワーク推論器20は、モバイルデバイス、埋め込み(embedded)デバイスなどにも含まれる。ニューラルネットワーク推論器20は、ニューラルネットワーク21駆動のための専用ハードウェアであり、比較的、低電力または低性能でもっても具現されるために、浮動小数点演算よりは、固定小数点演算にさらに適して具現される。一方、ニューラルネットワーク推論器20は、ニューラルネットワーク駆動のための専用モジュールであるTPU(tensor processing unit)、Neural Engineなどに該当するが、それらに制限されるものではない。
量子化されたニューラルネットワーク21を駆動するニューラルネットワーク推論器20は、ニューラルネットワーク学習器10とは別途の独立したデバイスとしても具現される。しかし、それに制限されるものではなく、ニューラルネットワーク推論器20は、ニューラルネットワーク学習器10と同一デバイス内にも具現される。
一方、浮動小数点は、固定小数点に比べ、相対的に多くの演算量と、多くのメモリアクセス頻度とが要求される。特に、ニューラルネットワークの処理に必要となる演算量のほとんどは、多様なパラメータの演算を行うMAC(multiplication and accumulation)演算と知られている。従って、比較的処理性能が低いスマートフォン、タブレット、ウェアラブルデバイスなどに含まれたニューラルネットワーク推論器20においては、浮動小数点フォーマットのパラメータを有するニューラルネットワークの処理が円滑ではなくなる。結局、そのようなデバイスにおいて、演算量を十分に減少させながら、許容可能な正確度損失内において、ニューラルネットワークを駆動させるためには、ニューラルネットワークで処理される浮動小数点フォーマットのパラメータは、量子化されることが望ましい。ここで、該パラメータ量子化は、高精度を有する浮動小数点フォーマットのパラメータを、低精度を有する固定小数点フォーマットのパラメータに変換することを意味する。
ニューラルネットワーク量子化装置は、訓練されたニューラルネットワーク11のパラメータを、所定ビットの固定小数点フォーマットに変換する量子化を行う。該ニューラルネットワーク量子化装置は、ニューラルネットワーク学習器10、ニューラルネットワーク推論器20に含まれて動作するか、あるいは独立した第3のハードウェア加速器として動作することができる。該ニューラルネットワーク量子化装置は、ニューラルネットワークが採用される(deployed)ニューラルネットワーク推論器20のデバイスの処理性能を考慮し、訓練されたニューラルネットワーク11のパラメータを、所定ビットの固定小数点フォーマットに変換する量子化を行い、量子化されたニューラルネットワーク21を採用するニューラルネットワーク推論器20に伝達することができる。
量子化されたニューラルネットワーク21が採用されるニューラルネットワーク推論器20は、具体的な例示において、ニューラルネットワークを利用した音声認識、映像認識などを行う自律走行自動車、ロボティックス、スマートフォン、タブレットデバイス、AR(augmented reality)デバイス、IoT(internet of things)デバイスなどに含まれもする、それらに制限されるものではない。
図2は、一実施形態によるニューラルネットワークで行われる演算について説明するための図面である。
図2を参照すれば、ニューラルネットワーク2は、入力レイヤ、隠れレイヤ及び出力レイヤを含む構造を有し、受信される入力データ(例えば、I1及び I2)を基に演算を行い、遂行結果を基に、出力データ(例えば、O1及びO2)を生成することができる。
ニューラルネットワーク2は、前述のように、2個以上の隠れレイヤを含むDNN(deep neural network)、またはn階層ニューラルネットワークでもある。例えば、図2に図示されているように、ニューラルネットワーク2は、入力レイヤLayer 1、2個の隠れレイヤLayer 2及びLayer 3、並びに出力レイヤLayer 4を含むDNNでもある。ニューラルネットワーク2がDNNアーキテクチャによって具現された場合、有効な情報を処理することができるさらに多くのレイヤを含むので、ニューラルネットワーク2は、シングルレイヤを有するニューラルネットワークより複雑なデータ集合を処理することができる。一方、ニューラルネットワーク2は、4個のレイヤを含むように図示されているが、それは、例示に過ぎず、ニューラルネットワーク2は、さらに少なかったり多かったりするレイヤを含むか、あるいはさらに少なかったり多かったりするチャネルを含んでもよい。すなわち、ニューラルネットワーク2は、図2に図示されているところとは異なる多様構造のレイヤを含んでもよい。
ニューラルネットワーク2に含まれたレイヤそれぞれは、複数のチャネルを含んでもよい。該チャネルは、ニューロン(neuron)、プロセッシングエレメント(PE:processing element)、ユニット(unit)、またはそれと類似した用語として知られた複数の人工ノード(artificial node)に該当する。例えば、図2に図示されているように、Layer 1は、2個のチャネル(ノード)、Layer 2及びLayer 3それぞれは、3個のチャネルを含んでもよい。ただし、それらは、例示に過ぎず、ニューラルネットワーク2に含まれたレイヤそれぞれは、多様な個数のチャネル(ノード)を含んでもよい。
ニューラルネットワーク2のレイヤそれぞれに含まれたチャネルは、互いに連結されてデータを処理することができる。例えば、1つのチャネルは、他のチャネルからデータを受信して演算することができ、演算結果をさらに他のチャネルに出力することができる。
チャネルそれぞれの入力及び出力は、入力アクティベーション及び出力アクティベーションとも称される。すなわち、該アクティベーションは、1チャネルの出力であると同時に、次のレイヤに含まれたチャネルの入力に該当するパラメータでもある。一方、チャネルそれぞれは、以前レイヤに含まれたチャネルから受信されたアクティベーション、ウェート及びバイアスに基き、自体のアクティベーションを決定することができる。該ウェートは、各チャネルでの出力アクティベーションを計算するために利用されるパラメータであり、チャネル間の連結関係に割り当てられる値でもある。
チャネルそれぞれは、入力を受信して出力アクティベーションを出力する演算ユニット(computational unit)またはプロセッシングエレメント(processing element)によっても処理され、チャネルそれぞれの入力・出力は、マッピングされもする。例えば、σは、アクティベーション関数(activation function)であり、wi jkは、(i-1)番目レイヤに含まれたk番目チャネルから、i番目レイヤに含まれたj番目チャネルへのウェートであり、bi jは、i番目レイヤに含まれたj番目チャネルのバイアス(bias)であり、ai jは、i番目レイヤのj番目チャネルのアクティベーションであるとするとき、アクティベーションai j は、以下の数式(1)を利用しても計算される。
Figure 0007296709000001
図2に図示されているように、2番目レイヤLayer 2の最初チャネルCH1のアクティベーションはa2 1とも表現される。また、a2 1は、数式(1)により、a2 1=σ(w2 1,1×a1 1+ w2 1,2×a1 2 +b2 1)の値を有することができる。ただし、前述の数式(1)は、ニューラルネットワーク2において、データを処理するために利用されるアクティベーション、ウェート及びバイアスについて説明するための例示であるのみ、それに制限されるものではない。該アクティベーションは、以前レイヤから受信されたアクティベーションの重み付け加算(weighted sum)を、sigmoid関数やReLU(rectified linear unit)関数などのアクティベーション関数による処理を施すことによって獲得された値でもある。
一般的に、レイヤの入力として、浮動小数点フォーマット及び固定小数点フォーマットのパラメータが利用される。また、ウェート値及びバイアス値として、浮動小数点フォーマット及び固定小数点フォーマットのパラメータが利用される。一方、ニューラルネットワークを構成するレイヤにおいて、一部レイヤは、入力として高精度値が必要であるので、浮動小数点フォーマットのパラメータを入力として受ける。
前述のように、ニューラルネットワーク2においては、数多くのデータ集合が相互連結された複数のチャネル間で交換され、レイヤを経ながら、数多くの演算過程を経る。従って、複雑な入力データ処理に必要な演算量を減少させながらも、正確度損失を最小化させることができる技術が要求される。
図3は、一実施形態によるニューラルネットワーク推論器のハードウェア構成を図示したブロック図である。図3を参照すれば、ニューラルネットワーク推論器20は、別途のニューラルネットワーク学習器10で量子化されたニューラルネットワーク21を伝達される代わりに、浮動小数点フォーマットのパラメータを入力され、それを固定小数点フォーマットに量子化することができる。
ニューラルネットワーク推論器20は、量子化された固定小数点フォーマットのパラメータを利用し、ニューラルネットワーク学習器で生成されたニューラルネットワークを利用した推論を行うことができる。ニューラルネットワーク推論器20は、特定レイヤの処理条件に基いて、量子化された固定小数点フォーマットのパラメータを、浮動小数点フォーマットのパラメータに変換することができる。
プロセッサ210は、ニューラルネットワーク推論器20を制御するための全般的な機能を遂行する役割を行う。例えば、プロセッサ210は、ニューラルネットワーク推論器20内のメモリ220に保存されたプログラムを実行することにより、ニューラルネットワーク推論器20を全般的に制御する。プロセッサ210は、ニューラルネットワーク推論器20内に具備されたCPU(central processing unit)、GPU(graphics processing unit)、AP(application processor)などによっても具現されるが、それらに制限されるものではない。
メモリ220は、ニューラルネットワーク推論器20内で処理される各種データを保存するハードウェアであり、例えば、メモリ220は、ニューラルネットワーク推論器20で処理されたデータ及び処理されるデータを保存することができる。また、メモリ220は、ニューラルネットワーク推論器20によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ220は、DRAM(dynamic random access memory)でもあるが、それに限定されるのではない。メモリ220は、揮発性メモリ(volatile memory)または不揮発性メモリ(non-volatile memory)のうち少なくとも一つを含んでもよい。該不揮発性メモリは、ROM(read-only memory)、PROM(programmable read-only memory)、EPROM(electrically programmable read only memory)、EEPROM(electrically erasable programmable read-only memory)、フラッシュメモリ、PRAM(phase-change random access memory)、MRAM(magnetic random access memory)、RRAM(登録商標(resistive random access memory))、FRAM(登録商標(ferroelectric random access memory))などを含む。該揮発性メモリは、DRAM、SRAM(static random access memory)、SDRAM(synchronous dynamic random access memory)、PRAM(phase-change random access memory)、MRAM(magnetic random access memory)、RRAM(resistive random access memory)、FeRAM(ferroelectric random access memory)などを含む。一実施形態において、メモリ220は、HDD(hard disk drive)、SSD(solid state drive)、CF(compact flash)、SD(secure digital)、micro-SD(micro secure digital)、mini-SD(mini secure digital)、xD(extreme digital)またはmemory stickのうち少なくとも一つを含んでもよい。
ニューラルネットワーク推論器20は、比較的処理性能が低いスマートフォン、タブレット、ウェアラブルデバイスのようなモバイルデバイス、埋め込みデバイスなどにも含まれる。浮動小数点は、固定小数点に比べ、相対的に多くの演算量と、多くのメモリアクセス頻度とが要求されるので、モバイルデバイス、埋め込みデバイスなどに含まれたニューラルネットワーク推論器20においては、浮動小数点フォーマットのパラメータを有するニューラルネットワークの処理が円滑ではなくなる。そのために、ニューラルネットワーク推論器20のプロセッサ210は、ニューラルネットワークで処理される浮動小数点フォーマットのパラメータを、固定小数点フォーマットのパラメータに量子化することができる。
プロセッサ210は、別途のハードウェア構成またはライブラリを利用せず、整数ALUを利用し、ビット操作演算及び整数演算を行うことにより、浮動小数点フォーマットのパラメータを、固定小数点フォーマットのパラメータに量子化することができる。一実施形態において、プロセッサ210は、32ビットの浮動小数点を、16ビット以下の固定小数点に量子化することができる。プロセッサ210は、浮動小数点フォーマットのパラメータを、固定小数点フォーマットのパラメータに量子化するニューラルネットワーク量子化装置にも含まれる。ニューラルネットワーク量子化装置は、ニューラルネットワーク学習器10、ニューラルネットワーク推論器20に含まれて動作するか、あるいは独立した第3のハードウェア加速器として動作することができる。
プロセッサ210は、ニューラルネットワークが学習又は推論する過程において使用される浮動小数点フォーマットのパラメータを獲得し、獲得された浮動小数点フォーマットのパラメータから、符号、第1指数値及び第1仮数値を抽出することができる。
プロセッサ210は、第1指数値、及び固定小数点フォーマットの小数部長(fractional length)を利用して第2指数値を算出し、算出された第2指数値に基いて、第1仮数値のビット操作を行い、第2仮数値を算出することができる。また、プロセッサ210は、算出された第2仮数値の最小有効ビット(LSB:least significant bit)値、及び抽出された符号を利用し、浮動小数点フォーマットのパラメータを、固定小数点フォーマットに量子化することができる。
プロセッサ210において、浮動小数点フォーマットのパラメータを、固定小数点フォーマットのパラメータに量子化するプロセスに係わる詳細な説明は、図4で後述する。
一方、ニューラルネットワークに含まれたレイヤの処理条件は、多様であり、一実施形態において、ニューラルネットワークを構成するレイヤにおいて、一部レイヤは、入力として高精度の浮動小数点フォーマットのパラメータを受信することができる。そのとき、プロセッサ210は、量子化された固定小数点フォーマットのパラメータをさらに浮動小数点フォーマットに変換した後、浮動小数点フォーマットに変換されたパラメータを一部レイヤの入力として提供することができる。その後、プロセッサ210は、次のレイヤにパラメータを伝達するために、一部レイヤで処理された浮動小数点フォーマットのパラメータを、前述の方法により、固定小数点フォーマットにさらに量子化することができる。
メモリ220は、例えば、訓練されていない初期ニューラルネットワークデータ、訓練過程で生成されたニューラルネットワークデータ、全ての訓練が完了したニューラルネットワークデータ、量子化されたニューラルネットワークデータなど、プロセッサ210によって処理されるか、あるいは処理されたニューラルネットワーク関連データセットを保存することができ、またプロセッサ210によって実行されるニューラルネットワークの訓練アルゴリズム、量子化アルゴリズムなどに係わる多様なプログラムを保存することができる。また、メモリ220は、プロセッサ210において、ALUを利用し、ビット操作及び整数演算を行う過程で算出された中間値を保存することができる。
図4は、一実施形態による浮動小数点及び固定小数点について説明するための図面である。図4の浮動小数点例示410を参照すれば、浮動小数点値は、a×2bの形式で表現され、ここで、aは、仮数部(mantissa)に該当し、bは、指数部(exponent)に該当する。一実施形態において、浮動小数点フォーマットが単精度(single-precision)である場合、浮動小数点値は、1ビットの符号ビット、8ビットの指数部ビット、及び23ビットの仮数部ビットを含む32ビットで表現される。
一方、浮動小数点フォーマットは、単精度以外にも、64ビット倍精度(double-precision)、43ビット以上の拡張単精度、79ビット以上の拡張倍精度(一般的に、80ビットでもって具現される)を含む。
次に、固定小数点例示420を参照すれば、固定小数点は、「Qm.n」によっても表現される(mは、1以上の整数、nは、0以上の整数)。ここで、「m」は、ビット幅(bit width)を示し、「n」は、小数点以下の数字を表現するために使用されるビットの個数(または、小数部長)である。固定小数点のビット幅「m」は、符号1ビット、整数部「m-1-n」ビット、及び仮数部nビットを合わせた値である。固定小数点ビットにおいて、小数部を示すビットはnビットであるので、小数部長は、nである。
例えば、「Q8.4」は、符号1ビット、整数部3ビット及び小数部4ビットを有する総8ビットの固定小数点値であり、「Q32.30」は、符号1ビット、整数部1ビット及び小数部30ビットを有する総32ビットの固定小数点値であり、「Q32.16」は、符号1ビット、整数部15ビット及び小数部16ビットを有する総32ビットの固定小数点値である。
浮動小数点フォーマットを利用する場合、非常に小さい値や非常に大きい値を表現することができるが、演算を行うためには、FPU(fixed point unit)やFPUエミュレーションライブラリが必要である。固定小数点フォーマットを利用する場合、浮動小数点フォーマットに比べ、表現することができる値の範囲が制限的であるが、整数ALUのみを利用して演算を行うことができる。
一方、量子化とは、高精度の浮動小数点実数型値を、低精度の固定小数点整数型値に変換することを意味する。
図5は、一実施形態によるニューラルネットワーク量子化装置において、ニューラルネットワークのパラメータを量子化する方法のフローチャートである。
ニューラルネットワーク量子化装置は、ニューラルネットワーク学習器10、ニューラルネットワーク推論器20に含まれて動作するか、あるいは独立した第3のハードウェア加速器として動作することができる。
図5を参照すれば、段階510において、ニューラルネットワーク量子化装置は、ニューラルネットワークが学習したり推論したりする過程で使用される浮動小数点フォーマットのパラメータを獲得することができる。
該ニューラルネットワーク量子化装置は、PC、サーバのような外部デバイスから浮動小数点フォーマットのパラメータを獲得することができる。一実施形態において、該パラメータは、例えば、ニューラルネットワークの入出力アクティベーション、ウェート、バイアスなどニューラルネットワークに入出力される多種のデータを含んでもよい。
また、一実施形態において、ニューラルネットワーク量子化装置は、IEEE(Institute of Electrical and Electronics Engineers) Standard 754による多様なフォーマットの浮動小数点値を獲得することができるが、例えば、該ニューラルネットワーク量子化装置は、単精度以外にも、64ビット倍精度、43ビット以上の拡張単精度、79ビット以上の拡張倍精度(一般的に、80ビットでもって具現される)による浮動小数点値を獲得することができる。
段階520において、固定小数点フォーマットの小数部長を適用し、固定小数点から捨てられるビット値のうち最も高い桁のビット値による前記固定小数点の四捨五入(round off)いかんを決定するために、整数ALUを使用して演算を行うことができる。
該ニューラルネットワーク量子化装置は、別途のハードウェア構成またはライブラリを利用せずに、整数ALUのみを利用し、ビット操作演算及び整数演算を行うことができる。
一実施形態において、ニューラルネットワーク量子化装置は、浮動小数点フォーマットの指数部に小数部長を加える整数加算演算を行うことにより、浮動小数点値に「2(小数部長)乗」値を乗じたところと同一結果値を算出することができる。また、該ニューラルネットワーク量子化装置は、整数加算演算及び算術シフト演算を行うことにより、固定小数点から捨てられるビット値のうち最も高い桁のビット値による固定小数点の四捨五入を行うことができる。該固定小数点から捨てられるビット値のうち最も高い桁のビット値による固定小数点の四捨五入の結果を反映させることにより、低精度に変換しながらも、さらに正確度に高めることができる。
段階530において、該ニューラルネットワーク量子化装置は、演算結果に基いて、浮動小数点フォーマットのパラメータを、固定小数点フォーマットのパラメータに量子化することができる。
該ニューラルネットワーク量子化装置は、段階520による演算結果値のビット数を、固定小数点フォーマットと同一になるように調整することができる。また、該ニューラルネットワーク量子化装置は、最終的に、浮動小数点の符号ビットを適用することにより、固定小数点に量子化することができる。
該ニューラルネットワーク量子化装置は、別途のニューラルネットワーク学習器10で量子化されたニューラルネットワーク21を伝達される代わりに、浮動小数点フォーマットのパラメータを入力され、それを、固定小数点フォーマットに量子化してニューラルネットワークを生成するか、あるいはニューラルネットワークを訓練(または、学習)させることができる。
図6は、一実施形態による浮動小数点を、固定小数点に量子化する過程において、ビット操作及び整数演算が行われる例示について説明するための図面である。
図6を参照すれば、32ビットフォーマットの浮動小数点を、「Q16.4」フォーマットの固定小数点に量子化する過程が説明される。32ビットフォーマットの浮動小数点の符号は、1ビット、第1指数値は、8ビット、そして第1仮数値は、23ビットの桁数を有する。例えば、実数値「51.737673200562085」に対応する32ビットフォーマットの浮動小数点値は、符号「0」、第1指数値「10000100」(8桁)、及び第1仮数値「10011101111001101100001」(23桁)にも区分される。一方、「Q16.4」フォーマットの固定小数点の符号は、1ビット、整数部は、11ビット、小数部は、4ビットの桁を有する。
図6において、浮動小数点の符号は、ビットインデックスsに対応し、第1指数値のビット8桁は、ビットインデックスe1ないしe8に対応し、第1仮数値のビット23桁は、ビットイデックスm1ないしm23に対応する。また、固定小数点の符号は、ビットインデックスsに対応し、整数部のビット11桁は、ビットインデックスi1ないしi11に対応し、小数部のビット4桁は、ビットインデックスf1ないしf4に対応する。
IEEE標準により、浮動小数点フォーマットにおいては、実際指数値にバイアス定数を加えて第1指数値が決められる。従って、第1指数値を実際指数値に戻すために、ニューラルネットワーク量子化装置は、第1指数値からバイアス定数を減じることができる。また、該ニューラルネットワーク量子化装置は、量子化された固定小数点の小数部長を反映させるために、第1指数値からバイアス定数を減じた結果値に、小数部長を算術的に加えることができる。
一実施形態において、演算1 610を参照すれば、ニューラルネットワーク量子化装置は、第1指数値「132」からバイアス定数「127」を減じた結果値「5」に、小数部長「4」を加えることにより、第2指数値として「9」を算出することができる。第2指数値が「9」であるというのは、固定小数点のLSB(least significant bit)を含んだ下位9ビット(i7ないしi11、及びf1ないしf4)に、第1仮数値の最上位ビット(MSB:most significant bits)を含んだ上位9ビット(m1ないしm9)の値が入ることを意味する。一方、四捨五入いかんにより、該ニューラルネットワーク量子化装置は、上位9ビット(m1ないしm9)の値に、追加して1ビット値を加えた結果を、固定小数点の下位9ビット(i7ないしi11、及びf1ないしf4)に入れることができる。
IEEE標準により、浮動小数点フォーマットの第1仮数値は、小数点の前桁値である1を省略して表示される。該ニューラルネットワーク量子化装置は、第1仮数値の前桁にビット値1を追加することにより、省略された1を再び表示することができる。
演算2 620を参照すれば、第1仮数値「100111……0001」(23桁)は、実際の「1.100111……0001」値である。該ニューラルネットワーク量子化装置は、第1仮数値の前桁にビット値1を追加することにより、第1仮数値を「110011101111001101100001」(24桁)にアップデートすることができる。演算1 610を行った結果、固定小数点の下位9ビット(i7ないしi11、及びf1ないしf4)に値が入るので、アップデートされた第1仮数値の左側最初ビット値、すなわち、MSBは、固定小数点のLSBから10番目のビット(i6)に入る。
演算1 610及び演算2 620により、固定小数点のLSBから何番目のビット(すなわち、下位から何番目のビット)まで浮動小数点の第1仮数値で埋められるかということが分かる。
他の実施形態において、第2指数値が、第1仮数値のビット数より大きいか、あるいはそれと同じである場合、該ニューラルネットワーク量子化装置は、第2指数値を、固定小数点のビット幅から2を減じた値と比較することができる。
該比較結果、第2指数値が、固定小数点のビット幅から2を減じた値より大きい場合、該ニューラルネットワーク量子化装置は、既設定の固定小数点のフォーマットを変更することができる。該ニューラルネットワーク量子化装置は、固定小数点のフォーマットを変更した後、演算をさらに行うことができる。
また、該比較結果、第2指数値が、固定小数点のビット幅から2を減じた値より小さいか、あるいはそれと同じである場合、該ニューラルネットワーク量子化装置は、第2指数値と第1仮数値のビット数との差ほど、アップデートされた第1仮数値を左側にシフトすることができる。例えば、第2指数値が25であり、固定小数点のビット幅が26である場合、第2指数値(25)から第1仮数値のビット数(23)を減じた2ほど、アップデートされた第1仮数値を左側にシフトすることができる。該ニューラルネットワーク量子化装置は、左側にシフトされた第1仮数値に符号を適用し、浮動小数点フォーマットのパラメータを、固定小数点フォーマットに量子化することができる。
図7は、一実施形態による浮動小数点を、固定小数点に量子化する過程において、四捨五入及びビット数調整が行われる例示について説明するための図面である。
量子化された固定小数点から捨てられるビット値のうち最も高い桁のビット値による固定小数点の四捨五入いかんを反映させれば、量子化された固定小数点値の正確度を高めることができる。該ニューラルネットワーク量子化装置は、図6の演算1 610結果に基いて、四捨五入いかんを決定することができるが、図6の演算1 610を参照すれば、演算1 610を行った結果、第2指数値が「9」になったので、第1仮数値のMSBから10番目ビット(m10)の値が、固定小数点から捨てられるビット値のうち最も高い桁のビット値であるということが分かる。該ニューラルネットワーク量子化装置は、第1仮数値の上位9ビット(m1ないしm9)の値に、m10の値を加えた結果値を、固定小数点の下位9ビット(i7ないしi11、及びf1ないしf4)に入れることができる。
他の実施形態において、第1仮数値の上位9ビット(m1ないしm9)の値に、m10の値を加えた結果値のビット数が10ビットにもなる。その場合、該ニューラルネットワーク量子化装置は、10ビットの結果値を、固定小数点の下位10ビット(i6ないしi11、及びf1ないしf4)に入れることができる。
以下では、四捨五入いかんが反映された固定小数点の下位10ビット(i6ないしi11、及びf1ないしf4)の値を第2仮数値と称する。
該ニューラルネットワーク量子化装置は、第2仮数値のビット数と、固定小数点フォーマットのビット数とが同一になるように、ビット数差ほど第2仮数値の前桁を0で埋めることができる。前述の例示において、第2仮数値は、10ビット(i6ないしi11、及びf1ないしf4)である一方、固定小数点フォーマットは、「Q16.4」であり、ビット幅が16ビットであるので、6ビット差がある。従って、該ニューラルネットワーク量子化装置は、第2仮数値の前6桁を0で埋め(「0000001100111100」(16桁))、ビット数を固定小数点フォーマットと同一になるように調整することができる。
該ニューラルネットワーク量子化装置は、最終的に、ビット桁数が調整された第2仮数値に符号を適用することにより、浮動小数点値を固定小数点値に量子化することができる。前述の例示において、浮動小数点値の符号s「0」を適用した結果、量子化された固定小数点値は、「00000001100111100」(16桁)になる。
図8ないし図10は、一実施形態による浮動小数点実数を、固定小数点整数に量子化する過程について説明するための図面である。
図8及び図9においては、実数値「51.737673200582085」に対応する32ビットフォーマットの浮動小数点値を、「Q16.4」フォーマットの固定小数点整数に量子化する場合を挙げて説明する。
図8を参照すれば、段階810において、ニューラルネットワーク量子化装置は、浮動小数点フォーマットのパラメータから、符号、第1指数値及び第1仮数値を抽出することができる。
該浮動小数点は、符号、指数部及び仮数部に分けられ、浮動小数点のフォーマット(単精度(32ビット)、倍精度(64ビット)など)により、指数部及び仮数部のビット数が異なる。32ビットフォーマットの浮動小数点値としては、符号は、1ビット、指数部は、8ビット、そして仮数部は、23ビットであり、64ビットフォーマットの浮動小数点値としては、符号は、1ビット、指数部は、11ビット、そして仮数部は、52ビットである。
例えば、実数値「51.737673200582085」に対応する32ビットフォーマットの浮動小数点値は、「0(符号)10000100(指数部)10011101111001101100001(仮数部)」である。該ニューラルネットワーク量子化装置は、符号値として「0」、第1指数値として「10000100」(8桁)、及び第1仮数値として「10011101111001101100001」(23桁)を抽出することができる。
段階820において、該ニューラルネットワーク量子化装置は、第1指数値、バイアス定数、及び固定小数点フォーマットの小数部長を利用し、第2指数値を算出することができる。
IEEE標準により、浮動小数点フォーマットにおいては、実際指数値にバイアス定数を加えて第1指数値が決められる。従って、第1指数値を実際指数値に戻すために、第1指数値からバイアス定数を減じなければならない。一方、標準によれば、バイアス定数は、2k-1-1(kは、指数部桁)であり、ここで、kは、浮動小数点のフォーマットによって決定される。
また、量子化された固定小数点の小数部長を反映させるために、該ニューラルネットワーク量子化装置は、実際指数値に小数部長を算術的に加えることができる。該ニューラルネットワーク量子化装置は、第1指数値からバイアス定数を減じた結果値に、小数部長を算術的に加えることにより、浮動小数点値全体に「2^(小数部長)乗」値を乗じた値と同一値を算出することができる。
前述の例示において、抽出された第1指数値は、「10000100(2進数)」であり、それは、「132(10進数)」に該当する。また、「Qm.n」フォーマットの固定小数点整数値(m及びnは、自然数)は、「Q16.frac」表現と同一であるので(fracは、固定小数点フォーマットの小数部長を意味する)、「Q16.4」において、小数部長は、4になる。また、浮動小数点のバイアス定数は、2k-1-1(kは、指数部桁)であり、32ビットフォーマットにおいては、28-1-1=127になる。
前述のように、第2指数値は、第1指数値から浮動小数点のバイアス定数を減じ、固定小数点の小数部長を加えることによって算出され、前述の例示において、第2指数値は、9になる(132(第1指数値)-127(バイアス定数)+4(小数部長)=9)。
段階830において、該ニューラルネットワーク量子化装置は、第1仮数値の前桁にビット値1を追加し、第1仮数値をアップデートすることができる。
IEEE標準により、浮動小数点フォーマットの第1仮数値は、小数点の前桁値である1を省略して表示される。該ニューラルネットワーク量子化装置は、第1仮数値の前桁にビット値1を追加することにより、省略された1を再び表示することができる。前述の例示において、ビット値1を追加することによってアップデートされた第1仮数値は、「10011101111001101100001」(24桁)になる。
段階840において、該ニューラルネットワーク量子化装置は、第1仮数値のビット数と第2指数値とを比較することができる。
該ニューラルネットワーク量子化装置は、第1仮数値のビット数と第2指数値との差が0より大きいか、あるいはそれと同じであるかということを判断し、両値の大きさを比較することができる。例えば、単精度においては、第1仮数値のビット数は、23であるが、段階820において、算出された第2指数値「9」と、第1仮数値のビット数「23」とを比較することができる。
固定小数点フォーマットに反映される第1仮数値のビット値を決定するために、該ニューラルネットワーク量子化装置は、第2指数値と第1仮数値のビット数とを比較することにより、固定小数点フォーマットに反映される第1仮数値のビット値を決定することができる。該ニューラルネットワーク量子化装置は、ビットシフト演算を介して、第1仮数値のビット値を固定小数点フォーマットに反映させることができる。
段階840での比較結果、第2指数値が第1仮数値のビット数より小さい場合、図9の段階910に進む。また、段階840での比較結果、第2指数値が第1仮数値のビット数より大きいか、あるいはそれと同じである場合、図10の段階1010に進むことができる。
一実施形態において、第2指数値が第1仮数値のビット数より小さい場合、例えば、前述の実施形態でのように、第2指数値が「9」であり、第1仮数値のビット数が「23」である場合、第1仮数値の上位9ビットの値だけが固定小数点に反映され、残り14桁のビット値は、固定小数点に反映されないということを意味する。他の実施形態において、第2指数値が第1仮数値のビット数より大きいか、あるいはそれと同じである場合、第2指数値の全ビットが固定小数点に反映されるということを意味する。ただし、第2指数値が、固定小数点のビット幅から2を減じた値より大きい場合、該ニューラルネットワーク量子化装置は、固定小数点のフォーマットを変更した後、段階820から演算段階をさらに遂行することができる。
一方、第2指数値が第1仮数値のビット数より小さい場合、該ニューラルネットワーク量子化装置は、その後、固定小数点が再び浮動小数点に変換する過程での使用のために、固定小数点に反映されていないビット値をメモリに保存することができる。
図9を参照すれば、段階910において、図8の段階840の比較結果、第2指数値が第1仮数値のビット数より小さい場合、段階910において、該ニューラルネットワーク量子化装置は、浮動小数点フォーマットによって決定される所定数から、前記第2指数値を減じた値ほど、アップデートされた第1仮数値を右側にシフトすることができる。
一方、量子化された固定小数点から捨てられるビット値のうち最も高い桁のビット値による固定小数点の四捨五入いかんを反映させることにより、さらに正確度を高めることができるが、そのために、段階910において、該ニューラルネットワーク量子化装置は、第1仮数値のビット数から第2指数値を減じたほどアップデートされた第1仮数値を右側にシフトする代わりに、所定数(「第1仮数値のビット数1」に該当する値)から第2指数値を減じたほど右側にシフトすることができる。それにより、該ニューラルネットワーク量子化装置は、所定数ほど右側にシフトされた第1仮数値の最小有効ビット(LSB)値を利用し、四捨五入いかんを決定することができる。
前述の例示において、アップデートされた第1仮数値「110011101111001101100001」(24桁)のビット数は、「24」であるが、所定数(「第1仮数値のビット数1」に該当する値)は、「22」であり、第2指数値は、「9」になる。アップデートされた第1仮数値を「22-9=13」ほど右側にシフトすれば、「11001110111」(11桁)になる。
段階920において、該ニューラルネットワーク量子化装置は、シフトされた第1仮数値の最小有効ビット(LSB)値を抽出することができる。
段階910において、該ニューラルネットワーク量子化装置は、「第1仮数値のビット数1」値ほど第1仮数値を右側にシフトすることができる。そのとき、シフトされた第1仮数値のLSB値は、固定小数点から捨てられるビット値のうち最も高い桁のビット値に該当する。該ニューラルネットワーク量子化装置は、シフトされた第1仮数値のLSB値を抽出することにより、抽出されたLSB値を、量子化された固定小数点の四捨五入いかんを決定するのに利用することができる。一実施形態において、抽出されたLSB値は、「1」または「0」でもあり、抽出されたLSB値が「1」である場合、切り上げに該当し、「0」でる場合、切り捨てに該当する。
前述の例示において、シフトされた第1仮数値は、「1100111011」(11桁)であり、該ニューラルネットワーク量子化装置は、シフトされた第1仮数値のLSB値、すなわち、最も右側ビットである「1」を抽出することができる。
段階930において、該ニューラルネットワーク量子化装置は、シフトされた第1仮数値を、1ほど右側にもう一度さらにシフトし、抽出されたLSB値を加えることにより、第2仮数値を算出することができる。
該ニューラルネットワーク量子化装置は、シフトされた第1仮数値を1ほどもう一度さらに右側にシフトすることにより、最終的に、第1仮数値のビット数(単精度の場合、23、倍精度の場合、52)から第2指数値を減じたほど、第1仮数値を右側にシフトすることができる。該ニューラルネットワーク量子化装置は、抽出されたLSB値を加え、四捨五入いかんを決定することにより、第2仮数値を算出することができる。
前述の例示において、シフトされた第1仮数値「1100111011」(11桁)を右側にもう一度さらにシフトすれば「1100111011」(10桁)になり、それに、段階920で抽出されたLSB値「1」を加えることにより、第2仮数値「1100111100」(10桁)が算出される。
段階940において、該ニューラルネットワーク量子化装置は、算出された第2仮数値のビット数と、固定小数点フォーマットのビット数とが同一になるように調整することができる。
一実施形態において、該ニューラルネットワーク量子化装置は、算出された第2仮数値のビット数と、固定小数点フォーマットのビット数とが同一になるように、ビット数差ほど第2仮数値の前桁を0で埋め、ビット数を調整することができる。
前述の例示において、段階930で算出された第2仮数値のビット数は、10桁(1100111100)であり、固定小数点フォーマット「Q12.4」のビット数は、16桁(12+4)になる。該ニューラルネットワーク量子化装置は、算出された第2仮数値の前の6桁を0で埋め、16桁(0000001100111100)になるようにし、第2仮数値のビット数を調整する。
段階950において、該ニューラルネットワーク量子化装置は、調整された第2仮数値に符号(図8の段階810参照)を適用し、浮動小数点フォーマットのパラメータを、固定小数点フォーマットに量子化することができる。
前述の例示において、ビット数が調整された第2仮数値は、「0000001100111100」(16桁)であるが、図8の段階810を参照すれば、符号は、「0」であるので、最終的に、量子化された固定小数点フォーマットのパラメータは、「0000001100111100」(16桁)になる。符号が「1」であるならば、最終的に、量子化された固定小数点フォーマットのパラメータは、「1000001100111100」(16桁)になる。
該ニューラルネットワーク量子化装置は、整数ALUのみを使用し、ビット操作及び整数演算を行うことにより、浮動小数点フォーマットのパラメータを、固定小数点フォーマットのパラメータに量子化することができ、量子化された固定小数点フォーマットのパラメータを利用し、ニューラルネットワークを生成するか、あるいはニューラルネットワークを訓練(または、学習)または推論させることができる。
図10を参照すれば、図8の段階840の比較結果、第2指数値が、第1仮数値のビット数より大きいか、あるいはそれと同じである場合、段階1010において、該ニューラルネットワーク量子化装置は、第2指数値を、固定小数点のビット幅から2を減じた値と比較することができる。
段階1010での比較結果、第2指数値が、固定小数点のビット幅から2を減じた値より大きい場合、段階1020に進む。一方、固定小数点のビット幅から2を減じることは、IEEE標準により、仮数値において省略されるビット及び符号ビットを反映させることを意味する。
段階1020において、該ニューラルネットワーク量子化装置は、既設定の固定小数点のフォーマットを変更することができる。第2指数値が、固定小数点のビット幅から2を減じた値より大きいというのは、浮動小数点を既設定の固定小数点フォーマットに量子化するのに適さないということを意味し、該ニューラルネットワーク量子化装置は、固定小数点のフォーマットを変更した後、段階820から演算段階をさらに遂行することができる。
一方、ニューラルネットワークで使用される固定小数点の長さが決められているので、ハードウェア加速器は、固定小数点の長さを維持するが、小数点位置のみを変更する方式により、固定小数点のフォーマットを変更することができる。例えば、該ハードウェア加速器は「Q16.4」フォーマットを、「Q16.3」または「Q16.5」のように、固定小数点での小数点位置を変更した後、段階820から演算段階をさらに遂行することができる。
段階1010での比較結果、第2指数値が、固定小数点のビット幅から2を減じた値より小さいか、あるいはそれと同じである場合、段階1030に進む。
段階1030において、該ニューラルネットワーク量子化装置は、第2指数値と第1仮数値のビット数との差ほど、アップデートされた第1仮数値を左側にシフトすることができる。例えば、第2指数値が25であり、固定小数点のビット幅が26である場合、第2指数値(25)から第1仮数値のビット数(23)を減じた2ほどアップデートされた第1仮数値を左側にシフトすることができる。
段階1040において、該ニューラルネットワーク量子化装置は、左側にシフトされた第1仮数値に符号を適用し、浮動小数点フォーマットのパラメータを、固定小数点フォーマットに量子化することができる。例えば、段階1030でのシフト結果、アップデートされた第1仮数値のLSBを含んだ下位2ビットに2つの0が追加された後、符号が適用され、浮動小数点フォーマットのパラメータを、固定小数点フォーマットに量子化することができる。
一方、図8ないし図10の段階は、同時に進められるか、あるいは順次に進められ、図8ないし図10に図示されたところと異なる順序でも進められる。
本実施形態は、コンピュータによって実行されるプログラムモジュールのようなコンピュータによって実行可能な命令語を含む記録媒体の形態でも具現される。コンピュータで読み取り可能な媒体は、コンピュータによってアクセスされる任意の可用媒体でもあり、揮発性及び不揮発性の媒体、分離型及び非分離型の媒体をいずれも含む。また、コンピュータで読み取り可能な媒体は、コンピュータ記録媒体及び通信媒体をいずれも含んでもよい。該コンピュータ記録媒体は、コンピュータで読み取り可能な命令語、データ構造、プログラムモジュール、またはその他データのような情報の保存のための任意の方法または技術に具現された揮発性及び非揮発性、分離型及び非分離型の媒体をいずれも含む。該通信媒体は、典型的に、コンピュータで読み取り可能な命令語、データ構造、プログラムモジュールのような変調されたデータ信号のその他データ、またはその他伝送メカニズムを含み、任意の情報伝達媒体を含む。
また、本明細書において、「部」は、プロセッサまたは回路のようなハードウェア構成(hardware component)、及び/またはプロセッサのようなハードウェア構成によって実行されるソフトウェア構成(software component)でもある。
前述の本明細書の説明は、例示のためのものであり、本明細書の内容が属する技術分野の当業者であるならば、本発明の技術的思想や、必須な特徴を変更せずとも、異なる具体的な形態に容易に変形が可能であるということを理解することができるであろう。従って、以上で記述した実施形態は、全ての面において、例示的なものであり、限定的なものではないと理解しなければならない。例えば、単一型に説明されている各構成要素は、分散されても実施され、同様に、分散されていると説明されている構成要素も、結合された形態でも実施される。
本実施形態の範囲は、前述の詳細な説明よりは、特許請求の範囲によって示され、特許請求の範囲の意味及び範囲そしてその均等概念から導き出される全ての変更及び/又は変形される形態が含まれると解釈されなければならない。
本発明の、ニューラルネットワークのパラメータを量子化する装置及びその方法は、例えば、情報抽出関連の技術分野に効果的に適用可能である。
2,11,21 ニューラルネットワーク
10 ニューラルネットワーク学習器
20 ニューラルネットワーク推論器
210 プロセッサ
220 メモリ

Claims (15)

  1. ニューラルネットワーク量子化装置において、ニューラルネットワークのパラメータを量子化する方法において、
    前記ニューラルネットワークが学習又は推論する過程で使用される浮動小数点フォーマットのパラメータを獲得する段階と、
    固定小数点フォーマットの小数部長を適用し、前記固定小数点から捨てられるビット値のうち最も高い桁のビット値による前記固定小数点の四捨五入を行うために、整数ALUを使用して演算を行う段階と、
    前記演算結果に基いて、前記浮動小数点フォーマットのパラメータを、前記固定小数点フォーマットのパラメータに量子化する段階と、
    を含み、前記演算を行う段階は、
    前記獲得された浮動小数点フォーマットのパラメータから、符号、第1指数値及び第1仮数値を抽出する段階と、
    前記第1指数値、バイアス定数及び前記小数部長を利用し、前記小数部長が適用された第2指数値を算出する段階と、
    前記第2指数値に基いて、前記第1仮数値に対してビット操作演算及び整数演算を行い、第2仮数値を算出する段階と、
    を含み、前記第2仮数値を算出する段階は、
    前記第1仮数値の前桁にビット値1を追加し、前記第1仮数値をアップデートする段階と、
    前記第1仮数値のビット数と前記第2指数値とを比較する段階と、
    前記比較結果に基いて、前記アップデートされた第1仮数値を右側にシフトする段階と、を含む方法。
  2. 前記小数部長が適用された第2指数値を算出する段階は、
    前記第1指数値から、浮動小数点形式によって決定される前記バイアス定数を減じる整数演算を行う段階と、
    前記演算結果に、前記小数部長を加える整数演算を行うことにより、前記第2指数値を算出する段階と、を含むことを特徴とする請求項に記載の方法。
  3. 前記第2仮数値を算出する段階は、
    前記比較結果、前記第2指数値が前記第1仮数値のビット数より小さい場合、四捨五入の結果を決定するために、浮動小数点形式によって決定される所定数から、前記第2指数値を減じた値ほど、前記アップデートされた第1仮数値を右側にシフトする段階と、
    前記シフトされた第1仮数値から、四捨五入の結果を決定する要素である最小有効ビット(LSB)値を抽出する段階と、
    前記シフトされた第1仮数値を1つだけ右側にさらにシフトし、前記抽出されたLSB値を加えて四捨五入を行うことにより、前記第2仮数値を算出する段階と、をさらに含むことを特徴とする請求項に記載の方法。
  4. 前記量子化する段階は、
    前記算出された第2仮数値のビット数と、前記固定小数点フォーマットのビット数とが同一になるように調整する段階と、
    前記調整された第2仮数値に前記符号を適用し、前記浮動小数点フォーマットのパラメータを、固定小数点フォーマットに量子化する段階と、を含むことを特徴とする請求項に記載の方法。
  5. 前記第2仮数値を算出する段階は、
    前記比較結果、前記第2指数値が前記第1仮数値のビット数より大きいか、あるいはそれと同じである場合、前記第2指数値と、前記固定小数点のビット幅から2を減じた値を比較する段階と、
    前記第2指数値が固定小数点のビット幅から2を減じた値より大きい場合、前記固定小数点のフォーマットを変更した後、前記演算をさらに進め、
    前記第2指数値が固定小数点のビット幅から2を減じた値より小さいか、あるいはそれと同じである場合、前記第2指数値と前記第1仮数値のビット数との差ほど、前記アップデートされた第1仮数値を左側にシフトし、前記左側にシフトされた第1仮数値に前記符号を適用し、前記浮動小数点フォーマットのパラメータを、固定小数点フォーマットに量子化する段階と、をさらに含むことを特徴とする請求項に記載の方法。
  6. 前記浮動小数点フォーマットが単精度である場合、前記バイアス定数は、10進数127であり、前記第1仮数値のビットの数は、10進数23であり、前記所定数は、10進数22であり、
    前記浮動小数点フォーマットが倍精度である場合、前記バイアス定数は、10進数1023であり、前記第1仮数値のビット数は、10進数52であり、前記所定数は、10進数51であることを特徴とする請求項に記載の方法。
  7. 前記方法は、
    前記ニューラルネットワークを構成するレイヤにおいて、前記浮動小数点フォーマットのパラメータを入力として受信するレイヤの処理条件に基いて、前記量子化された固定小数点フォーマットのパラメータを、前記浮動小数点フォーマットに変換する段階と、
    前記浮動小数点フォーマットに変換されたパラメータを前記レイヤの入力として提供する段階と、
    前記レイヤで処理された前記浮動小数点フォーマットのパラメータを、前記固定小数点フォーマットのパラメータにさらに量子化するために前記演算を行う段階と、をさらに含むことを特徴とする請求項1ないしのうちの何れか一項に記載の方法。
  8. ニューラルネットワークのパラメータを量子化するニューラルネットワーク量子化装置において、
    少なくとも1つのプログラムが保存されたメモリと、
    前記少なくとも1つのプログラムを実行することにより、前記ニューラルネットワークのパラメータを量子化するプロセッサと、を含み、
    前記プロセッサは、
    前記ニューラルネットワークが学習又は推論する過程で使用される浮動小数点フォーマットのパラメータを獲得し、
    固定小数点フォーマットの小数部長を適用し、前記固定小数点から捨てられるビット値のうち最も高い桁のビット値による前記固定小数点の四捨五入を行うために、整数ALUを使用して演算を行い、
    前記演算結果に基いて、前記浮動小数点フォーマットのパラメータを、前記固定小数点フォーマットのパラメータに量子化するものであり、
    前記プロセッサは、前記整数ALUを使用して演算を行う場合に、
    前記獲得された浮動小数点フォーマットのパラメータから、符号、第1指数値及び第1仮数値を抽出し、
    前記第1指数値、バイアス定数及び前記小数部長を利用し、前記小数部長が適用された第2指数値を算出し、
    前記第2指数値に基いて、前記第1仮数値に対してビット操作演算及び整数演算を行い、第2仮数値を算出するものであり、
    前記プロセッサは、前記第2仮数値を算出する場合に、
    前記第1仮数値の前桁にビット値1を追加し、前記第1仮数値をアップデートし、
    前記第1仮数値のビット数と前記第2指数値とを比較し、
    前記比較結果に基いて、前記アップデートされた第1仮数値を右側にシフトするものである、ニューラルネットワーク量子化装置。
  9. 前記プロセッサは、
    前記第1指数値から、浮動小数点形式によって決定される前記バイアス定数を減じる整数演算を行い、
    前記演算結果に前記小数部長を加える整数演算を行うことにより、前記第2指数値を算出することを特徴とする請求項に記載のニューラルネットワーク量子化装置。
  10. 前記プロセッサは、
    前記比較結果、前記第2指数値が前記第1仮数値のビット数より小さい場合、四捨五入の結果を決定するために、浮動小数点形式によって決定される所定数から、前記第2指数値を減じた値ほど、前記アップデートされた第1仮数値を右側にシフトし、
    前記シフトされた第1仮数値から、四捨五入の結果を決定する要素である最小有効ビット(LSB)値を抽出し、
    前記シフトされた第1仮数値を1つだけ右側にさらにシフトし、前記抽出されたLSB値を加えて四捨五入を行うことにより、前記第2仮数値を算出することを特徴とする請求項に記載のニューラルネットワーク量子化装置。
  11. 前記プロセッサは、
    前記算出された第2仮数値のビット数と、前記固定小数点フォーマットのビット数とが同一になるように調整し、
    前記調整された第2仮数値に前記符号を適用し、前記浮動小数点フォーマットのパラメータを、固定小数点フォーマットに量子化することを特徴とする請求項10に記載のニューラルネットワーク量子化装置。
  12. 前記プロセッサは、
    前記比較結果、前記第2指数値が前記第1仮数値のビット数より大きいか、あるいはそれと同じである場合、前記第2指数値と、前記固定小数点のビット幅から2を減じた値とを比較し、
    前記第2指数値が固定小数点のビット幅から2を減じた値より大きい場合、前記固定小数点のフォーマットを変更した後、前記演算をさらに行い、
    前記第2指数値が固定小数点のビット幅から2を減じた値より小さいか、あるいはそれと同じである場合、前記第2指数値と前記第1仮数値のビット数との差ほど、前記アップデートされた第1仮数値を左側にシフトし、前記左側にシフトされた第1仮数値に前記符号を適用し、前記浮動小数点フォーマットのパラメータを、固定小数点フォーマットに量子化することを特徴とする請求項に記載のニューラルネットワーク量子化装置。
  13. 前記浮動小数点フォーマットが単精度である場合、前記バイアス定数は、10進数127であり、前記第1仮数値のビットの数は、10進数23であり、前記所定数は、10進数22であり、
    前記浮動小数点フォーマットが倍精度である場合、前記バイアス定数は、10進数1023であり、前記第1仮数値のビット数は、10進数52であり、前記所定数は、10進数51であることを特徴とする請求項10に記載のニューラルネットワーク量子化装置。
  14. 前記プロセッサは、
    前記ニューラルネットワークを構成するレイヤにおいて、前記浮動小数点フォーマットのパラメータを入力として受信するレイヤの処理条件に基いて、前記量子化された固定小数点フォーマットのパラメータを、前記浮動小数点フォーマットに変換し、
    前記浮動小数点フォーマットに変換されたパラメータを前記レイヤの入力として提供し、
    前記レイヤで処理された前記浮動小数点フォーマットのパラメータを、前記固定小数点フォーマットのパラメータにさらに量子化するために前記演算を行うことを特徴とする請求項ないし13のうちの何れか一項に記載のニューラルネットワーク量子化装置。
  15. 請求項1ないしのうちいずれか一項に記載の方法をコンピュータに実行させるためのコンピュータプログラム。
JP2018197320A 2017-10-19 2018-10-19 ニューラルネットワークのパラメータを量子化する装置及びその方法 Active JP7296709B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2017-0135868 2017-10-19
KR1020170135868A KR102564456B1 (ko) 2017-10-19 2017-10-19 뉴럴 네트워크의 파라미터를 양자화하는 장치 및 방법

Publications (2)

Publication Number Publication Date
JP2019079531A JP2019079531A (ja) 2019-05-23
JP7296709B2 true JP7296709B2 (ja) 2023-06-23

Family

ID=63965161

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018197320A Active JP7296709B2 (ja) 2017-10-19 2018-10-19 ニューラルネットワークのパラメータを量子化する装置及びその方法

Country Status (5)

Country Link
US (1) US11593625B2 (ja)
EP (1) EP3474194B1 (ja)
JP (1) JP7296709B2 (ja)
KR (1) KR102564456B1 (ja)
CN (1) CN109685198B (ja)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2568083B (en) 2017-11-03 2021-06-02 Imagination Tech Ltd Histogram-based per-layer data format selection for hardware implementation of deep neutral network
US10579383B1 (en) * 2018-05-30 2020-03-03 Facebook, Inc. Systems and methods for efficient scaling of quantized integers
US11475352B2 (en) * 2018-11-07 2022-10-18 Alibaba Group Holding Limited Quantizing machine learning models with balanced resolution via damped encoding
US12169769B2 (en) * 2019-01-26 2024-12-17 Mipsology SAS Generic quantization of artificial neural networks
US11068784B2 (en) * 2019-01-26 2021-07-20 Mipsology SAS Generic quantization of artificial neural networks
US11263513B2 (en) * 2019-02-25 2022-03-01 Deepx Co., Ltd. Method and system for bit quantization of artificial neural network
US11790212B2 (en) * 2019-03-18 2023-10-17 Microsoft Technology Licensing, Llc Quantization-aware neural architecture search
CN112085190B (zh) 2019-06-12 2024-04-02 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
KR102855357B1 (ko) * 2019-07-04 2025-09-04 삼성전자주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크의 파라미터 양자화 방법
KR102243119B1 (ko) 2019-07-17 2021-04-21 한양대학교 산학협력단 가변 정밀도 양자화 장치 및 방법
US11163533B2 (en) * 2019-07-18 2021-11-02 International Business Machines Corporation Floating point unit for exponential function implementation
US12217158B2 (en) 2019-09-03 2025-02-04 International Business Machines Corporation Neural network circuitry having floating point format with asymmetric range
US11604647B2 (en) 2019-09-03 2023-03-14 International Business Machines Corporation Mixed precision capable hardware for tuning a machine learning model
US12175359B2 (en) 2019-09-03 2024-12-24 International Business Machines Corporation Machine learning hardware having reduced precision parameter components for efficient parameter update
JP2021044783A (ja) 2019-09-13 2021-03-18 富士通株式会社 情報処理装置,情報処理方法および情報処理プログラム
JP7294017B2 (ja) * 2019-09-13 2023-06-20 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
US12039427B2 (en) 2019-09-24 2024-07-16 Baidu Usa Llc Cursor-based adaptive quantization for deep neural networks
WO2021083154A1 (en) * 2019-10-30 2021-05-06 Huawei Technologies Co., Ltd. Method and apparatus for quantization of neural networks post training
CN112990422A (zh) * 2019-12-12 2021-06-18 中科寒武纪科技股份有限公司 参数服务器、客户机、权值参数的处理方法及系统
KR102800376B1 (ko) 2019-12-17 2025-04-25 에스케이하이닉스 주식회사 데이터 처리 시스템 및 이를 위한 가속 장치
JP2021111081A (ja) * 2020-01-09 2021-08-02 富士通株式会社 情報処理装置、ニューラルネットワークの演算プログラム及びニューラルネットワークの演算方法
WO2021144879A1 (ja) * 2020-01-15 2021-07-22 富士通株式会社 演算処理装置、演算処理プログラム及び演算処理方法
CN111382576B (zh) * 2020-01-21 2023-05-12 沈阳雅译网络技术有限公司 一种基于离散型变量的神经机器翻译解码加速方法
CN113222098B (zh) * 2020-01-21 2024-11-01 上海商汤智能科技有限公司 数据处理方法和相关产品
US20210248463A1 (en) * 2020-02-06 2021-08-12 Socionext Inc. Neural network derivation method
CN113554159A (zh) * 2020-04-23 2021-10-26 意法半导体(鲁塞)公司 用于在集成电路中实现人工神经网络的方法和装置
US12015526B2 (en) * 2020-05-26 2024-06-18 Synopsys, Inc. Mixed-precision neural networks
CN113723597B (zh) * 2020-05-26 2025-09-02 上海寒武纪信息科技有限公司 神经网络计算方法、装置、板卡及计算机可读存储介质
CN111767984A (zh) * 2020-06-09 2020-10-13 云知声智能科技股份有限公司 一种基于固定移位的8位整型全量化推理方法及装置
CN113780513B (zh) * 2020-06-10 2024-05-03 杭州海康威视数字技术股份有限公司 网络模型量化、推理方法、装置、电子设备及存储介质
KR20210156538A (ko) * 2020-06-18 2021-12-27 삼성전자주식회사 뉴럴 네트워크를 이용한 데이터 처리 방법 및 데이터 처리 장치
CN111857723B (zh) * 2020-06-29 2022-06-17 浪潮电子信息产业股份有限公司 一种参数编译方法、装置和计算机可读存储介质
GB2596606B (en) 2020-07-03 2025-01-01 Imagination Tech Ltd Number format selection in recurrent neural networks
WO2022009433A1 (ja) * 2020-07-10 2022-01-13 富士通株式会社 情報処理装置,情報処理方法および情報処理プログラム
CN111860841B (zh) * 2020-07-28 2023-11-14 Oppo广东移动通信有限公司 量化模型的优化方法、装置、终端及存储介质
CN111930673B (zh) * 2020-08-10 2024-03-05 中国科学院计算技术研究所 异构智能处理量化装置、量化方法、电子设备及存储介质
CN115885291A (zh) * 2020-08-24 2023-03-31 松下电器(美国)知识产权公司 信息处理方法以及信息处理系统
KR102868993B1 (ko) 2020-09-02 2025-10-10 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치
KR20220040234A (ko) 2020-09-23 2022-03-30 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
CN112269595B (zh) * 2020-10-28 2024-09-24 清华大学 图像处理方法、装置、计算机设备及存储介质
KR20220062892A (ko) * 2020-11-09 2022-05-17 삼성전자주식회사 전자 장치 및 이의 제어 방법
US12112265B2 (en) 2020-12-18 2024-10-08 Analog Devices International Unlimited Company Architecture for running convolutional networks on memory and mips constrained embedded devices
EP4309080A1 (en) * 2021-03-16 2024-01-24 Illumina Software, Inc. Neural network parameter quantization for base calling
CN113011569B (zh) * 2021-04-07 2024-06-18 开放智能机器(上海)有限公司 离线量化参数加注方法、装置、电子设备和存储介质
CN113554149B (zh) * 2021-06-18 2022-04-12 北京百度网讯科技有限公司 神经网络处理单元npu、神经网络的处理方法及其装置
KR102653107B1 (ko) * 2021-08-23 2024-04-01 삼성전자주식회사 연산 방법 및 장치
CN113593538B (zh) * 2021-09-02 2024-05-03 北京声智科技有限公司 语音特征的分类方法、相关设备及可读存储介质
US20230133360A1 (en) * 2021-10-28 2023-05-04 Taiwan Semiconductor Manufacturing Company, Ltd. Compute-In-Memory-Based Floating-Point Processor
CN114444688B (zh) * 2022-01-14 2025-05-13 百果园技术(新加坡)有限公司 神经网络的量化方法、装置、设备、存储介质及程序产品
CN114492778B (zh) * 2022-02-16 2024-09-06 安谋科技(中国)有限公司 神经网络模型的运行方法、可读介质和电子设备
CN114492779B (zh) * 2022-02-16 2024-09-27 安谋科技(中国)有限公司 神经网络模型的运行方法、可读介质和电子设备
CN117540778A (zh) * 2022-07-29 2024-02-09 抖音视界有限公司 用于量化神经网络模型的方法、装置、计算设备和介质
CN115018076B (zh) * 2022-08-09 2022-11-08 聚时科技(深圳)有限公司 一种用于智能伺服驱动器的ai芯片推理量化方法
CN115496200B (zh) * 2022-09-05 2023-09-22 中国科学院半导体研究所 神经网络量化模型训练方法、装置及设备
CN116720563B (zh) * 2022-09-19 2024-03-29 荣耀终端有限公司 一种提升定点神经网络模型精度的方法、装置及电子设备
CN116384445B (zh) * 2022-12-30 2025-09-02 重庆中星微人工智能芯片技术有限公司 神经网络模型的处理方法和相关装置
EP4485168A1 (en) * 2023-06-28 2025-01-01 Snap Inc. Computationally efficiently discretizing floating point numbers
KR20250010370A (ko) 2023-07-12 2025-01-21 고려대학교 산학협력단 분산 학습을 위한 인-네트워크 파라미터 취합 장치 및 방법
WO2025035403A1 (en) * 2023-08-15 2025-02-20 Intel Corporation Floating point accuracy control via dynamic exponent and mantissa bit configurations
WO2026039978A1 (en) * 2024-08-20 2026-02-26 Qualcomm Incorporated Quantization techniques for machine learning models having discrete operators

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328646A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization
US20170220929A1 (en) 2014-09-09 2017-08-03 Intel Corporation Improved fixed point integer implementations for neural networks

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07248841A (ja) * 1994-03-09 1995-09-26 Mitsubishi Electric Corp 非線形関数発生装置およびフォーマット変換装置
US6144977A (en) 1995-07-10 2000-11-07 Motorola, Inc. Circuit and method of converting a floating point number to a programmable fixed point number
CN1762099B (zh) 2003-04-28 2010-10-13 日本电信电话株式会社 浮点数字信号的可逆编码方法、解码方法及其装置
US7593804B2 (en) * 2007-10-31 2009-09-22 Caterpillar Inc. Fixed-point virtual sensor control system and method
US8131659B2 (en) * 2008-09-25 2012-03-06 Microsoft Corporation Field-programmable gate array based accelerator system
KR101115252B1 (ko) 2009-07-24 2012-02-15 정선태 적응 혼합 가우시안 모델링의 고정 소수점 구현 방법
KR101084581B1 (ko) 2009-11-02 2011-11-17 전자부품연구원 고정 소수점 지수함수 연산 방법, 장치 및 기록매체
GB2488322B (en) 2011-02-22 2017-09-20 Advanced Risc Mach Ltd Number format pre-conversion instructions
JP5589919B2 (ja) * 2011-03-22 2014-09-17 株式会社デンソー 設計支援装置、設計支援プログラム
JP2012208843A (ja) 2011-03-30 2012-10-25 Keihin Corp 開発支援装置
US20160026912A1 (en) * 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
US9608662B2 (en) * 2014-09-26 2017-03-28 Arm Limited Apparatus and method for converting floating-point operand into a value having a different format
EP3040852A1 (en) 2014-12-31 2016-07-06 Nxp B.V. Scaling for block floating-point data
US10970617B2 (en) * 2015-08-21 2021-04-06 Institute Of Automation Chinese Academy Of Sciences Deep convolutional neural network acceleration and compression method based on parameter quantification
CN106796668B (zh) * 2016-03-16 2019-06-14 香港应用科技研究院有限公司 用于人工神经网络中比特深度减少的方法和系统
CN107168678B (zh) * 2017-05-09 2020-10-27 清华大学 一种乘加计算装置及浮点乘加计算方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170220929A1 (en) 2014-09-09 2017-08-03 Intel Corporation Improved fixed point integer implementations for neural networks
US20160328646A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
鈴木昌治,ディジタル数値演算回路の実用設計,初版,CQ出版株式会社,2006年11月15日,171-185ページ,ISBN4-7898-3617-7

Also Published As

Publication number Publication date
CN109685198A (zh) 2019-04-26
EP3474194B1 (en) 2023-09-20
KR102564456B1 (ko) 2023-08-07
CN109685198B (zh) 2024-04-05
KR20190043849A (ko) 2019-04-29
JP2019079531A (ja) 2019-05-23
US11593625B2 (en) 2023-02-28
EP3474194A1 (en) 2019-04-24
US20190122100A1 (en) 2019-04-25

Similar Documents

Publication Publication Date Title
JP7296709B2 (ja) ニューラルネットワークのパラメータを量子化する装置及びその方法
JP7349835B2 (ja) ニューラルネットワークにおいてパラメータを処理する方法及び装置
KR102562320B1 (ko) 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
CN111062475B (zh) 用于对神经网络的参数进行量化的方法和装置
JP7325158B2 (ja) ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現
US11574239B2 (en) Outlier quantization for training and inference
US11853897B2 (en) Neural network training with decreased memory consumption and processor utilization
CN113126953A (zh) 针对浮点处理的方法和装置
KR20210116182A (ko) 소프트맥스 연산 근사화 방법 및 장치
CN115730653A (zh) 量化神经网络训练与推理
JP2023505237A (ja) 柔軟な精度のニューラル推論処理ユニット
EP4592823A1 (en) Multiplication and accumulation operator and matrix multiplier including the same
CN111492369A (zh) 人工神经网络中移位权重的残差量化
US20250068895A1 (en) Quantization method and apparatus for artificial neural network
TWI913392B (zh) 階層和共享指數浮點數資料類型
JP7506276B2 (ja) 半導体ハードウェアにおいてニューラルネットワークを処理するための実装および方法
EP4535162A1 (en) Computing device and method
WO2019127480A1 (zh) 用于处理数值数据的方法、设备和计算机可读存储介质
HK40037991B (zh) 人工神经网络中移位权重的残差量化

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230613

R150 Certificate of patent or registration of utility model

Ref document number: 7296709

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150