JP2021144427A - 演算器 - Google Patents
演算器 Download PDFInfo
- Publication number
- JP2021144427A JP2021144427A JP2020042176A JP2020042176A JP2021144427A JP 2021144427 A JP2021144427 A JP 2021144427A JP 2020042176 A JP2020042176 A JP 2020042176A JP 2020042176 A JP2020042176 A JP 2020042176A JP 2021144427 A JP2021144427 A JP 2021144427A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- multiplication
- arithmetic
- calculation
- value
- 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.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 claims description 48
- 230000010354 integration Effects 0.000 claims description 33
- 238000012805 post-processing Methods 0.000 claims description 22
- 238000013528 artificial neural network Methods 0.000 claims description 13
- 230000004913 activation Effects 0.000 description 12
- 238000001994 activation Methods 0.000 description 12
- 238000000034 method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 210000002569 neuron Anatomy 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 238000003062 neural network model Methods 0.000 description 2
Images
Landscapes
- Complex Calculations (AREA)
Abstract
Description
(第1の実施の形態)
図1は、第1の実施の形態の演算器の構成を示す図である。本実施の形態の演算器は、画像認識、物体検知等に使用するニューラルネットワーク処理エンジン全般に適用することができる。
図2では、一つのニューロンに着目しているが、NNモデルによる計算では各層の各ニューロンについて、入力と重みを乗ずる計算を行う。
(3倍乗算回路の実装例)
入力の重みデータをWとすると、3倍した結果は(W<<1)+Wを計算することで容易に得られる。なお、「<<」は左シフトを示す。
(1/3除算回路の実装例)
積算結果をAccとすると、3で除する処理は、(Acc>>4)+(Acc>>6)+(Acc>>8)+・・・という計算を行うことで十分に精度の高い値が得られる。NNモデルの計算処理においては、スケーリングをして小さい数値に丸めることがあることからも分かるとおり、±1ULP程度の精度で計算ができれば十分である。
(3の剰余(Modulo3)計算回路の実装例)
図3は、積算結果が16bit幅であった際のModulo3の計算方法の例を示す図である。まず、計算対象を2bit毎に区切り、それぞれのModulo3を計算する。mod3(4×x)=mod3(mod3(4)×mod3(x))=mod3(1×mod3(x))=mod3(x)であるため、2bit毎に区切って計算したModulo3値が、そのままその2bitから生成される剰余となる。得られたModulo3値を、さらに隣接するModulo3値同士で加算し、その結果のModulo3を計算する。最終的に項が1つになるまで隣接Modulo3同士の加算を繰り返す。
(1)処理対象のネットワーク層のBN係数を外部よりロードし、メモリ1に書き込む。
(2)処理対象のネットワーク層の重みデータを外部よりロードし、3倍乗算回路7にて3を乗じた後、メモリ2に書き込む。
(3)処理対象のネットワーク層の入力アクティベーションデータを外部よりロードし、メモリ3に書き込む。
(4)重みとアクティベーションデータをそれぞれメモリ2、メモリ3から読み出し、乗算回路4に入力して両者を掛け合わせる。この乗算は複数の重みおよびアクティベーションデータデータに対して同時に並行して行われることもある。
(5)(4)で掛け合わせた結果を積算回路に入力して積算する。処理対象のネットワーク層の規模によって(4)と(5)の処理は繰り返し行われる。
(6)(5)の積算結果を1/3除算回路8により3で除すると同時に3で除した余り(Modulo3)を求める。積算結果のModulo3が0でなかった場合には、何らかの障害が発生したと判断し、外部にエラー発生を報告する。
(7)(6)の結果を後処理回路に入力し、後処理を行う。本実施の形態では、後処理としてバッチノーマライゼーションを行う。
(8)(6)の後処理結果をメモリ3に書き込む。
(9)処理対象のネットワーク層の構成に応じて(1)〜(7)の動作を繰り返し、得られたアクティベーションをメモリ3より外部に出力する。
図4は、第2の実施の形態の演算器の例を示す図である。第2の実施の形態の演算器の基本的な構成は第1の実施の形態と同じであるが、ハードウェアで3倍乗算回路を実装する代わりに、あらかじめ3の倍数であることを保証した重みデータを外部メモリ9に置く。これにより、3倍乗算回路を実装することなく、第1の実施の形態と同様の機能を実現することができる。
図5は、第3の実施の形態の演算器の例を示す図である。第3の実施の形態の演算器において、後処理に含まれるバッチノーマライゼーション処理は、あらかじめ計算されたGradient(G)及びBias(B)の係数を用い、積算結果Accに対してG×Acc+Bの計算を行うことで行われる。第3の実施の形態の演算器では、バッチノーマライゼーションのGradientにあらかじめ1/3を乗じた値を外部メモリ9から読み出してメモリ1上に置いておく。これにより、後処理回路6でGraidentを乗じたときに演算結果が1/3されることになるから、除算回路を実装することなく第1の実施の形態の演算器と同様の機能を実現することができる。
図6は、第4の実施の形態の演算器の例を示す図である。本実施の形態では、後処理回路6は、積算結果を出力アクティベーションのbit幅に合わせるスケーリングという処理を行う。ここで、スケーリングについて説明する。積算回路5による積算結果は重みとアクティベーションの乗算結果を積算して得られるため、入力アクティベーションに比べて非常に大きな値となる。スケーリングとは、積算結果に小さな値を掛け、出力アクティベーションのbit幅に収まる範囲に縮小させる処理である。一般にスケーリングの係数は2のべき乗に限定され、積算結果の右シフトとして実装される。
7・・・3倍乗算回路、8・・・1/3除算回路、9・・・外部メモリ、
10・・・Modulo3回路。
Claims (8)
- 入力値に係数を乗ずる計算を行う演算器であって、
前記入力値に前記係数の3倍値を乗じる乗算部(4)と、
前記乗算部による演算結果を1/3に除算する除算部(8)と、
を備え、
前記乗算部による乗算結果が3の倍数か否かに基づいて、演算結果のエラーをチェックする演算器。 - 前記乗算部による複数の演算結果を積算する積算部(5)を備え、
前記除算部は、前記積算部による演算結果を1/3に除算する請求項1に記載の演算器。 - 前記係数を3倍にする3倍乗算部(7)を備え、
前記乗算部は、前記3倍乗算部による出力を前記入力値に乗ずる請求項1または2に記載の演算器。 - あらかじめ演算された前記係数の3倍値を記憶部(2)に記憶しておき、
前記乗算部は、前記記憶部に記憶された前記3倍値を前記入力値に乗ずる請求項1または2に記載の演算器。 - 前記演算器は、ニューラルネットワークの各レイヤでの演算において、前記各レイヤへの入力値に重み係数を乗じて積算する演算に用いられる請求項1から4のいずれかに記載の演算器。
- ニューラルネットワークにおける各レイヤでの演算に用いられる演算器であって、
学習によって求めた係数の3倍値を記憶した記憶部と、
入力値に前記記憶部から読み出した前記3倍値を乗じる乗算部と、
前記乗算部による複数の演算結果を積算する積算部と、
前記積算部による演算結果に対して後処理を行う後処理部であって、前記ニューラルネットワークの学習時に用いた乗算パラメータを1/3にして演算を行う後処理部(6)と、
前記積算部による演算結果を3で割った余りを演算する剰余演算部(10)と、
を備え、
前記余りが0か否かに基づいて演算結果のエラーをチェックする演算器。 - ニューラルネットワークにおける各レイヤでの演算に用いられる演算器であって、前記ニューラルネットワークは、前記各レイヤへの入力として、前のレイヤから伝達された値の3倍値を用いて重み係数を学習したニューラルネットワークであり、
学習によって求めた係数の3倍値を記憶した記憶部と、
入力値に前記記憶部から読み出した前記3倍値を乗じる乗算部と、
前記乗算部による複数の演算結果を積算する積算部と、
前記積算部による演算結果を3で割った余りを演算する剰余演算部と、
前記積算部による演算結果に対してスケーリングを行う後処理部と、
を備え、
前記余りが0か否かに基づいて演算結果のエラーをチェックする演算器。 - 入力値に係数を乗ずる計算を行う演算器において、
3の倍数の係数を記憶する記憶部と、
前記入力値に前記記憶部から読み出した係数を乗じる乗算部と、
演算結果が3の倍数か否かに基づいて、演算結果のエラーをチェックするエラー検出部と、
を備えた演算器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020042176A JP7456205B2 (ja) | 2020-03-11 | 2020-03-11 | 演算器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020042176A JP7456205B2 (ja) | 2020-03-11 | 2020-03-11 | 演算器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021144427A true JP2021144427A (ja) | 2021-09-24 |
JP7456205B2 JP7456205B2 (ja) | 2024-03-27 |
Family
ID=77766705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020042176A Active JP7456205B2 (ja) | 2020-03-11 | 2020-03-11 | 演算器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7456205B2 (ja) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003241659A (ja) | 2002-02-22 | 2003-08-29 | Hitachi Ltd | 情報処理方法 |
-
2020
- 2020-03-11 JP JP2020042176A patent/JP7456205B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP7456205B2 (ja) | 2024-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11216721B2 (en) | Method for calculating a neuron layer of a multi-layer perceptron model with simplified activation function | |
US11475284B2 (en) | Information processing apparatus, neural network program, and processing method for neural network | |
CN111695671B (zh) | 训练神经网络的方法及装置、电子设备 | |
JP7231731B2 (ja) | 適応量子化方法及び装置、デバイス、媒体 | |
US20220004884A1 (en) | Convolutional Neural Network Computing Acceleration Method and Apparatus, Device, and Medium | |
EP3782019B1 (en) | Multi-input floating-point adder | |
KR100398859B1 (ko) | 데이터 연산 처리 장치 | |
KR20210070262A (ko) | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 | |
WO2021041139A1 (en) | Signed multiword multiplier | |
Kaloorazi et al. | Randomized truncated pivoted QLP factorization for low-rank matrix recovery | |
JP2021144427A (ja) | 演算器 | |
CN116070474B (zh) | 一种面向ai浮点融合运算单元的验证激励产生方法 | |
Ahlbrandt et al. | Floquet theory for time scales and Putzer representations of matrix logarithms | |
US20230401420A1 (en) | Compiling asymmetrically-quantized neural network models for deep learning acceleration | |
US20220291899A1 (en) | Processing unit, method and computer program for multiplication | |
US20220156567A1 (en) | Neural network processing unit for hybrid and mixed precision computing | |
JP6734938B2 (ja) | ニューラルネットワーク回路 | |
CN113672196B (zh) | 一种基于单数字信号处理单元的双乘法计算装置和方法 | |
CN110770696B (zh) | 基于贡献估计的处理核心操作抑制 | |
JP7136937B2 (ja) | 少なくとも2つの被乗数を乗算するための計算ユニット、方法及びコンピュータプログラム | |
EP4336344A1 (en) | Calculation unit for multiplication and accumulation operations | |
CN112860218A (zh) | 用于fp16浮点数据和int8整型数据运算的混合精度运算器 | |
JP3659408B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
JP2013069000A (ja) | パリティ予測器、キャリーレス乗算器、及び演算処理装置 | |
US20230367356A1 (en) | Digital signal processing device and method of calculating softmax performed by the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230308 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231205 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20231206 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20240201 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240202 |
|
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: 20240213 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240226 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7456205 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |