JP7342544B2 - 学習プログラムおよび学習方法 - Google Patents

学習プログラムおよび学習方法 Download PDF

Info

Publication number
JP7342544B2
JP7342544B2 JP2019164006A JP2019164006A JP7342544B2 JP 7342544 B2 JP7342544 B2 JP 7342544B2 JP 2019164006 A JP2019164006 A JP 2019164006A JP 2019164006 A JP2019164006 A JP 2019164006A JP 7342544 B2 JP7342544 B2 JP 7342544B2
Authority
JP
Japan
Prior art keywords
learning
calculation
node
statistical information
information
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
JP2019164006A
Other languages
English (en)
Other versions
JP2021043601A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019164006A priority Critical patent/JP7342544B2/ja
Priority to EP20187391.6A priority patent/EP3792837A1/en
Priority to US16/942,821 priority patent/US11676054B2/en
Priority to CN202010818106.8A priority patent/CN112465105B/zh
Publication of JP2021043601A publication Critical patent/JP2021043601A/ja
Application granted granted Critical
Publication of JP7342544B2 publication Critical patent/JP7342544B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/02Computing arrangements based on specific mathematical models using fuzzy logic
    • G06N7/06Simulation on general purpose computers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Neurology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Machine Translation (AREA)
  • Complex Calculations (AREA)

Description

本発明は、学習プログラムおよび学習方法に関する。
近年、機械学習を高速に行う技術のひとつとして、演算精度の最適化技術が注目されている。機械学習の演算には一般的に32ビット(bit)の浮動小数点が用いられるが、機械学習を用いた問題解決において、より少ないビットでも十分なケースが多々存在する。より少ないビット数で演算することにより、計算の高速化、電力性能の向上、メモリリソースの節約などの恩恵が受けられる。
現在、多くの企業が演算精度の最適化技術の開発や応用に取り組んでおり、例えばGPU(Graphics Processing Unit)上で8ビットまたは16ビットの浮動小数点を用いて、より少ないビット数で演算を行う技術が知られている。また、テンソル演算に特化したプロセッサであるTPU(Tensor Processing Unit)により、8ビット整数を用いた推論を行う技術も知られている。
このような背景の中、学習の段階に合わせて固定小数点を変動させ、最適な精度で演算を行うプロセッサが提案されている。このプロセッサは、機械学習の中でも深層学習に特化した設計となっており、深層学習の学習が進むにつれて、「演算する数値のイテレーション(iteration)間の変動が小さくなる性質」と「テンソルが持つ値の分布が狭くなる性質」を利用した演算精度の最適化を行う。
イテレーション間の数値の変動やテンソルが持つ値の分散の大きい学習前半(以下では、「事前学習」と記載する場合がある)では、従来の32ビット浮動小数点を用いて学習を行い、分散が小さくなる中盤から後半(以下では、「本学習」と記載する場合がある)では、小数点位置が可変である8ビット固定小数点(以下では、「DLINT」と記載する場合がある)を用いて学習を行う。このとき、固定小数点の小数点位置を必要に応じて調整することによって、8ビットでも十分な精度を実現する。ここで、小数点位置を調整するために、あらかじめ入力テンソルや出力テンソルのデータ分布に関する情報(以下では、「統計情報」と記載する場合がある)を知る必要があるが、実際の出力の統計情報は演算するまで分からない。このため、現在のイテレーションの小数点位置の代わりに、それより前のイテレーションの対応する演算の出力の統計情報を用いて学習を行う技術が知られている。
特開2017-156941号公報 特開2019-32833号公報 特開2019-79535号公報
ところで、上記技術では、前のイテレーションの情報を現在のイテレーションで用いるためには、演算に使われた各テンソルの統計情報をメモリ上に記憶し、演算時にデータベースから対応する統計情報を参照する必要がある。ここで、前のイテレーションの統計情報を参照するためには、現在の実行対象である演算の出力に対応する統計情報を参照する必要がある。しかし、機械学習対象のモデルに対応する計算グラフが、学習時に動的に変化する場合、計算グラフが変化してテンソルが辿る演算経路が変わってもそれ以降の演算ノードで検知できず、変化前と同じ統計情報を参照してしまう。この結果、間違った小数点位置で演算が行われることになり、学習が成立せず、学習精度が低下する。
一つの側面では、固定小数点の位置を正しく調整して学習精度の低下を抑制することができる学習プログラムおよび学習方法を提供することを目的とする。
第1の案では、学習プログラムは、コンピュータに、複数のノードを有する深層学習の対象である計算モデルの学習時に、前記学習時よりも前の各学習の段階でテンソルが辿った演算経路を示す経路情報と、前記演算経路で使用された小数点の位置に関する統計情報とが対応付けられた記憶部を参照する処理を実行させる。学習プログラムは、コンピュータに、前記学習時において前記複数のノードそれぞれに設定される各演算処理を実行する場合に、前記複数のノードそれぞれに至る前記経路情報に対応する前記統計情報を取得する処理を実行させる。学習プログラムは、コンピュータに、取得された前記統計情報により特定される小数点の位置を用いて、前記各演算処理を実行する処理を実行させる。
一実施形態によれば、固定小数点の位置を正しく調整して学習精度の低下を抑制することができる。
図1は、実施例1にかかる情報処理装置を説明する図である。 図2は、実施例1にかかるユーザの利用シーンの流れを示すフローチャートである。 図3は、実施例1にかかる情報処理装置の機能構成を示す機能ブロック図である。 図4は、統計情報の一例を示す図である。 図5は、各ノードにおけるハッシュ値の生成を説明する図である。 図6は、各ノードにおける演算を説明する図である。 図7は、実施例1にかかる学習処理の全体的な流れを示すフローチャートである。 図8は、実施例1にかかるノード内で実行される処理の基本的な流れを示すフローチャートである。 図9は、実施例1にかかる各ノードで実行される処理の流れを示すフローチャートである。 図10は、実施例1にかかる各ノードにおける演算処理の流れを示すフローチャートである。 図11は、実施例1にかかる各ノードの詳細な処理の流れを示すフローチャートである。 図12は、効果を説明する図である。 図13は、実施例2にかかる計算グラフを説明する図である。 図14は、実施例2にかかるユーザの利用シーンの流れを示すフローチャートである。 図15は、実施例2にかかるノード内で実行される処理の基本的な流れを示すフローチャートである。 図16は、実施例2にかかる統計情報の更新処理の流れを示すフローチャートである。 図17は、実施例3にかかる動的な計算グラフに対する統計情報の管理を説明する図である。 図18は、実施例3にかかる静的な計算グラフに対する統計情報の管理を説明する図である。 図19は、実施例3の統計情報(経路)を用いた演算処理の具体例を説明する図である。 図20は、実施例3の統計情報(イテレーション)を用いた演算処理の具体例を説明する図である。 図21は、実施例3の統計情報(異常)を用いた演算処理の具体例を説明する図である。 図22は、ハードウェア構成例を示す図である。
以下に、本願の開示する学習プログラムおよび学習方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
[情報処理装置の説明]
実施例1にかかる情報処理装置10は、深層学習などの機能を提供する機械学習フレームワークを用いて、機械学習のモデル構築を実行するコンピュータの一例である。機械学習のモデルで使用される計算モデル(ニューラルネットワーク)の構築には、「Define and Run(静的な計算グラフ)」と「Define by Run(動的な計算グラフ)」の2つの手法が利用される。
「Define and Run」は、計算グラフの定義が演算と独立して行われるので、フレームワークが演算のフェーズに入ると計算グラフの構造が変化することはない。一方、「Define by Run」は、学習のたびに、計算モデルの定義と演算が実行され、計算モデルが動的に変化する。いずれの手法であっても、学習前半(事前学習)は、イテレーション間の数値の変動やテンソルが持つ値の分散の大きいので、32ビット浮動小数点を用いて学習を行い、学習後半(本学習)では、小数点位置が可変である8ビット固定小数点(DLINT)を用いて学習を行うことで、演算処理の最適化を実現する。
実施例1では、学習後半において小数点位置の特定が煩雑で調整することがより難しい「Define by Run(動的な計算グラフ)」を例にして説明する。図1は、実施例1にかかる情報処理装置10を説明する図である。図1に示すように、情報処理装置10は、ユーザが解きたい問題の入力を受け付けると、解を導出するための計算モデルを定義し、その計算モデルの学習を行うことで、問題の解を導出する。
図1に示す計算モデルの例は、イテレーション=iとイテレーション=i+1によってグラフの構造が変わる構造を示している。一般的に、「計算グラフ構造情報」により特定できる各ノードに対応付けて統計情報を管理し、計算グラフの各ノードにおいて演算を行う場合に、現在のイテレーションの小数点位置の代わりに、それより前のイテレーションの対応する演算の出力の統計情報を用いて学習を行う。
ここで、「Define and Run」では、計算グラフの構造が変わらないので、どのイテレーションであっても、それより前のイテレーションにおける該当ノードで使用された統計情報を正確に取得して演算を実行することができる。しかし、「Define by Run」では、学習段階で計算グラフの構造が随時変わるので、以前のイテレーションの該当ノードを特定することができない。例えば、図1のレイヤ(Layer)1の場合、すべてのテンソルがイテレーション=iとイテレーション=i+1で同じ経路を通っているので、同じ統計情報を参照する。一方、レイヤ2とレイヤ3は、イテレーション=iとイテレーション=i+1で異なる経路を通るので、異なる統計情報を参照する必要があるが、イテレーション=i+1のレイヤ2からイテレーション=iのレイヤ2を参照しても、ノードの配置が異なっており、統計情報を取得することができない。
そこで、実施例1にかかる情報処理装置10では、「計算グラフ構造情報」から統計情報を参照するためのキーを生成するのではなく、「テンソルが辿った演算経路」から統計情報を参照するキーを生成する。具体的には、情報処理装置10は、入出力テンソルのハッシュ値等で計算モデルが定義できる仕組みを生成し、「テンソルが辿った演算経路」を考慮しなくても演算ができる仕組みを実現する。すなわち、情報処理装置10は、学習の段階ごとに、演算結果のビット分布の統計情報を取得し、テンソルが辿った演算経路をもとに動的にキーを生成して、統計情報を管理する。
例えば、情報処理装置10は、各ノードにおいて、流れてくる入力テンソルが持つキーから入力の統計情報を取得し、そのキーと演算の内容からハッシュ関数を用いてハッシュ値(経路ハッシュ値)を計算し、そのハッシュ値と統計情報とを対応付けて管理する。このようにすることで、グラフ構造に関係なく、経路や演算種類により特定されるハッシュ値に基づき統計情報を参照することができるので、現イテレーションより前のイテレーションの統計情報を正確に取得でき、固定小数点の位置を正しく調整して学習精度の低下を抑制することができる。
(利用シーン)
次に、ユーザが情報処理装置10を利用して計算モデルを学習する際のフローを説明する。図2は、実施例1にかかるユーザの利用シーンの流れを示すフローチャートである。図2に示すように、ユーザが解きたい問題に関する情報を情報処理装置10に入力すると(S101)、情報処理装置10は、一般的な機械学習アルゴリズムを用いて、入力された情報から計算グラフおよび演算経路を決定する(S102)。
続いて、情報処理装置10は、各ノードにおいて演算処理を実行する(S103からS104)。具体的には、情報処理装置10は、入力テンソルの情報を用いて、該ノードに設定される演算処理を実行するとともにハッシュ値を生成し、演算結果およびハッシュ値を出力テンソルとして次のノードに出力する。
その後、情報処理装置10は、学習が完了して計算モデルの構造が確定すると、ユーザが理解できる解の形に変換して(S105)、ユーザが解きたい問題の解をディスプレイ、記憶部、ユーザ端末等に出力する(S106)。このように、ユーザは、計算モデルの構造等を意識して統計情報の参照等を定義することがないので、従来と変わらない負担で、従来よりも正確な解を取得することができる。
[機能構成]
図3は、実施例1にかかる情報処理装置10の機能構成を示す機能ブロック図である。図3に示すように、情報処理装置10は、学習データ記憶部11、深層学習フレームワーク実行部20、深層学習専用演算部30を有する。
学習データ記憶部11は、学習モデルに対応する計算モデルの学習に利用される学習データ(訓練データ)を記憶するデータベース等である。例えば、学習データ記憶部11は、教師ラベルなどの正解情報と、計算モデルに入力されるデータとを対応付けた学習データを記憶する。なお、学習データは、ユーザが解きたい問題や学習内容により任意に設定することができる。また、学習データ記憶部11は、ハードディスクなどに記憶される。
深層学習フレームワーク実行部20は、ディープラーニングなどの深層学習などの各種機能を提供する処理部である。例えば、深層学習フレームワーク実行部20は、ユーザの入力に応じて計算モデルを構築して学習し、学習に応じた計算モデルの構造の動的変更などを含む深層学習を実行して、ユーザが解きたい問題の解の生成する処理部である。
この深層学習フレームワーク実行部20は、統計情報DB21、学習データ読込部22、実行状態制御部23、演算部24、データベース管理部25を有する。なお、深層学習フレームワーク実行部20は、CPU(Central Processing Unit)などのプロセッサなどにより実行される処理部であり、CPUが有する電子回路の一例やCPUが実行するプロセスの一例である。
統計情報DB21は、テンソルが持つデータの分布範囲の情報であり、DLINT演算を行う際の有効桁数を決定するために用いられる情報である。図4は、統計情報の一例を示す図である。図4に示すように、統計情報DB21は、「Key」と「統計情報格納アドレス」とが対応付けられた情報を記憶するデータベースであり、メモリなどに記憶される。ここで、「Key」は、入力テンソルの情報等を用いて生成されるハッシュ値であり、テンソルが辿った演算経路を特定する情報である。「統計情報格納アドレス」は、統計情報が格納されるメモリ等の位置を示す情報である。図4では、「hash1」で特定される演算経路に該当する統計情報がメモリの「0x00000001」に格納されていることを示す。なお、「統計情報格納アドレス」ではなく、統計情報そのものを格納することもできる。
学習データ読込部22は、学習データ記憶部11から学習データを読み込んで、各種処理部に出力する処理部である。例えば、学習データ読込部22は、学習が終了するまで、学習データを読み込み、実行状態制御部23に出力する。学習を終了するタイミングは、すべての学習データを用いた学習が完了した時点、所定数以上の学習データを用いた学習が完了した時点や復元誤差が閾値未満となった時点など、任意に設定することができる。
実行状態制御部23は、データ読込制御部23a、アクセスキー生成部23b、演算指示部23cを有し、計算モデルや計算モデルに含まれる各ノードの実行状態を制御する処理部である。例えば、実行状態制御部23は、学習データに対する計算モデルの演算結果に応じた計算モデルの構造(ノードの配置、演算内容)の動的変更などを実行する。
データ読込制御部23aは、各種データの読み込みを実行する処理部である。例えば、データ読込制御部23aは、学習データ読込部22により取得された学習データを計算モデルに入力する。また、データ読込制御部23aは、計算モデルを構成する各計算ノード(以下では単にノードと記載する場合がある)に対応するキーを生成するための各種情報として、例えば入力テンソルのキー(ハッシュ値)、計算ノードの演算種類や演算パラメータなどを取得してアクセスキー生成部23b等に出力する。また、データ読込制御部23aは、計算ノードの演算種類や演算パラメータなどを取得して、演算指示部23cに出力する。
アクセスキー生成部23bは、統計情報の取得等に利用するキーを生成する処理部である。例えば、アクセスキー生成部23bは、データ読込制御部23aにより取得された入力テンソルのキー(ハッシュ値)、計算ノードの演算種類や演算パラメータなどを用いて、計算ノードのキー(ハッシュ値)を算出する。そして、アクセスキー生成部23bは、算出されたキーを演算指示部23cやデータベース管理部25に出力する。
演算指示部23cは、計算ノードが実行する演算に利用する情報を出力する処理部である。例えば、演算指示部23cは、データ読込制御部23aから通知された計算ノードの演算種類や演算パラメータと、アクセスキー生成部23bから出力されたキーとを、演算部24に出力する。
演算部24は、機械学習のための演算の前処理や、それに係わるメモリ制御などを実行する処理部である。例えば、演算部24は、学習前半の事前学習の場合、計算ノードの演算種類や演算パラメータを深層学習専用演算部30に出力して、32ビット浮動小数点による演算(FLOAT演算)を要求する。
また、演算部24は、学習後半の本学習の場合、アクセスキー生成部23bから取得したキーに対応する統計情報格納アドレスを統計情報12から取得し、取得した統計情報格納アドレスに記憶される統計情報をメモリから取得する。そして、演算部24は、統計情報にしたがって演算の小数点位置を特定する。その後、演算部24は、計算ノードの演算種類や演算パラメータと小数点位置とを深層学習専用演算部30に出力して、DLINT演算を要求する。なお、学習前半か学習後半かの判断は、学習が開始されたからの時間や学習回数が閾値を越えたか否か、復元誤差が閾値未満となった時点など、任意に設定することができる。
データベース管理部25は、アクセスキー存在判定部25aとデータベース更新部25bを有し、統計情報DB21の管理を行う処理部である。
アクセスキー存在判定部25aは、アクセスキー生成部23bにより生成されたキーが統計情報DB21に登録されているか否かを判定する処理部である。例えば、アクセスキー存在判定部25aは、キーが登録されている場合、キーに対応する統計情報格納アドレスを取得して、実行状態制御部23や演算部24に出力する。この場合、統計情報により特定される小数点位置でDLINT演算が実行される。
一方、アクセスキー存在判定部25aは、キーが登録されていない場合、統計情報格納アドレスが存在しないことを実行状態制御部23や演算部24に出力する。この場合、FLOAT演算が実行される。
データベース更新部25bは、統計情報DB21の更新管理を行う処理部である。例えば、データベース更新部25bは、新たにキーが生成された場合、統計情報が格納される統計情報格納アドレスとキーとを対応付けて、統計情報DB21に新規登録する。また、データベース更新部25bは、登録済みのキーに対応する統計情報が読み出された場合、読み出された統計情報を用いた演算完了後に、統計情報DB21を演算後の統計情報を用いて更新する。
深層学習専用演算部30は、計算ノードの各種演算を実行する処理部である。例えば、深層学習専用演算部30は、事前学習が指示された場合、通知された計算ノードの演算種類や演算パラメータを用いて、32ビット浮動小数点による演算(FLOAT演算)を実行し、演算結果を深層学習フレームワーク実行部20に出力する。
また、深層学習専用演算部30は、本学習が指示された場合、通知された計算ノードの演算種類や演算パラメータを用いて、通知された小数点位置を用いたDLINT演算を実行し、演算結果を深層学習フレームワーク実行部20に出力する。なお、深層学習専用演算部30は、ディープラーニング専用AI(Artificial Intelligence)プロセッサ(DLU)などにより実行される処理部であり、DLUが有する電子回路の一例やDLUが実行するプロセスの一例である。
[ノードにおける処理]
次に、各ノードの演算時に実行される処理について説明する。ここでは、ハッシュ値の生成、ノードにおける演算について説明する。
(ハッシュ値の生成)
図5は、各ノードにおけるハッシュ値の生成を説明する図である。図5では、ノードCについて統計情報とキーの対応付けを生成する例を説明する。ノードC(Add_1)では、関数f、変数をIn1、In2、add、scaleを変数とする関数fが実行されて、「scale・(In1+In2)」が出力される。
図5に示すように、深層学習フレームワーク実行部20は、ノードAからノードCに入力される入力テンソルに含まれるハッシュ値In1(0xFF22ABAA)と、ノードBからノードCに入力される入力テンソルに含まれるハッシュ値In2(0xFAF34702)とを取得する。また、深層学習フレームワーク実行部20は、ノードCの演算種類(add)と演算パラメータ(scale=1)を取得する。
そして、深層学習フレームワーク実行部20は、ハッシュ値In1(0xFF22ABAA)とハッシュ値In2(0xFAF34702)と演算種類(add)と演算パラメータ(scale=1)とを入力してハッシュ関数に入力して、ハッシュ値(0xDA320011)を算出する。
その後、深層学習フレームワーク実行部20は、算出されたハッシュ値(0xDA320011)をキーにして統計情報を取得して、演算処理を実行する。また、深層学習フレームワーク実行部20は、算出されたハッシュ値(0xDA320011)に対応する統計情報を更新する。そして、深層学習フレームワーク実行部20は、算出されたハッシュ値(0xDA320011)を次のノードDに出力する。ここで得られるハッシュ値は、テンソルが辿る演算経路について一意であることから、演算経路で使用される統計情報と対応付けることで、イテレーション間を跨っても、同じ演算経路のノードには同じ統計情報を参照させることができる。
(演算処理の説明)
図6は、各ノードにおける演算を説明する図である。図6に示す横軸は、計算グラフの演算方向を示し、縦軸は、イテレーション方向を示す。図6では、各ノードにおいて、入力テンソルの情報から出力テンソルで利用するQ値を取得してDLINT演算が行われる一連の流れを説明する。なお、Q値は、統計情報から求まる値であり、DLINT演算の小数点位置の決定に利用される。
図6に示すように、イテレーション=tでは、ノードA、ノードB、ノードCの順で演算が行われる計算グラフが生成されている。ノードAでは、算出されたキー(ハッシュ値)を用いて、1つ前のイテレーションで生成された統計情報C t-1を取得し、統計情報から得られるQ t-1を用いてDLINT演算が行われ、統計情報C t-1が統計情報C に更新される。次に、ノードBでは、算出されたキーを用いて、2つ前のイテレーションで生成された統計情報Ca→b t-2を取得し、統計情報から得られるQa→b t-2を用いてDLINT演算が行われ、統計情報Ca→b t-2が統計情報Ca→b に更新される。また、ノードCでは、算出されたキーを用いて、1つ前のイテレーションで生成された統計情報Ca→b→c t-1を取得し、統計情報から得られるQa→b→c t-1を用いてDLINT演算が行われ、統計情報Ca→b→c t-1が統計情報Ca→b→c に更新される。
次のイテレーション=t+1では、ノードA、ノードCの順で演算が行われる計算グラフが生成されている。なお、イテレーション=t+1のノードCは、ノードAを経由する演算経路であることから、イテレーション=tのノードCとは異なる演算経路で実行されるノードである。ノードAでは、算出されたキーを用いて、1つ前のイテレーションで生成された統計情報C を取得し、統計情報から得られるQ を用いてDLINT演算が行われ、統計情報C が統計情報C t+1に更新される。また、ノードCでは、算出されたキーを用いて、グラフ構造が異なる1つ前のイテレーションではなく、グラフ構造が同じである2つ前のイテレーションで生成された統計情報Ca→c t-1を取得し、統計情報から得られるQa→c t-1を用いて演算が行われ、統計情報Ca→c t-1が統計情報Ca→c t+1に更新される。
なお、次のイテレーション=t+2では、2つ前のイテレーション=tと同じノードA、ノードB、ノードCの順で演算が行われる計算グラフが生成されているので、各ノードでは、ハッシュ値に用いて2つ前のイテレーション=tで使用された統計情報を用いたDLINT演算が実行される。ただし、ノードAについては、1つ前のイテレーション=t+1と同様に計算グラフの先頭に位置するので、2つ前のイテレーション=tではなく、1つ前のイテレーション=t+1で使用された統計情報の取得が行われる。
[処理の流れ]
次に、情報処理装置10が実行する各処理について説明する。まず、全体的な流れを説明した後に、詳細な流れを説明する。図7は、実施例1にかかる学習処理の全体的な流れを示すフローチャートである。
図7に示すように、情報処理装置10は、管理者等により処理が指示されると(S201:Yes)、ユーザが指定する解きたい問題に対応する計算モデルを生成する(S202)。なお、計算モデルの生成手法は、一般的な深層学習フレームワークと同様の手法を採用することができる。
続いて、情報処理装置10は、事前学習を実行して計算グラフ(学習モデル)の学習を実行し(S203)、学習の前半が終了するまで(S204:No)、事前学習を繰り返す。
一方、情報処理装置10は、学習の前半が終了すると(S204:Yes)、本学習(DLINT)を実行して計算グラフの学習を実行し(S205)、学習が終了すると、学習結果を出力する(S206)。
(ノード内の基本的な流れ)
図8は、実施例1にかかるノード内で実行される処理の基本的な流れを示すフローチャートである。図8に示すように、深層学習フレームワーク実行部20は、該当ノードに設定されている演算内容の決定や演算種類の取得などを行う演算定義を取得する(S301)。
続いて、深層学習フレームワーク実行部20は、入力テンソルのハッシュ値を取得し(S302)、演算種類や入力テンソルのハッシュ値等に基づいて出力テンソルのハッシュ値を生成する(S303)。
そして、深層学習フレームワーク実行部20は、出力テンソルのハッシュ値に基づいて、統計情報DB21から該当する統計情報を取得し(S304)、演算を実行する(S305)。このとき、深層学習フレームワーク実行部20は、事前学習のタイミングの場合は、32ビット浮動小数点を用いて学習を実行し、本学習のタイミングの場合は、統計情報にしたがって小数点位置でDLINT演算による学習を実行する。
その後、深層学習フレームワーク実行部20は、統計情報を更新し(S306)、出力テンソルに上記で生成した出力テンソル用のハッシュ値を付与して出力する(S307)。
(各ノードの処理)
図9は、実施例1にかかる各ノードで実行される処理の流れを示すフローチャートである。図9に示すように、深層学習フレームワーク実行部20は、計算グラフを読み込むと(S401)、処理対象のノードに設定される演算の種類や演算パラメータを取得する(S402)。
続いて、深層学習フレームワーク実行部20は、処理対象のノードが入力を待つノードに該当する場合(S403:Yes)、入力テンソルのハッシュ値を取得し(S404)、入力テンソルのハッシュ値、演算種類、演算パラメータに基づいて、出力テンソルのハッシュ値を生成する(S405)。
一方、深層学習フレームワーク実行部20は、処理対象のノードが入力を待つノードに該当しない場合(S403:No)、ノード名を取得し(S406)、ノード名、演算種類、演算パラメータに基づいて、出力テンソルのハッシュ値を生成する(S407)。
その後、深層学習フレームワーク実行部20は、上記出力テンソル用のハッシュ値を用いて統計情報DB21にアクセスし(S408)、当該ハッシュ値が登録されているか否かを判定する(S409)。
そして、深層学習フレームワーク実行部20は、ハッシュ値が登録されている場合(S409:Yes)、ハッシュ値をキーとして統計情報を取得し(S410)、取得された統計情報に基づく小数点位置による固定小数点を用いて本学習を実行する(S411)。
一方、深層学習フレームワーク実行部20は、ハッシュ値が登録されていない場合(S409:No)、浮動小数点を用いて事前学習を実行する(S412)。なお、ハッシュ値が登録されている場合であっても、学習前半では、FLOAT演算による事前学習を実行することができる。
(演算処理)
図10は、実施例1にかかる各ノードにおける演算処理の流れを示すフローチャートである。図10に示すように、深層学習フレームワーク実行部20は、入力テンソルのキーと演算の種類や演算パラメータなどからハッシュ値を生成する(S501)。そして、深層学習フレームワーク実行部20は、ハッシュ値をキーとする統計情報が統計情報DB21に登録されているか否かを判定する(S502)。
ここで、深層学習フレームワーク実行部20は、統計情報が登録されていない場合(S502:No)、処理のデータ型が固定小数点か否かを判定する(S503)。そして、深層学習フレームワーク実行部20は、処理のデータ型が固定小数点である場合(S503:Yes)、データ型を浮動小数点に変換する(S504)。
その後、深層学習フレームワーク実行部20は、浮動小数点による演算を実行し(S505)、ハッシュ値と統計情報を対応付けて、統計情報DB21への登録または更新する(S506)。
一方、深層学習フレームワーク実行部20は、統計情報が登録されている場合(S502:Yes)、入力テンソルの統計情報を取得し(S507)、出力テンソルの統計情報を統計情報DB21から取得する(S508)。
そして、深層学習フレームワーク実行部20は、メモリ制御などの統計情報を用いた機械学習の一般的な前処理を実行し(S509)、固定小数点による演算を実行する(S510)。その後、深層学習フレームワーク実行部20は、統計情報DB21においてキーに対応する統計情報を更新する(S511)。その後、深層学習フレームワーク実行部20は、出力テンソルにハッシュ値を付与する(S512)。
(ノードの詳細処理)
図11は、実施例1にかかる各ノードの詳細な処理の流れを示すフローチャートである。ここでは、DLINT演算を行う本学習について説明する。図11に示すように、「Define by Run」による定義情報から、演算種別、演算パラメータ、初期ハッシュ値を取得し、これらを用いてハッシュ値が生成される。
そして、先頭のノードにおいて、生成されたハッシュ値と学習データが入力テンソルとして入力され、該ノードの演算種別および演算パラメータと、入力テンソルとに基づき、新たなハッシュ値が生成される。続いて、生成されたハッシュ値に対応する統計情報が取得され、固定小数点位置が決定される。その後、該ノードの演算種別および演算パラメータと、入力テンソルと、固定小数点位置とに基づいたDLINT演算が実行され、演算結果とハッシュ値とを含む出力テンソルが次のノードに出力される。
先頭のノード以降では、前のノードの出力テンソルが入力テンソルとして入力され、該ノードの演算種別および演算パラメータと、入力テンソルとに基づき、新たなハッシュ値が生成される。続いて、生成されたハッシュ値に対応する統計情報が取得され、固定小数点位置が決定される。その後、該ノードの演算種別および演算パラメータと、入力テンソルと、固定小数点位置とに基づいたDLINT演算が実行され、演算結果とハッシュ値とを含む出力テンソルが次のノードに出力される。
このようにして、各ノードでは、入力テンソルや演算内容に基づいたハッシュ値が生成され、生成されたハッシュ値と統計情報とを対応付けた管理が実行される。
[効果]
一般的に、グラフが動的に変化する場合、過去に一度も実行されたことのないノードであれば該当する統計情報が存在せず参照できない。一方で、情報処理装置10は、各ノードで実行される演算をイテレーション間で正しく対応付けを行うことで適切な統計情報を参照し、固定小数点の位置を調整することができる。また、情報処理装置10は、計算グラフやノードが変化した場合においても、正しく統計情報を参照し、計算グラフが動的に変わらない場合と同様に学習を行うことができる。
このように、情報処理装置10は、「テンソルが辿った演算経路」をもとに、動的にキーを生成して、統計情報のデータベースを参照することで、本学習中に計算グラフやノードが変化した場合でも、過去のイテレーションから対応する統計情報を見つけ出すことができ、DLINT演算を成立させることができる。
図12は、効果を説明する図である。図12に示すように、事前学習、本学習を順次行うことで、学習が進み、誤差が徐々に小さくなっていく。ここで、一般的な技術では、本学習において、演算経路が変わったことにより、テンソルが持つ値が大きく変わった場合に、その変化を検知できない。このため、一般的な技術では、間違った統計情報を参照した場合、小数点位置を誤って設定してしまう。例えば、8ビット固定小数点では、符号ビットを除く7ビット間で最大2の7乗=128倍のエラーが生じてしまい、学習が破綻してしまう。
一方、実施例1にかかる情報処理装置10は、計算グラフの変化によってテンソルの辿ってきた経路が変化した場合に、演算時にそれを検知することが可能となり、過去の同じ経路を辿ったときの統計情報を参照することができるので、学習を成立させることができ、学習精度の低下を抑制することができる。
ところで、実施例1では、「Define by Run」で生成される計算グラフを例にして説明したが、これに限定されるものではなく、「Define and Run」で生成される計算モデルについても適応することができる。そこで、実施例2では、「Define and Run」を例にして説明する。
[実施例2にかかる計算グラフ]
「Define and Run」は、計算グラフの定義が演算と独立して行われるので、フレームワークが演算のフェーズに入ると計算グラフの構造が変化することはない。この場合は、統計情報を保存するデータベースへのアクセスキーとして演算の構造情報を用いる。つまり、実施例2では、各演算をどの計算グラフ上のどのノードの何番目の演算なのかを厳密に構造化し、その構造の情報から一意なキーを生成して統計情報と紐づけることで参照を可能とする。
図13は、実施例2にかかる計算グラフを説明する図である。図13には、計算グラフの1つとして、Input1とInput2とが入力され、Input1とInput2とを加算(add)して出力する構造であるグラフ1(Graph1)を示す。ここで、統計情報を管理するデータベースのキーは、演算の出力テンソルを指定して作成されているので、結果として入力テンソルのキーは、前のノードで作成されている。そして、出力テンソルの統計情報は、構造情報からキーを生成する。これらのキーを用いて、データベースから前イテレーションの統計情報を取得する。
例えば、実施例2では、構造情報として、演算をしているグラフ名とノード名を用いる。図13に示すように、Graph(グラフ)1のノード「Input1」に対して、キーとして「グラフ名/ノード名=Graph1/Input1」を生成し、統計情報の格納アドレスとして「0x00000000」を割与える。また、Graph1のノード「Input2」に対して、キーとして「Graph1/Input2」を生成し、統計情報の格納アドレスとして「0x00000001」を割与える。同様に、Graph1のノード「Add」に対して、キー「Graph1/Add」を生成し、統計情報の格納アドレスとして「0x00000002」を割与え、Graph1のノード「Output」に対して、キー「Graph1/Output」を生成し、統計情報の格納アドレスとして「0x00000003」を割与える。
このように、各ノードにキーを付与し、各ノードの統計情報を管理するデータベースを生成する。このようなデータベースの構築は事前学習中に行われ、本学習では、構築されたデータベースを基に統計情報を参照し、演算を行うたびに統計情報が更新される。
(利用シーン)
次に、ユーザが実施例2にかかる計算モデルを学習する際のフローを説明する。図14は、実施例2にかかるユーザの利用シーンの流れを示すフローチャートである。図14に示すように、ユーザが解きたい問題に関する情報を情報処理装置10に入力すると(S601)、情報処理装置10は、一般的な機械学習アルゴリズムによる「Define and Run」に基づき、入力された情報から計算グラフおよび演算経路を決定する(S602)。
続いて、情報処理装置10は、各ノードにおいて演算処理を実行する(S603からS604)。具体的には、各ノードでは、入力テンソルから統計情報の取得が実行され、統計情報を用いて該ノードに設定される演算処理が実行され、演算結果を含む出力テンソルが次のノードに出力される。このとき、演算結果とともに統計情報も出力することができる。
なお、事前学習では、ノードの演算ごとに、キーが生成されて統計情報と対応付けてDBに登録される。また、本学習では、ノードの演算ごとに、生成されたキーに対応する統計情報が読み出されて演算が実行されてDBが更新される。
その後、情報処理装置10は、学習が完了して計算モデルの構造が確定すると、ユーザが理解できる解の形に変換して(S605)、ユーザが解きたい問題の解をディスプレイ、記憶部、ユーザ端末等に出力する(S606)。
[処理の流れ]
図15は、実施例2にかかるノード内で実行される処理の基本的な流れを示すフローチャートである。図15に示すように、情報処理装置10の深層学習フレームワーク実行部20は、処理が開始されると、入力テンソルから統計情報を取得し(S701)、グラフ名やノード名などの計算グラフの構造情報を取得する(S702)。
続いて、深層学習フレームワーク実行部20は、出力テンソルに対して構造情報からキーを生成し(S703)、出力テンソルのキーに基づいて統計情報を統計情報DB21から取得する(S704)。
そして、深層学習フレームワーク実行部20は、取得された統計情報を用いて、固定小数点の演算処理を実行し(S705)、統計情報DB21の統計情報を更新する(S706)。その後、深層学習フレームワーク実行部20は、出力テンソルに上記出力テンソル用の統計情報を付与して出力する(S707)。
図16は、実施例2にかかる統計情報の更新処理の流れを示すフローチャートである。図16に示すように、深層学習フレームワーク実行部20は、グラフ名やノード名などの計算グラフの構造情報を取得し(S801)、グラフ名とノード名に基づいて出力テンソルのキーを生成する(S802)。その後、深層学習フレームワーク実行部20は、生成されたキーと、統計情報の格納アドレスとをセットで統計情報DB21に保存する(S803)。
[効果]
一般的に、計算グラフの規模が大きくなった場合に、過去のイテレーションの演算と現在のイテレーションの演算を対応付けて管理することが困難になる。一方で、実施例2にかかる情報処理装置10は、統計情報を管理するデータベースを構築することによって、イテレーションを跨いで演算を対応付け統計情報を参照することができる。したがって、実施例2にかかる情報処理装置10は、メモリ容量の削減を行いつつ、精度の高い学習を実現することができる。
ところで、実施例1では、「Define by Run」で生成される計算グラフを例にして説明したが、グラフが動的に変化する場合、グラフ内の変化した部分において、事前学習が不十分な可能性があり、演算する数値の変動が小さくなるとは限らない。そこで、実施例3では、事前学習と本学習を経路ごとに管理することで、統計情報が存在しない場合や統計情報の信頼性が低い場合においても、計算グラフ内の浮動小数点で演算する範囲を必要最小限に抑える例を説明する。
[Define by Run]
図17は、実施例3にかかる動的な計算グラフに対する統計情報の管理を説明する図である。図17に示すように、イテレーション=2499における計算グラフは、Input1、Input2、Add、Outputのノードで構成される。具体的には、ノード「Add」は、ノード「Input1」とノード「Input2」とから入力された入力テンソルに対して演算(Add)を実行し、ノード「Output」に出力する。ここで、ノード「Input1」ではハッシュ値「hash1」が生成され、ノード「Input2」ではハッシュ値「hash2」が生成される。ノード「Add」では、ノード「Input1」のハッシュ値「hash1」とノード「Input2」のハッシュ値「hash2」とを用いて、ハッシュ値「hash3」が生成される。ノード「Output」では、ノード「Add」のハッシュ値「hash3」を用いて、ハッシュ値「hash4」が生成される。
また、次のイテレーション=2500における計算グラフは、Input1、Input2、Mul、Outputのノードで構成される。具体的には、ノード「Add」は、ノード「Input1」とノード「Input2」とから入力された入力テンソルに対して演算(Mul)を実行し、ノード「Output」に出力する。ここで、ノード「Input1」ではハッシュ値「hash1」が生成され、ノード「Input2」ではハッシュ値「hash2」が生成される。ノード「Mul」では、ノード「Input1」のハッシュ値「hash1」とノード「Input2」のハッシュ値「hash2」とを用いて、ハッシュ値「hash5」が生成される。ノード「Output」では、ノード「Mul」のハッシュ値「hash5」を用いて、ハッシュ値「hash6」が生成される。
すなわち、イテレーション=2499の計算グラフと、イテレーション=2500のグラフとでは、ノードの数が同じではあるが、演算経路が異なっている。具体的には、ノード「Add」とノード「Mul」とは、入力ノードは同じであるものの、演算内容が異なる。このため、イテレーション=2499のノード「Output」とイテレーション=2500のノード「Output」では、演算経路が異なる。
このような動的な計算グラフの学習において、実施例3では、統計情報DB21にハッシュ値とセットで実行状態を保存する。実行状態には、例えば「経路を通った回数」や「統計情報を最後に更新したiteration」を登録する。「経路を通った回数」は、事前学習と本学習を経路ごとに区別するために用いる。十分に演算が繰り返された経路は値の変動も小さくなっていると考えられるので、閾値を設定し、通った回数が閾値を上回った経路から本学習へと遷移する。
統計情報DB21上の「統計情報を最後に更新したiteration」は、本学習に遷移した経路において、しばらくの間通らなかった経路を検知するために用いる。このような経路では本学習が進む間に、データベースの統計情報が妥当なものでなくなってしまっている可能性があるので、「統計情報を最後に更新したiteration」が現在のiterationから閾値以上離れている場合、新規の経路の場合と同様に浮動小数点に変換してFLOAT演算を行い、その結果を用いて統計情報を更新する。
このように、グラフ上の事前学習が不十分だったり統計情報が古くて信頼できなかったりする場合は、その経路についてのみ浮動小数点で演算することで、必要最小限の影響範囲で事前学習が不十分な状態でのDLINT演算を避けることができる。
図17の例で、「経路を通った回数」が閾値(1300)以上の場合にはDLINT演算を実行し、それ以外の場合はFLOAT演算を実行することとすると、イテレーション=2499のノード「Add」とノード「Output」では、DLINT演算が実行され、イテレーション=2500のノード「Mul」とノード「Output」では、FLOAT演算が実行される。つまり、各ノード「Output」について、ノード「Add」を通ったルートとノード「Mul」を通ったルートで統計情報を分けることができる。また、データベースは演算経路ごとに実行状態を持つため、演算経路ごとにDLINT演算と浮動小数点演算を使い分けることができる。なお、この方法は「Define and Run」の静的な計算グラフにも適応できる。ただし、ハッシュ関数生成をする際に演算コストがかかるので、グラフが動的に変化しない場合には「構造情報によるアクセスキー生成」を用いる方が好ましい。
[Define and Run]
Define and Runで構築された計算グラフでも演算に用いるパラメータや入力テンソルによってノード内の計算が変わる場合が存在する。このとき、ノード内においてもノード外と同様に「経路によるキー」を生成することによって、適切な統計情報を参照することができる。
図18は、実施例3にかかる静的な計算グラフに対する統計情報の管理を説明する図である。図18は、ノード内で条件分岐によって異なる演算が行われる例である。Core演算a,b,c,dはそれぞれ統計情報を必要とする演算である。このとき、dの演算では、a→b→dと演算が行われた場合とa→c→dと演算が行われた場合とで、統計情報が変わる可能性があるので、統計情報DBのエントリを分ける必要がある。ここで、演算経路に依存したキーを生成することで、これらのエントリを分けることができる。
例えば、イテレーション=2499のノードdは、ノードbのハッシュ値「hash4」を用いて生成したハッシュ値「hash5」により統計情報を管理し、イテレーション=2500のノードdは、ノードcのハッシュ値「hash6」を用いて生成したハッシュ値「hash7」により統計情報を管理する。
図18の例において、「経路を通った回数」が閾値(1300)以上の場合にはDLINT演算を実行し、それ以外の場合はFLOAT演算を実行することとする。すると、イテレーション=2499のノード「Output(hash4)」では、経路を通った回数が1500回であることから、DLINT演算が実行され、イテレーション=2500のノード「Output(hash6)」では、経路を通った回数が1000回であることから、FLOAT演算が実行される。つまり、ノード内であっても、演算ルートにより統計情報を分けることができる。
[具体例]
次に、図19から図21を用いて、実行状態に基づき演算方式の判定の具体例を説明する。図19から図21の例は、いずれもノードA、ノードB、ノードC、ノードDから構成され、ノードDには、ノードA→ノードB→ノードDの演算経路と、ノードA→ノードC→ノードDの演算経路とが存在する。
図19は、実施例3の統計情報(経路)を用いた演算処理の具体例を説明する図である。図19に示すように、ノードAからノードBへの経路を通った回数が2000回、ノードAからノードCへの経路を通った回数が2000回、ノードBからノードDへの経路を通った回数が500回、ノードCからノードDへの経路を通った回数が2000回であるとする。この場合に閾値を「1000回」とすると、ノードBでは、ノードAからDLINT演算の結果が入力されるが、出力テンソルはFLOAT(浮動小数点)で出力される。このため、ノードBでは、ノードAからの入力テンソルに対して、キャストによるデータ型の変換を実行して、データ型を固定小数点型から浮動小数点型に変換する。そして、ノードBは、FLOAT演算を実行して出力する。
上述したように、ノードBでは、FLOAT演算が実行され、ノードCでは、DLINT演算が実行される。そして、ノードDでは、ノードCから固定小数点型、ノードBから浮動小数点型の入力テンソルが入力される。この場合、ノードDでは、ノードBの演算結果がまだ十分ではなく信頼性も高くないことから、ノードCからの入力テンソルに対して、キャストによるデータ型の変換を実行する。そして、ノードDでは、ノードCからの入力とノードBからの入力を用いて、FLOAT演算を実行して出力する。
図20は、実施例3の統計情報(イテレーション)を用いた演算処理の具体例を説明する図である。図20に示すように、ノードAの学習回数が12000回、ノードBの学習回数が10000回、ノードCの学習回数が12000回、ノードDの学習回数が12000回であるとする。この場合に閾値を「10000回」とすると、ノードBでは、ノードAからDLINT演算の結果が入力されるが、出力テンソルはFLOAT(浮動小数点)で出力される。このため、ノードBでは、ノードAからの入力テンソルに対して、キャストによるデータ型の変換を実行して、データ型を固定小数点型から浮動小数点型に変換する。そして、ノードBは、FLOAT演算を実行して出力する。
上述したように、ノードBでは、FLOAT演算が実行され、ノードCでは、DLINT演算が実行される。そして、ノードDでは、ノードCから固定小数点型、ノードBから浮動小数点型の入力テンソルが入力される。この場合、ノードDでは、図19と同様、ノードCからの入力テンソルに対してデータ型の変換を実行し、FLOAT演算を実行して出力する。
図21は、実施例3の統計情報(異常)を用いた演算処理の具体例を説明する図である。図21に示すように、図19や図20の手法によって、各ノードのデータ型がDLINTと判定される状態にあるとする。この場合に、ノードCについて、異常処理が発生したことを示すフラグが「異常」である場合、ノードDでは、ノードCの信頼性が低いと判定し、データ型の変換を実行し、ノードCからの入力とノードBからの入力を用いて、FLOAT演算を実行して出力する。
なお、異常発生から所定時間経過した場合、異常発生から所定回数以上の全体学習が実行された場合、または、異常発生したノードが異常発生から所定回数以上学習された場合などにより、異常発生から正常に復帰したと判定し、DLINT演算を実行することもできる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
[データ等]
上記実施例で用いたデータ例、数値例、表示例等は、あくまで一例であり、任意に変更することができる。また、ノードの数や種類も一例であり、任意に変更することができる。上記実施例で説明した各手法は、ニューラルネットワークを含む様々な深層学習に適用することができる。
[データ型]
例えば、実施例3で説明した各手法において、FLOATと判断されたノード以降のノードもFLOATと判定される。また、統計情報DB21に該当するハッシュ値がない場合は、その演算経路は過去に通ったことのない経路であり、参照すべき統計情報が存在しないことになる。その場合は、DLINT演算が不可能であるため、データ型を変換し、浮動小数点で演算を行う。演算後、テンソルが持つ値から統計情報を取得し、このノードで新たに発行したキーとペアでデータベースに登録する。このとき、これ以降の経路はすべて統計情報DB21に存在しない経路となるため、この経路上のこれ以降の計算は浮動小数点のまま計算を行うこととなる。
[ハッシュ値]
上述したハッシュ値の算出には、例えば計算ノードの名前、各入力テンソルのもつキー、演算に必要なパラメータのうち統計情報の影響を与えうるもの、出力テンソルのインデックスなどを用いることができる。なお、出力インデックスは、複数の出力をもつ演算の場合にこれらを区別するために用いる。
[システム]
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[ハードウェア]
次に、情報処理装置10のハードウェア構成例を説明する。図22は、ハードウェア構成例を示す図である。図22に示すように、情報処理装置10は、通信装置10a、HDD(Hard Disk Drive)10b、メモリ10c、プロセッサ10dを有する。また、図22に示した各部は、バス等で相互に接続される。
通信装置10aは、ネットワークインタフェースカードなどであり、他のサーバとの通信を行う。HDD10bは、図3に示した機能を動作させるプログラムやDBを記憶する。
プロセッサ10dは、図3に示した各処理部と同様の処理を実行するプログラムをHDD10b等から読み出してメモリ10cに展開することで、図3等で説明した各機能を実行するプロセスを動作させる。例えば、このプロセスは、情報処理装置10が有する各処理部と同様の機能を実行する。具体的には、プロセッサ10dは、深層学習フレームワーク実行部20、深層学習専用演算部30等と同様の機能を有するプログラムをHDD10b等から読み出す。そして、プロセッサ10dは、深層学習フレームワーク実行部20、深層学習専用演算部30等と同様の処理を実行するプロセスを実行する。
このように、情報処理装置10は、プログラムを読み出して実行することで学習方法を実行する情報処理装置として動作する。また、情報処理装置10は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理装置10によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。なお、深層学習フレームワーク実行部20を実行するプロセッサと、深層学習専用演算部30を実行するプロセッサの2つを配置することもできる。
10 情報処理装置
11 学習データ記憶部
20 深層学習フレームワーク実行部
21 統計情報DB
22 学習データ読込部
23 実行状態制御部
23a データ読込制御部
23b アクセスキー生成部
23c 演算指示部
24 演算部
25 データベース管理部
25a アクセスキー存在判定部
25b データベース更新部
30 深層学習専用演算部

Claims (7)

  1. コンピュータに、
    複数のノードを有する深層学習の対象である計算モデルの学習時に、前記学習時よりも前の各学習の段階でテンソルが辿った演算経路を示す経路情報と、前記演算経路で使用された小数点の位置に関する統計情報とが対応付けられた記憶部を参照し、
    前記学習時において前記複数のノードそれぞれに設定される各演算処理を実行する場合に、前記複数のノードそれぞれに至る前記経路情報に対応する前記統計情報を取得し、
    取得された前記統計情報により特定される小数点の位置を用いて、前記各演算処理を実行する
    処理を実行させることを特徴とする学習プログラム。
  2. 前記計算モデルが学習の段階で構造が変化する動的なモデルの場合、前記経路情報と前記統計情報とを対応付けて前記記憶部に格納し、前記計算モデルが学習の段階で構造が変化しない静的なモデルの場合、前記複数のノードを特定する各識別情報と前記統計情報とを対応付けて前記記憶部に格納する、処理を前記コンピュータに実行させ、
    前記取得する処理は、前記動的なモデルの学習時には前記経路情報の生成を実行し、前記静的なモデルの学習時には前記各識別情報の生成を実行する、ことを特徴とする請求項1に記載の学習プログラム。
  3. ノードに入力される入力テンソルに関する情報と、前記ノードで実行される演算処理に関する情報とを用いてハッシュ値を算出し、
    前記ノードで使用された前記統計情報を取得し、
    前記ハッシュ値と前記統計情報とを対応付けて、前記記憶部に格納する、処理を前記コンピュータに実行させ、
    前記取得する処理は、処理対象のノードに入力される入力テンソルと前記処理対象のノードで実行される前記演算処理に関する情報とを用いてハッシュ値を算出し、前記ハッシュ値に対応する前記統計情報を取得して、前記演算処理を実行することを特徴とする請求項1または2に記載の学習プログラム。
  4. 前記計算モデルの学習段階を判定する処理を前記コンピュータに実行させ、
    前記実行する処理は、前記計算モデルの学習段階が第一の段階では、浮動小数点演算を用いて、前記複数のノードそれぞれの各演算処理を実行し、前記計算モデルの学習段階が前記第一の段階よりも後半である第二段階では、各統計情報により特定される小数点位置を設定した固定小数点演算を用いて、前記複数のノードそれぞれの各演算処理を実行することを特徴とする請求項1から3のいずれか一つに記載の学習プログラム。
  5. 前記複数のノードそれぞれの実行状態を判定する処理を前記コンピュータに実行させ、
    前記実行する処理は、前記実行状態が所定の条件を満たさないノードについては、前記第二段階であっても前記固定小数点演算を抑制し、前記浮動小数点演算を用いて演算処理を実行することを特徴とする請求項4に記載の学習プログラム。
  6. 前記判定する処理は、前記実行状態として、前記学習時までに前記経路情報により特定される経路を通った回数、前記統計情報が最後の更新された最終更新時、または、前記演算処理の正否を判定し、
    前記実行する処理は、前記回数が閾値未満、現学習時と前記最終更新時との差が閾値以上、または、前記演算処理が異常状態の場合に、前記固定小数点演算を抑制し、前記浮動小数点演算を用いて演算処理を実行することを特徴とする請求項5に記載の学習プログラム。
  7. コンピュータが、
    複数のノードを有する深層学習の対象である計算モデルの学習時に、前記学習時よりも前の各学習の段階でテンソルが辿った演算経路を示す経路情報と、前記演算経路で使用された小数点の位置に関する統計情報とが対応付けられた記憶部を参照し、
    前記学習時において前記複数のノードそれぞれに設定される各演算処理を実行する場合に、前記複数のノードそれぞれに至る前記経路情報に対応する前記統計情報を取得し、
    取得された前記統計情報により特定される小数点の位置を用いて、前記各演算処理を実行する
    処理を実行することを特徴とする学習方法。
JP2019164006A 2019-09-09 2019-09-09 学習プログラムおよび学習方法 Active JP7342544B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019164006A JP7342544B2 (ja) 2019-09-09 2019-09-09 学習プログラムおよび学習方法
EP20187391.6A EP3792837A1 (en) 2019-09-09 2020-07-23 Learning program and learning method
US16/942,821 US11676054B2 (en) 2019-09-09 2020-07-30 Computer-readable recording medium recording learning program and learning method
CN202010818106.8A CN112465105B (zh) 2019-09-09 2020-08-14 记录学习程序的计算机可读记录介质以及学习方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019164006A JP7342544B2 (ja) 2019-09-09 2019-09-09 学習プログラムおよび学習方法

Publications (2)

Publication Number Publication Date
JP2021043601A JP2021043601A (ja) 2021-03-18
JP7342544B2 true JP7342544B2 (ja) 2023-09-12

Family

ID=71783895

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019164006A Active JP7342544B2 (ja) 2019-09-09 2019-09-09 学習プログラムおよび学習方法

Country Status (4)

Country Link
US (1) US11676054B2 (ja)
EP (1) EP3792837A1 (ja)
JP (1) JP7342544B2 (ja)
CN (1) CN112465105B (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210232969A1 (en) * 2018-12-24 2021-07-29 Intel Corporation Methods and apparatus to process a machine learning model in a multi-process web browser environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019057249A (ja) 2017-09-22 2019-04-11 富士通株式会社 演算処理装置および演算処理方法
US20190130255A1 (en) 2017-11-02 2019-05-02 Samsung Electronics Co., Ltd. Method and apparatus for generating fixed-point type neural network
JP2019148896A (ja) 2018-02-26 2019-09-05 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672041B2 (en) * 2013-08-01 2017-06-06 Andes Technology Corporation Method for compressing variable-length instructions including PC-relative instructions and processor for executing compressed instructions using an instruction table
CN106951425A (zh) * 2016-01-07 2017-07-14 阿里巴巴集团控股有限公司 一种映射方法和设备
JP6561877B2 (ja) 2016-03-01 2019-08-21 株式会社デンソー 演算処理装置
DE102018110687A1 (de) * 2017-05-05 2018-11-08 Intel Corporation Dynamisches Genauigkeitsmanagement für Deep-Learning-Ganzzahlprimitive
US10643297B2 (en) * 2017-05-05 2020-05-05 Intel Corporation Dynamic precision management for integer deep learning primitives
KR102601604B1 (ko) 2017-08-04 2023-11-13 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
KR20190044878A (ko) 2017-10-23 2019-05-02 삼성전자주식회사 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
US10445250B2 (en) * 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
CN109948242A (zh) * 2019-03-18 2019-06-28 西安电子科技大学 基于特征哈希的网络表示学习方法
CN110188209B (zh) * 2019-05-13 2021-06-04 山东大学 基于层次标签的跨模态哈希模型构建方法、搜索方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019057249A (ja) 2017-09-22 2019-04-11 富士通株式会社 演算処理装置および演算処理方法
US20190130255A1 (en) 2017-11-02 2019-05-02 Samsung Electronics Co., Ltd. Method and apparatus for generating fixed-point type neural network
JP2019148896A (ja) 2018-02-26 2019-09-05 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム

Also Published As

Publication number Publication date
US11676054B2 (en) 2023-06-13
CN112465105B (zh) 2024-06-14
US20210073666A1 (en) 2021-03-11
EP3792837A1 (en) 2021-03-17
CN112465105A (zh) 2021-03-09
JP2021043601A (ja) 2021-03-18

Similar Documents

Publication Publication Date Title
US20200257543A1 (en) Aggregate Features For Machine Learning
Shmulevich et al. Probabilistic Boolean networks: a rule-based uncertainty model for gene regulatory networks
Karmitsa et al. Limited memory bundle method for large bound constrained nonsmooth optimization: convergence analysis
Bien et al. Non-convex global minimization and false discovery rate control for the TREX
CN111985631B (zh) 信息处理设备、信息处理方法及计算机可读记录介质
JP7342544B2 (ja) 学習プログラムおよび学習方法
CN113408693A (zh) 识别图像的方法和设备
CN105404635B (zh) 字符串匹配的方法、设备和异构计算系统
Osorio et al. A BF16 FMA is all you need for DNN training
US20220076121A1 (en) Method and apparatus with neural architecture search based on hardware performance
CN111832693A (zh) 神经网络层运算、模型训练方法、装置及设备
JP2021170330A (ja) システムのローカルフィールド行列の更新
JP2022163431A (ja) 計算機システム及び予測プログラムの評価方法
Liu Optimal algorithms and the BFGS updating techniques for solving unconstrained nonlinear minimization problems
JP7339923B2 (ja) 材料の特性値を推定するシステム
JP2008129914A (ja) ソフトウェア検証用モデル生成装置、及びソフトウェア検証用モデル生成方法
Posthoff et al. The solution of SAT problems using ternary vectors and parallel processing
JP2023544560A (ja) 文字認識における制約条件を強制するためのシステムおよび方法
JPWO2013114911A1 (ja) リスク評価システム、リスク評価方法、及びプログラム
JP2022007311A (ja) 学習モデルからの情報漏洩リスクを評価するシステム
US11475371B2 (en) Learned model integration method, apparatus, program, IC chip, and system
CN116187458B (zh) 量子电路处理方法、装置及电子设备
Kim Efficient node proximity and node significance computations in graphs
JP7571719B2 (ja) 移行先api推定装置、移行先api推定方法及びプログラム
JP2022015275A (ja) 設定管理装置、設定管理方法、及び、設定管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220517

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230424

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230814

R150 Certificate of patent or registration of utility model

Ref document number: 7342544

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150