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

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

▶ 株式会社デンソーの特許一覧 ▶ トヨタ自動車株式会社の特許一覧 ▶ 株式会社ミライズテクノロジーズの特許一覧

<>
  • 特開-演算装置 図1
  • 特開-演算装置 図2
  • 特開-演算装置 図3
  • 特開-演算装置 図4
  • 特開-演算装置 図5
  • 特開-演算装置 図6
  • 特開-演算装置 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023179078
(43)【公開日】2023-12-19
(54)【発明の名称】演算装置
(51)【国際特許分類】
   G06N 3/063 20230101AFI20231212BHJP
   G06G 7/60 20060101ALI20231212BHJP
【FI】
G06N3/063
G06G7/60
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022092138
(22)【出願日】2022-06-07
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(71)【出願人】
【識別番号】520124752
【氏名又は名称】株式会社ミライズテクノロジーズ
(74)【代理人】
【識別番号】110000028
【氏名又は名称】弁理士法人明成国際特許事務所
(72)【発明者】
【氏名】向井 文哉
(57)【要約】
【課題】消費電力等が増大した場合に演算にかかる時間が増加することを抑制しつつ消費電力を抑制できる技術を提供する。
【解決手段】演算装置100、100B、100C、100Dは、ニューラルネットワークモデルを実行して演算処理を行う演算部10と、演算装置の消費電力と演算装置の温度と演算部の稼働率とのいずれか一つ以上を判定値として取得する取得部20と、演算処理において用いられるニューラルネットワークモデルの重みを、高ビット重みと、高ビット重みよりも低いビット数である低ビット重みとで切り替え可能な切替部30、30Bと、を備える。切替部は、判定値が予め定められた第1閾値以上の場合に、重みを高ビット重みから低ビット重みに切り替える。
【選択図】図1
【特許請求の範囲】
【請求項1】
演算装置(100、100B、100C、100D)であって、
ニューラルネットワークモデルを実行して演算処理を行う演算部(10)と、
前記演算装置の消費電力と前記演算装置の温度と前記演算部の稼働率とのいずれか一つ以上を判定値として取得する取得部(20)と、
前記演算処理において用いられる前記ニューラルネットワークモデルの重みを、高ビット重みと、前記高ビット重みよりも低いビット数である低ビット重みとで切り替え可能な切替部(30、30B)と、を備え、
前記切替部は、前記判定値が予め定められた第1閾値以上の場合に、前記重みを前記高ビット重みから前記低ビット重みに切り替える、演算装置。
【請求項2】
請求項1に記載の演算装置であって、更に、
前記高ビット重みと前記低ビット重みを予め記憶する記憶部(40)を備える、演算装置。
【請求項3】
請求項1に記載の演算装置であって、更に、
前記高ビット重みを記憶する記憶部を備え、
前記切替部は、前記高ビット重みに対して量子化を実行して前記低ビット重みに切り替える、演算装置。
【請求項4】
請求項3に記載の演算装置であって、
前記切替部は、前記判定値に応じて、前記低ビット重みのビット数を決定する、演算装置。
【請求項5】
請求項2または請求項3に記載の演算装置であって、更に、
前記判定値が前記第1閾値よりも小さい値である第2閾値以上の上昇した場合に、前記値が前記第2閾値未満の場合よりも前記演算装置の電圧とクロック周波数とのうち少なくともいずれか一方を大きくするよう制御する制御部(50)を備える、演算装置。
【請求項6】
請求項1または請求項2に記載の演算装置であって、更に、
前記演算処理における演算量を推定する推定部(60)を備え、
前記切替部は、前記演算量が予め定められた閾値以上の場合に、前記重みを前記高ビット重みから前記低ビット重みに切り替える、演算装置。
【請求項7】
請求項1または請求項2に記載の演算装置であって、
演算部10は、前記高ビット重みの第1ニューラルネットワークモデルを実行する第1演算処理と、前記低ビット重みの第2ニューラルネットワークモデルを実行する第2演算処理とを並行して行い、
前記切替部は、前記第1ニューラルネットワークモデルの前記重みを前記高ビット重みから前記低ビット重みに切り替える、演算装置。
【請求項8】
請求項1または請求項2に記載の演算装置であって、
前記切替部は、前記判定値が前記第1閾値よりも低い予め定められた第3閾値以下の場合に、前記重みを前記低ビット重みから前記高ビット重みに切り替える、演算装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、演算装置に関する。
【背景技術】
【0002】
ニューラルネットワークモデルを実行する演算処理を行う演算装置として、演算負荷がかかると、消費電力が増加することが知られている。電圧やクロック周波数を制御することで消費電力を抑制するDVFS(Dynamic Voltage and Frequency Scaling)制御が知られている。また、特許文献1には、浮動小数点によって表される16~32ビットである高ビット重みパラメータを用いて演算を行う構造のニューラルネットワークモデルを実行した際の消費電力よりも、1ビットである低ビット重みパラメータを用いて演算を行う構造のニューラルネットワークモデルを実行した際の消費電力の方が低いことが開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2021-103441号公報
【特許文献2】特開2020-74099号公報
【特許文献3】特開2022-507704号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
DVFS制御を用いて消費電力を抑制する場合、ニューラルネットワークモデルの演算にかかる時間が大きく増加する場合がある。低ビット重みパラメータを用いるニューラルネットワークモデルは、演算にかかる時間が増加することを抑制しつつ消費電力を抑制できるものの、ニューラルネットワークモデルの構造がハードウェアの構成を決定付けるため、容易にニューラルネットワークモデルを切り替える事ができない、という課題があった。
【課題を解決するための手段】
【0005】
本開示の一形態によれば、演算装置(100、100B、100C、100D)が提供される。演算装置は、ニューラルネットワークモデルを実行して演算処理を行う演算部(10)と、前記演算装置の消費電力と前記演算装置の温度と前記演算部の稼働率とのいずれか一つ以上を判定値として取得する取得部(20)と、前記演算処理において用いられる前記ニューラルネットワークモデルの重みを、高ビット重みと、前記高ビット重みよりも低いビット数である低ビット重みとで切り替え可能な切替部(30、30B)と、を備える。前記切替部は、前記判定値が予め定められた第1閾値以上の場合に、前記重みを前記高ビット重みから前記低ビット重みに切り替える。
【0006】
この形態の演算装置によれば、切替部は、消費電力等に応じて、ニューラルネットワークモデルの重みを高ビット重みと低ビット重みとで切り替えることができる。そのため、通常は所望の精度で演算をすることができ、消費電力等が増大した場合には、演算にかかる時間が増加することを抑制しつつ消費電力を抑制できる。
【図面の簡単な説明】
【0007】
図1】演算装置の構成の概要を示す説明図である。
図2】ニューラルネットワークモデルによる演算処理についての説明図である。
図3】演算処理の一例を示したフローチャートである。
図4】第2実施形態における演算装置の構成の概要を示す説明図である。
図5】第2実施形態における演算処理の一例を示したフローチャートである。
図6】第3実施形態における演算装置の構成の概要を示す説明図である。
図7】第4実施形態における演算装置の構成の概要を示す説明図である。
【発明を実施するための形態】
【0008】
A.第1実施形態:
図1に示すように、演算装置100は、演算部10と、取得部20と、切替部30と、記憶部40と、を備える。演算装置100は、ニューラルネットワークモデルを実行して演算処理を行う装置である。演算装置100は、中央処理装置(CPU)や、RAM、ROMにより構成されたマイクロコンピュータ等からなり、予めインストールされたプログラムをマイクロコンピュータが実行することによって、これらの各部の機能を実現する。本実施形態において、演算装置100は、SoC(System On a Chip)である。演算装置100は、例えば、車両に搭載され、画像解析のための演算処理を行う。演算装置100は、クラウド上に実装されていてもよい。
【0009】
演算部10は、ニューラルネットワークモデルを実行して演算処理を行う。図2に示すように、ニューラルネットワークは、入力層L1と、複数の中間層L2と、出力層L3とを備える。中間層L2の数は任意に定める事ができる。入力層L1は、情報が入力される層である。中間層L2は、入力層L1から伝達される情報に基づいて特徴量の算出を行う層である。出力層L3は、中間層L2から伝達される情報に基づいて結果を出力する層である。各層には、複数のノードが含まれる。隣接する層のノードとノードとを繋ぐエッジは、重み付けされている。演算部10は、例えば、ノードN1に重みW11を掛け合わせ、ノードN2に重みW12を掛け合わせ、ノードN3に重みW13を掛け合わせ、これらを足し合わせてノードN4の値を求める積和演算を含む演算を行う。
【0010】
記憶部40(図1参照)は、ニューラルネットワークモデルにおける、ノードに入力される値に乗算される重みを記憶する。本実施形態において、記憶部40は、予め定められた高ビット重みWhと、高ビット重みWhのビット数よりも低いビット数である、予め定められた低ビット重みWlとを記憶する。本実施形態において、記憶部40は、高ビット重みWhとして、最適化された32bitの浮動小数点型のデータを記憶し、低ビット重みWlとして4bitの整数型のデータを記憶する。また、高ビット重みWhと低ビット重みWlとは、それぞれ、最適化されている。
【0011】
取得部20は、演算装置100の消費電力に関する判定値を取得する。本実施形態において、取得部20は、演算装置100の温度の値を判定値としてセンサ200から取得する。取得部20は、演算装置100の温度が高いほど、演算装置100の消費電力が高いと推定できる。
【0012】
切替部30は、演算処理において用いられるニューラルネットワークモデルの重みを切り替える。切替部30は、ニューラルネットワークモデルの重みを高ビット重みWhと、低ビット重みWlとで切り替え可能である。
【0013】
図3に示す切替処理は、切替部30がニューラルネットワークモデルの重みを切り替える処理である。この処理は、演算部10が演算処理を実行する際に繰り返し実行される。ステップS100において、取得部20は、判定値を取得する。
【0014】
ステップS110において、切替部30は、ステップS100で取得した判定値が第1閾値以上か否かを判定する。判定値が第1閾値以上の場合、切替部30は、ステップS120の処理に進み、重みを高ビット重みWhから低ビット重みWlに切り替える。一方、判定値が第1閾値未満の場合、切替部30は、重みを切り替えずに、演算処理を終了する。
【0015】
以上で説明した本実施形態の演算装置100によれば、切替部30は、消費電力等に応じて、ニューラルネットワークモデルの重みを高ビット重みWhと低ビット重みWlとで切り替えることができる。そのため、通常は所望の精度で演算をすることができ、消費電力等が増大した場合には、演算にかかる時間が増加することを抑制しつつ消費電力を抑制できる。
【0016】
また、切替部30は、既に最適化された低ビット重みWlに切り替えるため、最適化されていない低ビット重みWlに切り替える場合に比べて、低ビット重みWlを用いた演算の精度を高くできる。
【0017】
B.第2実施形態:
図4に示す第2実施形態の演算装置100Bは、記憶部40が、高ビット重みWhのみを記憶する点が、第1実施形態と異なり、他の構成は同一である。図5に示す第2実施形態における切り替え処理は、ステップS125において切替部30Bが、高ビット重みWhに対して事後量子化を実行して低ビット重みに切り替える点が、第1実施形態と異なり、ステップS100およびステップS110の工程は同一である。
【0018】
切替部30Bは、ステップS125で高ビット重みWhに対して事後量子化を実行して低ビット重みに切り替える。より具体的には、切替部30Bは、32bitの高ビット重みWhのうちの23bitで表される仮数部のビット数を、7bitに減らして、16bitの浮動小数点データの低ビット重みに切り替える。
【0019】
以上で説明した第2実施形態の演算装置100によれば、切替部30Bは、高ビット重みWhに対して事後量子化を実行して低ビット重みに切り替えるため、低ビット重のビット数を任意に定めることができる。
【0020】
C.第3実施形態:
図6に示す第3実施形態の演算装置100Cは、制御部50を備えている点が、第1実施形態と異なり、他の構成は同一である。第3実施形態は、制御部50が、演算装置100の電圧とクロック周波数とを制御する点が第1実施形態と異なる。
【0021】
制御部50は、判定値が予め定められた第2閾値以上に上昇した場合に、判定値が第2閾値未満の場合よりも演算装置100の電圧とクロック周波数とを大きくするよう制御する。第2閾値は、第1閾値よりも小さい値である。すなわち、制御部50は、DVFS制御を実行する。
【0022】
以上で説明した第3実施形態の演算装置100Cによれば、制御部50が、判定値が第2閾値以上の上昇した場合に、判定値が第2閾値未満の場合よりも演算装置100の電圧とクロック周波数とを大きくするよう制御するため、消費電力を抑制することができる。
【0023】
D.第4実施形態:
図7に示す第4実施形態の演算装置100Dは、推定部60を備えている点が、第1実施形態と異なり、他の構成は同一である。第4実施形態は、切替部30が、推定部60が推定した演算量が予め定められた閾値以上である場合にも、重みを高ビット重みWhから低ビット重みWlに切り替える点が第1実施形態と異なる。
【0024】
推定部60は、要求された演算処理における演算量を推定する。
【0025】
本実施形態において、切替部30は、演算量が予め定められた閾値以上である場合に、ニューラルネットワークモデルの重みを高ビット重みWhから低ビット重みWlに切り替える。なお、判定値が第1閾値以上であり、既にニューラルネットワークモデルの重みを高ビット重みWhから低ビット重みWlに切り替えている場合には、切替部30は、更にビット数の低い重みに切り替えてもよい。
【0026】
以上で説明した第4実施形態の演算装置100Dによれば、高演算量が必要な演算処理を実行する際に、消費電力を抑制することができる。
【0027】
E.第5実施形態:
第5実施形態は、演算部10が、複数のニューラルネットワークモデルを実行して並行して演算処理を行う点が、第1実施形態と異なる。第5実施形態の演算装置100の構成は、第2実施形態の演算装置100の構成と同一であるため、演算装置100の構成の説明は省略する。この第5実施形態も、第2実施形態とほぼ同様の効果を有する。
【0028】
演算部10は、高ビット重みWhの第1ニューラルネットワークモデルを実行する第1演算処理と、低ビット重みWlの第2ニューラルネットワークモデルを実行する第2演算処理とを並列して行う。すなわち、演算部10は、冗長化構成を有する。演算装置100は、通常、演算部10が第1ニューラルネットワークモデルを実行して求めた演算結果を、演算部10の演算結果として用いる。
【0029】
本実施形態において、切替部30は、判定値が第1閾値以上の場合に、ステップS120(図3参照)において、主幹である第1ニューラルネットワークモデルの重みを高ビット重みWhから低ビット重みWlに切り替える。
【0030】
F.他の実施形態:
(F1)上述した実施形態において、取得部20は、判定値として演算装置100の温度を取得している。これに限らず、取得部20は、判定値として、演算装置100の消費電力と演算装置100の温度と演算部10の稼働率とのいずれか一つ以上を取得してもよい。演算部10の稼働率とは、例えば、演算部10の積和演算(multiply-accumulate(MAC))によるメモリの使用率である。判定値として複数の種類の値を取得する場合、第1閾値は判定値の種類毎に設定される。
【0031】
(F2)上述した実施形態において、切替部30は、判定値が第1閾値以下に下降した場合に、重みを低ビット重みWlから高ビット重みWhに切り替えてもよい。また、切替部30は、判定値が第1閾値よりも低い予め定められた第3閾値以下の場合に、重みを低ビット重みWlから高ビット重みWhに切り替えてもよい。この形態によれば、切替部30は、判定値が第1閾値付近を上昇・下降する場合において、判定値が第1閾値に下降した場合に重みを低ビット重みWlから高ビット重みWhに切り替える場合に比べて、頻繁に重みを切り替えることを回避できる。
【0032】
(F3)上述した実施形態において、記憶部40は、演算装置100に備えられている。これに限らず、記憶部40は、外部の記憶領域であってもよい。
【0033】
(F4)上述した第2実施形態において、切替部30Bは、判定値に応じて、低ビット重みのビット数を決定してもよい。より具体的には、切替部30Bは、あらかじめ用意したテーブルや関数を用いて、低ビット重みのビット数を決定する。切替部30は、例えば、判定値が大きいほど、低ビット重みのビット数を低くする。
【0034】
(F5)上述した第2実施形態において、切替部30Bは、32bitの高ビット重みWhの仮数部のビット数を減らして16bitの低ビット重みに切り替えている。これに限らず、切替部30Bは、例えば、高ビット重みWhのヒストグラムを用いて、事後量子化を行ってもよい。この場合、記憶部40が高ビット重みWhのヒストグラムを保持している。より具体的には、切替部30Bは、次の式(1)で求められるヒストグラムの区間の幅を用いて、事後量子化を行う。なお、切替部30Bの事後量子化にかかる時間は、数ミリ秒程度であり、演算部10の演算処理にかかる時間に大きな影響は与えない。
【0035】
S=A/2(n-1)…(1)
ここで、Sはヒストグラムの区間の幅であり、Aはヒストグラムの最小値と最大値との差であり、nは低ビットのビット数である。nは任意に定めることができる。
【0036】
(F6)上述した第3実施形態において、推定部60は、演算装置100の電圧とクロック周波数とを制御している。これに限らず、推定部60は、演算装置100の電圧とクロック周波数とのうち少なくともいずれか一方を制御すればよい。
【0037】
(F7)上述した第4実施形態において、切替部30は、演算量が閾値以上であって、かつ、制御部50がDVFS制御を実行できない場合に、ニューラルネットワークモデルの重みを高ビット重みWhから低ビット重みWlに切り替えてもよい。この場合、演算装置100Dは、制御部50を備えており、制御部50は、演算量が閾値以上である場合に、DVFS制御を実行する。
【0038】
本開示は、上述の実施形態に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現することができる。例えば発明の概要の欄に記載した各形態中の技術的特徴に対応する実施形態中の技術的特徴は、上述した課題を解決するために、あるいは上述の効果の一部又は全部を達成するために、適宜、差し替えや組み合わせを行うことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜削除することが可能である。
【符号の説明】
【0039】
10…演算部、20…取得部、30、30B…切替部、40…記憶部、50…制御部、60…推定部、100、100B、100C、100D…演算装置、200…センサ
図1
図2
図3
図4
図5
図6
図7