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

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

▶ 株式会社デンソーの特許一覧

<>
  • 特開-演算処理装置 図1
  • 特開-演算処理装置 図2
  • 特開-演算処理装置 図3
  • 特開-演算処理装置 図4
  • 特開-演算処理装置 図5
  • 特開-演算処理装置 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024126731
(43)【公開日】2024-09-20
(54)【発明の名称】演算処理装置
(51)【国際特許分類】
   G06N 3/063 20230101AFI20240912BHJP
【FI】
G06N3/063
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023035307
(22)【出願日】2023-03-08
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】100113549
【弁理士】
【氏名又は名称】鈴木 守
(74)【代理人】
【識別番号】100115808
【弁理士】
【氏名又は名称】加藤 真司
(72)【発明者】
【氏名】鈴木 亜季
(72)【発明者】
【氏名】九里 雅史
(57)【要約】
【課題】 本発明は、演算処理装置を提供することを目的とする。
【解決手段】 ニューラルネットワークを実行するモデルを用いて推論を行う演算処理装置であって、演算処理装置は、入力を受け付けたデータを、モデルに入力して推論処理を実行する推論処理部(11)と、推論した出力値の精度が所定の条件を充足しているかを判定する判定処理部(12)と、判定処理部において所定の条件を充足していると判定した場合に、演算処理の精度を変更する変更処理部(13)と、を有する演算処理装置である。
【選択図】 図1
【特許請求の範囲】
【請求項1】
ニューラルネットワークを実行するモデルを用いて推論を行う演算処理装置(1)であって、
前記演算処理装置は、
入力を受け付けたデータを、前記モデルに入力して推論処理を実行する推論処理部(11)と、
前記推論した出力値の精度が所定の条件を充足しているかを判定する判定処理部(12)と、
前記判定処理部において所定の条件を充足していると判定した場合に、演算処理の精度を変更する変更処理部(13)と、
を有する演算処理装置。
【請求項2】
前記判定処理部は、
前記推論処理部における推論処理において異常を検出した場合には、前記所定の条件を充足したと判定する、
請求項1に記載の演算処理装置。
【請求項3】
前記判定処理部は、
前記推論処理部における推論処理においてオーバーフローまたはエラーを検出した場合には、前記所定の条件を充足したと判定する、
請求項2に記載の演算処理装置。
【請求項4】
前記判定処理部は、
前記出力値が、過去の所定回数分の出力値のダイナミックレンジまたは分散と比較して異常であると判定する場合には、前記所定の条件を充足したと判定する、
請求項1に記載の演算処理装置。
【請求項5】
前記変更処理部は、
量子化パラメータを変更することで、前記演算処理の精度を変更する、
請求項1に記載の演算処理装置。
【請求項6】
前記推論処理部は、
複数の演算精度のレイヤにより推論処理を実行し、
前記変更処理部は、
前記判定処理部において前記所定の条件を充足していると判定した演算精度のレイヤの出力値よりも、高い演算精度のレイヤの出力値を用いる、
請求項1に記載の演算処理装置。
【請求項7】
前記推論処理部は、
前記判定処理部において、前記推論した出力値の精度が所定の条件を充足していない、と判定した場合には、他の演算精度のレイヤの推論処理を中止する、
請求項6に記載の演算処理装置。
【請求項8】
ニューラルネットワークを実行するモデルを用いて推論を行う演算処理装置における制御方法であって、
前記演算処理装置は、
入力を受け付けたデータを、前記モデルに入力して推論処理を実行し、
前記推論した出力値の精度が所定の条件を充足しているかを判定し、
前記判定において所定の条件を充足していると判定した場合に、演算処理の精度を変更する、
演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置に関する。
【背景技術】
【0002】
ニューラルネットワークを実行するモデルを、何らかの装置に組み込んで実行する場合に、そのモデルを小さくすることが求められている。このモデルを小さくすることは量子化として知られている。
【0003】
事前に想定した入力値を用いて量子化したモデルでは、実際のデータを入力したニューラルネットワークでの推論において、オーバーフローやS/N比の悪化により、推論精度が落ちてしまう場合がある。
【0004】
そこで、想定する入力値を何セットか用意しておき量子化したモデルを、事前に複数作成しておく方法がある。しかし、実際の入力データに対して推論結果が適切かどうかは保証できない。
【0005】
別の方法として、実際の入力データに応じて動的に量子化を行う方法がある(下記特許文献1)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2022-117866号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
入力データに応じて動的に量子化を行う方法では、処理時間が必要となるため、入力が急激に変化した場合にそれに追従して処理を行うことが難しい。
【課題を解決するための手段】
【0008】
そこで本発明者は上記課題に鑑み、入力データに応じて動的に量子化を行う場合に、処理時間の増加を抑えつつ、推論の精度向上を行うことができる演算処理装置を発明した。
【0009】
本発明は、上記課題を解決するために以下の技術的手段を採用する。特許請求の範囲及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示す一例であって、本発明の技術的範囲を限定するものではない。
【0010】
本発明の演算処理装置は、ニューラルネットワークを実行するモデルを用いて推論を行う演算処理装置(1)であって、前記演算処理装置は、入力を受け付けたデータを、前記モデルに入力して推論処理を実行する推論処理部(11)と、前記推論した出力値の精度が所定の条件を充足しているかを判定する判定処理部(12)と、前記判定処理部において所定の条件を充足していると判定した場合に、演算処理の精度を変更する変更処理部(13)と、を有する。
【0011】
本発明のように構成することで、動的に量子化を行う場合であっても、出力値の精度が十分ではない場合に演算処理の精度を変更して、処理時間の増加は抑えつつ、推論の精度向上を行うことができる。
【0012】
一実施態様の演算処理装置では、前記判定処理部は、前記推論処理部における推論処理において異常を検出した場合には、前記所定の条件を充足したと判定する。
【0013】
一実施態様の演算処理装置では、前記判定処理部は、前記推論処理部における推論処理においてオーバーフローまたはエラーを検出した場合には、前記所定の条件を充足したと判定する。
【0014】
一実施態様の演算処理装置では、前記判定処理部は、前記出力値が、過去の所定回数分の出力値のダイナミックレンジまたは分散と比較して異常であると判定する場合には、前記所定の条件を充足したと判定する。
【0015】
判定処理部において所定条件を充足する場合としては、推論処理における出力値の精度が十分ではない場合があるが、それらとしては、上述の各発明の処理を行うとよい。
【0016】
一実施態様の演算処理装置では、前記変更処理部は、量子化パラメータを変更することで、前記演算処理の精度を変更する。
【0017】
一実施態様の演算処理装置では、前記推論処理部は、複数の演算精度のレイヤにより推論処理を実行し、前記変更処理部は、前記判定処理部において前記所定の条件を充足していると判定した演算精度のレイヤの出力値よりも、高い演算精度のレイヤの出力値を用いる。
【0018】
演算精度を変更する場合には、上述の各発明の処理を行うことがよい。
【0019】
一実施態様の演算処理装置では、前記推論処理部は、前記判定処理部において、前記推論した出力値の精度が所定の条件を充足していない、と判定した場合には、他の演算精度のレイヤの推論処理を中止する。
【0020】
演算精度が高いレイヤでは、その処理に時間を要することとなる。そこで、出力値の精度が所定の条件を充足していない、すなわち、出力値の精度が十分であると判定できた場合には、ほかの演算精度の処理を中止することで処理時間を短くし、また処理負荷を軽減することができる。
【0021】
本発明の演算処理装置の制御方法は、以下のように行うことができる。すなわち、ニューラルネットワークを実行するモデルを用いて推論を行う演算処理装置における制御方法であって、前記演算処理装置は、入力を受け付けたデータを、前記モデルに入力して推論処理を実行し、前記推論した出力値の精度が所定の条件を充足しているかを判定し、前記判定において所定の条件を充足していると判定した場合に、演算処理の精度を変更する。
【発明の効果】
【0022】
本発明の演算処理装置を用いることで、入力データに応じて動的に量子化を行う場合に、知り時間の増加を抑えつつ、推論の精度向上を行うことができる。
【図面の簡単な説明】
【0023】
図1】本発明の演算処理装置の構成の一例を模式的に示すブロック図である。
図2】本発明の演算処理装置の全体の処理プロセスの一例を示すフローチャートである。
図3】実施例1の演算処理装置の処理を模式的に示す図である。
図4】実施例2の演算処理装置の処理を模式的に示す図である。
図5】実施例3の演算処理装置の処理を模式的に示す図である。
図6】実施例4の演算処理装置の処理を模式的に示す図である。
【発明を実施するための形態】
【0024】
本発明の演算処理装置1の各機能の構成の一例を図1のブロック図に模式的に示す。本発明の演算処理装置1は、ニューラルネットワークを実行するモデル(以下、単に「モデル」という)を用いて推論を行う演算処理装置1であって、入力受付処理部10と推論処理部11と判定処理部12と変更処理部13と出力処理部14とを有する。
【0025】
入力受付処理部10は、モデルに入力するデータの入力を受け付ける。
【0026】
推論処理部11は、入力受付処理部10で入力を受け付けたデータをモデルに入力し、推論処理を実行する。モデルを用いた推論処理は、公知のニューラルネットワークの推論処理を用いることができる。
【0027】
判定処理部12は、推論処理部11における推論処理で推論した出力値の精度が所定の条件を充足しているかを判定する。すなわち出力値の精度が十分ではないと判定する。
【0028】
たとえば演算処理装置1の推論処理においてオーバーフローやエラーなどの所定の異常を検出している場合には、出力値の精度が十分ではないと判定する。
【0029】
また、推論処理部11における推論処理で推論した出力値の精度が、過去のN回分の出力値に基づくダイナミックレンジ、分散などと比較して、偏りが生じている場合などには、出力値の精度が十分ではないと判定する。
【0030】
変更処理部13は、判定処理部12において、推論処理部11における出力値の精度が所定の条件を充足している、すなわち出力値の精度が十分ではないと判定した場合には、量子化パラメータを変更する、演算精度を変更するなどの演算処理の精度の変更をし、再度、推論処理部11における推論処理を実行させる。なお、この場合、再度、推論処理部11における推論処理を実行させるのではなく、つぎの入力データから変更した量子化パラメータ、演算精度を用いて推論処理を実行してもよい。
【0031】
出力処理部14は、推論処理部11における推論処理の出力値を出力する。
【実施例0032】
つぎに本発明の演算処理装置1により、モデルを用いた推論を行う場合の処理の一例を図2のフローチャートを用いて説明する。本実施例では、判定処理部12が演算処理装置1の処理においてオーバーフローやエラーなどの所定の異常を検出している場合には、出力値の精度が十分ではないと判定し、変更処理部13における精度の変更処理として、量子化パラメータを変更する場合を説明する。この場合の処理を図3に模式的に示す。
【0033】
演算処理装置1の入力受付処理部10は、演算処理装置1の外部から、所定の方法によって、モデルに入力するデータの入力を受け付ける(S100)。
【0034】
そして、推論処理部11は、S100で入力を受け付けたデータに基づいて、モデルを用いた推論処理を実行する(S110)。
【0035】
判定処理部12は、推論処理部11における推論処理においてオーバーフローやエラーなどの異常が検出できるかを判定し(S120)、異常を検出しなかった場合には(S130)、推論処理部11における出力値を、そのまま出力処理部14が出力をする(S160)。
【0036】
一方、判定処理部12は、推論処理部11における推論処理においてオーバーフローやエラーなどの異常を検出した場合には(S130)、変更処理部13は、公知の方法により量子化パラメータを変更し(S140)、再度、推論処理部11における推論処理を実行する(S150)。そして推論処理部11における推論処理の出力値を、出力処理部14が出力をする(S160)。なお、推論処理部11における再度の推論処理において、判定処理部12で、オーバーフローやエラーを再度検出した場合には、さらに量子化パラメータを変更してもよい。
【実施例0037】
本実施例では、推論処理部11における過去N-1回分の出力値を記録しておき、そのN-1回分の出力値に基づくダイナミックレンジや分散をあらかじめ算出しておく。N回目の推論処理部11における出力値と、ダイナミックレンジや分散の所定条件を充足しない場合には精度が十分ではないと判定する場合を説明する。この場合の処理を図4に模式的に示す。
【0038】
演算処理装置1の入力受付処理部10は、演算処理装置1の外部から、所定の方法によって、モデルに入力するデータの入力を受け付ける(S100)。
【0039】
そして、推論処理部11は、S100で入力を受け付けたデータ(N回目の入力データ)に基づいて、モデルを用いた推論処理を実行する(S110)。
【0040】
判定処理部12は、N-1回分の出力値に基づくダイナミックレンジや分散と、N回目の入力データとを比較して、偏りが生じている場合など、精度が十分かを判定する(S120)。
【0041】
判定処理部12において精度が十分であると判定した場合には(S130)、推論処理部11における推論処理の出力値を、出力処理部14が出力をする(S160)。またその出力値を所定の記憶装置に記憶しておき、あらたにダイナミックレンジや分散を算出する。
【0042】
一方、判定処理部12において精度が十分ではないと判定した場合には(S130)、変更処理部13は、公知の方法により量子化パラメータを変更し(S140)、再度、推論処理部11における推論処理を実行する(S150)。そして推論処理部11における推論処理の出力値を、出力処理部14が出力をする(S160)。なお、推論処理部11における再度の推論処理において、判定処理部12で、所定条件を充足したと判定した場合には、さらに量子化パラメータを変更してもよい。
【実施例0043】
本実施例では、判定処理部12が演算処理装置1の処理においてオーバーフローやエラーなどの所定の異常を検出している場合には、出力値の精度が所定の条件を充足していると判定し、変更処理部13における精度の変更処理として、演算精度を変更する場合を説明する。この場合の処理を図5に模式的に示す。
【0044】
演算処理装置1の入力受付処理部10は、演算処理装置1の外部から、所定の方法によって、モデルに入力するデータの入力を受け付ける(S100)。
【0045】
そして、推論処理部11は、S100で入力を受け付けたデータに基づいて、モデルを用いた推論処理を実行する(S110)。この際に、複数の演算精度によるレイヤでの推論処理を実行する。たとえば、同一の入力データを、8ビット、16ビット、24ビットなど複数の演算精度のレイヤに入力し、推論処理を並列して実行する。
【0046】
そして、各レイヤによる推論処理の出力結果が出た順に、逐次、判定処理部12における判定処理を実行し、オーバーフローやエラーなどの異常が検出できるかを判定し(S120)、異常を検出しなかった場合には(S130)、推論処理部11における出力値を、そのまま出力処理部14が出力をする(S160)。この際に、他の演算精度の推論処理は途中で打ち切ってよい。
【0047】
一方、判定処理部12で、オーバーフローやエラーなどの異常を検出した場合には(S130)、変更処理部13は、異常を検出した演算精度の推論処理の出力値は用いず、それよりも高い演算精度の推論処理部11の出力値を出力処理部14が出力をする(S160)。
【0048】
たとえば、8ビット、16ビット、24ビットなどの複数の演算精度のレイヤによる推論処理を実行している場合、演算精度が低い方が先に推論処理が終了するので、まず8ビットの推論処理が終了すると、判定処理部12においてオーバーフローやエラーなどの異常を検出しているかを判定する。そして、異常が検出されなかった場合には、8ビットの演算精度による推論処理の出力値を出力処理部14が出力する。そして、16ビット、24ビットなどの演算精度の推論処理が終了していない場合であってもその演算処理は終了する。
【0049】
一方、判定処理部12で、8ビットの推論処理において、オーバーフローやエラーなどの異常を検出したことを判定した場合、8ビットの推論処理の出力値は用いず、16ビットまたは24ビットの推論処理の出力値のうち、早く出力された出力値であって、判定処理部12において異常を検出しなかった出力値を、出力処理部14から出力する。
【実施例0050】
本実施例では、推論処理部11における過去N-1回分の出力値を記録しておき、そのN-1回分の出力値に基づくダイナミックレンジや分散をあらかじめ算出しておく。N回目の推論処理部11における出力値と、ダイナミックレンジや分散の所定条件を充足しない場合には精度が十分ではないと判定し、変更処理部13における精度の変更処理として、演算精度を変更する場合を説明する。この場合の処理を図6に模式的に示す。
【0051】
演算処理装置1の入力受付処理部10は、演算処理装置1の外部から、所定の方法によって、モデルに入力するデータの入力を受け付ける(S100)。
【0052】
そして、推論処理部11は、S100で入力を受け付けたデータ(N回目の入力データ)に基づいて、モデルを用いた推論処理を実行する(S110)。この際に、複数の演算精度によるレイヤでの推論処理を実行する。たとえば、同一の入力データを、8ビット、16ビット、24ビットなど複数の演算精度のレイヤに入力し、推論処理を並列して実行する。
【0053】
そして、各レイヤによる推論処理の出力結果が出た順に、逐次、判定処理部12における判定処理を実行し、N-1回分の出力値に基づくダイナミックレンジや分散と、N回目の入力データとを比較して、偏りが生じている場合などの精度が十分かを判定する(S120)。
【0054】
判定処理部12において精度が十分であると判定した場合には(S130)、もっとも演算処理が早く終了した演算精度(通常は、演算精度が低い演算処理)による推論処理部11における推論処理の出力値を、出力処理部14が出力をする(S160)。またその出力値を所定の記憶装置に記憶しておき、あらたにダイナミックレンジや分散を算出する。この際に、他の演算精度の推論処理は途中で打ち切ってよい。
【0055】
一方、判定処理部12において精度が十分ではないと判定した場合には(S130)、変更処理部13は、その演算精度による推論処理の出力値は用いず、それよりも高い演算精度の推論処理部11の出力値を出力処理部14が出力をする(S160)。
【0056】
たとえば、8ビット、16ビット、24ビットなどの複数の演算精度のレイヤによる推論処理を実行している場合、演算精度が低い方が先に推論処理が終了するので、まず8ビットの推論処理が終了すると、判定処理部12において、N-1回分の出力値に基づくダイナミックレンジや分散と、N回目の入力データとを比較して、偏りが生じている場合などの精度が十分かを判定する。そして、精度が十分であると判定した場合には、8ビットの演算精度の推論処理の出力値を出力処理部14が出力する。そして、16ビット、24ビットなどの演算精度の推論処理が終了していない場合であってもその演算処理は終了する。
【0057】
一方、8ビットの推論処理において、判定処理部12が精度が十分ではないと判定した場合には、8ビットの推論処理の出力値は用いず、16ビットまたは24ビットの推論処理の出力値のうち、早く出力された出力値であって、判定処理部12において異常を検出しなかった出力値を、出力処理部14から出力する。
【実施例0058】
上述の実施例1乃至実施例4を組み合わせて処理を実行してもよい。
【0059】
本発明の演算処理装置1は、本明細書に記載した範囲にとどまるものではなく、その技術的思想の範囲で任意に変更等することができる。また各処理の順序も技術的思想の範囲で任意に変更することができる。
【産業上の利用可能性】
【0060】
本発明の演算処理装置1を用いることで、入力データに応じて動的に量子化を行う場合に、知り時間の増加を抑えつつ、推論の精度向上を行うことができる。
【符号の説明】
【0061】
1:演算処理装置、10:入力受付処理部、11:推論処理部、12:判定処理部、
13:変更処理部、14:出力処理部
図1
図2
図3
図4
図5
図6