JP2019212112A - 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法 - Google Patents

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

Info

Publication number
JP2019212112A
JP2019212112A JP2018108780A JP2018108780A JP2019212112A JP 2019212112 A JP2019212112 A JP 2019212112A JP 2018108780 A JP2018108780 A JP 2018108780A JP 2018108780 A JP2018108780 A JP 2018108780A JP 2019212112 A JP2019212112 A JP 2019212112A
Authority
JP
Japan
Prior art keywords
function
unit
operations
arithmetic processing
point
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.)
Withdrawn
Application number
JP2018108780A
Other languages
English (en)
Inventor
松山 学
Manabu Matsuyama
学 松山
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 JP2018108780A priority Critical patent/JP2019212112A/ja
Priority to US16/401,128 priority patent/US20190377548A1/en
Publication of JP2019212112A publication Critical patent/JP2019212112A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F7/485Adding; Subtracting
    • 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
    • G06F7/487Multiplying; Dividing
    • 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
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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/3824Accepting both fixed-point and floating-point numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Nonlinear Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】回路の小規模化、省電力化及び高速化を実現する演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法を提供する。【解決手段】サンプルデータ処理部101は、浮動小数点形式の複数の演算を含む情報処理に対し、所定のデータを用いて、各演算における入データ及び出力データを取得する。代替関数取得部103は、各演算のうち少なくとも超越関数を含む複雑関数で表される特定演算を抽出し、入力データを基に各特定演算における複雑関数よりも計算量の少ない代替関数を求める。置換部104は、代替関数取得部103により求められた代替関数に情報処理における特定演算を置き換える。【選択図】図2

Description

本発明は、演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法に関する。
近年、人工知能分野、特に深層学習という新しい手法による問題解決に対する関心が高まっており、深層学習を効率よく実施するための工夫が求められている。深層学習では、個々の演算精度への要求は他のコンピュータ処理ほど厳密ではない。例えば、従来の信号処理などでは、プログラマは極力桁あふれを発生させないようにコンピュータプログラムを開発する。一方、深層学習では、大きな値がある程度飽和することは許容される。なぜなら、深層学習では、複数の入力データを畳み込み演算するときの係数の調整が主な処理となり、入力データのうち極端なデータは重視されないことが多いからである。
このような深層学習の特性を考慮し、例えば、深層学習を効率よく実施するための工夫の1つとして、数値の表現に通常用いられる浮動小数点形式の代わりに、固定小数点形式を用いる技術が提案されている。
ここで、数値の表現に浮動小数点形式を用いた情報処理を、16ビット又は8ビットの固定小数点形式の数値を扱う情報処理に変換する従来の手順について説明する。まず、演算処理装置は、数値の表現に浮動小数点形式を使用した場合の情報処理でサンプルデータを処理する。次に、演算処理装置は、情報処理に含まれる各演算に対して固定小数点形式に変換できるか否かを判定する。具体的には以下の処理を繰り返す。
まず、演算処理装置は、演算が超越関数か否かを判定する。そして演算が超越関数の場合、演算処理装置は、次の演算の処理に移る。ここで、超越関数とは、入力データに対する答えの桁数が大きく異なりうる関数である。より具体的には、超越関数とは、加算、乗算及び冪根という代数的演算を有限回用いて表すことが困難な関数であり、言い換えれば、多項式方程式を満たさない解析関数である。例えば、指数関数、対数関数及び三角関数などは超越関数である。演算が超越関数でなければ、演算処理装置は、演算の入出力のデータの最大値及び最小値の頻度分布を確認する。演算の入出力のデータの最大値及び最小値の頻度分布が一定の範囲内に収まる場合、演算処理装置は、その演算は固定小数点に変換できると判定する。そして、演算処理装置は、その演算の各変数に適した固定小数点形式における小数点位置を記録する。これに対して、最大値及び最小値の頻度分布が一定の範囲内に収まらない場合、演算処理装置は、次の演算に移る。
各演算に対する固定小数点形式への変換の可否の判定が完了すると、演算処理装置は、情報処理を先頭から順に走査して、固定小数点形式に変換できると判定した各演算を特定して固定小数点形式に変換する。次に、演算処理装置は、固定小数点形式に変換できると判定した各演算において、入力データが浮動小数点形式である演算を特定する。そして、演算処理装置は、特定した演算を固定小数点形式に変換する場合の小数点位置を用いて、入力データを固定小数点形式に変換する処理を挿入する。
固定小数点形式への変換可能な演算の変換完了後に、演算処理装置は、固定小数点形式に変換できない演算の入出力の調整を以下の方法で行う。演算処理装置は、情報処理を先頭から順に走査して固定小数点形式に変換できない各演算の中から入力データが固定小数点形式である演算を特定する。そして、演算処理装置は、特定した各演算の入力データを固定小数点形式から浮動小数点形式に変換する処理を挿入する。次に、演算処理装置は、情報処理を先頭から順に走査して固定小数点形式に変換できない各演算の中から出力データが他の固定小数点形式の演算の入力データである演算を特定する。そして、演算処理装置は、特定した各演算の次の演算を固定小数点形式に変換する際の小数点位置を用いて、特定した各演算の出力データを固定小数点形式に変換する処理を挿入する。
固定小数点形式に変換できない演算の入出力の調整の完了後、演算処理装置は、最終出力が浮動小数点形式の場合、その最終出力を固定小数点形式に変換する処理を挿入することで最終出力調整を行う。以上により、演算処理装置は、数値の表現に浮動小数点形式を用いた情報処理を、固定小数点形式の数値表現を用いた情報処理に変換することができる。
ここで、演算回路の設計について考えると、所定の小数点位置である固定小数点形式の数値データを取り扱う超越関数の演算回路を設計することは困難である。そのため、情報処理に超越関数を用いる演算が含まれる場合、与えられたサンプルデータの頻度分布が固定小数点形式への変換が可能な範囲に収まっている場合でも、その演算処理を固定小数点形式に変換することは困難である。そこで、従来の固定小数点形式への変換処理では、演算処理装置は、上述のように演算が超越関数で表される場合その演算を浮動小数点形式のままにして、前後の固定小数点形式の演算との間にデータ形式を変換する処理を挿入していた。
また、浮動小数点形式の演算を固定小数点形式の演算に変換する技術として、対象変数の値の変化を履歴として出力し、検出した対象変数の値の範囲に基づいて固定小数点形式に変換する従来技術がある。
特開2008−33729号公報
しかしながら、超越関数の演算はハードウェアのコスト、演算の実行時間及び消費電力が通常の演算に比べてかさむ。そのため、従来の固定小数点形式への変換のように、超越関数を残した場合、固定小数点形式に変換することによる回路の小規模化、省電力化及び高速化といった利点の一部が相殺される可能性がある。また、超越関数を含む演算の前後に浮動小数点形式と固定小数点形式との間の形式変換処理が挿入されるため、余分なコストや時間がかかるおそれがある。
また、履歴を基に検出した対象変数の値の範囲に応じて固定小数点形式へ変換する従来技術でも、超越関数についての取り扱いは考慮されておらず、回路の小規模化、省電力化及び高速化を実現することは困難である。
なお、ここでは、超越関数について説明したが、演算回路の設計が困難である関数については同様の問題が生じる。超越関数以外の演算回路の設計が困難である関数としては、例えば、平方根などがある。
開示の技術は、上記に鑑みてなされたものであって、回路の小規模化、省電力化及び高速化を実現する演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法を提供することを目的とする。
本願の開示する演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法の一つの態様において、取得部は、浮動小数点形式の複数の演算を含む情報処理に対し、所定のデータを用いて、各前記演算における入データ及び出力データを取得する。関数取得部は、各前記演算のうち少なくとも超越関数を含む複雑関数で表される特定演算を抽出し、前記入力データを基に各前記特定演算における前記複雑関数よりも計算量の少ない代替関数を求める。置換部は、前記関数取得部により求められた前記代替関数に前記情報処理における前記特定演算を置き換える。
1つの側面では、本発明は、回路の小規模化、省電力化及び高速化を実現することができる。
図1は、演算処理装置のハードウェア構成図である。 図2は、演算処理装置のブロック図である。 図3は、Q表記の決定処理を説明するための図である。 図4は、超越関数と直線近似式とを表す図である。 図5は、超越関数と直線近似式の誤差を説明するための図である。 図6は、実施例1に係る演算処理装置による深層学習の処理のフローチャートである。 図7は、浮動小数点版プログラムの固定小数点版プログラムへの変換処理のフローチャートである。 図8は、変換可能演算の抽出及び複雑関数の置換の処理のフローチャートである。 図9は、実施例1に係る演算処理装置による深層学習全体の流れを説明するための図である。
以下に、本願の開示する演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法が限定されるものではない。
図1は、演算処理装置のハードウェア構成図である。演算処理装置1は、サーバ装置などのコンピュータである。演算処理装置1は、図1に示すように、CPU11、メモリ12、ディスク装置13、入力装置14及び出力装置15を有する。CPU11は、バスを介してメモリ12、ディスク装置13、入力装置14及び出力装置15と接続される。
ディスク装置13は、ハードディスクなどの記憶媒体を備える。本実施例では、ディスク装置13は、利用者により入力装置14を用いて入力された浮動小数点版プログラム31及び浮動小数点サンプルデータ32を予め格納する。浮動小数点版プログラム31は、例えば、数値の表現に浮動小数点形式が用いられた深層学習プログラムである。すなわち、浮動小数点版プログラム31は、浮動小数点形式の入力データが与えられ、浮動小数点形式の数値を用いて計算を行うプログラムである。浮動小数点版プログラム31は、複数の浮動小数点形式の演算を含む。例えば、浮動小数点版プログラム31は、深層学習における畳み込み層(Convolution Layer)、プーリング層(Pooling Layer)、全結合層(Fully Connected Layer)及びSoftmax層といった各層で実行される演算を含む。浮動小数点サンプルデータ32は、浮動小数点版プログラム31のサンプル用の入力データである。言い換えると、当該浮動小数点サンプルデータ32は、所定のデータであって、浮動小数点版プログラム31が正常に動作するようなデータであれば、どのようなデータであってもよい。浮動小数点サンプルデータ32は、浮動小数点形式の値を有する。この浮動小数点版プログラム31が、「情報処理」の一例にあたる。
また、ディスク装置13は、後述する浮動小数点版プログラム31の固定小数点形式への変換処理が行われた後に、その変換結果である固定小数点版プログラム33を格納する。固定小数点版プログラム33は、数値の表現に固定小数点形式が用いられた深層学習プログラムである。すなわち、固定小数点版プログラム33は、固定小数点形式の入力データが与えられ、固定小数点形式の数値を用いて計算を行うプログラムである。
さらに、ディスク装置13は、後述する浮動小数点形式の演算を固定小数点形式の演算に変換する機能を実現するプログラムを含む各種プログラムを有する。
メモリ12は、例えばDRAM(Dynamic Random Access Memory)などの主記憶装置である。入力装置14は、例えばキーボードやマウスなどである。演算処理装置1の利用者は、入力装置14を用いて演算処理装置1へデータ及び命令の入力などを行う。出力装置15は、例えばモニタなどである。演算処理装置1の利用者は、出力装置15を用いて演算処理装置1による演算結果の確認などを行う。
CPU11は、ディスク装置13に格納された各種プログラムを読み出してメモリ12上に展開して実行する。これにより、例えば、CPU11は、後述する浮動小数点形式の演算を固定小数点形式の演算に変換する機能や深層学習の機能を実現する。
次に、図2を参照して、本実施例に係る演算処理装置1による浮動小数点形式の演算を固定小数点形式の演算に変換する機能について説明する。図2は、演算処理装置のブロック図である。
図2に示すように、演算処理装置1は、サンプルデータ処理部101、演算変換判定部102、代替関数取得部103、置換部104、変換部105、入出力調整部106、最終出力調整部107を有する。さらに、演算処理装置1は、記憶部108及び深層学習実行部109を有する。サンプルデータ処理部101、演算変換判定部102、代替関数取得部103、置換部104、変換部105、入出力調整部106及び最終出力調整部107深層学習実行部109は、CPU11がディスク装置13に格納された各種プログラムを実行することで実現される。また、深層学習実行部109も、CPU11がディスク装置13に格納された各種プログラムを実行することで実現される。
記憶部108は、図1に示すディスク装置13により実現される。記憶部108は、予め浮動小数点版プログラム31及び浮動小数点サンプルデータ32を記憶する。
サンプルデータ処理部101は、浮動小数点版プログラム31及び浮動小数点サンプルデータ32を記憶部108から取得する。次に、サンプルデータ処理部101は、各浮動小数点サンプルデータ32を入力データとして浮動小数点版プログラム31を実行する。そして、サンプルデータ処理部101は、浮動小数点版プログラム31に含まれる各演算に対する入力データ及び各演算からの出力データを取得する。その後、サンプルデータ処理部101は、各演算の入出力データを演算変換判定部102へ出力する。このサンプルデータ処理部101が、「取得部」の一例にあたる。
演算変換判定部102は、浮動小数点版プログラム31に含まれる各演算の入出力データの入力をサンプルデータ処理部101から受ける。次に、演算変換判定部102は、浮動小数点版プログラム31に含まれる演算から1つの演算を判定対象演算として抽出する。そして、演算変換判定部102は、判定対象演算の入力データの最大値及び最小値を取得する。さらに、演算変換判定部102は、判定対象演算の入力データの頻度分布を求める。また、演算変換判定部102は、判定対象演算の出力データの最大値及び最小値を取得する。さらに、演算変換判定部102は、判定対象演算の出力データの頻度分布を求める。
次に、演算変換判定部102は、判定対象演算の入力データの最大値、最小値及び頻度分布、並びに、出力データの最大値、最小値及び頻度分布が一定の範囲内に収まるか否かを判定する。入力データの最大値、最小値及び頻度分布、並びに、出力データの最大値、最小値及び頻度分布が一定の範囲内に収まる場合、演算変換判定部102は、判定対象演算が固定小数点形式に変換可能な変換可能演算であると判定する。逆に、入力データの最大値、最小値及び頻度分布、並びに、出力データの最大値、最小値及び頻度分布が一定の範囲内に収まらない場合、演算変換判定部102は、判定対象演算が固定小数点形式に変換が困難な演算であると判定する。そして、演算変換判定部102は、各変換可能演算について固定小数点形式に変換する場合に数値の小数点がどの位置にあるかを示すQ表記を取得する。
Q表記はQフォーマットとも呼ばれる。例えば、Nビットの固定小数点のQ表記は、Qm,nと表される。ただし、m+n=N−1である。これは、数値の正負の符号を表すために1ビットを使用するからである。そして、Qm,nとされたQ表記で表現できる数値の範囲は、−2〜+2−2−nであり、その精度は2−nである。
以下に、演算変換判定部102による判定処理及びQ表記の決定処理の詳細について説明する。Q表記においてmとnとの和は一定であるため、表現できる数値の範囲と精度とはトレードオフの関係となる。したがって、表現できる数値の範囲を広げた場合、個々のデータを弁別するための精度は下がる。逆に、精度を取るために表現できる数値の範囲を狭めた場合、その範囲を超えるデータが発生する可能性が上がる。範囲を超えるデータが発生した状態は「飽和」と呼ばれ、飽和状態において範囲を超えないデータが、そのQ表記での表現可能な最大値又は最小値にあたる。
表現できる数値の範囲を広げた場合や飽和状態となった場合のいずれでも、深層学習の収束までの繰り返し実行回数が延びる、あるいは永遠に収束しないといった状態に陥るおそれがある。そこで、深層学習を固定小数点形式で実施する場合、学習の収束が浮動小数点形式の場合と同程度で収束するQ表記の範囲は、予め決られていることが好ましい。このQ表記の範囲は、個々の深層学習プログラムによって異なる。そこで、演算変換判定部102は、以下の方法により実測で判定対象演算に対するQ表記を取得する。
演算変換判定部102は、浮動小数点版プログラム31で浮動小数点サンプルデータ32を用いた場合の学習収束までの繰り返し実行回数を計測する。次に、演算変換判定部102は、入力データの最大値、最小値及び頻度分布から固定小数点版プログラム33のQ表記を仮決めする。次に、演算変換判定部102は、仮決めしたQ表記により、固定小数点版プログラム33を実行する。そして、演算変換判定部102は、浮動小数点版プログラム31における判定対象演算を仮決めしたQ表記を用いて固定小数点形式に変換したプログラムを実行した場合の繰り返し実行回数を求める。そして、演算変換判定部103は、求めた実行回数が元の浮動小数点版プログラム31を実行した場合の繰り返し実行回数を大きく超える場合、Q表記を更新する。
その後、演算変換判定部102は、更新したQ表記を用いて浮動小数点版プログラム31における判定対象演算を固定小数点形式に変換したプログラムを実行して、繰り返し実行回数の比較を再度行う。判定対象演算を固定小数点形式に変換したプログラムを実行した場合の繰り返し実行回数が、浮動小数点版プログラム31を実行した場合の繰り返し実行回数を大きく超えなくなるまで、演算変換判定部102は、Q表記の更新を繰り返す。そして、演算変換判定部102は、判定対象演算を固定小数点形式に変換したプログラムを実行した場合の繰り返し実行回数が浮動小数点版プログラム31を実行した場合の繰り返し実行回数と同程度になると、判定対象演算は変換可能演算であると判定する。そして、演算変換判定部102は、その時点でのQ表記を判定対象演算で用いる固定小数点のQ表記とする。例えば、演算変換判定部102は、繰り返し実行回数の差が予め決められた閾値以下になった場合に、繰り返し実行回数が同程度と判定する。
例えば、入力データを例に演算変換判定部102による判定処理及びQ表記の決定処理について説明する。ここでは、入力データの最大値、最小値及び頻度分布に応じて入力データが図3のグラフ201で表される場合で説明する。図3は、Q表記の決定処理を説明するための図である。グラフ201及び202は、入力データの分布を表すグラフであり、いずれも縦軸で個数を表し、横軸で入力データの値である入力値を表す。
8ビットの固定小数点を用いる場合、最大値が8.5であり、最小値が0.0であるので、演算変換判定部102は、Q表記をQ4.3として仮決めする。Q4.3は、表現範囲が−16〜15.875であり、精度が0.125である。演算変換判定部102は、判定対象演算を固定小数点形式にした場合のQ表記をQ4.3として、深層学習を実行する。この深層学習が浮動小数点形式の場合と同程度の繰り返し実行回数で学習が収束すれば、演算変換判定部102は、判定対象演算が変換可能演算であると判定し、そのQ表記をQ4.3と決定する。
また、深層学習が浮動小数点形式の場合と同程度の繰り返し実行回数で学習が収束しない場合、演算変換判定部102は、例えば、Q表記をQ3.4に変更する。Q3.4は、表現範囲がー8〜7.9325であり、精度が0.0625である。この場合、グラフ202において、7.9325である最大値Tを超える入力データが飽和する。ただし、Q3.4の場合、Q4.3のQ表記の場合に比べてデータを表現する精度が高くなる。演算変換判定部102は、判定対象演算を固定小数点形式にした場合のQ表記をQ3.4として、深層学習を実行する。この深層学習が浮動小数点形式の場合と同程度の繰り返し実行回数で学習が収束すれば、演算変換判定部102は、判定対象演算が変換可能演算であると判定し、そのQ表記をQ3.4と決定する。
以上のような処理を行って、演算変換判定部102は、判定対象演算が変換可能演算か否かを判定し、判定対象演算が変換可能演算の場合、判定対象可能演算のQ表記を決定する。演算変換判定部102は、この判定処理を浮動小数点版プログラム31に含まれる全ての演算について繰り返し実行する。そして、演算変換判定部102は、変換可能演算であると判定した演算の情報を代替関数取得部103へ出力する。さらに、演算変換判定部102は、変換可能演算であると判定した各演算について決定したQ表記の情報を変換部105へ出力する。この演算変換判定部102が、「特定部」の一例にあたる。
代替関数取得部103は、変換可能演算である演算の情報の入力を演算変換判定部102から受ける。次に、代替関数取得部103は、変換可能演算であると判定された各演算を表す関数が、固定小数点形式へ変換するための演算回路の設計が困難である複雑関数か否かを判定する。複雑関数は、入力に対して出力の桁数が所定値以上となる関数と定義することもできる。複雑関数には、例えば、超越関数や平方根を求める関数などが含まれる。ただし、複雑関数は、固定小数点へ変換するための演算回路の設計が困難である関数であれば他の関数でもよく、例えば、べき乗計算を行う関数などでもよい。べき乗計算には、例えば、xの2乗、xの3乗、xの−1乗(1/x)、xの1/2乗(√x)、xの−1/2乗(1/√x)などがある。この複雑演算で表される演算が、「特定演算」の一例にあたる。
代替関数取得部103は、複雑関数で表される演算の中から演算を1つ選択する。次に、代替関数取得部103は、選択した演算の入力データの最小値、最大値及び中央値を求める。次に、代替関数取得部103は、入力データの最小値、最大値及び中央値の3点に対応する演算の出力データの値である出力値を算出する。そして、代替関数取得部103は、入力値と出力値との対応を表す座標上の、入力データの最小値、最大値及び中央値とそれらの出力値を表す3点に対して、最小二乗法を用いて直線近似式を求める。次に、代替関数取得部103は、求めた直線近似式の出力値と元の複雑関数の出力値との誤差を求める。そして、誤差が予め決められた許容範囲内であれば、代替関数取得部103は、その演算の情報とともに求めた直線近似式の情報を代替関数として置換部104へ出力し、置換を指示する。これに対して誤差が予め決められた許容範囲内に収まらない場合、代替関数取得部103は、その演算の置換を行わない旨を置換部104に通知する。代替関数取得部103は、変換可能関数全てについて上述した代替関数を決定する処理を繰り返す。
ここで、図4及び5を参照して、複雑関数から直線近似式への置換についてさらに説明する。図4は、超越関数と直線近似式とを表す図である。図5は、超越関数と直線近似式の誤差を説明するための図である。ここでは、複雑関数がy=log(x)という超越関数である場合で説明する。図4及び5は、いずれも横軸でxの値を表し、縦軸でyの値を表す。
代替関数取得部103は、図4に示すように、log(x)である超越関数301の入力データにおける最小値311、最大値312及び中央値313を求める。次に、代替関数取得部103は、最小値311、最大値312及び中央値313を入力値とした場合の出力値を表す点321〜323を求める。そして、代替関数取得部103は、点321〜323に対して、最小二乗法を用いて直線近似式を求める。近似直線302は、代替関数取得部103により求められた直線近似式で表される直線である。ここで、近似直線302は、入力データが多い中央値313の近傍で、超越関数301との誤差が少なくなる。次に、代替関数取得部103は、入力データの範囲内での近似直線302と超越関数301との最大誤差を求める。ここでは、入力値の最大値312において誤差が最大となる。図5における枠Fは、入力値の最大値312付近の近似直線302と超越関数301とを拡大したものを表す。代替関数取得部103は、入力データの範囲内での近似直線302と超越関数301との最大誤差として誤差Pを取得する。そして、代替関数取得部103は、入力データの範囲内での最大誤差である誤差Pが許容範囲内であれば超越関数301を近似直線302に置換可能であると判定する。この代替関数取得部103が、「関数取得部」の一例にあたる。
置換部104は、関数の置換を行う演算の情報とともにその演算に対応する直線近似式の情報の入力を代替関数取得部103から受ける。次に、置換部104は、浮動小数点版プログラム31を記憶部108から取得する。そして、置換部104は、浮動小数点版プログラム31に含まれるプログラムにおける各演算のうち関数の置換が指示された演算を表す関数を複雑関数から直線近似式へ置換する。その後、置換部104は、指定された演算の複雑関数から直線近似への置換を施した浮動小数点版プログラム31を変換部105へ出力する。
変換部105は、複雑関数から直線近似式への置換が施された浮動小数点版プログラム31の入力を置換部104から受ける。また、変換部105は、浮動小数点版プログラム31に含まれる各変換可能演算のQ表記の入力を演算変換判定部102から受ける。次に、変換部105は、浮動小数点版プログラム31に含まれる演算を先頭から順に走査し、変換可能演算を特定する。そして、変換部105は、特定した各変換可能演算を変換部105から指定された固定小数点形式に変換し、固定小数点版プログラム33を生成する。さらに、変換部105は、固定小数点形式に変換した各演算の入力データが浮動小数点であるか否かを判定する。入力データが浮動小数点である演算について、変換部105は、その演算に与えられたQ表記で入力データを固定小数点形式に変換する処理を固定小数点版プログラム33に挿入する。その後、変換部105は、固定小数点版プログラム33を入出力調整部106へ出力する。
入出力調整部106は、固定小数点版プログラム33の入力を変換部105から受ける。次に、入出力調整部106は、固定小数点版プログラム33に含まれる演算を先頭から順に走査し、固定小数点形式に変換されずに浮動小数点形式のままの演算を抽出する。次に、入出力調整部106は、抽出した浮動小数点形式の各演算に対する入力データが固定小数点形式か否かを判定する。そして、入出力調整部106は、抽出した演算のうち入力データが固定小数点形式である演算について、その演算の入力データを浮動小数点形式に変換する処理を固定小数点版プログラム33に挿入する。
次に、入出力調整部106は、抽出した浮動小数点形式の演算の出力データが他の固定小数点形式の演算の入力データとなる場合、後ろの演算に与えられたQ表記で出力データを固定小数点形式に変換する処理を固定小数点版プログラム33に挿入する。その後、入出力調整部106は、入出力調整が完了した固定小数点版プログラム33を最終出力調整部107へ出力する。
最終出力調整部107は、入出力調整が完了した固定小数点版プログラム33の入力を入出力調整部106から受ける。そして、最終出力調整部107は、固定小数点版プログラム33の最終の出力データが浮動小数点形式であるか否かを判定する。最終の出力データが浮動小数点形式である場合、最終出力調整部107は、最終の出力データを固定小数点形式に変換する処理を固定小数点版プログラム33に挿入し、最終的な固定小数点版プログラム33を作成する。これに対して、最終の出力データが浮動小数点形式でない場合、最終出力調整部107は、取得した固定小数点版プログラム33を最終的な固定小数点版プログラム33とする。その後、最終出力調整部107は、最終的な固定小数点版プログラム33を記憶部108に記憶させる。
深層学習実行部109は、操作者からの入力データを受信する。そして、深層学習実行部109は、記憶部108に記憶された固定小数点版プログラム33を読み出し、受信したデータを用いて深層学習を実行する。
本実施例に係る深層学習実行部109は、深層学習の実行中に固定小数点版プログラム33に含まれる各演算における各変数の小数点位置を、オーバーフローの量を抑えるように更新する処理を行う。例えば、深層学習実行部109は、記憶部108に記憶された固定小数点版プログラム33に含まれる各演算に割り当てられたQ表記を用いて深層学習を始める。そして、深層学習実行部109は、各層の各変数のオーバーフローの回数を統計情報として保存する。変数にオーバーフローが発生した場合、深層学習実行部109は、変数に対する飽和処理を行い、学習を続行する。ここで、飽和処理とは、オーバーフローした上位桁を無視する処理である。
そして、深層学習実行部109は、学習終了後、統計情報として蓄積したオーバーフロー回数からオーバーフロー率を求め、求めたオーバーフロー率を基に、固定小数点版プログラム33の各演算で用いる固定小数点の小数点位置を調整する。その後、深層学習実行部109は、固定小数点の小数点位置を調整した固定小数点版プログラム33を用いて、オーバーフローの回数をカウントしつつ深層学習を再度行う。深層学習実行部109は、深層学習の状態が所定の条件を満たした場合、深層学習を終了する。例えば、深層学習実行部109は、全結合層でのエラーが基準値以下となるか又は学習回数が既定の最大値に達した場合に深層学習を終了する。
次に、図6を参照して、本実施例に係る演算処理装置1による深層学習の処理の全体的な流れを説明する。図6は、実施例1に係る演算処理装置による深層学習の処理のフローチャートである。
サンプルデータ処理部101は、浮動小数点形式の深層学習用プログラムである浮動小数点版プログラム31を記憶部108から取得する(ステップS1)。
また、サンプルデータ処理部101は、浮動小数点サンプルデータ32を記憶部108から取得する(ステップS2)。
次に、サンプルデータ処理部101、演算変換判定部102、代替関数取得部103、置換部104、変換部105、入出力調整部106及び最終出力調整部107は、固定小数点形式の深層学習プログラムである固定小数点版プログラム33を生成する(ステップS3)。その後、最終出力調整部107は、生成した固定小数点版プログラム33を記憶部108に記憶させる。
その後、深層学習実行部109は、記憶部108に記憶された固定小数点版プログラム3を用いて深層学習を実行する(ステップS4)。
次に、図7を参照して、浮動小数点版プログラム31の固定小数点版プログラム33への変換処理の流れについて説明する。図7は、浮動小数点版プログラムの固定小数点版プログラムへの変換処理のフローチャートである。図7に示したフローチャートは、図6におけるステップS3の処理の一例にあたる。
サンプルデータ処理部101は、浮動小数点サンプルデータ32を用いて浮動小数点版プログラム31を実行してサンプルデータを処理する(ステップS11)。これにより、サンプルデータ処理部101は、浮動小数点版プログラム31に含まれる各演算の入力データ及び出力データを取得する。そして、サンプルデータ処理部101は、浮動小数点版プログラム31に含まれる各演算の入力データ及び出力データを演算変換判定部102へ出力する。
演算変換判定部102は、浮動小数点版プログラム31に含まれる各演算の入力データ及び出力データの入力をサンプルデータ処理部101から受ける。そして、演算変換判定部102は、各演算の入力データの最大値、最小値及び頻度分布、並びに、出力データの最大値、最小値及び頻度分布を取得する。次に、演算変換判定部102は、各演算の入力データの最大値、最小値及び頻度分布、並びに、出力データの最大値、最小値及び頻度分布が一定の範囲内に収まるか否かを判定し、演算毎に固定小数点形式に変換できるか否かを検査する。ここで、入力データの最大値、最小値及び頻度分布、並びに、出力データの最大値、最小値及び頻度分布が一定の範囲内に収まる場合、演算変換判定部102は、その演算が固定小数点形式に変換可能な変換可能演算であると判定する。そして、各変換可能演算について、演算変換判定部102は、固定小数点形式に変換する場合のQ表記を決定する(ステップS12)。その後、演算変換判定部102は、変換可能演算の情報を代替関数取得部103及び変換部105へ出力する。さらに、演算変換判定部102は、各変換可能演算のQ表記の情報を変換部105へ出力する。
代替関数取得部103は、変換可能演算の情報の入力を演算変換判定部102から受ける。次に、代替関数取得部103は、変換可能演算のうち複雑関数で表される演算を抽出する。次に、代替関数取得部103は、抽出した各変換可能演算の入力データの最大値、最小値及び中央値を求める。そして、代替関数取得部103は、求めた入力データの最大値、最小値及び中央値を用いて各変換可能演算を表す複雑関数の直線近似式を求める。次に、代替関数取得部103は、各変換可能演算を表す複雑関数とその直線近似式との誤差が許容範囲内であるか否かを判定する。誤差が許容範囲内であれば、代替関数取得部103は、変換可能演算を表す複雑関数に求めた直線近似式が置換可能であると判定する。これに対して、誤差が許容範囲内になければ、代替関数取得部103は、変換可能演算を表す複雑関数を置換する直線近似式は無いと判定する。このようにして、代替関数取得部103は、演算を表す複雑関数に置換可能な直線近似式を求める(ステップS13)。その後、代替関数取得部103は、置換可能な複雑関数で表される変換可能演算の情報及び置換する直線近似式の情報を置換部104へ出力する。
置換部104は、置換可能な複雑関数で表される変換可能演算の情報及び置換する直線近似式の情報の入力を代替関数取得部103から取得する。また、置換部104は、浮動小数点版プログラム31を記憶部108から取得する。そして、置換部104は、浮動小数点版プログラム31に含まれる演算を先頭から順に走査して置換可能な複雑関数で表される変換可能演算を抽出する。次に、置換部104は、浮動小数点版プログラム31における抽出した変換可能演算を表す複雑関数を取得した直線近似式に置換する(ステップS14)。その後、置換部104は、複雑関数を直線近似式に置換した浮動小数点版プログラム31を変換部105へ出力する。
変換部105は、複雑関数を直線近似式に置換した浮動小数点版プログラム31の入力を置換部104から受ける。また、変換部105は、変換可能演算の情報の入力を演算変換判定部102から受ける。次に、変換部105は、取得した浮動小数点版プログラム31に含まれる演算を先頭から走査し、変換可能演算を抽出する。そして、変換部105は、浮動小数点版プログラム31における抽出した変換可能演算を固定小数点形式に変換して固定小数点版プログラム33を生成する(ステップS15)。さらに、変換部105は、固定小数点形式に変換した演算の入力データが浮動小数点形式である場合、その入力データを固定小数点形式に変換する処理を固定小数点版プログラム33に挿入する。その後、変換部105は、固定小数点版プログラム33を入出力調整部106へ出力する。
入出力調整部106は、固定小数点版プログラム33の入力を変換部105から受ける。次に、入出力調整部106は、固定小数点版プログラム33に含まれる演算を先頭から順に走査して浮動小数点形式の演算を抽出する。そして、入出力調整部106は、抽出した浮動小数点形式の演算の入出力の調整を行う(ステップS16)。具体的には、入出力調整部106は、抽出した各浮動小数点形式の演算の入力データが固定小数点形式か否かを判定する。入力データが固定小数点形式の場合、入出力調整部106は、その浮動小数点形式の演算の入力データを浮動小数点形式に変換する処理を固定小数点版プログラム33に挿入する。さらに、入出力調整部106は、抽出した各浮動小数点形式の演算の出力データが固定小数点形式の演算の入力データであるか否かを判定する。出力データが固定小数点形式の演算の入力データである場合、入出力調整部106は、その浮動小数点形式の演算の出力データを固定小数点形式に変換する処理を固定小数点版プログラム33に挿入する。その後、入出力調整部106は、浮動小数点形式の演算の入出力の調整を行った固定小数点版プログラム33を最終出力調整部107へ出力する。
最終出力調整部107は、固定小数点版プログラム33の入力を入出力調整部106から受ける。そして、最終出力調整部107は、固定小数点版プログラム33の最終出力の調整を行う(ステップS17)。具体的には、最終出力調整部107は、最終の出力データが浮動小数点形式であるか否かを判定する。そして、最終の出力データが浮動小数点形式で有れば、最終出力調整部107は、最終の出力データを固定小数点形式に変換する処理を固定小数点版プログラム33に挿入する。その後、最終出力調整部107は、固定小数点版プログラム33を記憶部108に記憶させる。
次に、図8を参照して、変換可能演算の抽出及び複雑関数の置換の処理の流れについて説明する。図8は、変換可能演算の抽出及び複雑関数の置換の処理のフローチャートである。図8に示したフローは、図7におけるステップS12〜S14で実行される処理を具体的にした一例にあたる。図7では、特定の演算に対する処理を行う場合で説明する。
演算変換判定部102は、特定の演算における入力データ及び出力データの最大値、最小値及び分布頻度を求める(ステップS101)。
演算変換判定部102は、Q表記を変更しつつ入力データ及び出力データの最大値、最小値及び分布頻度が一定の範囲に収まるか否かを判定する。入力データ及び出力データの最大値、最小値及び分布頻度が一定の範囲に収まらない場合(ステップS102:否定)、演算変換判定部102は、特定の演算に対する関数の置換処理を終了する。
これに対して、入力データ及び出力データの最大値、最小値及び分布頻度が一定の範囲に収まる場合(ステップS102:肯定)、演算変換判定部102は、特定の演算が変換可能演算であると判定する。そして、演算変換判定部102は、特定の演算を固定小数点形式に変換する場合のQ表記として、入力データ及び出力データの最大値、最小値及び分布頻度が一定の範囲に収まる場合のQ表記を記録する(ステップS103)。その後、演算変換判定部102は、変換可能演算である特定の演算の情報を代替関数取得部103へ出力する。
代替関数取得部103は、変換可能演算である特定の演算の情報の入力を演算変換判定部102から受ける。そして、代替関数取得部103は、特定の演算が複雑関数か否かを判定する(ステップS104)。特定の演算が複雑関数でない場合(ステップS104:否定)、代替関数取得部103は、特定の演算に対する関数の置換処理を終了する。
これに対して、特定の演算が複雑関数である場合(ステップS104:肯定)、代替関数取得部103は、特定の演算の入力データの最大値、最小値及び中心値を求める(ステップS105)。
次に、代替関数取得部103は、入力データの最大値、最小値及び中心値に対応する出力データを求める。そして、代替関数取得部103は、入力データと出力データとを表す座標における入力データの最大値、最小値及び中心値に対応する特定の演算を表す複雑関数上の3点に対する直線近似式を最小二乗法を用いて算出する(ステップS106)。
次に、代替関数取得部103は、特定の演算を表す複雑関数と直線近似式との差を求め、直線近似式による近似誤差が所定範囲内に収まるか否かを判定する(ステップS107)。近似誤差が所定範囲内に収まらない場合(ステップS107:否定)、代替関数取得部103は、特定の演算に対する関数の置換処理を終了する。
これに対して、近似誤差が所定範囲内である場合(ステップS107:肯定)、代替関数取得部103は、特定の演算を表す関数を複雑関数から直線近似式に置換する(ステップS108)。その後、代替関数取得部103は、特定の演算に対する関数の置換処理を終了する。
次に、図9を参照して、本実施例に係る演算処理装置1による深層学習全体の流れの詳細に説明する。図9は、実施例1に係る演算処理装置による深層学習全体の流れを説明するための図である。
記憶部108は、浮動小数点版プログラム31を保持する。浮動小数点版プログラム31は、例えば、畳み込み層411、プーリング層412、畳み込み層413、プーリング層414、全結合層415、全結合層416及びSoftmax層417を有する。演算処理装置1は、浮動小数点版プログラム31を実行する場合、各層においてそれぞれ演算を行う。畳み込み層411、プーリング層412、畳み込み層413、プーリング層414、全結合層415、全結合層416及びSoftmax層417における演算は浮動小数点形式の演算である。また、ここではSoftmax層417において複雑関数である指数関数が用いられ、他の層では複雑関数が使用されない場合で説明する。
置換部104は、Softmax層417における指数関数を直線近似式に置換する(ステップS201)。また、変換部105は、畳み込み層411、プーリング層412、畳み込み層413、プーリング層414、全結合層415、全結合層416及びSoftmax層417における変換可能演算を固定小数点形式に変換する。ここでは、変換部105は、畳み込み層421、プーリング層422、畳み込み層413、プーリング層414、全結合層415、全結合層416及びSoftmax層417を生成する。また、変換部105は、固定小数点形式に変換した演算への入力データが浮動小数点形式の場合、その入力データを固定小数点形式に変換する処理を挿入する。さらに、変換部105は、浮動小数点形式の演算の入出力の調整及び最終出力の調整を行う。これにより、固定小数点版プログラム33が生成される(ステップS202)。
その後、深層学習実行部109は、固定小数点版プログラム33を用いて深層学習を開始する(ステップS203)。深層学習実行部109は、各層の各演算におけるオーバーフロー回数を統計情報として保存する(ステップS204)。そして、学習中にオーバーフローが発生した場合、深層学習実行部109は、飽和処理を実行する(ステップS205)。
予め決められた回数の学習終了後、深層学習実行部109は、統計情報として保持するオーバーフロー回数からオーバーフロー率を求める。次に、深層学習実行部109は、オーバーフロー率が規定値を超えた場合、その演算における固定小数点の小数点位置を1つ下げ、整数部を1ビット拡張する。また、オーバーフロー率の2倍の値が規定値以下の場合、深層学習実行部109は、その演算における固定小数点の小数点位置を1つ上げ、整数部を1ビット削減する。このように、深層学習実行部109は、各層の各演算の小数点位置を更新することで、固定小数点版プログラム33の精度を更新する(ステップS206)。そして、深層学習実行部109は、ステップS203に戻り、精度を更新した固定小数点版プログラム33を用いて深層学習を行う。深層学習実行部109は、全結合層427でのエラーが基準値以下となるか又は学習回数が既定の最大値に達した場合に深層学習を終了する。
ここで、本実施例に係る演算処理装置1は、上述したように小数点位置の更新を行い、深層学習の精度を上げる処理を行ったが、深層学習の精度がある程度低くても許容できる場合、小数点位置の更新の処理は行わなくてもよい。
以上に説明したように、本実施例に係る演算処理装置は、超越関数などの演算回路の設計が困難である複雑関数を近似直線に置換し、浮動小数点形式のプログラムを固定小数点形式のプログラムに変換する。これにより、浮動小数点形式のプログラムに含まれる演算のうち固定小数点形式の演算に変換できる演算を増やすことができる。したがって、複雑関数によるハードウェアのコストの増加や、実行時間及び消費電力の増加を軽減することができる。また、複雑関数をそのまま残した場合の浮動小数点形式と固定小数点形式との間の形式変換処理の挿入を回避することができ、形式変換処理の挿入によるコストの増加及び処理時間の増加を抑えることができる。すなわち、プログラムを実行する回路の小規模化、省電力化及び高速化を実現することができる。
次に、実施例2について説明する。本実施例に係る演算処理装置1は、代替関数として近似直線式以外の関数を用いることが実施例1と異なる。本実施例に係る演算処理装置1も、図2のブロック図で表される。以下の説明では、実施例1と同様の各部の機能については説明を省略する。
代替関数取得部103は、変換可能演算のうち複雑関数で表される各演算の中から関数の置換を行う演算を1つずつ順番に選択する。そして、代替関数取得部103は、選択した演算の入力データの最大値、最小値及び中央値を取得する。次に、代替関数取得部103は、入力データの最大値、最小値及び中央値を用いた場合の選択した演算の出力データを算出する。
そして、代替関数取得部103は、入力データ及び出力データを表す座標上の、入力データの最大値、最小値及び中央値の場合の選択した演算上の3点を特定する。次に、代替関数取得部103は、折れ線近似を用いて選択した演算を表す複雑関数を近似的に表す代替関数を取得する。そして、代替関数取得部103は、置換を決定した演算の情報とともに、その演算を表す複雑関数と置換する関数として折れ線近似を用いて求めた代替関数を置換部104へ出力する。
置換部104は、置換を決定した演算の情報とともに、折れ線近似により求められた代替関数の入力を代替関数取得部103から受ける。そして、置換部104は、記憶部108から取得した浮動小数点版プログラム31の中の演算のうち指定された演算を表す複雑関数を、折れ線近似により求められた代替関数に置換する。
このように、浮動小数点版プログラム31に含まれる演算が複雑関数で表される場合、その複雑関数は、折れ線近似を用いて求めた代替関数に置換することが可能である。また、ここでは、代替関数取得部103は、折れ線近似を用いて複雑関数に近似的な関数を求めたが、これ以外の近似を用いることもできる。例えば、代替関数取得部103は、二次曲線近似やベジエ曲線近似などを用いることもできる。すなわち、代替関数取得部103は、元の複雑関数よりも計算量が少ない近似式であれば近似式の種類を問わず複雑関数の近似に用いることができる。
例えば、ベジエ曲線近似を用いる場合、代替関数取得部103は、入力データの最大値及び最小値に対する元の複雑関数の値を求める。また、代替関数取得部103は、入力データの最大値と最小値との間の一定間隔ごとに区切りN−2分割する値に対する元の複雑関数の値を取得する。そして、代替関数取得部103は、取得したN個の値を表す点の両端を通り、残りの点に近づくなめらかな曲線を求めることでベジエ曲線近似を用いた場合の代替関数を求めることができる。
以上に説明したように、本実施例に係る演算処理装置は、直線近似式以外の置き換え対象の複雑関数よりも計算量が少ない近似式を用いて求めた代数関数に、置き換え対象の複雑関数を置換することができる。このように、直線近似式以外であっても置き換え対象の複雑関数よりも計算量が少ない近似式を用いれば、複雑関数を置き換える代替関数を求めることができ、プログラムを実行する回路の小規模化、省電力化及び高速化を実現することができる。
次に、実施例3について説明する。本実施例に係る演算処理装置1は、予め決められた近似式の対応表を用いて代替関数を決定することが実施例1と異なる。本実施例に係る演算処理装置1も、図2のブロック図で表される。以下の説明では、実施例1と同様の各部の機能については説明を省略する。
記憶部108は、複雑関数の種類毎に入力データの最大値及び最小値に対応する近似式が登録された対応表テーブルを予め記憶する。
代替関数取得部103は、置換の対象とする演算を表す複雑関数の種類を取得する。さらに、代替関数取得部103は、その演算の入力データの最大値及び最小値を取得する。次に、代替関数取得部103は、取得した複雑関数の種類の対応表を記憶部108から読み出す。そして、代替関数取得部103は、読み出した対応表の中から取得した入力データの最大値及び最小値に対応する近似式を取得する。その後、代替関数取得部103は、その演算を表す複雑関数と置換する関数として取得した近似式を代替関数として置換部104へ出力する。
ここで、本実施例では、入力データの最大値及び最小値に近似式を対応させた表を用いたが、近似式を対応させるパラメータは、置換の対象となる複雑関数を表す値であれば他の値を用いてもよい。例えば、演算処理装置1は、入力データの最大値、最小値及び中央値の組に近似式を対応させた対応表を用いてもよい。
以上に説明したように本実施例に係る演算処理装置は、予め登録された対応表を用いて複雑関数を置換する代替関数を決定する。これにより、代替関数を決定する処理が容易になり、固定小数点形式への変換処理の時間を短縮することができる。したがって、プログラムを実行する回路の小規模化、省電力化及び高速化をより確実に実現することができる。
ここで、以上の各実施例では、演算処理装置1が深層学習を実行したが、深層学習を行う機能を他の装置に分割してもよい。すなわち、演算処理装置1は、浮動小数点形式のプログラムを固定小数点形式のプログラムに変更する処理を実行する。そして、他の情報処理装置が、演算処理装置1により生成された固定小数点形式のプログラムを用いて深層学習を実行してもよい。また、浮動小数点形式のプログラム及び浮動小数点形式のサンプルデータを外部のストレージ装置や他の演算処理装置に配置してもよい。
また、本実施例では、浮動小数点形式の情報処理として深層学習を行うプログラムを例に説明したが、演算精度が低くてもよく固定小数点形式に変換することが許容される情報処理であれば他の情報処理であってもよい。
1 演算処理装置
11 CPU
12 メモリ
13 ディスク装置
14 入力装置
15 出力装置
31 浮動小数点版プログラム
32 浮動小数点サンプルデータ
33 固定小数点版プログラム
101 サンプルデータ処理部
102 演算変換判定部
103 代替関数取得部
104 置換部
105 変換部
106 入出力調整部
107 最終出力調整部
108 記憶部
109 深層学習実行部

Claims (8)

  1. 浮動小数点形式の複数の演算を含む情報処理に対し、所定のデータを用いて、各前記演算における入力データ及び出力データを取得する取得部と、
    各前記演算のうち少なくとも超越関数を含む複雑関数で表される特定演算を抽出し、前記入力データを基に各前記特定演算における前記複雑関数よりも計算量の少ない代替関数を求める関数取得部と、
    前記関数取得部により求められた前記代替関数に前記情報処理における前記特定演算を置き換える置換部と
    を備えたことを特徴とする演算処理装置。
  2. 前記関数取得部は、前記入力データの最大値、最小値及び中央値を基に、前記複雑関数の近似式を求め、前記近似式と前記複雑関数との誤差が許容範囲内であれば前記近似式を前記代替関数とすることを特徴とする請求項1に記載の演算処理装置。
  3. 前記関数取得部は、前記最大値、前記最小値及び前記中央値を基に、最小二乗法を用いて直線近似式を求め、前記直線近似式と前記複雑関数との誤差が許容範囲内であれば前記直線近似式を前記代替関数とすることを特徴とする請求項2に記載の演算処理装置。
  4. 前記関数取得部は、前記入力データに関する情報と近似式との対応表を予め保持し、前記入力データを基に前記対応表から前記複雑関数に対応する前記近似式を求め、求めた前記近似式を前記代替関数とすることを特徴とする請求項1に記載の演算処理装置。
  5. 各前記演算のうち前記入力データ及び出力データが所定範囲に収まる変換可能演算を特定する特定部と、
    各前記変換可能演算を固定小数点形式の演算に変換する変換部と、
    各前記演算のうち前記変換可能演算以外の演算の入出力を調整する入出力調整部と、
    前記情報処理の最終出力を調整する最終出力調整部とをさらに備え、
    前記関数取得部は、前記変換可能演算で且つ前記複雑関数である演算を前記特定演算として抽出する
    ことを特徴とする請求項1〜4のいずれか一つに記載の演算処理装置。
  6. 前記特定部は、入力データ及び出力データの最大値、最小値及び分布頻度が前記所定範囲内に収まる演算を前記変換可能演算として特定することを特徴とする請求項5に記載の演算処理装置。
  7. 浮動小数点形式の複数の演算を含む情報処理に対し、所定のデータを用いて、各前記演算における入力データ及び出力データを取得し、
    各前記演算のうち少なくとも超越関数を含む複雑関数で表される特定演算を抽出し、
    前記入力データを基に各前記特定演算における前記複雑関数よりも計算量の少ない代替関数を求め、
    前記情報処理における前記特定演算を前記代替関数に置き換える
    処理をコンピュータに実行させることを特徴とする演算処理装置の制御プログラム。
  8. 浮動小数点形式の複数の演算を含む情報処理に対し、所定のデータを用いて、各前記演算における入力データ及び出力データを取得し、
    各前記演算のうち少なくとも超越関数を含む複雑関数で表される特定演算を抽出し、
    前記入力データを基に各前記特定演算における前記複雑関数よりも計算量の少ない代替関数を求め、
    前記情報処理における前記特定演算を前記代替関数に置き換える
    ことを特徴とする演算処理装置の制御方法。
JP2018108780A 2018-06-06 2018-06-06 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法 Withdrawn JP2019212112A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018108780A JP2019212112A (ja) 2018-06-06 2018-06-06 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法
US16/401,128 US20190377548A1 (en) 2018-06-06 2019-05-02 Arithmetic processing apparatus, control method, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018108780A JP2019212112A (ja) 2018-06-06 2018-06-06 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法

Publications (1)

Publication Number Publication Date
JP2019212112A true JP2019212112A (ja) 2019-12-12

Family

ID=68764995

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018108780A Withdrawn JP2019212112A (ja) 2018-06-06 2018-06-06 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US20190377548A1 (ja)
JP (1) JP2019212112A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102348795B1 (ko) * 2020-11-02 2022-01-07 주식회사 바움 부동 소수점 방식에서 고정 소수점 방식으로의 변환 수행시 비트 폭 최적화 방법
WO2022168604A1 (ja) * 2021-02-05 2022-08-11 コニカミノルタ株式会社 ソフトマックス関数の近似計算装置、近似計算方法および近似計算プログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220046257A1 (en) * 2020-08-05 2022-02-10 Facebook, Inc. Quality metrics accelerator with inline scalers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102348795B1 (ko) * 2020-11-02 2022-01-07 주식회사 바움 부동 소수점 방식에서 고정 소수점 방식으로의 변환 수행시 비트 폭 최적화 방법
WO2022168604A1 (ja) * 2021-02-05 2022-08-11 コニカミノルタ株式会社 ソフトマックス関数の近似計算装置、近似計算方法および近似計算プログラム

Also Published As

Publication number Publication date
US20190377548A1 (en) 2019-12-12

Similar Documents

Publication Publication Date Title
US11043962B2 (en) Information processing apparatus, information processing method, and recording medium
JP2019212112A (ja) 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法
TWI796286B (zh) 一種機器學習系統的訓練方法和訓練系統
US10491239B1 (en) Large-scale computations using an adaptive numerical format
CN110008952B (zh) 一种目标识别方法及设备
US20190244097A1 (en) Information processing apparatus and information processing method
KR20170034217A (ko) 프로세싱 장치 및 프로세싱 장치에서 연산을 수행하는 방법
JP2019057249A (ja) 演算処理装置および演算処理方法
JP2019148972A (ja) 演算処理装置、情報処理装置、情報処理方法、およびプログラム
JP6111543B2 (ja) 類似サブ時系列の抽出方法及び装置
WO2018207458A1 (ja) 二値化ニューラルネットワーク用プロセッサ、データ処理方法、および、プログラム
US20210097397A1 (en) Information processing apparatus and information processing method
JP2019204487A (ja) 深層学習加速の方法および機器ならびに深層神経ネットワーク
US20210081802A1 (en) Information processing device and method, and recording medium
EP3748491B1 (en) Arithmetic processing apparatus and control program
US20220405561A1 (en) Electronic device and controlling method of electronic device
US11410036B2 (en) Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program
WO2021039164A1 (ja) 情報処理装置、情報処理システム及び情報処理方法
US20210132866A1 (en) Data processing device, method of operating the same, and program
KR102243119B1 (ko) 가변 정밀도 양자화 장치 및 방법
JP2004005395A (ja) 演算処理装置、半導体デバイス
JP2020190901A (ja) 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法
JP2022034897A (ja) 情報処理装置、機械学習方法及び機械学習プログラム
KR101084581B1 (ko) 고정 소수점 지수함수 연산 방법, 장치 및 기록매체
CN111240606A (zh) 一种基于安全内存的存储优化方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210310

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20210514