IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7163809深層学習加速の方法および機器ならびに深層神経ネットワーク
<>
  • 特許-深層学習加速の方法および機器ならびに深層神経ネットワーク 図1
  • 特許-深層学習加速の方法および機器ならびに深層神経ネットワーク 図2
  • 特許-深層学習加速の方法および機器ならびに深層神経ネットワーク 図3
  • 特許-深層学習加速の方法および機器ならびに深層神経ネットワーク 図4
  • 特許-深層学習加速の方法および機器ならびに深層神経ネットワーク 図5
  • 特許-深層学習加速の方法および機器ならびに深層神経ネットワーク 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-24
(45)【発行日】2022-11-01
(54)【発明の名称】深層学習加速の方法および機器ならびに深層神経ネットワーク
(51)【国際特許分類】
   G06N 3/063 20060101AFI20221025BHJP
   G06N 3/08 20060101ALI20221025BHJP
【FI】
G06N3/063
G06N3/08
【請求項の数】 10
(21)【出願番号】P 2019020886
(22)【出願日】2019-02-07
(65)【公開番号】P2019204487
(43)【公開日】2019-11-28
【審査請求日】2021-11-09
(31)【優先権主張番号】201810502897.6
(32)【優先日】2018-05-23
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100133570
【弁理士】
【氏名又は名称】▲徳▼永 民雄
(72)【発明者】
【氏名】汪 留安
(72)【発明者】
【氏名】孫 俊
【審査官】多賀 実
(56)【参考文献】
【文献】特開2018-010618(JP,A)
【文献】GUPTA, Suyog et al.,"Deep Learning with Limited Numerical Precision",arXiv [online],2015年02月,[2022年09月12日検索],インターネット<URL:https://arxiv.org/abs/1502.02551v1>,1502.02551v1
【文献】石井 潤,ほか2名,"DNN向けニューロン毎の量子化ビット幅最適化に関する評価",情報処理学会 研究報告 システム・アーキテクチャ(ARC) [online],情報処理学会,2018年01月11日,Vol.2018-ARC-229,No.22,p.1-8,[2018年01月11日検索],インターネット<URL:https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=185131&file_id=1&file_no=1>,ISSN 2188-8574
【文献】COURBARIAUX, Matthieu et al.,"Training deep neural networks with low precision multiplications",arXiv [online],2015年09月,[2022年09月12日検索],インターネット<URL:https://arxiv.org/abs/1412.7024v5>,1412.7024v5
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00- 3/12
G06N 7/08-99/00
(57)【特許請求の範囲】
【請求項1】
深層神経ネットワークの加重およびバイアスをランダムにn桁の固定小数点数に初期化するステップと、
前記深層神経ネットワーク中の計算量が所定の第1の閾値を上回る層中のデータをm桁の固定小数点数に削減し、ここで、mおよびnは整数であり、かつm<nであり、かつその他の層中のデータをn桁の固定小数点数に保持するステップと、
削減後の深層神経ネットワークに対して収束するまで訓練を行うステップと、を含む深層学習加速の方法。
【請求項2】
初期化後の深層神経ネットワークに対して所定のラウンド数に達するまで初期訓練を行うステップをさらに含み、
ここで、前記削減は、初期訓練後の深層神経ネットワークに対して実行する、請求項1に記載の方法。
【請求項3】
前記初期訓練および前記訓練において、データがオーバーフローした場合、前記データのサイズに応じて、前記データの固定小数点数フォーマットを自動調整する、請求項2に記載の方法。
【請求項4】
データがオーバーフローした場合、前記データの固定小数点数フォーマットを自動調整するステップは、
i)前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えているかどうかを判定するステップと、
ii)前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えたと判定した場合、現行の固定小数点数フォーマットの整数部分の桁数を1増加し、かつ小数部分の桁数を1減少することによって、固定小数点数フォーマットを更新するステップと、
iii)前記操作1)およびii)を、前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示し、または、更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値を下回るまで繰り返し実行するステップと、
iv)更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値を下回った場合、小数部分の桁数を増加し、それによってmの値を増加するステップと、
v)前記操作i)~iv)を、前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示するステップと、を含む、請求項3に記載の方法。
【請求項5】
前記訓練中に、逆方向伝播において勾配降下法を用いて前方伝播において計算した損失項の極値を求解する、請求項1~4のうちいずれか1項に記載の方法。
【請求項6】
逆方向伝播において、まず所定比率により前記損失項を増幅し、その後、加重およびバイアスを更新する前に、前記所定比率により勾配を縮小する、請求項5に記載の方法。
【請求項7】
前記訓練において、小数部分の桁数が異なるデータ間で演算を実行する前に、データの小数部分の桁数の差に応じて、データに対してデータ精度変換を実行する、請求項1~4のうちいずれか1項に記載の方法。
【請求項8】
前記初期化において、前記データが帰属する前記深層神経ネットワークのパラメータのタイプに応じて、前記データに、対応する固定小数点数フォーマットを設定する、請求項1~4のうちいずれか1項に記載の方法。
【請求項9】
深層神経ネットワークの加重およびバイアスをランダムにn桁の固定小数点数に初期化するように構成された初期化装置と、
前記深層神経ネットワーク中の計算量が所定の第1の閾値を上回る層中のデータをm桁の固定小数点数に削減し、ここで、mおよびnは整数であり、かつm<nであり、かつその他の層中のデータをn桁の固定小数点数に保持するように構成された削減装置と、
削減後の深層神経ネットワークに対して収束するまで訓練を行うように構成された訓練装置と
を含む、深層学習加速機器。
【請求項10】
前記深層神経ネットワークより処理するデータを受信する入力層と、
前記深層神経ネットワークより処理した結果を出力する出力層と、
前記入力層と前記出力層との間にカップリングされ、前記深層神経ネットワークが実現しようとする機能に応じて設計された複数の隠れ層と
を含み、
ここで、前記深層神経ネットワークは、請求項1~8のうちいずれか1項に記載の方法により訓練を行う、深層神経ネットワーク。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、深層学習加速の方法および機器ならびに深層神経ネットワークに関する。
【背景技術】
【0002】
深層神経ネットワークの複雑なデータモデルの特徴に対する抽出能力により、深層学習の方法に基づき、数多くの実際の応用において、非常にすぐれた性能をすでに実現している。深層神経ネットワークは通常、単精度浮動小数点または倍精度浮動小数点フォーマットデータを用いて神経ネットワークを訓練および推理する。単精度浮動小数点および倍精度小数点のデータ操作には、CPUまたはGPU上の浮動小数点処理ユニットを使用する必要がある。このため、深層学習に使用するハードウェア、エネルギー消費、速度およびメモリ使用量は、単精度小数点および倍精度小数点データフォーマットによって制限される。
【0003】
NVIDIAは、単精度浮動小数点を半精度浮動小数点に圧縮することによって、処理時間を加速し、メモリ使用量を低下させた。単精度浮動小数点と比べて、半精度浮動小数点は、メモリ中で16バイトを占め、データ精度を犠牲にしてメモリ使用量をより少なくし、速度をより速くすることを求める。NVIDIAおよびマイクロソフトは、半精度浮動小数点のタイプを定義し、半精度浮動小数点タイプをGeForce FX製品中に応用した。Suyog Guptaらの『有限精度数の深層学習(Deep Learning with Limited Numerical Precision)』中では、ランダム丸め法を用いて浮動小数点データ精度を限定し、深層神経ネットワークを訓練している。
【0004】
従来技術にすでにデータの表現精度を小さくすることによって深層学習を加速する方法が存在しているが、なおその他の深層学習加速の方法の提供が望まれる。
【発明の概要】
【0005】
以下では、本発明のいくつかの面に関して基本的に理解してもらうため、本発明に関する簡単な概略を述べる。この概要は、本発明に関する網羅的概要ではなく、本発明のキーポイントまたは重要な部分を確定することを意図したものでもなく、本発明の範囲を限定することを意図したものでもないことを理解しておかなければならない。その目的は、簡略化した形でいくつかの概念を打ち出し、それを以下の具体的実施形態部分の下地とすることにすぎない。
【0006】
以上で述べた問題にかんがみ、本発明は、新たな固定小数点の桁数削減方法を打ち出すことによって、固定小数点ビット冗長化を抑制し、それによって深層神経ネットワークの訓練および推理速度を加速することができるようにする。
【0007】
本発明の一面によれば、深層神経ネットワークの加重およびバイアスをランダムにn桁の固定小数点数に初期化するステップと、前記深層神経ネットワーク中の計算量が所定の第1の閾値を上回る層中のデータをm桁の固定小数点数に削減し、ここで、mおよびnは整数であり、かつm<nであり、かつその他の層中のデータをn桁の固定小数点数に保持するステップと、削減後の深層神経ネットワークに対して収束するまで訓練を行うステップと、を含む深層学習加速の方法を提供する。
【0008】
本発明のもう1つの面によれば、深層神経ネットワークの加重およびバイアスをランダムにn桁の固定小数点数に初期化するように構成された初期化装置と、前記深層神経ネットワーク中の計算量が所定の第1の閾値を上回る層中のデータをm桁の固定小数点数に削減し、ここで、mおよびnは整数であり、かつm<nであり、かつその他の層中のデータをn桁の固定小数点数に保持するように構成された削減装置と、削減後の深層神経ネットワークに対して収束するまで訓練を行うように構成された訓練装置と、を含む深層学習加速機器を提供する。
【0009】
本発明のさらなる一面によれば、前記深層神経ネットワークより処理するデータを受信する入力層と、前記深層神経ネットワークが処理した結果を出力する出力層と、前記入力層と前記出力層との間にカップリングされ、前記深層神経ネットワークが実現しようとする機能に応じて設計された複数の隠れ層と、を含み、ここで、前記深層神経ネットワークは、本発明の深層学習加速の方法に基づいて訓練を行う深層神経ネットワークを提供する。
【0010】
本発明のさらなる一面によれば、機械可読のプログラムコードを含み、情報処理機器上で前記プログラムコードを実行した場合、前記プログラムコードは、前記情報処理機器に本発明による上記方法を実行させる、コンピュータ可読記憶媒体をさらに提供する。
【0011】
本発明のさらなる一面によれば、機械実行可能なコマンドを含み、情報処理システム上で前記コマンドを実行した場合、前記コマンドは、前記情報処理システムに本発明による上記方法を実行させる、プログラムをさらに提供する。
【0012】
以下では図面に基づき、本発明の最適実施例に関する詳細な説明によって、本発明のこれらのおよびその他の長所がさらに明確になる。
【図面の簡単な説明】
【0013】
図面を参照しながら、本発明の各実施形態を読めば、本発明のその他の特徴および長所をさらに理解しやすくなる。ここで記述する図面は、本発明の実施形態についての概略的説明を行うことを目的としたものにすぎず、あり得るすべての実施ではなく、本発明の範囲を制限することを意図したものではない。図面において、
図1】深層神経ネットワークの基本構造を示す図である。
図2】本発明実施形態に基づく深層学習加速の方法を示すフローチャートである。
図3】深層学習加速の方法における自動調整データの固定小数点数フォーマットの処理を示すフローチャートである。
図4】固定小数点桁数削減を実行していない状況で、深層神経ネットワークの訓練中にすべての層から収集した勾配値比率の例を示すヒストグラムである。
図5】本発明実施形態に基づく深層学習加速機器の構造を示すブロック図である。
図6】本発明実施例に基づく方法および機器を実施するためのコンピュータを示すブロック図である。
【発明を実施するための形態】
【0014】
ここで、図面を参照しながら、本発明の実施形態を詳細に記述する。以下の記述は、例示的なものにすぎず、本発明を制限することを意図したものでないことに注意しなければならない。また、以下の記述においては、同一の図記号を用いて異なる図面中の同一または類似の部品を表す。以下の記述の異なる実施形態における異なる特徴は、互いに結び付けて、本発明範囲内のその他の実施形態を形成することができる。
【0015】
図1は、深層神経ネットワークの基本構造を示している。図1に示されているように、深層神経ネットワークは、入力層Lと、隠れ層L~Ln-1と、出力層Lとを含む。入力層は、深層神経ネットワークより分析処理する情報の値を受信し、これらの値は1枚の画像の画素、またはある時間幅の音声のサンプル振幅またはあるシステムもしくはゲームの状態のデジタル化表示であってもよい。隠れ層は、深層神経ネットワークが実現しようとする機能に応じて設計され、実際の異なる応用状況によって、異なる形態およびサイズを有し得る。隠れ層は、畳み込み層、プーリング層、バッチ正規化(Batch Normalization)層、全接続層、Droupout層、ReLU層、損失(Loss)層、Accuracy層などを含んでもよい。出力層は、深層神経ネットワークの処理結果を出力する。出力層、隠れ層および出力層のニューロンの個数は図中に示されたものに限定されず、実際の必要に応じて設定してもよい。
【0016】
図2は、本発明実施形態に基づく図1に記載の深層神経ネットワークに対する訓練を加速する方法のフローチャートを示している。図2に示されているように、深層学習加速の方法200は、初期化ステップS210と、削減ステップS230と、訓練ステップS240とを含む。
【0017】
初期化ステップS210において、深層神経ネットワークの加重およびバイアスをランダムにn桁の固定小数点数に初期化する。訓練した固定小数点データを読み取ることによって、または訓練した浮動小数点データを読み取り、浮動小数点データを固定小数点データに変換することによって、初期化を実行しても良い。
【0018】
また、初期化過程において、データの深層神経ネットワーク中において帰属するパラメータタイプに応じて、データに、対応する固定小数点数フォーマットを設定してもよい。一般的には、パラメータの数値が大きいほど、固定小数点数フォーマットの小数部分の桁数は少なくなる。例えば、加重、勾配およびバイアスについては、その数値が通常は小さいため、1個の符号ビット、0個の整数ビットおよびn-1(またはm-1)個の小数ビットの固定小数点数フォーマットを使用してもよいが、各層の入力および出力データについては、その数値が通常は校正されるため、1個の符号ビット、8個の整数ビットおよびn-8(またはm-8)個の小数ビットの固定小数点数フォーマットを使用してもよい。
【0019】
削減ステップS230において、深層神経ネットワーク中の計算量が第1の閾値を上回る層中のデータをm桁の固定小数点数に削減し、ここで、m<nであり、かつその他の層中のデータをn桁の固定小数点数に保持する。深層神経ネットワークの訓練過程において、畳み込み層、プーリング層、バッチ正規化層、ReLU層などの層は通常、ストレージ量および計算量が比較的大きく、占有する処理時間が比較的長いため、そのデータ表現精度を削減すれば、ハードウェアリソースの占有量を大幅に減少させ、処理時間を短縮することができる。また全接続層などの層は通常、ストレージ量および計算量が比較的小さく、占有する処理時間が比較的短いため、そのデータ表現精度を削減しても、ハードウェアリソースに対する占有量および処理時間を著しく減少させることはできず、反対に、深層神経ネットワークの処理精度を低下させる可能性がある。このため、処理時間およびハードウェアリソースに対する占有量を小さくするため、また深層神経ネットワークの処理精度が過度に低下するのを防止するため、本発明は、計算量が大きな層に対してのみ削減を行う。本分野当業者なら、ハードウェアリソース、処理時間、エネルギー消費などの要素を総合的に考慮して、あらかじめ第1の閾値を設定し、それによって処理時間と処理精度との間を折衷することができる。
【0020】
訓練ステップS240において、削減後の深層神経ネットワークに対して収束するまで訓練を行う。
【0021】
訓練過程においてデータがオーバーフローした場合、データのサイズに応じてデータの固定小数点数フォーマットを自動調整しても良い。図3は、自動調整データの固定小数点数フォーマットの処理のフォローチャートを示している。図3に示されているように、該調整処理300は、ステップS301~ステップS340を含む。まず、ステップS310において、データが現行の固定小数点数フォーマットが表現可能な範囲を超えているかどうかを判断する。データが現行の固定小数点数フォーマットが表現可能な範囲を超えていないと判断した場合、処理を終了する。データS310において、データが現行の固定小数点数フォーマットが表現可能な範囲を超えたと判断した場合、処理はステップS320に入る。ステップS320において、現行の固定小数点数フォーマットの整数部分の桁数を1増加させ、かつ小数部分の桁数を1減少することによって、固定小数点数フォーマットを更新する。その後、処理はステップS330に入り、ステップS330において、更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値を下回るかどうかを判断する。更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値以上であると判断した場合、処理はステップS310に移行し、処理を継続する。ステップS330において、更新後の固定小数点数フォーマットの小数部分の桁数が第2の閾値を下回ると判断した場合、処理はステップS340に入る。ステップS340において、更新後の固定小数点数フォーマットの小数部分の桁数を増加し、それによってmの値を増加する。次いで、処理はステップS310に入り、データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値以上になるまで後続処理を継続する。
【0022】
本分野当業者なら、ハードウェアリソース、処理時間、エネルギー消費などの要素を総合的に考慮して、あらかじめ上記第2の閾値を設定することができる。
【0023】
また、訓練ステップS240中では、前方伝播および逆方向伝播過程において、小数部分の桁数が異なるデータに対して演算を行うことになることがある。このとき、演算を行う前に、データに対してデータ精度変換を行う必要がある。具体的には、前方伝播過程において、前層i中の出力データDoutを次層i+1に入力して演算を行う前に、以下の等式(1)により、次層i+1中のデータDi+1に対してデータ精度変換を行って、出力データDoutのデータ精度をマッチングする必要がある。
【0024】
i+1 =Di+1×K……(1)
式中、Di+1 は、データ精度変換後のデータであり、Kは、データ精度変換因子であり、出力データDoutの小数部分の桁数と次層i+1中のデータDi+1の小数部分の桁数との差に応じて決定される。前方伝播におけるデータ精度変換によって、データ間の精度はすでに互いにマッチングされており、そのため、逆方向伝播においてはそれ以上データ精度変化を行う必要がない。固定小数点データ精度変換の操作は、すでに本分野当業者が熟知するところであり、ここではこれ以上くどくどとは述べない。
【0025】
このほか、固定小数点桁数削減後の深層神経ネットワークは、訓練課程において不収束または損失減衰もしくは消失が起こる可能性がある。訓練ステップS240中に、勾配下降法を用いて前方伝播において計算した損失項極値を求解する場合、該ネットワークの不収束または損失減衰もしくは消失は、訓練ステップにおいて生じたいくつかの小さな勾配値が、m桁の固定小数点数フォーマットが表現することができる最小範囲を超えたが、簡単に0として処理され、さらに加重およびバイアスの更新値に影響を及ぼすことによって引き起こされる。図4は、固定小数点桁数削減(すべてn桁の固定小数点数)を実行していない状況で、深層神経ネットワークの訓練中に、すべての層から収集した勾配値比率の例のヒストグラムを示している。図4において、x軸は、対数形式の勾配値を表し、複数の勾配値区間に分割され、またy軸は、各勾配値区間に入る勾配値の数と収集したすべての勾配値の数との比を表し、勾配値比率ともいう。例えば、約2%の勾配値は、[2-34,2-32]の範囲中に入り、また約64%の勾配値はゼロになる(図中最も左側の単独矩形ブロックによって示されているとおりである)。図中の各矩形ブロックが表す勾配値比率の和は1である。言い換えれば、各矩形ブロックが表すy軸上の値の総和は1である。図中からわかるように、m桁の固定小数点数フォーマットの表現可能範囲中の大部分に勾配値はなく、しかも大部分の勾配値は、m桁の固定小数点数フォーマットの最小表現可能値以下に入り、そのため、該大部分の勾配値は、m桁の固定小数点数フォーマットで表す場合、すべてゼロになる。
【0026】
勾配値を増幅すれば、勾配値がより多くのm桁の固定小数点数フォーマットの表現可能範囲を占めるようになり、それによって未増幅時に最小表現可能値下方にあるためゼロになった勾配値が残る。削減後の深層神経ネットワークの勾配値を一定の倍数だけ増幅することによって、削減後の深層神経ネットワークの処理精度を未削減の深層神経ネットワークの処理精度にほぼマッチングさせることができる。
【0027】
勾配値をm桁の固定小数点数フォーマットの表現可能範囲まで増幅する方法は、まず、所定の増幅因子によって以下の等式(2)に示されているように損失項を増幅し、それによって連鎖律の逆方向伝播によりすべての勾配値が確実に同一の量だけ増幅されるようにする。
【0028】
(ω)=L(ω)×S……(2)
式中、L(ω)は、深層神経ネットワークの損失項であり、Sは、増幅因子であり、L(ω)は、増幅後の損失項である。
【0029】
その後、加重およびバイアスが更新される前に、以下の等式(3)に示されているように、勾配値を縮小して、加重およびバイアスの更新幅をn桁の固定小数点数訓練におけるのと同様に保持する。ちょうど逆方向伝播が終わった後、かつ勾配カット前にまたはその他いかなる勾配関連計算の前に該縮小を実行し、それによって確実に超パラメータ(勾配カット閾値、加重減衰など)を調節する必要がないようにする。
【0030】
(ω)=G(ω)/S……(3)
式中、G(ω)は、逆方向伝播において計算した勾配値であり、Sは、増幅因子であり、G(ω)は、縮小後の勾配値である。
【0031】
増幅因子Sは、一定の増幅因子として設定されてもよい。経験に基づいて一定の増幅因子を設定してもよく、または勾配値に関する統計が存在する場合、増幅因子を、最大絶対勾配値との積がm桁の固定小数点数フォーマットの表現可能な最大値以下になるように設定してもよい。大きな増幅因子を設定してもマイナスの影響はなく、設定する増幅因子が、逆方向伝播においてオーバーフローを引き起こしさえしなければよい。オーバーフローによって、勾配値が無限大または非数値になれば、これによって更新後に不可避的に加重を損なうことになる。例えば、勾配値を縮小する際に、計算した勾配値をチェックすることによって、オーバーフローを有効に検出することができる。また、オーバーフローを検出した場合、加重およびバイアスの更新をスキップし、簡単に次回の反復を継続することができる。このほか、増幅因子Sの設定は、上記方式に限定されず、本分野当業者なら、実際の使用に応じて、適した増幅因子を設定することができる。
【0032】
以上では、勾配降下法を用いて損失項極値を求解する際の、削減後の深層神経ネットワークの未収束または損失項減衰もしくは消失の成因およびそれを補う措置を例示的に説明したが、方法はこれに限定されず、本分野当業者なら、損失項極値求解のさまざまな方法に応じて、さまざまな措置を講じて、削減後の深層神経ネットワークの未収束または損失項減衰もしくは消失を防ぐことができる。
【0033】
続いて図2を参照されたい。本発明好適実施形態に基づく深層学習加速の方法200は、初期訓練ステップS220をさらに含む。該ステップS220において、初期化後の深層神経ネットワークに対して所定のラウンド数に達するまで初期訓練を行う。該好適実施形態においては、ステップS230において、初期訓練後の深層神経ネットワークに対して削減を実行する。
【0034】
初期訓練ステップS220を実行することによって、加重およびバイアスをランダムに設定された深層神経ネットワークによって一定程度収束させることができ、それによってその後、該適度に収束した深層神経ネットワーク上で、削減ステップS230および訓練ステップS240を実行する場合、深層神経ネットワークが発散するのを一定程度防ぐことができ、深層神経ネットワークの収束を加速することができる。
【0035】
初期訓練過程において、データがオーバーフローした場合、データのサイズに応じてデータの固定小数点数フォーマットを自動調整してもよい。自動調整データの固定小数点数フォーマットの処理は、上記図3に関する記述を参照し、ここではこれ以上くどくどとは述べない。
【0036】
また、初期訓練過程において、前方伝播および逆方向伝播過程において小数部分が異なるデータに対して演算を行うことになることがある。このとき、演算を行う前に、データに対してデータ精度変換を行う必要がある。具体的には、前方伝播過程において、前層i中の出力データDoutを次層i+1に入力して演算を行う前に、上記等式(1)により、次層i+1中のデータDi+1に対してデータ精度変換を行って、出力データDoutのデータ精度をマッチングする必要がある。前方伝播におけるデータ精度変換によって、データ間の精度はすでに互いにマッチングされているため、逆方向伝播においては、それ以上精度変換を実行する必要がない。固定小数点データ精度変換の操作は、すでに本分野当業者が熟知するところであり、ここではこれ以上くどくどとは述べない。
【0037】
以上では図1図4を参照しながら、本発明実施形態に基づく深層神経ネットワークに対する訓練を加速する方法を詳細に記述した。上記方法により訓練した深層神経ネットワークは、同様に推理過程においても処理を加速し、ハードウェアリソースおよびエネルギー消費を節約し、処理時間を短縮することができる。以下では、図5を参照しながら、深層学習加速機器の構造を記述する。
【0038】
図5は、本発明実施形態に基づく深層学習加速機器の構造ブロック図を示している。図5に示されているように、深層学習加速機器500は、深層神経ネットワークの加重およびバイアスをランダムにn桁の固定小数点数に初期化するように構成された初期化装置510と、深層神経ネットワーク中の計算量が所定の第1の閾値を上回る層中のデータをm桁の固定小数点数に削減し、ここでm<nであり、かつその他の層中のデータをn桁の固定小数点数に保持するように構成された削減装置530と、削減後の深層神経ネットワークに対して収束するまで訓練を行うように構成された訓練装置540と、を含む。
【0039】
また、初期化装置はさらに、データが帰属する前記深層神経ネットワーク中のパラメータのタイプに応じて、データに、対応する固定小数点数フォーマットを設定するように構成される。ここで、パラメータの数値が大きいほど、固定小数点数フォーマット中の小数部分の桁数は少なくなる。
【0040】
また、訓練装置540はさらに、小数部分の桁数が異なるデータ間で演算を行う前に、データの小数部分の桁数の差に応じて、データに対してデータ精度変換を行うように構成される。
【0041】
好ましくは、本発明実施形態に基づく深層学習加速機器500は、初期化後の深層神経ネットワークに対して所定のラウンド数に達するまで初期訓練を行うように構成された初期訓練装置520をさらに含み、ここで、削減装置530は、初期練後の深層神経ネットワークに対して削減を実行する。
【0042】
また、初期訓練装置520および訓練装置540はさらに、データがオーバーフローした場合、該データのサイズに応じて、該データの固定小数点数フォーマットを自動調整するように構成される。具体的には、データがオーバーフローした場合、初期訓練装置520および訓練装置540は、以下のように操作される。
【0043】
i)該データが現行の固定小数点数フォーマットが表現可能な範囲を超えているかどうかを判定する。
【0044】
ii)該データが現行の固定小数点数フォーマットが表現可能な範囲を超えたと判定した場合、現行の固定小数点数フォーマットの整数部分の桁数を1増加し、かつ小数部分を1減少することによって固定小数点数フォーマットを更新する。
【0045】
iii)上記操作i)およびii)を、該データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて該データを表示するか、または更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値を下回るまで繰り返し実行する。
【0046】
iv)更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値を下回った場合、小数部分の桁数を増加し、それによってmの値を増加する。
【0047】
v)上記操作i)~iv)を、該データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて該データを表示する。
【0048】
以上では図5を参照しながら、深層学習加速機器の構造および操作を簡単に記述した。該機器およびその内部の部品の詳細な操作に関しては、上記深層学習加速の方法に関する記述を参照することができる。ここではこれ以上くどくどとは述べない。
【0049】
またここで、上記システム中の各構成部品は、ソフトウェア、ファームウェア、ハードウェアまたはそれらの組合せの方式によって構成されてもよいことも指摘しておく必要がある。構成に使用することができる具体的な手段または方式は、本分野当業者が熟知するところであり、ここではこれ以上くどくどとは述べない。ソフトウェアまたはファームウェアによって実現される場合、記憶媒体またはネットワークから専用ハードウェア構造を有するコンピュータ(例えば、図6に示された汎用コンピュータ600)に該ソフトウェアを構成するプログラムをインストールし、該コンピュータに各種プログラムがインストールされれば、各種機能などを実行することができる。
【0050】
図6は、本発明実施例に基づく方法およびシステムを実施するために用いることができるコンピュータの概略的ブロック図を示している。
【0051】
図6において、中央処理ユニット(CPU)601は、リードオンリーメモリ(ROM)602中に格納されたプログラムまたはストレージ部608からランダムアクセスメモリ(RAM)603にロードされたプログラムに基づいて各種処理を実行する。RAM603中には、さらに必要に応じてCPU601が各種処理などを実行する際に必要なデータを格納する。CPU601、ROM602およびRAM603は、バス604を経由して互いに接続される。入力/出力ポート605もバス604に接続される。
【0052】
入力部606(キーボード、マウスなどを含む)、出力部(陰極線管(CRT)、液晶ディスプレイ(LCD)などのディスプレイ、およびスピーカなどを含む)、ストレージ部608(ハードディスクなどを含む)、通信部609(LANカード、モデムなどのネットワークインターフェースカードを含む)といった部品は、入力/出力ポート605に接続される。通信部609は、インターネットなどのネットワークを経由して通信処理を実行する。必要に応じて、ドライブ610も入力/出力ポート605に接続されてもよい。磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどの取り外し可能媒体611は、必要に応じて、ドライブ610上に取り付けられ、中から読み出されたコンピュータプログラムを必要に応じてストレージ部608中にインストールしても良い。
【0053】
ソフトウェアによって上記一連の処理を実現する場合、インターネットなどのネットワークまたは取り外し可能媒体611などの記憶媒体からソフトウェアを構成するプログラムをインストールする。
【0054】
本分野当業者は、このような記憶媒体が、図6に示された機器と分離して配布されてユーザにプログラム提供するプログラムを中に格納した取り外し可能媒体611に限定されないことを理解しておかなければならない。取り外し可能媒体611の例には、磁気ディスク(フロッピーディスク(登録商標)を含む)、光ディスク(CD-ROMおよびDVDを含む)、光磁気ディスク(ミニディスク(MD)(登録商標)を含む)および半導体メモリが含まれる。あるいは記憶媒体は、ROM602、ストレージ部608中に含まれるハードディスクなどであり、中にプログラムを格納し、それらを含む機器とともにユーザに配布されてもよい。
【0055】
本発明は、機械読取可能なコマンドコードを格納したプログラム製品をさらに提供する。前記コマンドコードは、機械が読み取り、実行する場合、上記本発明実施形態に基づく方法を実行することができる。
【0056】
それに対応して、上記機械読取可能なコマンドコードを格納したプログラム製品を搭載するための記憶媒体も、本発明の範囲内に含まれる。前記記憶媒体は、フロッピーディスク、光ディスク、光磁気ディスク、メモリカード、メモリスティックなどを含むがそれらに限定されない。
【0057】
本発明の方法は、明細書中に記述した時間的順序により実行するものに限定されず、その他の手順で順に、並行してまたは独立して実行してもよいことに注意しなければならない。このため、本明細書中に記述した方法の実行順序は、本発明の技術範囲に対する制限を構成するものではない。
【0058】
以上の本発明各実施形態についての記述は、本発明をよりよく理解するためのものであり、例示的なものにすぎず、本発明を制限することを意図したものではない。以上の記述において、1つの実施形態についての記述しかつ/または示した特徴は、同一または類似の形で、1つまたはそれ以上のその他の実施形態において使用し、その他の実施形態中の特徴と組合せ、またはその他の実施形態中の特徴に取って代わることができることに注意しなければならない。本分野当業者なら、本発明の発明構想から逸脱せずに、上で記述した実施形態について行った各種変化および修正は、すべて本発明の範囲内に属することを理解することができる。
【0059】
上記をまとめれば、本発明に基づく実施例において、本発明は以下のような技術手段を提供した。
【0060】
手段1.深層神経ネットワークの加重およびバイアスをランダムにn桁の固定小数点数に初期化するステップと、
前記深層神経ネットワーク中の計算量が所定の第1の閾値を上回る層中のデータをm桁の固定小数点数に削減し、ここで、mおよびnは整数であり、かつm<nであり、かつその他の層中のデータをn桁の固定小数点数に保持するステップと、
削減後の深層神経ネットワークに対して収束するまで訓練を行うステップと、を含む深層学習加速の方法。
【0061】
手段2.初期化後の深層神経ネットワークに対して所定のラウンド数に達するまで初期訓練を行うステップをさらに含み、
ここで、前記削減は、初期訓練後の深層神経ネットワークに対して実行する、手段1に記載の方法。
【0062】
手段3.前記初期訓練および前記訓練において、データがオーバーフローした場合、前記データのサイズに応じて、前記データの固定小数点数フォーマットを自動調整する、手段2に記載の方法。
【0063】
手段4.データがオーバーフローした場合、前記データの固定小数点数フォーマットを自動調整するステップは、
i)前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えているかどうかを判定するステップと、
ii)前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えたと判定した場合、現行の固定小数点数フォーマットの整数部分の桁数を1増加し、かつ小数部分の桁数を1減少することによって、固定小数点数フォーマットを更新するステップと、
iii)上記操作1)およびii)を、前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示し、または、更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値を下回るまで繰り返し実行するステップと、
iv)更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値を下回った場合、小数部分の桁数を増加し、それによってmの値を増加するステップと、
v)上記操作i)~iv)を、前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示するステップと、を含む、手段3に記載の方法。
【0064】
手段5.前記訓練中に、逆方向伝播において勾配降下法を用いて前方伝播において計算した損失項の極値を求解する、手段1~4のうちいずれか1項に記載の方法。
【0065】
手段6.逆方向伝播において、まず所定比率により前記損失項を増幅し、その後、加重およびバイアスを更新する前に、前記所定比率により勾配を縮小する、手段5に記載の方法。
【0066】
手段7.前記訓練において、小数部分の桁数が異なるデータ間で演算を行う前に、データの小数部分の桁数の差に応じて、データに対してデータ精度変換を行う、手段1~4のうちいずれか1項に記載の方法。
【0067】
手段8.前記初期化において、前記データが帰属する前記深層神経ネットワーク中のパラメータのタイプに応じて、前記データに、対応する固定小数点数フォーマットを設定する、手段1~4のうちいずれか1項に記載の方法。
【0068】
手段9.パラメータの値が大きいほど、固定小数点数フォーマット中の小数部分の桁数が少なくなる、手段8に記載の方法。
【0069】
手段10.深層神経ネットワークの加重およびバイアスをランダムにn桁の固定小数点数に初期化するように構成された初期化装置と、
前記深層神経ネットワーク中の計算量が所定の第1の閾値を上回る層中のデータをm桁の固定小数点数に削減し、ここで、mおよびnは整数であり、かつm<nであり、かつその他の層中のデータをn桁の固定小数点数に保持するように構成された削減装置と、
削減後の深層神経ネットワークに対して収束するまで訓練を行うように構成された訓練装置と、を含む、深層学習加速機器。
【0070】
手段11.初期化後の深層神経ネットワークに対して、所定ラウンド数に達するまで初期訓練を行うように構成された初期訓練装置をさらに含み、
ここで、前記削減装置は、初期訓練後の深層神経ネットワークに対して削減を行う、手段10に記載の機器。
【0071】
手段12.前記初期訓練装置および前記訓練装置は、データがオーバーフローした場合、前記データのサイズに応じて前記データの固定小数点数フォーマットを自動調整する、手段11に記載の機器。
【0072】
手段13.データがオーバーフローした場合、前記データの固定小数点数フォーマットを自動調整するステップに、
i)前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えているかどうかを判定するステップと、
ii)前記データが現行の固定小数点数フォーマットが表現可能な範囲を超えたと判定した場合、現行の固定小数点数フォーマットの整数部分の桁数を1増加し、かつ小数部分の桁数を1減少することによって、固定小数点数フォーマットを更新するステップと、
iii)上記操作i)およびii)を、前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示し、または、更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値を下回るまで繰り返し実行するステップと、
iv)更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値を下回った場合、小数部分の桁数を増加し、それによってmの値を増加するステップと、
v)上記操作i)~iv)を,前記データが更新後の固定小数点数フォーマットが表現可能な範囲を超えず、かつ更新後の固定小数点数フォーマットの小数部分の桁数が所定の第2の閾値以上になるまで繰り返し実行し、このとき、更新後の固定小数点数フォーマットを用いて前記データを表示するステップと、を含む、手段12に記載の機器。
【0073】
手段14.前記訓練装置はさらに、逆方向伝播において勾配降下法を用いて前方伝播中で計算した損失項の極値を求解するように構成された、手段10~13のうちいずれか1項に記載の機器。
【0074】
手段15.前記訓練装置はさらに、逆方向伝播において、まず所定比率により前記損失項を増幅し、その後、加重およびバイアスを更新する前に、前記所定比率により勾配を縮小するように構成された、手段14に記載の機器。
【0075】
手段16.前記訓練装置はさらに、小数部分の桁数が異なるデータ間で演算を実行する前に、データの小数部分の桁数の差に応じて、データに対してデータ精度変換を行うように構成された、手段10~13のうちいずれか1項に記載の機器。
【0076】
手段17.前記初期化装置はさらに、前記データが帰属する前記深層神経ネットワークのパラメータのタイプに応じて、前記データに、対応する固定小数点数フォーマットを設定する、手段10~13のうちいずれか1項に記載の機器。
【0077】
手段18.パラメータの値が大きいほど、固定小数点数フォーマット中の小数部分の桁数が少なくなる、手段17に記載の機器。
【0078】
手段19.前記深層神経ネットワークより処理するデータを受信する入力層と、
前記深層神経ネットワークが処理した結果を出力する出力層と、
前記入力層と前記出力層との間にカップリングされ、前記深層神経ネットワークが実現しようとする機能に応じて設計された複数の隠れ層と
を含み、
ここで、前記深層神経ネットワークは、手段1~8のうちいずれか1項に記載の方法により訓練を行う、深層神経ネットワーク。
図1
図2
図3
図4
図5
図6