(57)【要約】【課題】計算結果の精度を保ちつつ１６ビット浮動小数点処理を上回る計算速度が得られる演算システムを提供する。【解決手段】演算システム１は、パラメータサーバ１０、通信路２０及びワーカ３０を備える演算システムであって、パラメータサーバは、３２ビットの浮動小数点数で表された学習モデルのパラメータ値を記憶する記憶部１１と、パラメータ値を、仮数部が３ビット以下であり、指数部が６ビット以下である、１０ビット以下の浮動小数点数で表されたデータに変換する第１変換部１２と、を有し、通信路は、パラメータサーバとワーカの間で送受信されるデータを伝送し、ワーカは、データの積及び和を演算する演算部３１を有し、パラメータサーバは、ワーカから受信したデータを、３２ビットの浮動小数点数で表された更新値に変換する第２変換部１３と、更新値に基づいて、パラメータ値を更新する更新部１４と、をさらに有する。【選択図】図１
2019164595.tif 000002
【特許請求の範囲】
【請求項１】
パラメータサーバ、通信路及びワーカを備える演算システムであって、
前記パラメータサーバは、
３２ビットの浮動小数点数で表された学習モデルのパラメータ値を記憶する記憶部と、
前記パラメータ値を、仮数部が３ビット以下であり、指数部が６ビット以下である、１０ビット以下の浮動小数点数で表されたデータに変換する第１変換部と、を有し、
前記通信路は、前記パラメータサーバと前記ワーカの間で送受信される前記データを伝送し、
前記ワーカは、前記データの積及び和を演算する演算部を有し、
前記パラメータサーバは、
前記ワーカから受信した前記データを、３２ビットの浮動小数点数で表された更新値に変換する第２変換部と、
前記更新値に基づいて、前記パラメータ値を更新する更新部と、をさらに有する、
演算システム。
【請求項２】
前記演算部は、前記データの仮数部を１４ビット以上２３ビット以下に変換した後に加算を行い、加算を行った後に、前記データの仮数部を３ビット以下に変換する、
請求項１に記載の演算システム。
【請求項３】
前記データは、指数部が６ビットであり、指数部のバイアス値が３１である、
請求項１又は２に記載の演算システム。
【請求項４】
前記データは、指数部が５ビットであり、指数部のバイアス値が２３以上２８以下である、
請求項１又は２に記載の演算システム。
【請求項５】
前記学習モデルは、ローカルレスポンス正規化を含むニューラルネットワークである、
請求項１から４のいずれか一項に記載の演算システム。
【請求項６】
前記学習モデルは、バッチ正規化を含むニューラルネットワークである、
請求項１から５のいずれか一項に記載の演算システム。
【請求項７】
前記データは、仮数部が２ビット以下である、８ビット以下の浮動小数点数で表される、
請求項６に記載の演算システム。
【請求項８】
前記データは、仮数部が１ビットである、７ビット以下の浮動小数点数で表される、
請求項６又は７に記載の演算システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算システムに関し、特に機械学習処理を効率的に行う演算システムに関する。
【背景技術】
【０００２】
近年、ＧＰＵ（Graphical Processing Unit）による汎用計算（ＧＰＧＰＵ：General Purpose computing on GPU）によって、機械学習の速度が飛躍的に向上している。ＧＰＵでは、機械学習処理を行うために１６ビット浮動小数点処理が導入されている。その目的は、限られたハードウェア資源と消費電力の制約下で並列度を上げ、計算速度を向上させることである。
【０００３】
例えば、下記非特許文献１には、８ビット整数処理を導入し、学習済みニューラルネットワークによる推論を省電力化、高速化するＡＳＩＣ（Application Specific Integrated Circuit）が記載されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Norman P. Jouppi、外７５名、”In-Datacenter Performance Analysis of a Tensor Processing UnitTM”、［online］、２０１７年４月１６日、インターネット＜https://arxiv.org/abs/1704.04760＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
限られたハードウェア資源と消費電力の制約下で並列度をさらに上げ、計算速度をさらに向上させるために、演算装置で扱うデータのビット長を減らす試みがある。非特許文献１では、学習済みモデルによる推論を扱っているが、機械学習処理の訓練過程においてデータのビット長を単に減らしていくと、機械学習処理が困難となっていく。この原因として、演算器で扱えるビット長を減少させたことによる量子化誤差、情報落ち又は桁落ちの影響が考えられる。
【０００６】
そこで、本発明は、計算精度を保ちつつ１６ビット浮動小数点処理を上回る計算速度が得られる演算システムを提供する。
【課題を解決するための手段】
【０００７】
本発明の一態様に係る演算システムは、パラメータサーバ、通信路及びワーカを備える演算システムであって、パラメータサーバは、３２ビットの浮動小数点数で表された学習モデルのパラメータ値を記憶する記憶部と、パラメータ値を、仮数部が３ビット以下であり、指数部が６ビット以下である、１０ビット以下の浮動小数点数で表されたデータに変換する第１変換部と、を有し、通信路は、パラメータサーバとワーカの間で送受信されるデータを伝送し、ワーカは、データの積及び和を演算する演算部を有し、パラメータサーバは、ワーカから受信したデータを、３２ビットの浮動小数点数で表された更新値に変換する第２変換部と、更新値に基づいて、パラメータ値を更新する更新部と、をさらに有する。
【０００８】
この態様によれば、パラメータの更新値を算出するための積及び和の演算を１０ビット以下の浮動小数点数で表されたデータによって行い、パラメータ値の更新を３２ビットの浮動小数点数で表されたデータによって行うことで、計算結果の精度を保ちつつ１６ビット浮動小数点処理を上回る計算速度を得ることができる。
【０００９】
上記態様において、演算部は、データの仮数部を１４ビット以上２３ビット以下に変換した後に加算を行い、加算を行った後に、データの仮数部を３ビット以下に変換してもよい。
【００１０】
この態様によれば、行列の積のような多くの積と和の繰り返しを計算する場合、加算器の仮数部ビット長が短いと、情報落ちが生じてしまうことがあるが、このような情報落ちを回避でき、演算精度を高く保つことができる。
【００１１】
上記態様において、データは、指数部が６ビットであり、指数部のバイアス値は６ビット整数の表示最大数のおよそ１／２となる３１（＝２6-1−１）であってもよい。
【００１２】
この様態によれば、機械学習に必要となる最小の値、最大の値を精度よく表現することができる。
【００１３】
さらに上記態様において、データは、指数部のビット数を更に１ビット減少させた５ビットであり、指数部のバイアス値が２３以上２８以下であってもよい。
【００１４】
この態様によれば、指数部が５ビットの場合に、バイアス値を２３以上２８以下とずらすことで、パラメータ値の最大値を表現可能としつつ、微小な値を精度良く表現することができるようになる。
【００１５】
上記態様において、学習モデルは、ローカルレスポンス正規化を含むニューラルネットワークであってもよい。
【００１６】
この態様によれば、仮数部のビット数を３ビット以下としても、量子化誤差に由来するニューラルネットワークの推論精度の劣化が補償され、推論精度を高く保つことができる。
【００１７】
上記態様において、学習モデルは、バッチ正規化を含むニューラルネットワークであってもよい。
【００１８】
この態様によれば、仮数部のビット数を３ビット以下としても、正規化誤差に由来するニューラルネットワークの推論精度の劣化が補償され、推論精度を高く保つことができる。
【００１９】
上記態様において、データは、仮数部が２ビット以下である、８ビット以下の浮動小数点数で表されてもよい。
【００２０】
この態様によれば、データの仮数部のビット長をさらに短くすることで、演算部の演算速度をより向上させ、通信路の通信速度をより速くし、演算部のハードウェア規模をより小さく、消費電力をより少なくすることができる。また、バッチ正規化を含むニューラルネットワークを用いることで、仮数部のビット長を短くしても、３２ビット浮動小数点数又は１６ビット浮動小数点数を用いて学習処理を行った場合よりも高い推論精度を得ることができる。
【００２１】
上記態様において、データは、仮数部が１ビットである、７ビット以下の浮動小数点数で表されてもよい。
【００２２】
この態様によれば、データの仮数部のビット長をさらに短くすることで、演算部の演算速度をより向上させ、通信路の通信速度をより速くし、演算部のハードウェア規模をより小さく、消費電力をより少なくすることができる。また、バッチ正規化を含むニューラルネットワークを用いることで、仮数部のビット長を短くしても、３２ビット浮動小数点数又は１６ビット浮動小数点数を用いて学習処理を行った場合よりも高い推論精度を得ることができる。
【発明の効果】
【００２３】
本発明によれば、計算結果の精度を保ちつつ１６ビット浮動小数点処理を上回る計算速度が得られる演算システムを提供する。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施形態に係る演算システム１の概要を示す図である。
【図２】本実施形態に係るワーカによって実行される処理を示す図である。
【図３】本実施形態に係るパラメータサーバによって実行される処理を示す図である。
【図４】本実施形態に係る演算システム１及び比較例に係る演算システムによって、ニューラルネットワークの学習処理を実行した場合の推論精度を示す図である。
【図５】本実施形態に係る演算システム１及び比較例に係る演算システムによって、ローカルレスポンス正規化を含むニューラルネットワークの学習処理を実行した場合の推論精度を示す図である。
【図６】本実施形態に係る演算システム１及び比較例に係る演算システムによって、バッチ正規化を含むニューラルネットワークの学習処理を実行した場合の推論精度を示す図である。
【発明を実施するための形態】
【００２５】
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」と表記する。）を、図面に基づいて説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
【００２６】
図１は、本発明の実施形態に係る演算システム１の概要を示す図である。演算システム１は、パラメータサーバ１０、通信路２０及びワーカ３０を備える。同図では、一台のパラメータサーバ１０と、複数台のワーカ３０を備える場合を例示しているが、演算システム１は、複数台のパラメータサーバ１０を備えていてもよい。
【００２７】
パラメータサーバ１０は、３２ビットの浮動小数点数で表された学習モデルのパラメータ値を記憶する記憶部１１を有する。ここで、学習モデルは、任意のモデルであってよいが、本実施形態ではニューラルネットワークであるとする。学習モデルがニューラルネットワークの場合、パラメータ値は、ニューラルネットワークのノードを繋ぐ重み係数であってよい。また、パラメータ値は、例えば、符号部が１ビットであり、仮数部が２３ビットであり、指数部が８ビットである、３２ビットの浮動小数点数で表されてよい。ここで、仮数部は、整数部が１であるような２進小数の小数部を表す。すなわち、仮数部は、整数部の１を省略した表現を用いて２３ビットである。なお、パラメータ値の指数部は、５ビット又は６ビットであってもよく、実装の都合に応じて任意に選択可能である。
【００２８】
パラメータサーバ１０は、パラメータ値を、仮数部が３ビット以下であり、指数部が６ビット以下である、１０ビット以下の浮動小数点数で表されたデータに変換する第１変換部１２を有する。第１変換部１２は、仮数部を３ビットに変換する場合、パラメータ値の２３ビットの仮数部のうち、４ビット目を０捨１入することとしてよい。また、第１変換部１２は、仮数部を２ビットに変換する場合、パラメータ値の２３ビットの仮数部のうち、３ビット目を０捨１入することとしてよい。また、第１変換部１２は、仮数部を１ビットに変換する場合、パラメータ値の２３ビットの仮数部のうち、２ビット目を０捨１入することとしてよい。さらに、第１変換部１２は、パラメータ値の指数部が８ビットの２進数でｅ１であり、バイアスがＢ１である場合、変換後のバイアスをＢ２と表すとき、２進数で表した変換後の指数部ｅ２を、ｅ２＝ｅ１−（Ｂ１−Ｂ２）によって求めてよい。なお、Ｂ１は、８ビットで表すことのできる数値の半分、すなわち２8-1−１＝１２７であってよい。また、Ｂ２は、変換後の指数部が６ビットの場合、６ビットで表すことのできる数値の半分、すなわち２6-1−１＝３１であってよい。また、Ｂ２は、変換後の指数部が５ビットの場合、２３以上２８以下であってよい。
【００２９】
通信路２０は、パラメータサーバ１０とワーカ３０の間で送受信される、１０ビット以下の浮動小数点数で表されたデータを伝送する。このように、通信路２０に伝送されるデータを１０ビット以下の浮動小数点数で表されるデータとすることで、データ交換量が削減され、通信速度が３倍程度速くなる。また、通信に要するエネルギーは、１６ビット浮動小数点数で表されたデータを伝送する場合に比べて７０％程度削減できる。
【００３０】
ワーカ３０は、１０ビット以下の浮動小数点数で表されたデータの積及び和を演算する演算部３１を有する。演算部３１は、任意の乗算及び加算を実行してよい。例えば、学習モデルがニューラルネットワークの場合、あるレイヤーｌの重み係数の行列をＷ(l)と表し、レイヤー（ｌ）の出力の行列をＺ(l)と表し、レイヤー（ｌ）の値の行列をＵ(l)と表すとき、順伝播を以下の数式１で算出する。
【００３１】
【数１】
2019164595.tif 000003
【００３２】
ここで、ｆは活性化関数であり、例えばＲｅＬＵ（Rectified Linear Unit）であってよい。このように、演算部３１は、Ｗ(l)Ｚ(l-1)等の行列の積を大量に計算することとなり、多数の乗算と加算を繰り返し実行することとなる。この場合、ワーカ３０は、重み係数の行列Ｗ(l)を、通信路２０を介してパラメータサーバ１０から受信する。そして、出力層の出力の値を、通信路２０を介してパラメータサーバ１０に送信する。
【００３３】
学習モデルがニューラルネットワークの場合、演算部３１は、以下の数式２によって誤差逆伝播法によるニューラルネットワークの学習処理を行ってよい。ここで、レイヤーｌの誤差の行列をΔ(l)と表し、関数ｆの一階微分をｆ´と表し、損失関数の重み係数行列により偏微分した勾配を∂Ｗ(l)と表し、ミニバッチに含まれる学習用データの数をＮと表す。また、演算子「○」は、行列の要素毎の積（アダマール積）を表し、記号「Ｔ」は行列の転置を表す。
【００３４】
【数２】
2019164595.tif 000004
【００３５】
この場合、ワーカ３０は、重み係数の行列Ｗ(l)を、通信路２０を介してパラメータサーバ１０から受信する。そして、ワーカ３０によって勾配∂Ｗ(l)が算出され、通信路２０を介してパラメータサーバ１０に送信される。
【００３６】
パラメータサーバ１０は、ワーカ３０から受信したデータを、３２ビットの浮動小数点数で表された更新値に変換する第２変換部１３を有する。第２変換部１３は、ワーカ３０から受信したデータの仮数部が３ビットの場合、２０ビットの０値を補間して、仮数部を２３ビットに変換してよい。ワーカ３０から受信したデータの仮数部が２ビットの場合、１ビットの場合についても同様である。また、第２変換部１３は、ワーカ３０から受信したデータの指数部が２進数でｅ２であり、バイアスがＢ２の場合、変換後のバイアスをＢ１と表すとき、８ビットの２進数でｅ１を、ｅ１＝ｅ２−（Ｂ２−Ｂ１）によって求めてよい。
【００３７】
パラメータサーバ１０は、更新値に基づいて、パラメータ値を更新する更新部１４を有する。更新部１４は、例えば、学習モデルがニューラルネットワークであり、パラメータ値が重み係数の行列をＷ(l)であり、ワーカ３０から勾配∂Ｗ(l)を受信した場合、以下の数式３によって、重み係数行列Ｗ(l)を更新する。
【００３８】
【数３】
2019164595.tif 000005
【００３９】
ここで、ΔＷ(l)´は、前回のパラメータ値の更新に用いた値であり、μはモーメントである。なお、本例ではモーメント法を用いたパラメータ値の更新を示しているが、モーメント法を用いなくてもよいし、他の更新方法（例えばＡｄａｇｒａｄやＡｄａｍ）を用いてもよい。
【００４０】
第１変換部１２は、３２ビットの浮動小数点数で表されたパラメータ値を、指数部が５ビット又は６ビットであり、特に５ビットの場合には指数部のバイアス値が２３以上２８以下である、１０ビット以下の浮動小数点数で表されたデータに変換してもよい。学習モデルがニューラルネットワークの場合、パラメータ値Ｗ(l)や出力Ｚ(l)は、１０〜１００以上の値を取ることがほとんど無い。そのため、指数部が５ビットの場合に、バイアス値を２３〜２８として、表すことのできるデータの最大値を、２×２31-28＝１６から２×２31-23＝５１２とすることで、パラメータ値の最大値を表現可能としつつ、微小な値を精度良く表現することができるようになる。すなわち、指数部が５ビットであり、指数部のバイアス値が２３以上２８以下であることで、１０-7から１０3程度の値を表現することができるようになり、主要なニューラルネットワークモデルに対して、データ消失を回避でき、学習精度を高く保つことができる。
【００４１】
第１変換部１２は、３２ビットの浮動小数点数で表されたパラメータ値を、指数部が６ビットであり、指数部のバイアス値が３１である、１０ビット以下の浮動小数点数で表されたデータに変換してもよい。指数部が６ビットの場合に、バイアス値を３１として、１０-7から１０3程度の値を表現できるようにすることで、主要なニューラルネットワークモデルに対して、データ消失を回避でき、学習精度を高く保つことができる。
【００４２】
本実施形態に係る演算システム１によれば、３２ビット浮動小数点数で表されたパラメータ値を、１０ビット以下の浮動小数点数で表されたデータに変換することによって、パラメータサーバ１０とワーカ３０の間のデータ送受信に要するエネルギーを１０／３２以下にすることができる。言い換えると、同一の消費電力の条件下で、３．２倍以上高速なデータの送受信が可能となる。
【００４３】
また、ワーカ３０の乗算器のハードウェア規模は、仮数部のビット数ｂmに対して、おおよそ（１＋ｂm）2となるため、仮数部を２３ビットから３ビット以下に変換することで、乗算器のハードウェア規模は、（１＋３）2／（１＋２３）2＝０．０３程度となり、おおよそ３％以下に縮小することができる。
【００４４】
図２は、本実施形態に係るワーカ３０によって実行される処理を示す図である。同図では、演算部３１の機能的構成と、各構成によって実行される処理とを図示している。
【００４５】
演算部３１は、乗算器３１ａ及び加算器３１ｂを含む。例えばＷ(l)Ｚ(l-1)のような行列の積を計算する場合、Ｗ(l)を構成する行ベクトルとＺ(l-1)を構成する列ベクトルの内積を計算する必要があり、要素の積を足し上げる演算を実行する必要がある。同図では、乗算器３１ａによって行ベクトルの要素と列ベクトルの要素を乗算して、乗算器３１ａから出力される数値を加算器３１ｂのレジスタ値に加算して部分和を求め、レジスタに書き戻しする処理を示している。この実装をシストリックアレイ等別の実装形態で実装してもよい。以下では、演算部３１によって入出力されるデータが、仮数部が３ビットであり、指数部が６ビットである、１０ビットの浮動小数点数で表されたデータであるとする。もっとも、演算部３１によって入出力されるデータは、仮数部が２ビットであり、指数部が５ビットである、８ビットの浮動小数点数で表されたデータであったり、仮数部が１ビットであり、指数部が５ビットである、７ビットの浮動小数点数で表されたデータであったりしてもよい。
【００４６】
乗算器３１ａは、１０ビットの浮動小数点数で表された２つのデータのうち、６ビットの指数部（ｅｘｐ）を加算し、３ビットの仮数部を乗算する。ここで、３ビットの仮数部の乗算は、桁上がりを正しく扱うために、少なくとも４ビットを表すことのできる乗算器（４ビット乗算器）によって実行する。なお、図２では、３ビットの仮数部によって、整数部の１を除いた小数部を表していることを図示している。
【００４７】
演算部３１は、データの仮数部を１４ビット以上２３ビット以下に変換した後に加算を行い、加算を行った後に、データの仮数部を３ビット以下に変換する。より具体的には、演算部３１の加算器３１ｂは、計算された部分和を、仮数部が１４ビット以上２３ビット以下で表されたデータでレジスタに記憶し、乗算器３１ａにより新たな積が算出された場合に、その数値の仮数部を１４ビット以上２３ビット以下に変換して、レジスタに記憶された部分和に加算する。本例の場合、加算器３１ｂのレジスタには、仮数部が２３ビットで表された部分和が記憶される。
【００４８】
加算器３１ｂは、レジスタに記憶されている部分和の指数と、乗算器３１ａにより算出された値の指数との差を算出し、乗算器３１ａにより算出された値を、部分和に加算するための桁合わせを行う。乗算器３１ａにより算出された仮数部の積は、整数部２ビット、小数部６ビットで表され、加算器３１ｂは、ここに１６ビットの０を追加して計２４ビットとする。その後、レジスタに格納された部分和と桁合わせを行うことで、小数点の位置がずらされ、先頭のビットを除いて２３ビットの仮数部について加算を行う。加算器３１ｂは、このような処理を繰り返してレジスタに記憶された部分和を更新していき、ベクトルの内積（行列の積の各要素）を算出する。
【００４９】
演算部３１は、部分和が完了し、ひとまとまりの演算が終了した場合、レジスタに記憶された指数部及び仮数部の値を読出し、仮数部の上位４ビットを切り出して４ビット目を０捨１入し、３ビットの仮数部に変換する。なお、入力されるデータの仮数部が２ビットであれば、演算部３１は、レジスタに記憶された仮数部の上位３ビットを切り出して３ビット目を０捨１入し、２ビットの仮数部に変換する。また、入力されるデータの仮数部が１ビットであれば、演算部３１は、レジスタに記憶された仮数部の上位２ビットを切り出して２ビット目を０捨１入し、１ビットの仮数部に変換する。
【００５０】
演算部３１によって行列の積のような多くの積と和の繰り返しを計算する場合、加算器３１ｂの仮数部ビット長が短いと、情報落ちが生じてしまうことがある。本実施形態に係る演算システム１によれば、データの仮数部を１４ビット以上２３ビット以下に変換した後に加算を行い、すべての加算終了後にデータの仮数部を３ビット以下に変換することで、このような情報落ちを回避でき、演算精度を高く保つことができる。
【００５１】
図３は、本実施形態に係るパラメータサーバ１０によって実行される処理を示す図である。パラメータサーバ１０の第１変換部１２は、３２ビットの浮動小数点数で表されたパラメータ値を、仮数部が３ビット以下であり、指数部が６ビット以下である、１０ビット以下の浮動小数点数で表されたデータに変換する。本例では、第１変換部１２は、仮数部が２３ビットで表されたパラメータ値のうち、上位４ビットを切り出し、４ビット目を０捨１入して、３ビットに変換する。
【００５２】
第２変換部１３は、ワーカ３０から受信したデータを、３２ビットの浮動小数点数で表された更新値に変換する。本例の場合、第２変換部１３は、ワーカ３０から受信した仮数部が３ビットのデータに２０ビットの０を追加して、計２３ビットとする。
【００５３】
更新部１４は、更新値に基づいて、パラメータ値を更新する。本例の場合、更新部１４は、記憶部１１に記憶されたパラメータ値と、更新値との指数部の桁合わせを行い、２３ビットの仮数部を加算して、仮数部が２３ビット、指数部が８ビットである３２ビットの浮動小数点数で表されたパラメータ値を更新する。
【００５４】
本実施形態に係る演算システム１によれば、パラメータの更新値を算出するための積及び和の演算を１０ビット以下の浮動小数点数で表されたデータによって行い、パラメータ値の更新を３２ビットの浮動小数点数で表されたデータによって行うことで、計算結果の精度を保ちつつ１６ビット浮動小数点処理を上回る計算速度を得ることができる。例えば、以下で例示するＡｌｅｘＮｅｔ等の主要なニューラルネットワークモデルでは、重み係数の更新値は１０-4周辺に分布するため、パラメータサーバ１０においては１０進数で６桁程度、すなわち２進数で１８〜１９ビット以上の仮数部精度が必要となる。本実施形態に係る演算システム１によれば、パラメータサーバ１０でのパラメータ値の更新を３２ビットの浮動小数点数で表されたデータによって行うことで、情報落ちが防止され、そのような精度が担保される。
【００５５】
図４は、本実施形態に係る演算システム１及び比較例に係る演算システムによって、ニューラルネットワークの学習処理を実行した場合の推論精度を示す図である。本例で用いたニューラルネットワークモデルは、ＡｌｅｘＮｅｔである。同図では、演算システム１の第１変換部１２によって、パラメータ値を、仮数部が４ビットであり、指数部が５ビットである、１０ビットの浮動小数点数で表されたデータに変換した場合の訓練繰り返し回数と推論精度との関係Ｇ１を実線で示している。また、演算システム１の第１変換部１２によって、パラメータ値を、仮数部が３ビットであり、指数部が５ビットである、９ビットの浮動小数点数で表されたデータに変換した場合の訓練繰り返し回数と推論精度との関係Ｇ２を一点鎖線で示している。また、演算システム１の第１変換部１２によって、パラメータ値を、仮数部が２ビットであり、指数部が５ビットである、８ビットの浮動小数点数で表されたデータに変換した場合の訓練繰り返し回数と推論精度との関係Ｇ３を二点鎖線で示している。さらに、比較例として、全ての処理を３２ビットの浮動小数点数で表されたデータにより行った場合の訓練繰り返し回数と推論精度との関係Ｂを破線で示している。
【００５６】
仮数部が４ビットであり、指数部が５ビットである、１０ビットの浮動小数点数で表されたデータを用いる場合（グラフＧ１の場合）、推論精度は、訓練繰り返し回数に応じて、比較例の場合（グラフＢの場合）とほとんど同じ曲線で上昇していく。また、本実施形態に係る演算システム１のように、仮数部が３ビットであり、指数部が５ビットである、９ビットの浮動小数点数で表されたデータを用いる場合（グラフＧ２の場合）、推論精度は、訓練繰り返し回数に応じて、比較例の場合（グラフＢの場合）より僅かに下がるものの、十分に高い値となる。また、本実施形態に係る演算システム１のように、仮数部が２ビットであり、指数部が５ビットである、８ビットの浮動小数点数で表されたデータを用いる場合（グラフＧ３の場合）、推論精度は、比較例の場合（グラフＢの場合）に対して７〜８％以内の精度劣化に抑えられる。
【００５７】
このように、本実施形態に係る演算システム１によれば、３２ビット浮動小数点数で表されたパラメータ値を、１０ビット以下の浮動小数点数で表されたデータに変換することによって、パラメータサーバ１０とワーカ３０の間のデータ送受信に要するエネルギー及びワーカ３０の乗算器３１ａのハードウェア規模を大幅に低減しつつ、３２ビット浮動小数点数を用いる場合と比較して推論精度を大幅に損なうことなく、学習モデルの訓練が可能である。
【００５８】
図５は、本実施形態に係る演算システム１によって、ローカルレスポンス正規化を含むニューラルネットワークの学習処理を実行した場合の推論精度を示す図である。本例で用いたニューラルネットワークモデルは、ＡｌｅｘＮｅｔの各層の活性化関数の出力に対してローカルレスポンス正規化を行ったモデルである。同図では、演算システム１の第１変換部１２によって、パラメータ値を、仮数部が４ビットであり、指数部が５ビットである、１０ビットの浮動小数点数で表されたデータに変換した場合の訓練繰り返し回数と推論精度との関係Ｇ１を実線で示している。また、演算システム１の第１変換部１２によって、パラメータ値を、仮数部が３ビットであり、指数部が５ビットである、９ビットの浮動小数点数で表されたデータに変換した場合の訓練繰り返し回数と推論精度との関係Ｇ２を一点鎖線で示している。また、演算システム１の第１変換部１２によって、パラメータ値を、仮数部が２ビットであり、指数部が５ビットである、８ビットの浮動小数点数で表されたデータに変換した場合の訓練繰り返し回数と推論精度との関係Ｇ３を二点鎖線で示している。さらに、比較例として、各層の活性化関数の出力に対してローカルレスポンス正規化を行うネットワークモデルにおいて全ての処理を３２ビットの浮動小数点数で表されたデータにより行った場合の訓練繰り返し回数と推論精度との関係Ｂ２を破線で示している。
【００５９】
仮数部が４ビットであり、指数部が５ビットである、１０ビットの浮動小数点数で表されたデータを用いる場合（グラフＧ１の場合）、ローカルレスポンス正規化を含むニューラルネットワークの推論精度は、訓練繰り返し回数に応じて、比較例の場合（グラフＢ２の場合）とほとんど同じ曲線で上昇していく。また、本実施形態に係る演算システム１のように、仮数部が３ビットであり、指数部が５ビットである、９ビットの浮動小数点数で表されたデータを用いる場合（グラフＧ２の場合）、ローカルレスポンス正規化を含むニューラルネットワークの推論精度は、訓練繰り返し回数に応じて、比較例の場合（グラフＢの場合）とほとんど同じ曲線で上昇していく。また、本実施形態に係る演算システム１のように、仮数部が２ビットであり、指数部が５ビットである、１０ビットの浮動小数点数で表されたデータを用いる場合（グラフＧ３の場合）、ローカルレスポンス正規化を含むニューラルネットワークの推論精度は、比較例の場合（グラフＢ２の場合）よりも数％低くなるものの、十分に高い値となる。
【００６０】
このように、本実施形態に係る演算システム１によれば、学習モデルとしてローカルレスポンス正規化を含むニューラルネットワークを用いることで、仮数部のビット数を３ビット以下としても、量子化誤差に由来するニューラルネットワークの推論精度の劣化が補償され、推論精度を高く保つことができる。
【００６１】
図６は、本実施形態に係る演算システム１及び比較例に係る演算システムによって、バッチ正規化を含むニューラルネットワークの学習処理を実行した場合の推論精度を示す図である。本例で用いたニューラルネットワークモデルは、ＡｌｅｘＮｅｔの畳み込み層の出力及び全結合層の出力に対してバッチ正規化を行ったモデルである。また、比較例に係る演算システムで用いたニューラルネットワークモデルは、ＡｌｅｘＮｅｔである。同図では、演算システム１の第１変換部１２によって、パラメータ値を、仮数部が１０ビットであり、指数部が６ビットである、１７ビットの浮動小数点数で表されたデータに変換した場合の訓練繰り返し回数と推論精度との関係Ｇ５を実線で示している。また、演算システム１の第１変換部１２によって、パラメータ値を、仮数部が３ビットであり、指数部が６ビットである、１０ビットの浮動小数点数で表されたデータに変換した場合の訓練繰り返し回数と推論精度との関係Ｇ６を一点鎖線で示している。また、演算システム１の第１変換部１２によって、パラメータ値を、仮数部が２ビットであり、指数部が６ビットである、９ビットの浮動小数点数で表されたデータに変換した場合の訓練繰り返し回数と推論精度との関係Ｇ７を二点鎖線で示している。また、演算システム１の第１変換部１２によって、パラメータ値を、仮数部が１ビットであり、指数部が６ビットである、８ビットの浮動小数点数で表されたデータに変換した場合の訓練繰り返し回数と推論精度との関係Ｇ８を点線で示している。さらに、比較例として、全ての処理を３２ビットの浮動小数点数で表されたデータにより行った場合の訓練繰り返し回数と推論精度との関係Ｂを破線で示している。
【００６２】
仮数部が１０ビットであり、指数部が６ビットである、１７ビットの浮動小数点数で表されたデータを用いる場合（グラフＧ５の場合）、バッチ正規化を含むニューラルネットワークの推論精度は、訓練繰り返し回数に応じて、比較例の場合（グラフＢの場合）よりも速く上昇する。また、本実施形態に係る演算システム１のように、仮数部が３ビットであり、指数部が６ビットである、１０ビットの浮動小数点数で表されたデータを用いる場合（グラフＧ６の場合）、バッチ正規化を含むニューラルネットワークの推論精度は、訓練繰り返し回数に応じて、グラフＧ５の場合とほとんど同じ曲線で上昇していき、比較例の場合（グラフＢの場合）よりも速く上昇する。また、仮数部が２ビットであり、指数部が６ビットである、９ビットの浮動小数点数で表されたデータを用いる場合（グラフＧ７の場合）、バッチ正規化を含むニューラルネットワークの推論精度は、グラフＧ５よりも僅かに遅れて上昇していき、比較例の場合（グラフＢの場合）よりも速く上昇する。また、仮数部が１ビットであり、指数部が６ビットである、８ビットの浮動小数点数で表されたデータを用いる場合（グラフＧ８の場合）、バッチ正規化を含むニューラルネットワークの推論精度は、グラフＧ５よりも遅れて上昇していき、比較例の場合（グラフＢの場合）よりも速く上昇する。
【００６３】
このように、本実施形態に係る演算システム１によれば、学習モデルとしてバッチ正規化を含むニューラルネットワークを用いることで、仮数部のビット数を３ビット以下としても、正規化誤差に由来するニューラルネットワークの推論精度の劣化が補償され、推論精度を高く保つことができる。なお、本例では、指数部をいずれの場合も６ビットであるとしたが、例えば指数部を５ビット、バイアス値を２５としても同様の結果が得られる。
【００６４】
より具体的には、第１変換部１２は、パラメータ値を、仮数部が２ビット以下であり、指数部が５ビットである、８ビット以下の浮動小数点数で表されるデータに変換してもよい。また、第１変換部１２は、パラメータ値を、仮数部が１ビットであり、指数部が５ビットである、７ビットの浮動小数点数で表されるデータに変換してもよい。このように、データの仮数部のビット長をさらに短くすることで、演算部３１での演算速度をより向上させ、通信路２０での通信速度をより速くし、演算部３１のハードウェア規模をより小さく、消費電力をより少なくすることができる。また、バッチ正規化を含むニューラルネットワークを用いることで、仮数部のビット長を短くしても、従来の３２ビット浮動小数点数又は１６ビット浮動小数点数を用いて学習処理を行った場合よりも高い推論精度を得ることができる。
【００６５】
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。
【００６６】
例えば、演算システム１で用いるビット数を低減した場合、オーバーフローの問題が起きることがあり、先行技術では、オーバーフローが起きた場合に、無限大を表すシンボルを返すことがあるが、本実施形態に係る演算システム１では、これを表示最大値に飽和させることとしてよい。これにより、オーバーフローが起きても許容される誤差範囲に収まる場合には、実数領域で計算を続行し、有意な計算結果を得ることが可能となる。
【符号の説明】
【００６７】
１…演算システム、１０…パラメータサーバ、１１…記憶部、１２…第１変換部、１３…第２変換部、１４…更新部、２０…通信路、３０…ワーカ、３１…演算部、３１ａ…乗算器、３１ｂ…加算器
【図１】
2019164595.tif 000006
【図２】
2019164595.tif 000007
【図３】
2019164595.tif 000008
【図４】
2019164595.tif 000009
【図５】
2019164595.tif 000010
【図６】
2019164595.tif 000011