JP7255234B2 - 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム - Google Patents

情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム Download PDF

Info

Publication number
JP7255234B2
JP7255234B2 JP2019032730A JP2019032730A JP7255234B2 JP 7255234 B2 JP7255234 B2 JP 7255234B2 JP 2019032730 A JP2019032730 A JP 2019032730A JP 2019032730 A JP2019032730 A JP 2019032730A JP 7255234 B2 JP7255234 B2 JP 7255234B2
Authority
JP
Japan
Prior art keywords
calculation
ratio
data type
unit
bit
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
JP2019032730A
Other languages
English (en)
Other versions
JP2020135814A (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 JP2019032730A priority Critical patent/JP7255234B2/ja
Priority to EP20151930.3A priority patent/EP3702906B1/en
Priority to US16/744,240 priority patent/US11182156B2/en
Priority to CN202010093084.3A priority patent/CN111612123B/zh
Publication of JP2020135814A publication Critical patent/JP2020135814A/ja
Application granted granted Critical
Publication of JP7255234B2 publication Critical patent/JP7255234B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/491Computations with decimal numbers radix 12 or 20.
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

本発明は、情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムに関する。
近年、深層学習や機械学習が注目されてきたことで、学習で実行される演算を高速に処理できるプロセッサに注目が集まっている。以下では、深層学習や機械学習をまとめて学習と呼ぶ場合がある。学習に使用されるプロセッサの中でも特に注目されているのが、テンソル演算を並列に実行して演算を高速化できるGPU(Graphics Processing Unit)である。ただし、GPUは、3D(Dimension)グラフィクス処理を実行するために開発されたプロセッサであり、学習に最適化されていない。そのため、GPUは、学習を行う際に、処理の段階に関わらず32bitの浮動小数点数を用いた演算を行う。このことから、電力性能という指標で考えると、GPUは、学習に対して最適化の余地があるといえる。
このような状況の中で、様々な企業が、学習に最適化されたプロセッサの開発に取り組んでいる。学習の演算は主にテンソル演算であり、3Dグラフィック処理で行われるテンソル演算と変わりがない。ただし、深層学習や機械学習は、学習が進むにつれてテンソル演算で用いる演算要素の値のバラつきが小さくなるという特徴がある。このような学習で実行される演算の特殊な性質に着目し、各企業が、8bitの整数で推論演算を行うプロセッサや、16bitの浮動小数点数で学習演算するプロセッサが機械学習向けに発表した。これらのプロセッサは、演算精度を低くして演算を行うことで、電力性能を向上させることが目標である。
さらに、学習演算ループの前半のフェーズである事前学習では32bitの浮動小数点数で演算を行い、事前学習が完了した段階で、8bit整数での学習演算に切り替えるハードウェアも存在する。このハードウェアは、8bit整数を固定小数点数として扱い、その小数点位置を1イテレーション前の学習演算時の出力結果から決定する。イテレーションとは、繰り返し行われる学習におけるパラメータを決定する学習演算の1回のループにあたる。これにより、小数点位置を決定するための演算と小数点位置を決定した後の演算の2回の演算を行わずにすみ、演算回数が低減される。また、画像データを濃度データ又は2値化されたデータとして取り込み学習及び認識を行い、画像認識を高速化する従来技術がある。
特開平06-96048号公報 特開平08-36644号公報
しかしながら、深層学習や機械学習向けに開発されたプロセッサは、予め演算精度がハードウェアで決まっており、学習が進むにつれて演算に用いられる演算要素の値の変動が小さくなるという学習の特徴に対応することが困難である。そのため、深層学習や機械学習向けに開発されたプロセッサでは、学習効率を向上させることは困難である。
また、事前学習が完了した段階で32bitの浮動小数点数の演算から8bit整数での学習演算に切り替えるハードウェアは、学習中には演算を切替えないため、学習中の演算における演算要素の値の変動に対応することが困難である。そのため、このようなハードウェアを使用しても、学習効率を向上させることは困難である。また、画像データを濃度データ又は2値化されたデータとして取り込み学習及び認識を行う従来技術を用いても、学習中の演算における演算要素の値の変動に対応することが困難であり、学習効率が低下するおそれがある。
さらに、小数点位置が大きく変化する事前学習の予め決められた段階以降に8bitの固定小数点数を利用する場合、小数点位置が大きく変化することで学習が進まなくなるおそれがある。そこで、8bitの固定小数点数を用いた演算に切り替わるタイミングとして、学習停滞を回避するように学習演算ループの回数を使用者が試行錯誤して決定する方法が考えられる。しかし、適切な切り替えタイミングとなるように学習演算のループ回数を利用者が指定することは困難であり、機械学習の学習効率が低下するおそれがある。
開示の技術は、上記に鑑みてなされたものであって、深層学習や機械学習の学習効率を向上させる情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムを提供することを目的とする。
本願の開示する情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムの一つの態様において、演算部は、演算対象を用いて演算を実行し算出した演算結果を用いて前記演算を繰り返して機械学習を実行する。割合算出部は、前記演算結果に含まれる要素数のうち、前記要素数に基づいて決定される小数点位置により算出される所定ビットの固定小数点数として表現可能な範囲に含まれる割合を求める。演算制御部は、前記割合算出部により算出された前記割合を基に、前記所定ビットの固定小数点数を用いて前記演算部に前記演算を実行させる。
1つの側面では、本発明は、深層学習や機械学習の学習効率を向上させることができる。
図1は、情報処理装置のハードウェア構成図である。 図2は、学習の過程を説明するための図である。 図3は、実施例1に係る情報処理装置のブロック図である。 図4は、実施例1に係る演算データ型データベースの登録情報の一例の図である。 図5は、実施例1に係る表現可能割合データベースの登録情報の一例の図である。 図6は、実施例1に係る演算データ型の決定処理を説明するための図である。 図7は、実施例1に係る情報処理装置による演算データ型決定処理のシーケンス図である。 図8は、実施例1に係る演算データ型決定処理のフローチャートである。 図9は、2つの情報処理装置を用いた学習を表す図である。 図10は、実施例2に係る表現可能割合データベースの登録情報の一例の図である。 図11は、実施例2に係る演算データ型データベースの登録情報の一例の図である。 図12は、実施例2に係る演算データ型の決定処理を説明するための図である。 図13は、実施例2に係る演算データ型決定処理のフローチャートである。 図14は、実施例3に係る情報処理装置のブロック図である。 図15は、演算データ型の遷移を説明するための図である。 図16は、実施例3に係る情報処理装置による演算データ型決定処理のシーケンス図である。 図17は、実施例3に係る演算データ型決定処理のフローチャートである。
以下に、本願の開示する情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムが限定されるものではない。
図1は、情報処理装置のハードウェア構成図である。情報処理装置1は、深層学習を実行する。以下では、深層学習を実行する情報処理装置1について説明するが、機械学習を実行する情報処理装置であっても同様の機能を有する。情報処理装置1は、ノードと呼ばれる場合もある。図1に示すように、情報処理装置1は、CPU(Central Processing Unit)11、深層学習用プロセッサ12、メモリ13、ストレージ14及びネットワークインタフェース15を有する。
CPU11は、深層学習用プロセッサ12が行わない演算を実行する。例えば、CPU11は、システムプログラムの処理などを実行する。
深層学習用プロセッサ12は、深層学習の演算に特化したプロセッサである。深層学習用プロセッサ12は、CPU11と比較して、深層学習の演算を高速に実行することが可能である。
メモリ13は、揮発性メモリである。メモリ13は、ストレージ14から読み込んだ学習用のデータを、深層学習向けのプロセッサに読み込んで転送するまで一時的に保持する。
ストレージ14は、HDD(Hard Disk Drive)又はSSD(Solid State Drive)などの不揮発性メモリである。ストレージ14は、情報処理装置1において深層学習を実行する際に使用するデータが格納される。
ネットワークインタフェース15は、イーサネット(登録商標)やインフィニバンド(登録商標)を経由して他の情報処理装置1に接続するためのインタフェースである。ネットワークインタフェース15は、CPU11と他の情報処理装置1に搭載されたCPU11との間のデータの送受信の中継を行う。
情報処理装置1は、図2に示すように多層のニューラルネットワークを用いて深層学習を行う。図2は、学習の過程を説明するための図である。情報処理装置1は、各層における演算を繰り返すことで認識精度を高める。例えば、図2に示すように、各層のそれぞれで演算#1~#Nが行われる場合、情報処理装置1は、学習データを用いて演算#1~#Nを繰り返す。ここで、図2に示すように、繰り返しにおける演算#1~#Nまでを実行する1回の学習の期間2をイテレーションと呼ぶ。すなわち、情報処理装置1は、イテレーションを複数回繰り返すことで深層学習を完了する。
次に、図3を参照して、本実施例に係る情報処理装置1が有する深層学習の機能について説明する。図3は、実施例1に係る情報処理装置のブロック図である。
図3に示すように、情報処理装置1は、深層学習フレームワーク100及び学習データ記憶部200を有する。学習データ記憶部200は、例えば、図1に示すストレージ14により実現される。学習データ記憶部200は、深層学習で使用する複数の学習データが予め格納される。
深層学習フレームワーク100は、深層学習のアプリケーションを容易に作成するために開発されたソフトウェアライブラリ群である。深層学習フレームワーク100は、図1に示すCPU11、深層学習用プロセッサ12及びメモリ13で実現される。
深層学習フレームワーク100は、ユーザアプリケーション101、実行制御部102、演算部103、演算データ型判定部104、学習データ読込部105、演算データ型データベース106及び表現可能割合データベース107を有する。具体的には、ユーザアプリケーション101、実行制御部102、演算データ型104及び学習データ読込部105の機能が、CPU11により実現される。これに対して、演算部103の機能は、深層学習用プロセッサ12により実現される。また、演算データ型データベース106及び表現可能割合データベース107は、メモリ13に配置される。
ユーザアプリケーション101は、操作者が作成した深層学習のアプリケーションである。ユーザアプリケーション101は、深層学習の実行を実行制御部102に指示する。
演算データ型データベース106は、各層に含まれる各演算のそれぞれで32bit浮動小数点数又は8bit固定小数点数のいずれの演算データ型が用いられるかが登録されるデータベースである。図4は、実施例1に係る演算データ型データベースの登録情報の一例の図である。演算データ型データベース106は、図4に示すように、演算ID(Identification)に対応させてそれぞれの演算で用いる演算データ型を保持する。演算IDは、1回のイテレーション中に行う各演算に対して一意に設定された識別情報である。例えば、図4の状態であれば、演算#1では32bit浮動小数点数が用いられる。また、演算#2~#4では、8bit固定小数点数が用いられる。
表現可能割合データベース107は、各イテレーションでの演算結果に含まれるテンソル要素数おいて、所定の小数点位置を用いて8bit固定小数点数で表現可能なテンソル要素数の割合が登録されるデータベースである。ここで、テンソル要素数とは、各イテレーションにおいて各層で実行されるテンソル演算で用いられる演算対象に含まれる各要素の値である。演算対象とは、演算に用いられる数値や行列などの被演算子である。例えば、テンソル演算においてk×k行列が演算対象である場合、k×k行列に含まれるk×k個の行列要素の各々がテンソル要素数にあたる。
図5は、実施例1に係る表現可能割合データベースの登録情報の一例の図である。表現可能割合データベース107は、図5に示すように、イテレーションIDに対応させて演算ID及び割合が登録される。イテレーションIDは、深層学習の学習段階におけるイテレーション毎に一意に設定された識別子である。例えば、図5に示した表現可能割合データベース107では、イテレーションIDがit1のイテレーションにおける演算#1の演算結果に含まれる8bit固定小数点数を用いた場合の小数点位置から表現可能なテンソル要素数の割合は、20.6%である。以下では、8bit固定小数点数を用いた場合の小数点位置から表現可能なテンソル要素数の割合を「表現可能割合」という。
実行制御部102は、深層学習の処理を統括制御する。実行制御部102は、演算指示部121、演算データ型要求部122、データベース更新指示部123及びデータ読込制御部124を有する。
データベース更新指示部123は、ユーザアプリケーション101からの深層学習の実行指示の入力を受けると、演算データ型データベース106の初期化を演算データ型判定部104の演算データ型決定部141に指示する。また、データベース更新指示部123は、表現可能割合データベース107の初期化を演算データ型判定部104の演算データ型判定部104に指示する。
次に、データベース更新指示部123は、データベースの初期化完了の通知をデータ読込制御部124へ出力する。その後、データベース更新指示部123は、各イテレーションにおける各演算の終了毎に、演算結果を演算部103から取得する。そして、データベース更新指示部123は、取得した演算結果をデータベース更新部142へ出力し、表現可能割合データベース107の更新を指示する。
データ読込制御部124は、データベースの初期化完了の通知の入力をデータベース更新指示部123から受ける。さらに、データ読込制御部124は、学習に使用する学習データの取得要求を演算指示部121から受ける。そして、データ読込制御部124は、学習に使用する学習データの読み込みを学習データ読込部105に指示する。その後、データ読込制御部124は、学習に使用する学習データを学習データ読込部105から取得する。そして、データ読込制御部124は、取得した学習データを演算指示部121へ出力する。
その後、データ読込制御部124は、イテレーション終了毎に演算指示部121から学習データの取得要求を演算指示部121から受ける。そして、データ読込制御部124は、イテレーション毎に、学習データの読み込みを学習データ読込部105に指示して学習データを取得し、取得した学習データを演算指示部121へ出力する。
演算指示部121は、ユーザアプリケーション101から入力された深層学習の実行指示を取得する。そして、演算指示部121は、各イテレーションの開始時に以下の処理を行う。
演算指示部121は、学習に使用する学習データの取得要求をデータ読込制御部124へ出力する。そして、演算指示部121は、取得要求の応答として、学習データの入力をデータ読込制御部124から受ける。
次に、演算指示部121は、演算データ型の送信要求を演算データ型要求部122へ出力する。その後、演算指示部121は、送信要求の応答として次のイテレーションにおける各演算で使用されるそれぞれの演算データ型の入力を演算データ型要求部122から取得する。例えば、1回目のイテレーションでは、全ての演算において32bit浮動小数点数が用いられる。その後、演算指示部121は、学習データ及び各演算で使用されるそれぞれの演算データ型を演算部103へ出力し、さらに演算の実行を指示する。
その後、演算指示部121は、イテレーションの完了通知の入力を演算部103から受ける。そして、演算指示部121は、学習データ及び演算データ型を取得して演算を演算部103に実行させる処理を繰り返す。
演算指示部121は、深層学習が完了するまでイテレーション毎の各層における演算を演算部103に繰り返させる。ここで、演算指示部121は、予め決められた回数のイテレーションが終了した場合又は認識精度が9割を超えた場合などのように予め決められた条件を満たした場合に深層学習が完了したと判定する。認識精度は、所定回数のイテレーションが完了する毎に試験用データを用いて認識処理が行われることで取得される。
演算データ型要求部122は、演算データ型の送信要求の入力を演算指示部121から受ける。そして、演算データ型要求部122は、演算データ型決定部141に対して演算データ型の取得を要求する。その後、演算データ型要求部122は、次のイテレーションの各演算で使用する演算データ型の入力を演算データ型決定部141から受ける。そして、演算データ型要求部122は、取得した次のイテレーションの各演算で使用する演算データ型を演算指示部121へ出力する。
演算部103は、各イテレーションの開始時に、学習データの入力を演算指示部121から受ける。さらに、演算部103は、次のイテレーションにおける各演算で使用する演算データ型の入力を演算指示部121から受ける。1回目のイテレーションでは、演算部103は、各演算で使用する演算データ型として32bit浮動小数点数を用いる指示を演算指示部121から受ける。そして、演算部103は、学習データを入力として、各演算で32bit浮動小数点数を用いて各演算を行い1回目のイテレーションを終了する。その後、演算部103は、各演算の演算結果をデータベース更新指示部123へ出力する。また、演算部103は、イテレーションに含まれる演算が全て完了すると、イテレーションの完了通知を演算指示部121へ出力する。演算部103は、演算指示部121からの演算の実行指示が停止するまで演算処理を繰り返す。
演算データ型判定部104は、演算データ型決定部141及びデータベース更新部142を有する。
データベース更新部142は、表現可能割合データベース107の初期化の指示をデータベース更新指示部123から受ける。そして、データベース更新部142は、表現可能割合データベース107における登録情報を全て削除して初期化する。
その後、データベース更新部142は、イテレーションの完了毎に各演算における演算結果の入力をデータベース更新指示部123から受ける。そして、データベース更新部142は、各演算における演算結果に含まれる各テンソル要素数を表現するための適切な小数点位置を決定する。その後、データベース更新部142は、各演算における演算結果に含まれる各テンソル要素数のそれぞれについて、決定した小数点位置で8bit固定小数点数を用いた表現が可能か否かを判定する。この8ビット固定小数点数が、「所定ビットの固定小数点数」の一例にあたる。
次に、データベース更新部142は、各演算の演算結果における決定した小数点位置から8bit固定小数点数を用いて表現可能なテンソル要素数の割合を算出する。その後、データベース更新部142は、イテレーション毎に各演算における決定した小数点位置から8bit固定小数点数を用いて表現可能なテンソル要素数の割合である表現可能割合を表現可能割合データベース107に登録する。
ここで、データベース更新部142による表現可能割合の算出について詳細に説明する。小数点位置をQとした場合、Qは、次の数式(1)により決定される。
Figure 0007255234000001
xminは、テンソル要素数の最小値である。また、xmaxはテンソル要素数の最大値である。そして、ceil(X)は、Xを超える最小の整数を求める関数である。すなわち、テンソル要素数の最小値の絶対値と、テンソル要素数の最大値とでいずれか大きい方を2進数で表した場合の整数部分の桁のbit数と符号ビットの1bitとを8bitから減算した値により小数点位置Qが算出される。この場合、小数点位置Qにより表現可能な値の範囲Rは、-128×2-Q~127×2-Qとなる。
したがって、表現可能なテンソル要素数の割合Pは、テンソル要素数をNとすると次の数式(2)により算出される。
Figure 0007255234000002
すなわち、データベース更新部142は、数式(1)で求まる小数点位置Qの場合の範囲Rを用いて、数式(2)から各演算における表現可能割合を算出する。
演算データ型決定部141は、演算データ型データベース106の初期化の指示をデータベース更新指示部123から受ける。そして、演算データ型決定部141は、各演算で使用する演算データ型を32bit浮動小数点数として演算データ型データベース106に登録して初期化する。
その後、演算データ型決定部141は、各演算の演算データ型の送信の要求を演算データ型要求部122から受ける。次に、演算データ型決定部141は、演算データ型データベース106を確認して各演算の現在の演算データ型を取得する。そして、演算データ型決定部141は、既に8bit固定小数点数を演算データ型とした演算を特定する。演算データ型決定部141は、特定した既に8bit固定小数点数を演算データ型とした演算については8bit固定小数点数を演算データ型として演算データ型要求部122に通知する。
これに対して、32bit浮動小数点数を演算データ型とした演算について、演算データ型決定部141は、表現可能割合データベース107から最新のイテレーションから判定範囲内のイテレーションにおける表現可能割合を取得する。
例えば、図6を参照して、その時点でイテレーションが1504回終了した場合で説明する。図6は、実施例1に係る演算データ型の決定処理を説明するための図である。図6のテーブル170は、表現可能割合データベース107を分かり易いように並べ直したテーブルである。
例えば、判定範囲を4回のイテレーションとした場合、演算データ型決定部141は、図6における、使用範囲71~74内の表現可能割合を演算毎に取得する。ここでは、演算#1~#4のこの時点における演算データ型は、32bit浮動小数点数である。次に、演算データ型決定部141は、各演算の最新のイテレーションにおける表現可能割合が割合閾値を超えたか否かを判定する。例えば、割合閾値をTf1とした場合、演算データ型決定部141は、次の数式(3)を満たすか否かを判定する。
Figure 0007255234000003
ここで、最新のイテレーションにおける表現可能割合の割合閾値であるTf1は、例えば、80%~90%とすることができる。
閾値を超えていない場合にはその時点での状態では、8bit固定小数点数で表現すると適切な演算精度を維持することが困難であると考えられる。そこで、演算データ型決定部141は、その演算の演算データ型を32bit浮動小数点数と決定し、演算データ型要求部122に通知する。例えば、割合閾値を80%とした場合、図6においてイテレーションIDがit1504のイテレーションでの演算#1の表現可能割合は、46.5%であり、割合閾値以下である。そこで、演算データ型決定部141は、演算#1の演算データ型を32bit浮動小数点数と決定する。
これに対して、表現可能割合が閾値を超えた演算について、演算データ型決定部141は、判定範囲内での表現可能割合の変動が小さいか否かを判定する。具体的には、演算データ型決定部141は、次の数式(4)を用いて演算fについてのイテレーション間のゆらぎであるΔfを算出する。演算fについてこのイテレーション間のゆらぎΔfが、「割合の変動」の一例にあたる。
Figure 0007255234000004
ここで、iは、その時点で完了したイテレーション回数である。また、Iは、判定範囲である。そして、fは、i-Iからiまでのいずれかの整数を表す。また、Δfiは、i回目のイテレーションにおける演算fのイテレーション間のゆらぎを示す。そして、Pojは、判定範囲内のj番目のイテレーションにおける表現可能割合である。また、Poiは、i番目のイテレーションにおける表現可能割合である。すなわち、演算データ型決定部141は、数式(4)を用いてその時点での表現可能割合と判定範囲内のイテレーションにおける表現可能割合との差の最大値をゆらぎΔfiとして算出する。
次に、演算データ型決定部141は、算出したゆらぎが予め決められたゆらぎ閾値未満か否かを判定する。例えば、ゆらぎ閾値をTf2とした場合、演算データ型決定部141は、次の数式(5)を満たすか否かを判定する。
Figure 0007255234000005
ゆらぎが予め決められゆらぎ閾値未満の場合、演算の小数点位置が収束しつつあると言える。そこで、演算データ型決定部141は、算出したゆらぎがたゆらぎ閾値未満の場合、その演算の演算データ型を8bit固定小数点数と決定し、演算データ型要求部122に通知する。これに対して、算出したゆらぎがゆらぎ閾値以上の場合、演算データ型決定部141は、その演算の演算データ型を32bit浮動小数点数と決定し、演算データ型要求部122に通知する。
ここで、ゆらぎ閾値であるTf2は、例えば、10%~20%とすることができる。ゆらぎ閾値を10%とした場合、図6において演算#3の使用範囲73におけるゆらぎは、ゆらぎ閾値以上である。これに対して、演算#2及び#4のゆらぎは、ゆらぎ閾値未満である。そこで、演算データ型決定部141は、演算#3の演算データ型を32bit浮動小数点数と決定し、演算#2及び#4の演算データ型を8bit固定小数点数と決定する。
8bit固定小数点数を演算データ型として通知して、実行制御部102を介して演算部103に8bit固定小数点数を用いて演算を行わせる処理が、「所定ビットの固定小数点数を用いて演算部に演算を実行させる」処理にあたる。
さらに、演算データ型決定部141は、各演算について決定した演算データ型を演算データ型データベース106に登録する。これにより、演算データ型決定部141は、演算データ型データベース106を用いて次のイテレーションにおいて各演算がどちらの演算データ型を使用したかが確認できるようになる。
学習データ読込部105は、学習に使用する学習データの読み込みの指示をデータ読込制御部124から受ける。そして、学習データ読込部105は、指定された学習データを学習データ記憶部200から読み込む。その後、学習データ読込部105は、読み込んだ隔週データをデータ読込制御部124へ送信する。
次に、図7を参照して、実施例1に係る情報処理装置1による演算データ型決定処理の全体的な流れの概要について説明する。図7は、実施例1に係る情報処理装置による演算データ型決定処理のシーケンス図である。
ユーザアプリケーション101は、深層学習の実行指示を実行制御部102に出力する(ステップS101)。
実行制御部102は、深層学習の実行指示をユーザアプリケーション101から受けると、演算データ型データベース106の初期化を演算データ型判定部104に指示する(ステップS102)。
演算データ型判定部104は、演算データ型データベース106の初期化の指示を受けて、演算データ型データベース106の各演算の演算データ型を32bit浮動小数点数に更新して初期化する(ステップS103)。
その後、演算データ型判定部104は、演算データ型データベース106の初期化完了を実行制御部102に通知する(ステップS104)。
実行制御部102は、演算データ型データベース106の初期化完了の応答を受信すると、表現可能割合データベース107の初期化を演算データ型判定部104に指示する(ステップS105)。
演算データ型判定部104は、表現可能割合データベース107の初期化の指示を受けて、表現可能割合データベース107に登録済みのデータを消去して初期化する(ステップS106)。
その後、演算データ型判定部104は、表現可能割合データベース107の初期化完了を実行制御部102に通知する(ステップS107)。
実行制御部102は、表現可能割合データベース107の初期化完了の応答を受信すると、学習に使用する学習データの読み込みを学習データ読込部105に指示する(ステップS108)。
学習データ読込部105は、学習データの読み込み指示を受けて、指定された学習データを学習データ記憶部200から読み込む(ステップS109)。
その後、学習データ読込部105は、読み込んだ学習データを実行制御部102へ送信する(ステップS110)。
実行制御部102は、学習データを学習データ読込部105から取得する。次に、実行制御部102は、次のイテレーションの各演算で使用する演算データ型の取得要求を演算データ型判定部104へ出力する(ステップS111)。
演算データ型判定部104は、演算データ型の取得要求の入力を受けて、演算データ型データベース106及び表現可能割合データベース107を用いて各演算で使用する演算データ型を決定する(ステップS112)。
そして、演算データ型判定部104は、決定した各演算で使用する演算データ型の通知を実行制御部102へ出力する(ステップS113)。
実行制御部102は、各演算で用いる演算データ型を取得する。そして、実行制御部102は、取得した学習データを演算部103へ出力し、さらに各演算で用いる演算データ型を演算部103に通知して演算を実行させる(ステップS114)。
その後、実行制御部102は、演算結果の入力を演算部103から受ける(ステップS115)。
次に、実行制御部102は、取得した演算結果を演算データ型判定部104へ出力して表現可能割合データベース107の更新を指示する(ステップS116)。
演算データ型判定部104は、演算結果に含まれるテンソル要素数を用いて表現可能割合を算出し、算出した表現可能割合を登録して表現可能割合データベース107を更新する(ステップS117)。
その後、演算データ型判定部104は、表現可能割合データベース107の更新完了の通知を実行制御部102へ出力する(ステップS118)。
次に、実行制御部102は、演算データ型データベース106の更新を演算データ型判定部104に指示する(ステップS119)。
演算データ型判定部104は、最新のイテレーションにおいて各演算で使用された演算データ型を登録して演算データ型データベース106を更新する(ステップS120)。
その後、演算データ型判定部104は、演算データ型データベース106の更新完了の通知を実行制御部102へ出力する(ステップS121)。
実行制御部102は、演算データ型データベース106の更新完了の通知の入力を実行制御部102から受ける。実行制御部102、演算部103、演算データ型判定部104及び学習データ読込部105は、1回のイテレーションに含まれる演算全てが完了するまで、ステップS111~S121を繰り返す。さらに、実行制御部102、演算部103、演算データ型判定部104及び学習データ読込部105は、深層学習が完了するまで、ステップS108~S121を繰り返す。その後、実行制御部102は、深層学習の完了をユーザアプリケーション101に通知する(ステップS122)。
次に、図8を参照して、実施例1に係る演算データ型決定処理の詳細な流れについて説明する。図8は、実施例1に係る演算データ型決定処理のフローチャートである。
ユーザアプリケーション101からの深層学習の実行指示を受けると、データベース更新指示部123は、演算データ型データベース106の初期化の指示を演算データ型決定部141へ出力する。また、データベース更新指示部123は、表現可能割合データベース107の初期化の指示をデータベース更新部142へ出力する。演算データ型決定部141は、演算データ型データベース106に登録された各演算の演算データ型を32bit浮動小数点数に変更して演算データ型データベース106を初期化する。また、データベース更新部142は、表現可能割合データベース107に登録された表現可能割合を削除して初期化する。これにより、演算データ型判定部104は、データベースの初期化を行う(ステップS201)。
データ読込制御部124は、データベースの初期化完了の通知をデータベース更新指示部123から受ける。また、データ読込制御部124は、学習データの取得要求を演算指示部121から受ける。そして、データ読込制御部124は、学習データの読込要求を学習データ読込部105へ出力する。学習データ読込部105は、学習データの読込要求を受けて、学習データ記憶部200から指定された学習データを読み込む(ステップS202)。その後、学習データ読込部105は、読み込んだ学習データをデータ読込制御部124へ出力する。データ読込制御部124は、取得した学習データを演算指示部121へ出力する。
演算指示部121は、ユーザアプリケーション101から入力された深層学習の実行指示から実行するイテレーションにおける次の演算を選択する(ステップS203)。
そして、演算指示部121は、選択した演算で使用する演算データ型の取得要求を演算データ型決定部141へ出力する。演算データ型決定部141は、取得要求を受けると、選択された演算の使用範囲内のイテレーションでの表現可能割合を表現可能割合データベース107から取得する(ステップS204)。ただし、イテレーションが進んでおらず、使用範囲内のイテレーションがそろっていない場合、演算データ型決定部141は、表現可能割合の取得をエラーと判定する。
次に、演算データ型決定部141は、取得した表現可能割合を数式(4)に用いて表現可能割合のゆらぎを算出する(ステップS205)。ただし、表現可能割合の取得がエラーの場合、演算データ型決定部141は、表現可能割合のゆらぎを算出せずに未算出とする。
次に、演算データ型決定部141は、選択された演算が既に8bit固定小数点数で実行されたか否かを判定する(ステップS206)。既に8bit固定小数点で演算が実行された場合(ステップS206:肯定)、演算データ型決定部141は、選択された演算で用いる演算データ型を8bit固定小数点数のまま維持して、ステップS210へ進む。
これに対して、未だ8bit固定小数点数で演算が実行されていない場合(ステップS206:否定)、演算データ型決定部141は、表現可能割合のゆらぎがゆらぎ閾値未満か否かを判定する(ステップS207)。
表現可能割合のゆらぎがゆらぎ閾値未満の場合(ステップS207:肯定)、演算データ型決定部141は、最新の表現可能割合が割合閾値より大きいか否かを判定する(ステップS208)。
最新の表現可能割合が割合閾値より大きい場合(ステップS208:肯定)、演算データ型決定部141は、演算データ型を8bit固定小数点数に決定する。その後、演算データ型決定部141は、選択された演算の演算データ型として8bit固定小数点数を使用することを演算指示部121に通知し、演算データ型を8bit固定小数点数に変更させる。(ステップS209)。
演算指示部121は、8bit固定小数点数を用いて選択した演算を演算部103に実行させる(ステップS210)。
一方、ゆらぎがゆらぎ閾値未満でない場合(ステップS207:否定)又は最新の表現可能割合が割合閾値以下の場合(ステップS208:否定)、演算データ型決定部141は、選択された演算の演算データ型を32bit浮動小数点数に維持する。ここで、表現可能割合のゆらぎが未算出の場合も、演算データ型決定部141は、ゆらぎがゆらぎ閾値未満でない場合と判定する。この場合、本実施例では演算データ型決定部141は、演算データ型の変更の指示を演算指示部121への通知は行わない。ただし、演算データ型決定部141は、選択された演算の演算データ型として32bit浮動小数点数を使用することを演算指示部121に通知してもよい。演算指示部121は、32bit浮動小数点数を用いて選択した演算を演算部103に実行させる(ステップS211)。
その後、演算データ型要求部122は、選択された演算の演算結果を演算部103から取得する。そして、演算データ型要求部122は、取得した演算結果をデータベース更新部142へ出力するとともに表現可能割合データベース107の更新を指示する。データベース更新部142は、入力された演算結果に含まれるテンソル要素数を用いて表現可能割合を計算する(ステップS212)。
次に、データベース更新部142は、算出した表現可能割合を表現可能割合データベース107に保存する(ステップS213)。
演算指示部121は、演算部103からイテレーションの完了通知を取得したか否かにより、1イテレーション中の全ての演算処理が完了したか否かを判定する(ステップS214)。実行していない演算処理が存在する場合(ステップS214:否定)、演算指示部121は、ステップS203に戻る。
これに対して、1イテレーション中の全ての演算処理が完了した場合(ステップS214:肯定)、演算指示部121は、深層学習が完了したか否かを判定する(ステップS215)。深層学習が完了していない場合(ステップS215:否定)、演算指示部121は、ステップS202へ戻る。
これに対して、深層学習が完了した場合(ステップS215:肯定)、演算指示部121は、深層学習の実行完了をユーザアプリケーション101へ通知する。そして、演算指示部121は、演算データ型の切り替えを伴う深層学習の実行を終了する。
以上に説明したように、本実施例に係る情報処理装置は、演算結果に含まれる要素数の8bit固定小数点数での表現可能割合を求め、求めた表現可能割合が閾値以上であり、且つゆらぎが閾値未満であれば演算データ型を8bit固定小数点数に切り替える。このように、8bit固定小数点数で十分に表現可能となったタイミングで演算データ型が自動的に切り替わるため、操作者が試行錯誤して演算データ型のタイミングを指定しなくてよく、容易に深層学習や機械学習の学習効率を向上させることができる。また、表現可能な要素数を基に演算データ型の切り替えを行うため、事前学習が不十分なことで生じる演算精度不足による学習の停滞も軽減することができる。
さらに、学習演算中に演算データ型を自動で変更するため、他のシステムで構築された深層学習のモデルを利用して追加学習や転移学習を行う場合などに、操作者はモデルで定義された各演算について演算データ型を指定しなくてもよい。すなわち、このような場合にも操作性を向上することができる。
また、本実施例では、演算データ型を32bit浮動小数点数から8bit固定小数点数に自動で切り替えた。ただし、機械学習や深層学習の分野では、演算性能よりも学習後の認識精度を重視する操作者も一定数存在すると考えられる。そのため、学習後の認識精度を重視する操作者を考慮することも重要である。
そこで、本実施例に係る情報処理装置は、8bit固定小数点数への自動切り替えと、全ての演算の32bit浮動小数点数での実行とを選択できる構成としてもよい。8bit固定小数点数への自動切り替えが指定された場合、情報処理装置は、上述した処理と同様の処理を実行する。これに対して、全ての演算の32bit浮動小数点数での実行が指定された場合、情報処理装置は、8bit固定小数点数への演算データ型の切り替えを行わずに、深層学習が完了するまで全ての演算を32bit浮動小数点数で実行する。
(変形例)
実施例1では単一の情報処理装置1で学習を行う場合を例に説明したが、複数の情報処理装置を使用した学習の場合にも同様の機能を適用することができ、同様の効果を得ることができる。
例えば、図9は、2つの情報処理装置を用いた学習を表す図である。ここでは、学習データ格納ストレージ81に格納された学習データを、情報処理装置1A及び1Bの双方が利用する。
情報処理装置1Aは、学習データ格納ストレージ81から学習データを取得して学習を進める。この場合、データベース156Aが、図3の演算データ型データベース106及び表現可能割合データベース107となる。情報処理装置1Aは、演算結果のテンソル要素数からイテレーション毎の表現可能割合を算出してデータベース156Aに格納する。そして、情報処理装置1Aは、データベース156Aに格納された表現可能割合から演算データ型を決定して、自動的に演算#1~#nで用いる演算データ型を8bit固定小数点数に切り替える。
同様に、情報処理装置1Bは、学習データ格納ストレージ81から学習データを取得して学習を進める。この場合、データベース156Bが、図3の演算データ型データベース106及び表現可能割合データベース107となる。情報処理装置1Bは、演算結果のテンソル要素数からイテレーション毎の表現可能割合を算出してデータベース156Bに格納する。そして、情報処理装置1Bは、データベース156Bに格納された表現可能割合から演算データ型を決定して、自動的に演算#1~#nで用いる演算データ型を8bit固定小数点数に切り替える。
その後、情報処理装置1A及び1Bのそれぞれにおける学習結果がまとめられて、学習が完了する。このように、複数の情報処理装置を学習に用いる場合でも、各情報処理装置において容易に機械学習の学習効率を向上させることができる。
次に、実施例2について説明する。本実施例に係る情報処理装置1は、8bit固定小数点数では未だ表現することが困難だが、16bit固定小数点数では表現可能な一部の演算を、16bit固定小数点数を用いて実行することが実施例1と異なる。本実施例に係る情報処理装置1のブロック図も図3で表される。以下の説明では、演算データ型の決定処理を主に説明し、実施例1と同様の各部の機能については説明を省略する。
本実施例に係る表現可能割合データベース107は、図10に示すフォーマットを有する。図10は、実施例2に係る表現可能割合データベースの登録情報の一例の図である。本実施例に係る表現可能割合データベース107は、図10に示すように、各イテレーションの演算毎に、演算結果に含まれるテンソル要素数の8bit固定小数点数での表現可能割合及び16bit固定小数点数での表現可能割合が登録される。
また、本実施例に係る演算データ型データベース106は、図11に示すフォーマットを有する。図11は、実施例2に係る演算データ型データベースの登録情報の一例の図である。本実施例に係る演算データ型データベース106は、図11に示すように、演算データ型として、各演算IDに対応させて、32bit浮動小数点数、16bit固定小数点数又は8bit固定小数点数のいずれかが各演算で用いられる演算データ型として登録される。
データベース更新部142は、最新のイテレーションにおいて実行された演算の演算結果の入力をデータベース更新指示部123から受ける。次に、データベース更新部142は、演算結果からテンソル要素数を取得する。次に、データベース更新部142は、取得したテンソル要素数と数式(1)とを用いて、演算結果を8bit固定小数点数で表現する場合のその演算における適切な小数点位置Qを決定する。そして、数式(2)を用いて小数点位置Qの場合の8bit固定小数点数でのテンソル要素数の表現可能割合Pを算出する。そして、データベース更新部142は、最新のイテレーションの各演算における8bit固定小数点数での表現可能割合を表現可能割合データベース107に登録する。
次に、データベース更新部142は、取得したテンソル要素数と次の数式(6)とを用いて、演算結果を16bit固定小数点数で表現する場合のその演算における適切な小数点位置Q16を決定する。
Figure 0007255234000006
次に、データベース更新部142は、次の数式(7)を用いて小数点位置Q16の場合の16bit固定小数点数でのテンソル要素数の表現可能割合P16を算出する。そして、データベース更新部142は、表現可能割合データベース107に最新のイテレーションの各演算における16bit固定小数点数での表現可能割合を登録する。
Figure 0007255234000007
これにより、データベース更新部142は、図10で示されるデータを表現可能割合データベース107に登録する。すなわち、表現可能割合データベース107には、8bit浮動小数点数を用いた場合の表現可能割合及び16bit浮動小数点数を用いた場合の表現可能割合が登録される。
ここで、8bit固定小数点数が、「第1所定ビットの固定小数点数」の一例にあたり、16bit固定小数点数が、「第2所定ビットの固定小数点数」の一例にあたる。以下では、8bit浮動小数点数を用いた場合の表現可能割合を「8bit表現可能割合」といい、16bit浮動小数点数を用いた場合の表現可能割合を「16bit表現可能割合」と言う。
演算データ型決定部141は、各演算についての演算データ型の取得要求の入力を演算データ型要求部122から受ける。次に、演算データ型決定部141は、演算データ型データベース106を確認して各演算の現在の演算データ型を取得する。そして、演算データ型決定部141は、既に8bit固定小数点数を演算データ型とした演算を特定する。演算データ型決定部141は、特定した既に8bit固定小数点数を演算データ型とした演算については8bit固定小数点数を演算データ型として演算データ型要求部122に通知する。
これに対して、8bit固定小数点数以外を演算データ型とした演算について、演算データ型決定部141は、表現可能割合データベース107から最新のイテレーションから判定範囲内のイテレーションにおける8bit表現可能割合を取得する。
例えば、図12を参照して、その時点でイテレーションが1504回終了した場合で説明する。図12は、実施例2に係る演算データ型の決定処理を説明するための図である。図12のテーブル171は、表現可能割合データベース107を分かり易いように並べ直したテーブルである。
例えば、判定範囲を4回のイテレーションとした場合、演算データ型決定部141は、図12における、使用範囲711、713、715内の8bit表現可能割合を演算毎に取得する。ここでは、演算#1~#3におけるこの時点での演算データ型は、32bit浮動小数点数である。次に、演算データ型決定部141は、各演算の最新のイテレーションにおける8bit表現可能割合が割合閾値を超えたか否かを判定する。例えば、割合閾値をTf1とした場合、演算データ型決定部141は、数式(3)を満たすか否かを判定する。
閾値を超えた演算について、演算データ型決定部141は、演算データ型決定部141は、判定範囲内での8bit表現可能割合の変動が小さいか否かを判定する。具体的には、演算データ型決定部141は、数式(4)を用いて演算fについてのイテレーション間のゆらぎであるΔfを算出する。
次に、演算データ型決定部141は、算出した8bit表現可能割合のゆらぎがゆらぎ閾値未満か否かを判定する。例えば、ゆらぎ閾値をTf2とした場合、演算データ型決定部141は、数式(5)を満たすか否かを判定する。
8bit表現可能割合のゆらぎがゆらぎ閾値未満の演算については、その演算の演算データ型を8bit固定小数点数と決定し、演算データ型要求部122に通知する。
これに対して、8bit表現可能割合が割合閾値以下の演算及び8bit表現可能割合のゆらぎが予め決められたゆらぎ閾値以上の演算について、演算データ型決定部141は、既に16bit固定小数点数を演算データ型とした演算を特定する。演算データ型決定部141は、特定した既に16bit固定小数点数を演算データ型とした演算については16bit固定小数点数を演算データ型として演算データ型要求部122に通知する。
これに対して、16bit固定小数点数以外を演算データ型とした演算について、演算データ型決定部141は、表現可能割合データベース107から最新のイテレーションから判定範囲内のイテレーションにおける16bit表現可能割合を取得する。この場合、16bit固定小数点数以外を演算データ型とした演算とは、演算データ型として32bit浮動小数点数が用いられた演算である。
例えば、演算データ型決定部141は、図12における、使用範囲712、714、716内の16bit表現可能割合を演算毎に取得する。次に、演算データ型決定部141は、各演算の最新のイテレーションにおける16bit表現可能割合が割合閾値を超えたか否かを判定する。例えば、割合閾値をTf1とした場合、演算データ型決定部141は、数式(3)を満たすか否かを判定する。
閾値を超えた演算について、演算データ型決定部141は、演算データ型決定部141は、判定範囲内での16bit表現可能割合の変動が小さいか否かを判定する。具体的には、演算データ型決定部141は、数式(4)を用いて演算fについてのイテレーション間のゆらぎであるΔfを算出する。
次に、演算データ型決定部141は、算出した16bit表現可能割合のゆらぎがゆらぎ閾値未満か否かを判定する。例えば、ゆらぎ閾値をTf2とした場合、演算データ型決定部141は、数式(5)を満たすか否かを判定する。16bit表現可能割合のゆらぎがゆらぎ閾値未満の演算については、その演算の演算データ型を16bit固定小数点数と決定し、演算データ型要求部122に通知する。
これに対して、16bit表現可能割合が割合閾値以下の演算及び16bit表現可能割合のゆらぎが予め決められたゆらぎ閾値以上の演算について、演算データ型決定部141は、その演算の演算データ型を32bit浮動小数点数と決定する。そして、演算データ型決定部141は、その演算の演算データ型として32bit浮動小数点数を用いることを演算データ型要求部122に通知する。
ここで、本実施例では、演算データ型決定部141は、演算データ型を8bit固定小数点や16bit固定小数点に設定した演算に関して、8bit表現可能割合及び16bit表現可能割合の変動を確認する。この処理が可能になるのは、以下の理由による。演算時には演算部103は、8bit固定小数点や16bit固定小数点で演算を行う場合にも、演算内部でより大きな演算精度の中間データを用いて演算を行い、出力を8bit固定小数点や16bit固定小数点の精度とする。そして、データベース更新部142は、8bit固定小数点や16bit固定小数点の精度に変更する前の演算結果である中間データを用いて8bit表現可能割合及び16bit表現可能割合を算出する。そのため、演算データ型決定部141は、8bit固定小数点や16bit固定小数点を用いた演算の演算結果についても、8bit表現可能割合及び16bit表現可能割合の変動を判定することができる。
例えば、図12において割合閾値を80%とし、ゆらぎ閾値を10%とした場合の演算データ型決定部141による演算データ型決定処理について説明する。演算データ型決定部141は、イテレーションIDがit1504のイテレーションでの演算#1の8bit表現可能割合は46.5%で割合閾値以下であり、16bit表現可能割合は99.2%で割合閾値より大きいと判定する。そこで、演算データ型決定部141は、演算#1の演算データ型としては8bit固定小数点数を用いないと決定する。さらに、演算データ型決定部141は、使用範囲712の16bit表現可能割合のゆらぎを求めて、その求めた値がゆらぎ閾値未満と判定する。そこで、演算データ型決定部141は、演算#1の演算データ型を16bit固定小数点数と決定する。
また、演算データ型決定部141は、イテレーションIDがit1504のイテレーションでの演算#2の8bit表現可能割合は97.2%で割合閾値より大きいと判定する。次に、演算データ型決定部141は、使用範囲713の8bit表現可能割合のゆらぎを求めて、その求めた値がゆらぎ閾値未満と判定する。これにより、演算データ型決定部141は、演算#2の演算データ型を8bit固定小数点数と決定する。
また、演算データ型決定部141は、イテレーションIDがit1504のイテレーションでの演算#3の8bit表現可能割合は96.9%であり割合閾値より大きく、16bit表現可能割合は99.2%で割合閾値より大きいと判定する。そこで、演算データ型決定部141は、使用範囲715の8bit表現可能割合のゆらぎを求めて、その求めた値がゆらぎ閾値以上と判定する。次に、演算データ型決定部141は、使用範囲716の16bit表現可能割合のゆらぎを求めて、これもゆらぎ閾値以上と判定する。この場合、演算データ型決定部141は、演算#3の演算データ型としては8bit固定小数点数及び16bit固定小数点数を用いないと決定する。そこで、演算データ型決定部141は、演算#3の演算データ型を32bit浮動小数点数と決定定する。
次に、図13を参照して、実施例2に係る演算データ型決定処理の詳細な流れについて説明する。図13は、実施例2に係る演算データ型決定処理のフローチャートである。
演算データ型判定部104は、演算データ型データベース106及び表現可能割合データベース107の初期化を行う(ステップS301)。
データ読込制御部124は、データベースの初期化完了の通知をデータベース更新指示部123から受ける。また、データ読込制御部124は、学習データの取得要求を演算指示部121から受ける。そして、データ読込制御部124は、学習データの読込要求を学習データ読込部105へ出力する。学習データ読込部105は、学習データの読込要求を受けて、学習データ記憶部200から指定された学習データを読み込む(ステップS302)。その後、学習データ読込部105は、読み込んだ学習データをデータ読込制御部124へ出力する。データ読込制御部124は、取得した学習データを演算指示部121へ出力する。
演算指示部121は、ユーザアプリケーション101から入力された深層学習の実行指示から実行するイテレーションにおける次の演算を選択する(ステップS303)。
そして、演算指示部121は、選択した演算で使用する演算データ型の取得要求を演算データ型決定部141へ出力する。演算データ型決定部141は、取得要求を受けると、選択された演算の使用範囲内のイテレーションでの8bit表現可能割合及び16bit表現可能割合を表現可能割合データベース107から取得する(ステップS304)。ただし、イテレーションが進んでおらず、使用範囲内のイテレーションがそろっていない場合、演算データ型決定部141は、表現可能割合の取得をエラーと判定する。
次に、演算データ型決定部141は、取得した8bit表現可能割合及び16bit表現可能割合を数式(4)に用いて8bit表現可能割合及び16bit表現可能割合のゆらぎを算出する(ステップS305)。ただし、表現可能割合の取得がエラーの場合、演算データ型決定部141は、表現可能割合のゆらぎを算出せずに未算出とする。
次に、演算データ型決定部141は、選択された演算が既に8bit固定小数点数で実行されたか否かを判定する(ステップS306)。既に8bit固定小数点で演算が実行された場合(ステップS306:肯定)、演算データ型決定部141は、選択された演算で用いる演算データ型を8bit固定小数点数のまま維持して、ステップS310へ進む。
これに対して、未だ8bit固定小数点数で演算が実行されていない場合(ステップS306:否定)、演算データ型決定部141は、8bit表現可能割合のゆらぎがゆらぎ閾値未満か否かを判定する(ステップS307)。
8bit表現可能割合のゆらぎがゆらぎ閾値未満の場合(ステップS307:肯定)、演算データ型決定部141は、最新の8bit表現可能割合が割合閾値より大きいか否かを判定する(ステップS308)。
最新の8bit表現可能割合が割合閾値より大きい場合(ステップS308:肯定)、演算データ型決定部141は、演算データ型を8bit固定小数点数に決定する。その後、演算データ型決定部141は、選択された演算の演算データ型として8bit固定小数点数を使用することを演算指示部121に通知し、演算データ型を8bit固定小数点数に変更させる。(ステップS309)。
演算指示部121は、8bit固定小数点数を用いて選択した演算を演算部103に実行させる(ステップS310)。
一方、8bit表現可能割合のゆらぎがゆらぎ閾値未満でない場合(ステップS307:否定)又は最新の8bit表現可能割合が割合閾値以下の場合(ステップS308:否定)、演算データ型決定部141は、以下の処理を行う。ここで、8bit表現可能割合のゆらぎが未算出の場合も、演算データ型決定部141は、ゆらぎがゆらぎ閾値未満でない場合と判定する。演算データ型決定部141は、選択された演算が既に16bit固定小数点数で実行されたか否かを判定する(ステップS311)。既に16bit固定小数点で演算が実行された場合(ステップS311:肯定)、演算データ型決定部141は、選択された演算で用いる演算データ型を16bit固定小数点数のまま維持して、ステップS315へ進む。
これに対して、未だ16bit固定小数点数で演算が実行されていない場合(ステップS311:否定)、演算データ型決定部141は、16bit表現可能割合のゆらぎがゆらぎ閾値未満か否かを判定する(ステップS312)。
16bit表現可能割合のゆらぎがゆらぎ閾値未満の場合(ステップS312:肯定)、演算データ型決定部141は、最新の16bit表現可能割合が割合閾値より大きいか否かを判定する(ステップS313)。
最新の16bit表現可能割合が割合閾値より大きい場合(ステップS313:肯定)、演算データ型決定部141は、演算データ型を16bit固定小数点数に決定する。その後、演算データ型決定部141は、選択された演算の演算データ型として16bit固定小数点数を使用することを演算指示部121に通知し、演算データ型を16bit固定小数点数に変更させる(ステップS314)。
演算指示部121は、16bit固定小数点数を用いて選択した演算を演算部103に実行させる(ステップS315)。
一方、16bit表現可能割合のゆらぎがゆらぎ閾値未満でない場合(ステップS312:否定)又は最新の16bit表現可能割合が割合閾値以下の場合(ステップS313:否定)、演算データ型決定部141は、以下の処理を行う。ここで、16bit表現可能割合のゆらぎが未算出の場合も、演算データ型決定部141は、ゆらぎがゆらぎ閾値未満でない場合と判定する。演算データ型決定部141は、選択された演算の演算データ型を32bit浮動小数点数で維持することを決定する。この場合、本実施例では演算データ型決定部141は、演算データ型の変更の指示を演算指示部121への通知は行わない。ただし、演算データ型決定部141は、選択された演算の演算データ型として32bit浮動小数点数を使用することを演算指示部121に通知してもよい。演算指示部121は、32bit浮動小数点数を用いて選択した演算を演算部103に実行させる(ステップS316)。
その後、演算データ型要求部122は、選択された演算の演算結果を演算部103から取得する。そして、演算データ型要求部122は、取得した演算結果をデータベース更新部142へ出力するとともに表現可能割合データベース107の更新を指示する。データベース更新部142は、入力された演算結果に含まれるテンソル要素数を用いて8bit表現可能割合及び16bit表現可能割合を計算する(ステップS317)。
次に、データベース更新部142は、算出した8bit表現可能割合及び16bit表現可能割合を表現可能割合データベース107に保存する(ステップS318)。
演算指示部121は、演算部103からイテレーションの完了通知を取得したか否かにより、1つのイテレーション中の全ての演算処理が完了したか否かを判定する(ステップS319)。実行していない演算処理が存在する場合(ステップS319:否定)、演算指示部121は、ステップS303に戻る。
これに対して、1つのイテレーション中の全ての演算処理が完了した場合(ステップS319:肯定)、演算指示部121は、深層学習が完了したか否かを判定する(ステップS320)。深層学習が完了していない場合(ステップS320:否定)、演算指示部121は、ステップS302へ戻る。
これに対して、深層学習が完了した場合(ステップS320:肯定)、演算指示部121は、深層学習の実行完了をユーザアプリケーション101へ通知する。そして、演算指示部121は、演算データ型の切り替えを伴う深層学習の実行を終了する。
以上に説明したように、本実施例に係る情報処理装置は、演算結果に含まれる要素数の8bit表現可能割合及び16bit表現可能割合での表現可能割合を求め、求めた8bit表現可能割合及び16bit表現可能割合に応じて演算データ型を切り替える。このように、8bit固定小数点数又は16bit固定小数点数で十分に表現可能となったタイミングで演算データ型が自動的に切り替わるため、操作者が試行錯誤して演算データ型のタイミングを指定しなくてよい。そのため、本実施例に係る情報処理装置は、容易に深層学習や機械学習の学習効率を向上させることができる。また、表現可能な要素数を基に演算データ型の切り替えを行うため、事前学習が不十分なことで生じる演算精度不足による学習の停滞も軽減することができる。
なお、本実施例に係る情報処理装置は、8bit固定小数点数及び16bit固定小数点への自動切り替えと、全ての演算の32bit浮動小数点数での実行とを選択できる構成としてもよい。8bit固定小数点数及び16bit固定小数点への自動切り替えが指定された場合、情報処理装置は、上述した処理と同様の処理を実行する。これに対して、全ての演算の32bit浮動小数点数での実行が指定された場合、情報処理装置は、8bit固定小数点数への演算データ型の切り替えを行わずに、深層学習が完了するまで全ての演算を32bit浮動小数点数で実行する。
図14は、実施例3に係る情報処理装置のブロック図である。本実施例に係る情報処理装置1は、演算データ型データベース106を有さないことが実施例1及び2と異なる。
本実施例に係る情報処理装置1は、以前の演算データ型を参照せずにイテレーション毎に演算データ型を判定することが実施例1及び2と異なる。すなわち、本実施例に係る情報処理装置1では、8bit固定小数点数を演算データ型とした演算が、16bit固定小数点数や32bit浮動小数点数を演算データ型として使用する状態に戻る場合がある。また、16bit固定小数点数を演算データ型とした演算が、32bit浮動小数点数を演算データ型として使用する状態に戻る場合がある。
以下の説明では、実施例2と同様に8bit固定小数点数及び16bit固定小数点数を用いる場合を例に説明するが、実施例3の情報処理装置1は、実施例1と同様の8bit固定小数点数を固定小数点数として用いる場合も動作可能である。以下の説明では、演算データ型の決定処理を主に説明し、実施例2と同様の各部の機能については説明を省略する。
本実施例に係る表現可能割合データベース107は、図10に示すフォーマットと同様のフォーマットを有する。すなわち、本実施例に係る表現可能割合データベース107は、各イテレーションの演算毎に、演算結果に含まれるテンソル要素数の8bit固定小数点数での表現可能割合及び16bit固定小数点数での表現可能割合が登録される。
実行制御部102は、深層学習の実行指示をユーザアプリケーション101から受けると、表現可能割合データベース107の初期化を演算データ型判定部104に指示する。この場合、演算データ型データベース106は存在しないので、演算データ型データベース106の初期化は行われない。
演算データ型判定部104は、表現可能割合データベース107の初期化の指示を受けて、表現可能割合データベース107に登録済みのデータを消去して初期化する。
演算データ型決定部141は、各演算についての演算データ型の取得要求の入力を演算データ型要求部122から受ける。次に、演算データ型決定部141は、演算データ型データベース106を確認して各演算の現在の演算データ型を取得する。そして、演算データ型決定部141は、判定範囲内のイテレーションにおける8bit表現可能割合を表現可能割合データベース107から取得する。
次に、演算データ型決定部141は、各演算の最新のイテレーションにおける8bit表現可能割合が割合閾値を超えたか否かを判定する。例えば、割合閾値をTf1とした場合、演算データ型決定部141は、数式(3)を満たすか否かを判定する。
閾値を超えた演算について、演算データ型決定部141は、演算データ型決定部141は、判定範囲内での8bit表現可能割合の変動が小さいか否かを判定する。具体的には、演算データ型決定部141は、数式(4)を用いて演算fについてのイテレーション間のゆらぎであるΔfを算出する。
次に、演算データ型決定部141は、算出した8bit表現可能割合のゆらぎがゆらぎ閾値未満か否かを判定する。例えば、ゆらぎ閾値をTf2とした場合、演算データ型決定部141は、数式(5)を満たすか否かを判定する。
演算データ型決定部141は、8bit表現可能割合のゆらぎがゆらぎ閾値未満の演算については、その演算の演算データ型を8bit固定小数点数と決定し、演算データ型要求部122に通知する。
一方、8bit表現可能割合が割合閾値以下の演算及び8bit表現可能割合のゆらぎが予め決められたゆらぎ閾値以上の演算について、演算データ型決定部141は、判定範囲内のイテレーションにおける16bit表現可能割合を取得する。
次に、演算データ型決定部141は、各演算の最新のイテレーションにおける16bit表現可能割合が割合閾値を超えたか否かを判定する。例えば、割合閾値をTf1とした場合、演算データ型決定部141は、数式(3)を満たすか否かを判定する。
閾値を超えた演算について、演算データ型決定部141は、判定範囲内での16bit表現可能割合の変動が小さいか否かを判定する。具体的には、演算データ型決定部141は、数式(4)を用いて演算fについてのイテレーション間のゆらぎであるΔfを算出する。
次に、演算データ型決定部141は、算出した16bit表現可能割合のゆらぎがゆらぎ閾値未満か否かを判定する。例えば、ゆらぎ閾値をTf2とした場合、演算データ型決定部141は、数式(5)を満たすか否かを判定する。演算データ型決定部141は、16bit表現可能割合のゆらぎがゆらぎ閾値未満の演算については、その演算の演算データ型を16bit固定小数点数と決定し、演算データ型要求部122に通知する。
これに対して、16bit表現可能割合が割合閾値以下の演算及び16bit表現可能割合のゆらぎが予め決められたゆらぎ閾値以上の演算について、演算データ型決定部141は、その演算の演算データ型を32bit浮動小数点数と決定する。そして、演算データ型決定部141は、その演算の演算データ型として32bit浮動小数点数を用いることを演算データ型要求部122に通知する。
ここで、図15を参照して、本実施例における演算データ型の遷移について説明する。図15は、演算データ型の遷移を説明するための図である。図15のテーブル172は、表現可能割合データベース107を分かり易いように並べ直したテーブルである。ここでは、割合閾値を80%とし、ゆらぎ閾値を10%とした場合の演算データ型決定部141による演算データ型決定処理について説明する。
まず、演算#1における演算データ型の遷移について説明する。イテレーションIDがit1505のイテレーションの段階で、演算#1の8bit表現可能割合が割合閾値以下であるので、演算データ型決定部141は、演算#1の演算データ型として8bit固定小数点数は使用しない。一方、使用範囲721においてイテレーションIDがit1505のイテレーションでの16bit表現可能割合が割合閾値を超えており、16bit表現可能割合のゆらぎがゆらぎ閾値未満である。そこで、演算データ型決定部141は、16bit固定小数点数を演算#1の演算データ型とする。そのため、イテレーションIDがit1506のイテレーションでは、演算#1の演算データ型として16bit固定小数点数が用いられることになり、割合722は、16bit固定小数点数を用いて算出される。
その後、イテレーションIDがit1507のイテレーションの段階で、8bit表現可能割合及び16bit表現可能割合のいずれも割合閾値以下となる。また、使用範囲723における16bit表現可能割合のゆらぎもゆらぎ閾値以上となる。そこで、演算データ型決定部141は、32bit浮動小数点数を演算#1の演算データ型とする。これにより、イテレーションIDがit1508のイテレーション以降では、演算データ型の変更が無ければ、32bti浮動小数点数が演算#1の演算データ型として用いられる。
次に、演算#2における演算データ型の遷移について説明する。イテレーションIDがit1504のイテレーションの段階で、使用範囲724のように、8bit表現可能割合及び16bit表現可能割合のいずれも割合閾値を超えており、各ゆらぎはゆらぎ閾値未満である。そこで、演算データ型決定部141は、8bit固定小数点数を演算#2の演算データ型とする。これにより、イテレーションIDがit1505のイテレーション以降の範囲725のイテレーションでは、演算データ型の変更が無ければ、8bti固定小数点数が演算#2の演算データ型として用いられる。
次に、演算#3における演算データ型の遷移について説明する。イテレーションIDがit1504のイテレーションの段階で、使用範囲726のように、8bit表現可能割合及び16bit表現可能割合のいずれも割合閾値を超えており、各ゆらぎはゆらぎ閾値未満である。そこで、演算データ型決定部141は、8bit固定小数点数を演算#2の演算データ型とする。これにより、イテレーションIDがit1505のイテレーションの割合727は、8bti固定小数点数を用いて算出される。
しかし、イテレーションIDがit1506のイテレーションの段階で、使用範囲728では、イテレーションIDがit1506のイテレーションの8bit使用可能割合が割合閾値以下となり、8bit使用可能割合のゆらぎもゆらぎ閾値以下となる。そこで、演算データ型決定部141は、演算#3の演算データ型として8bit固定小数点数は使用しない。一方、使用範囲729においてイテレーションIDがit1506のイテレーションでの16bit表現可能割合が割合閾値より大きく、16bit表現可能割合のゆらぎがゆらぎ閾値未満である。そこで、演算データ型決定部141は、16bit固定小数点数を演算#3の演算データ型とする。これにより、イテレーションIDがit1507のイテレーション以降の範囲730のイテレーションでは、演算データ型の変更が無ければ、16bti固定小数点数が演算#3の演算データ型として用いられる。
次に、図16を参照して、実施例3に係る情報処理装置1による演算データ型決定処理の全体的な流れの概要について説明する。図16は、実施例3に係る情報処理装置による演算データ型決定処理のシーケンス図である。
ユーザアプリケーション101は、深層学習の実行指示を実行制御部102に出力する(ステップS401)。
実行制御部102は、深層学習の実行指示をユーザアプリケーション101から受けると、表現可能割合データベース107の初期化を演算データ型判定部104に指示する(ステップS402)。
演算データ型判定部104は、表現可能割合データベース107の初期化の指示を受けて、表現可能割合データベース107に登録済みのデータを消去して初期化する(ステップS403)。
その後、演算データ型判定部104は、表現可能割合データベース107の初期化完了を実行制御部102に通知する(ステップS404)。
実行制御部102は、表現可能割合データベース107の初期化完了の応答を受信すると、学習に使用する学習データの読み込みを学習データ読込部105に指示する(ステップS405)。
学習データ読込部105は、学習データの読み込み指示を受けて、指定された学習データを学習データ記憶部200から読み込む(ステップS406)。
その後、学習データ読込部105は、読み込んだ学習データを実行制御部102へ送信する(ステップS407)。
実行制御部102は、学習データを学習データ読込部105から取得する。次に、実行制御部102は、次のイテレーションの各演算で使用する演算データ型の取得要求を演算データ型判定部104へ出力する(ステップS408)。
演算データ型判定部104は、演算データ型の取得要求の入力を受けて、表現可能割合データベース107を用いて各演算で使用する演算データ型を決定する(ステップS409)。
そして、演算データ型判定部104は、決定した各演算で使用する演算データ型の通知を実行制御部102へ出力する(ステップS410)。
実行制御部102は、各演算で用いる演算データ型を取得する。そして、実行制御部102は、取得した学習データを演算部103へ出力し、さらに各演算で用いる演算データ型を演算部103に通知して演算を実行させる(ステップS411)。
その後、実行制御部102は、演算結果の入力を演算部103から受ける(ステップS412)。
次に、実行制御部102は、取得した演算結果を演算データ型判定部104へ出力して表現可能割合データベース107の更新を指示する(ステップS413)。
演算データ型判定部104は、演算結果に含まれるテンソル要素数を用いて表現可能割合を算出し、算出した表現可能割合を登録して表現可能割合データベース107を更新する(ステップS414)。
その後、演算データ型判定部104は、表現可能割合データベース107の更新完了の通知を実行制御部102へ出力する(ステップS415)。
実行制御部102は、演算データ型データベース106の更新完了の通知の入力を実行制御部102から受ける。実行制御部102、演算部103、演算データ型判定部104及び学習データ読込部105は、1回のイテレーションに含まれる演算全てが完了するまで、ステップS111~S121を繰り返す。さらに、実行制御部102、演算部103、演算データ型判定部104及び学習データ読込部105は、深層学習が完了するまで、ステップS108~S121を繰り返す。その後、実行制御部102は、深層学習の完了をユーザアプリケーション101に通知する(ステップS416)。
次に、図17を参照して、実施例3に係る演算データ型決定処理の詳細な流れについて説明する。図17は、実施例3に係る演算データ型決定処理のフローチャートである。
演算データ型判定部104は、表現可能割合データベース107を初期化する(ステップS501)。
データ読込制御部124は、データベースの初期化完了の通知をデータベース更新指示部123から受ける。また、データ読込制御部124は、学習データの取得要求を演算指示部121から受ける。そして、データ読込制御部124は、学習データの読込要求を学習データ読込部105へ出力する。学習データ読込部105は、学習データの読込要求を受けて、学習データ記憶部200から指定された学習データを読み込む(ステップS502)。その後、学習データ読込部105は、読み込んだ学習データをデータ読込制御部124へ出力する。データ読込制御部124は、取得した学習データを演算指示部121へ出力する。
演算指示部121は、ユーザアプリケーション101から入力された深層学習の実行指示から実行するイテレーションにおける次の演算を選択する(ステップS503)。
そして、演算指示部121は、選択した演算で使用する演算データ型の取得要求を演算データ型決定部141へ出力する。演算データ型決定部141は、取得要求を受けると、選択された演算の使用範囲内のイテレーションでの8bit表現可能割合及び16bit表現可能割合を表現可能割合データベース107から取得する(ステップS504)。ただし、イテレーションが進んでおらず、使用範囲内のイテレーションがそろっていない場合、演算データ型決定部141は、表現可能割合の取得をエラーと判定する。
次に、演算データ型決定部141は、取得した8bit表現可能割合及び16bit表現可能割合を数式(4)に用いて8bit表現可能割合及び16bit表現可能割合のゆらぎを算出する(ステップS505)。ただし、表現可能割合の取得がエラーの場合、演算データ型決定部141は、表現可能割合のゆらぎを算出せずに未算出とする。
次に、演算データ型決定部141は、8bit表現可能割合のゆらぎがゆらぎ閾値未満か否かを判定する(ステップS506)。
8bit表現可能割合のゆらぎがゆらぎ閾値未満の場合(ステップS506:肯定)、演算データ型決定部141は、最新の8bit表現可能割合が割合閾値より大きいか否かを判定する(ステップS507)。
最新の8bit表現可能割合が割合閾値より大きい場合(ステップS507:肯定)、演算データ型決定部141は、演算データ型を8bit固定小数点数に決定する(ステップS508)。
その後、演算データ型決定部141は、選択された演算の演算データ型として8bit固定小数点数を使用することを演算指示部121に通知する。演算指示部121は、8bit固定小数点数を用いて選択した演算を演算部103に実行させる(ステップS509)。
一方、8bit表現可能割合のゆらぎがゆらぎ閾値未満でない場合(ステップS506:否定)又は最新の8bit表現可能割合が割合閾値以下の場合(ステップS507:否定)、演算データ型決定部141は、以下の処理を行う。ここで、8bit表現可能割合のゆらぎが未算出の場合も、演算データ型決定部141は、ゆらぎがゆらぎ閾値未満でない場合と判定する。演算データ型決定部141は、16bit表現可能割合のゆらぎがゆらぎ閾値未満か否かを判定する(ステップS510)。
16bit表現可能割合のゆらぎがゆらぎ閾値未満の場合(ステップS510:肯定)、演算データ型決定部141は、最新の16bit表現可能割合が割合閾値より大きいか否かを判定する(ステップS511)。
最新の16bit表現可能割合が割合閾値より大きい場合(ステップS511:肯定)、演算データ型決定部141は、演算データ型を16bit固定小数点数に決定する(ステップS512)。
その後、演算データ型決定部141は、選択された演算の演算データ型として16bit固定小数点数を使用することを演算指示部121に通知する。演算指示部121は、16bit固定小数点数を用いて選択した演算を演算部103に実行させる(ステップS513)。
一方、16bit表現可能割合のゆらぎがゆらぎ閾値未満でない場合(ステップS510:否定)又は最新の16bit表現可能割合が割合閾値以下の場合(ステップS511:否定)、演算データ型決定部141は、以下の処理を行う。演算データ型決定部141は、選択された演算の演算データ型を32bit浮動小数点数と決定する(ステップS514)。ここで、16bit表現可能割合のゆらぎが未算出の場合も、演算データ型決定部141は、ゆらぎがゆらぎ閾値未満でない場合と判定する。
そして、演算データ型決定部141は、選択された演算の演算データ型として32bit浮動小数点数を使用することを演算指示部121に通知する。演算指示部121は、32bit浮動小数点数を用いて選択した演算を演算部103に実行させる(ステップS515)。
その後、演算データ型要求部122は、選択された演算の演算結果を演算部103から取得する。そして、演算データ型要求部122は、取得した演算結果をデータベース更新部142へ出力するとともに表現可能割合データベース107の更新を指示する。データベース更新部142は、入力された演算結果に含まれるテンソル要素数を用いて8bit表現可能割合及び16bit表現可能割合を計算する(ステップS516)。
次に、データベース更新部142は、算出した8bit表現可能割合及び16bit表現可能割合を表現可能割合データベース107に保存する(ステップS517)。
演算指示部121は、演算部103からイテレーションの完了通知を取得したか否かにより、1つのイテレーション中の全ての演算処理が完了したか否かを判定する(ステップS518)。実行していない演算処理が存在する場合(ステップS518:否定)、演算指示部121は、ステップS503に戻る。
これに対して、1つのイテレーション中の全ての演算処理が完了した場合(ステップS518:肯定)、演算指示部121は、深層学習が完了したか否かを判定する(ステップS519)。深層学習が完了していない場合(ステップS519:否定)、演算指示部121は、ステップS502へ戻る。
これに対して、学習が完了した場合(ステップS519:肯定)、演算指示部121は、深層学習の実行完了をユーザアプリケーション101へ通知する。そして、演算指示部121は、演算データ型の切り替えを伴う深層学習の実行を終了する。
以上に説明したように、本実施例に係る情報処理装置は、以前の演算データ型を参照せずにイテレーション毎に演算データ型を決定する。これにより、8bit固定小数点や16bit固定小数点に演算データ型を切替えた後に、演算精度不足によって学習が進まなくなる状態の発生を軽減することができ、学習精度を向上させることができる。
なお、本実施例に係る情報処理装置においても、8bit固定小数点数及び16bit固定小数点への自動切り替えと、全ての演算の32bit浮動小数点数での実行とを選択できる構成としてもよい。8bit固定小数点数及び16bit固定小数点への自動切り替えが指定された場合、情報処理装置は、上述した処理と同様の処理を実行する。これに対して、全ての演算の32bit浮動小数点数での実行が指定された場合、情報処理装置は、8bit固定小数点数への演算データ型の切り替えを行わずに、深層学習が完了するまで全ての演算を32bit浮動小数点数で実行する。
1 情報処理装置
11 CPU
12 深層学習用プロセッサ
13 メモリ
14 ストレージ
15 ネットワークインタフェース
100 深層学習フレームワーク
101 ユーザアプリケーション
102 実行制御部
103 演算部
104 演算データ型判定部
105 学習データ読込部
106 演算データ型データベース
107 表現可能割合データベース
121 演算指示部
122 演算データ型要求部
123 データベース更新指示部
124 データ読込制御部
141 演算データ型決定部
142 データベース更新部
200 学習データ記憶部

Claims (8)

  1. 演算対象を用いて演算を実行し算出した演算結果を用いて前記演算を繰り返して機械学習を実行する演算部と、
    前記演算結果に含まれる要素数のうち、前記要素数に基づいて決定される小数点位置により算出される所定ビットの固定小数点数として表現可能な範囲に含まれる割合を求める割合算出部と、
    前記割合算出部により算出された前記割合を基に、前記所定ビットの固定小数点数を用いて前記演算部に前記演算を実行させる演算制御部と
    を備えたことを特徴とする情報処理装置。
  2. 前記割合算出部は、前記要素数を基に小数点位置を決定し、前記小数点位置で前記所定ビットの固定小数点数として表現可能な範囲に含まれる前記要素数の割合を求めることを特徴とする請求項1に記載の情報処理装置。
  3. 前記演算制御部は、前記割合が所定の割合閾値より大きい場合に、前記所定ビットの固定小数点数を用いて前記演算部に前記演算を実行させることを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記割合算出部は、前記演算部が前記演算結果を算出する毎に、前記割合を求め、
    前記演算制御部は、前記割合算出部により求められた最新の割合から所定回数前の割合の間の割合の変動を基に、前記所定ビットの固定小数点数を用いて前記演算部に前記演算を実行させる
    ことを特徴とする請求項1~3のいずれか一つに記載の情報処理装置。
  5. 前記演算制御部は、前記割合算出部により算出された前記割合を基に、第1所定ビットの固定小数点数又は第2所定ビットの固定小数点数を用いて前記演算部に前記演算を実行させることを特徴とする請求項1~4のいずれか一つに記載の情報処理装置。
  6. 前記演算制御部は、前記割合算出部により算出された前記割合を基に、浮動小数点数を用いて前記演算部に前記演算を実行させることを特徴とする請求項1~5のいずれか一つに記載の情報処理装置。
  7. 演算対象を用いて演算を実行し算出した演算結果を用いて前記演算を繰り返して機械学習を実行する情報処理装置の制御方法であって、
    前記演算結果に含まれる要素数のうち、前記要素数に基づいて決定される小数点位置により算出される所定ビットの固定小数点数として表現可能な範囲に含まれる割合を求め、
    算出した前記割合を基に、前記所定ビットの固定小数点数を用いて前記情報処理装置に前記演算を実行させる
    ことを特徴とする情報処理装置の制御方法。
  8. 演算対象を用いて演算を実行し算出した演算結果を用いて前記演算を繰り返して機械学習を実行する情報処理装置の制御方法であって、
    前記演算結果に含まれる要素数のうち、前記要素数に基づいて決定される小数点位置により算出される所定ビットの固定小数点数として表現可能な範囲に含まれる割合を求め、
    算出した前記割合を基に、前記所定ビットの固定小数点数を用いて前記情報処理装置に前記演算を実行させる
    処理をコンピュータに実行させることを特徴とする情報処理装置の制御プログラム。
JP2019032730A 2019-02-26 2019-02-26 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム Active JP7255234B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019032730A JP7255234B2 (ja) 2019-02-26 2019-02-26 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
EP20151930.3A EP3702906B1 (en) 2019-02-26 2020-01-15 Information processing apparatus, control method for information processing apparatus, and control program for information processing apparatus
US16/744,240 US11182156B2 (en) 2019-02-26 2020-01-16 Selectively changing arithmetic data types used in arithmetic execution of deep learning applications based on expressible ratio and fluctuation value comparisons to threshold values
CN202010093084.3A CN111612123B (zh) 2019-02-26 2020-02-14 信息处理装置及其控制方法和计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019032730A JP7255234B2 (ja) 2019-02-26 2019-02-26 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム

Publications (2)

Publication Number Publication Date
JP2020135814A JP2020135814A (ja) 2020-08-31
JP7255234B2 true JP7255234B2 (ja) 2023-04-11

Family

ID=69172667

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019032730A Active JP7255234B2 (ja) 2019-02-26 2019-02-26 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム

Country Status (4)

Country Link
US (1) US11182156B2 (ja)
EP (1) EP3702906B1 (ja)
JP (1) JP7255234B2 (ja)
CN (1) CN111612123B (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170061279A1 (en) 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
JP2018124681A (ja) 2017-01-30 2018-08-09 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0696048A (ja) 1992-09-17 1994-04-08 Sanyo Electric Co Ltd ニューラルネットを用いた認識装置
JPH0836644A (ja) 1994-07-26 1996-02-06 Matsushita Electric Works Ltd ニューラルネットによる画像認識方法
US7644115B2 (en) * 2005-01-07 2010-01-05 Sas Institute Inc. System and methods for large-radix computer processing
US11150899B2 (en) * 2018-04-09 2021-10-19 Advanced Micro Devices, Inc. Selecting a precision level for executing a workload in an electronic device
US11645493B2 (en) * 2018-05-04 2023-05-09 Microsoft Technology Licensing, Llc Flow for quantized neural networks
JP6528893B1 (ja) * 2018-11-07 2019-06-12 富士通株式会社 学習プログラム、学習方法、情報処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170061279A1 (en) 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
JP2018124681A (ja) 2017-01-30 2018-08-09 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
西川 良直 Yoshinao NISHIOKA,ASIC化をめざした多層ニューラルネットの開発支援システム Multi-layered Neural Network Development System for ASIC,電子情報通信学会技術研究報告 Vol.91 No.413 IEICE Technical Report,日本,社団法人電子情報通信学会 The Institute of Electronics, Information and Communication Engineers,1992年01月17日,第91巻、第413号,第123~130頁

Also Published As

Publication number Publication date
CN111612123A (zh) 2020-09-01
EP3702906A1 (en) 2020-09-02
JP2020135814A (ja) 2020-08-31
CN111612123B (zh) 2024-06-14
US20200272461A1 (en) 2020-08-27
EP3702906B1 (en) 2023-03-15
US11182156B2 (en) 2021-11-23

Similar Documents

Publication Publication Date Title
Sudholt Parallel evolutionary algorithms
JP5851536B2 (ja) 命令に応じた丸め処理の実行
CN110008952B (zh) 一种目标识别方法及设备
Rehbach et al. Expected improvement versus predicted value in surrogate-based optimization
CN110457068B (zh) 用于深度学习加速的非常低精度浮点表示
TWI536194B (zh) 用於解決隨機問題之裝置及方法
JP2015064876A (ja) 二分木を用いてモデル化される工業製品を設計するためのコンピュータ実装方法
Mangasarian et al. Nonlinear knowledge in kernel approximation
Hernández Gómez et al. A parallel version of SMS-EMOA for many-objective optimization problems
CN112513886A (zh) 信息处理方法、信息处理装置和信息处理程序
CN110637306A (zh) 基于先前的简化图执行的条件性图执行
CN110990063B (zh) 一种用于基因相似性分析的加速装置、方法和计算机设备
JP7255234B2 (ja) 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
JP2023139286A (ja) 回路情報、情報処理方法、プログラムおよび情報処理システム
Yao et al. Faster yolo-lite: Faster object detection on robot and edge devices
JP4310500B2 (ja) 重要成分優先計算方式ならびに装置
JP2017163429A (ja) 時系列データ圧縮装置
CN116151384B (zh) 量子电路处理方法、装置及电子设备
Varsi et al. Parallelising particle filters with deterministic runtime on distributed memory systems
CN115630595A (zh) 逻辑电路的自动生成方法、装置、电子设备及存储介质
CN116745774A (zh) 具有针对带噪标签的噪声鲁棒损失的实例自适应训练
US20210173978A1 (en) Optimization device, optimization device control method, and computer-readable recording medium recording optimization device control program
JP2016018323A (ja) パラメータ推定方法、装置、及びプログラム
JP2022034897A (ja) 情報処理装置、機械学習方法及び機械学習プログラム
CN112148865B (zh) 信息推送方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221011

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221206

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230313

R150 Certificate of patent or registration of utility model

Ref document number: 7255234

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150