(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024099159
(43)【公開日】2024-07-25
(54)【発明の名称】演算装置およびデータの圧縮方法、データの圧縮プログラム
(51)【国際特許分類】
G06F 17/16 20060101AFI20240718BHJP
【FI】
G06F17/16 Q
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023002889
(22)【出願日】2023-01-12
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(71)【出願人】
【識別番号】520124752
【氏名又は名称】株式会社ミライズテクノロジーズ
(74)【代理人】
【識別番号】110000028
【氏名又は名称】弁理士法人明成国際特許事務所
(72)【発明者】
【氏名】向井 文哉
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056DD14
5B056FF01
(57)【要約】
【課題】消費電力等が増大した場合に演算にかかる時間が増加することを抑制しつつ消費電力を抑制できる技術を提供する。
【解決手段】演算装置100は、演算処理を行う演算部11と、演算部が転送するデータ量である転送データ量を監視する監視部31と、転送データ量に応じて圧縮率を決定する決定部32と、演算部が転送するデータを圧縮率で圧縮する圧縮部33と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
演算装置(100)であって、
演算処理を行う演算部(11)と、
前記演算部が転送するデータ量である転送データ量を監視する監視部(31)と、
前記転送データ量に応じて圧縮率を決定する決定部(32)と、
前記演算部が転送するデータを前記圧縮率で圧縮する圧縮部(33)と、を備える、演算装置。
【請求項2】
請求項1に記載の演算装置であって、
前記決定部は、予め定めた目標データ量と前記転送データ量とから前記圧縮率を決定する、演算装置。
【請求項3】
請求項2に記載の演算装置であって、
前記決定部は、前記転送データ量が予め定めた閾値データ量以上になった場合に、前記目標データ量と前記転送データ量とから前記圧縮率を決定する、演算装置。
【請求項4】
請求項1から請求項3のいずれか一項に記載の演算装置であって、
前記演算部は、ニューラルネットワークモデルを実行して演算処理を行う、演算装置。
【請求項5】
演算装置が実行するデータの圧縮方法であって、
演算処理を行う演算工程と、
前記演算工程において転送されるデータ量である転送データ量を監視する監視工程と、
前記転送データ量に応じて圧縮率を決定する決定工程と、
前記演算工程において転送されるデータを前記圧縮率で圧縮する圧縮工程と、を含む、圧縮方法。
【請求項6】
データの圧縮プログラムであって、
演算処理を行う演算機能と、
前記演算機能によって転送されるデータ量である転送データ量を監視する監視機能と、
前記転送データ量に応じて圧縮率を決定する決定機能と、
前記演算機能によって転送されるデータを前記圧縮率で圧縮する圧縮機能と、をコンピュータに実現させる、圧縮プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、演算装置およびデータの圧縮方法、データの圧縮プログラムに関する。
【背景技術】
【0002】
演算装置の動作周波数を増加させると、レイテンシを抑制できることが知られている。特許文献1には、帯域幅やメモリ容量に応じて、動作周波数を決定する技術が記載されている。これにより、演算装置の動作性能を向上させることができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
演算装置の動作周波数を増加させると、消費電力が増加する。そのため、動作周波数の制御のみでは、消費電力を抑制しつつレイテンシを抑制することができない、という課題があった。
【課題を解決するための手段】
【0005】
本開示の一形態によれば、演算装置(100)が提供される。演算装置は、演算処理を行う演算部(11)と、前記演算部が転送するデータ量である転送データ量を監視する監視部(31)と、前記転送データ量に応じて圧縮率を決定する決定部(32)と、前記演算部が転送するデータを前記圧縮率で圧縮する圧縮部(34)と、を備える。
【0006】
この形態の演算装置によれば、転送データ量に応じて圧縮率を定めて圧縮を行うため、バス負荷を低減できる。バス負荷が低減すると消費電力が低減するため、消費電力を抑制しつつ、レイテンシを抑制できる。
【図面の簡単な説明】
【0007】
【
図2】ニューラルネットワークモデルによる演算処理についての説明図である。
【
図3】圧縮処理の一例を示したフローチャートである。
【
図4】圧縮率とランク数との関係を予め定めたテーブルの一例を示す図である。
【
図5】第2実施形態における圧縮処理の一例を示したフローチャートである。
【
図6】時間と転送データ量との関係の一例を示したグラフである。
【発明を実施するための形態】
【0008】
A.第1実施形態:
図1に示すように、演算装置100は、CPU10と、メモリ20と、制御回路部30とを備える。本実施形態において、演算装置100は、ニューラルネットワークモデルを実行して演算処理を行う装置である。演算装置100は、例えば、車両に搭載され、画像解析のための演算処理を行う。演算装置100は、クラウド上に実装されていてもよい。
CPU10は、メモリ20にインストールされたプログラムを実行することによって、演算部11の機能を実現し、演算処理を行う。制御回路部30は、CPUや、RAM、ROMにより構成されたマイクロコンピュータ等からなり、RAMやROM、メモリ20に予めインストールされたプログラムをマイクロコンピュータが実行することによって、監視部31や決定部32、圧縮部33の機能を実現し、メモリ20の管理を行う。
【0009】
演算部11は、ニューラルネットワークモデルを実行して演算処理を行う。
図2に示すように、ニューラルネットワークは、入力層L1と、複数の中間層L2と、出力層L3とを備える。中間層L2の数は任意に定める事ができる。入力層L1は、情報が入力される層である。中間層L2は、入力層L1から伝達される情報に基づいて特徴量の算出を行う層である。出力層L3は、中間層L2から伝達される情報に基づいて結果を出力する層である。各層には、複数のノードが含まれる。隣接する層のノードとノードとを繋ぐエッジは、重み付けされている。演算部11は、例えば、ノードN1に重みW11を掛け合わせ、ノードN2に重みW12を掛け合わせ、ノードN3に重みW13を掛け合わせ、これらを足し合わせてノードN4の値を求める積和演算を含む演算を行う。
【0010】
メモリ20(
図1参照)には、ニューラルネットワークモデルにおける、入力層や中間層、出力層のノードに入力される値に乗算される重みや、中間層のノードの値を記憶する。
【0011】
監視部31は、演算部11が転送するデータのデータ量である転送データ量を監視する。本実施形態において、監視部31は、演算部11とメモリ20とを接続するバスにおいて転送されるデータ量を監視する。
【0012】
決定部32は、監視部31が計測した転送データ量に応じて圧縮率を決定する。本開示において、圧縮率は、データを圧縮した際に、圧縮後のデータが元のデータのどのくらいの情報量に減ったかを表す割合である。圧縮率の決定の詳細については後述する。
【0013】
圧縮部33は、決定部32が決定した圧縮率で、演算部11が転送するデータを圧縮する。圧縮方法の詳細については後述する。
【0014】
図3に示す圧縮処理は、決定部32が圧縮率を決定し、圧縮部33が演算部11の転送するデータを圧縮する処理である。この処理は、演算部11が演算処理を実行する際に繰り返し実行される。演算処理を「演算工程」ともいう。
【0015】
ステップS100において、監視部31は、演算部11が転送するデータ量を取得する。この工程を「監視工程」ともいう。以下では、転送されるデータが1600×900の5.76MBの行列データの場合を例として説明する。
【0016】
ステップS110において、決定部32は、ステップS100で取得した転送データ量に応じて圧縮率を決定する。この工程を「決定工程」ともいう。本実施形態において、決定部32は、予め定めた目標データ量と転送データ量とから、圧縮率を決定する。また、本実施形態において、決定部32は、圧縮率から、圧縮後の行列データのランク数を決定する。決定部32は、圧縮率とランク数との関係を予め定めたテーブルを用いて、削減したいデータ量から行列データのランク数を決定する。
【0017】
図4は、圧縮率とランク数との関係を予め定めたテーブルの一例を示す図である。行列データのランク数が小さくなるほど、データ量が小さくなるため、圧縮率が大きくなる。目標データ量が4MBである場合、圧縮率は約30%である。
図4に示すように、転送する行列データのランク数を400とした場合、データ量が4.0016MBとなり、データ量を30.5%圧縮できる。すなわち、決定部32は、行列データのランク数を400に決定する。
【0018】
ステップS120(
図3参照)において、圧縮部33は、ステップS110で決定した圧縮率で、演算部11が転送するデータを圧縮する。この工程を「圧縮工程」ともいう。本実施形態において、圧縮部33は、特異値分解(singular value decomposition(SVD))によって、データを圧縮する。より具体的には、データのランク数を、圧縮率とランク数との関係を予め定めたテーブルを用いて求められたランク数に近似するように、特異値分解を行う。
【0019】
以上で説明した本実施形態の演算装置100によれば、転送データ量に応じて圧縮率を定めて圧縮を行うため、常に一定の圧縮率で圧縮を行う場合に比べて、圧縮後のデータ量が大きくなってしまうことを抑制できる。そのため、バス負荷を低減できる。バス負荷が低減すると消費電力が低減するため、消費電力を抑制しつつ、レイテンシを抑制できる。また、常に一定の圧縮率で圧縮を行う場合に比べて、データ量を過度に圧縮しすぎることを抑制できる。
【0020】
また、決定部32は、予め定めた目標データ量と転送データ量とから圧縮率を決定している。そのため、データ量の大きさにかかわらず、転送データ量を目標データ量まで圧縮できるため、バス負荷を安定させることができる。
【0021】
B.第2実施形態:
図5に示す第2実施形態の圧縮処理は、ステップS100で取得した転送データ量が予め定めた閾値データ量以上になった場合に、ステップS110の処理を実行する点が第1実施形態と異なり、他の工程は同一である。第2実施形態の演算装置100の構成は、第1実施形態の演算装置100の構成と同一であるため、演算装置100の構成の説明は省略する。
【0022】
ステップS105において、決定部32は、ステップS100で取得した転送データ量が閾値データ量以上か否かを判定する。閾値データ量は、目標データ量よりも大きい値である。また、閾値データ量は、バス帯域が転送出来る最大データ量未満の値である。転送データ量が閾値データ量以上の場合、決定部32は、ステップS110の処理に進む。一方、転送データ量が閾値データ量未満の場合、決定部32は、ステップS115の処理に進む。
【0023】
ステップS115において、決定部32は、圧縮率を既定の値に決定する。既定の圧縮率は、例えば、監視部31の記憶領域に保存されている圧縮率である。すなわち、転送データ量が閾値データ量以上の場合、圧縮率は更新され、一方、転送データ量が閾値データ量未満の場合、圧縮率は更新されない。
【0024】
図6に示すグラフは、横軸が時間であり、縦軸が転送データ量である。
図6に示すグラフは、測定毎の転送データ量をプロットし、その間を直線で結んだグラフである。転送データ量が閾値データ量Dta以上になった場合に、転送データ量が目標データ量Dth以下になる圧縮率で圧縮を行うため、転送データ量が最大データ量Dmaxとなることを抑制できる。
【0025】
以上で説明した第2実施形態の演算装置100によれば、決定部32は、転送データ量が予め定めた閾値データ量以上になった場合に、目標データ量Dthと転送データ量から圧縮率を決定する。そのため、頻繁に圧縮率を変更することを抑制できる。
【0026】
C.他の実施形態:
(C1)上述した実施形態において、演算装置100は、GPU(Graphics Processing Unit)やNPU(Neural network Processing Unit)等のアクセラレータであってもよい。
【0027】
(C2)上述した実施形態において、演算部11は、ニューラルネットワークモデルを実行して演算処理を行っている。これに限らず、演算部11は、ニューラルネットワークモデルを実行せずに演算処理を行ってもよい。なお、演算部11が扱うデータは、行列データやテンソルデータであることが好ましい。
【0028】
(C3)上述した実施形態において、監視部31は、CPU10とメモリ20とを接続するバスにおいて転送されるデータ量を監視している。これに限らず、監視部31は、演算部11とCPU10が有するキャッシュメモリ(図示しない)とを接続するバスにおいて転送されるデータ量を監視してもよい。
【0029】
(C4)上述した実施形態において、決定部32は、予め定めた目標データ量Dthと転送データ量とから圧縮率を決定している。これに限らず、決定部32は、転送データ量と圧縮率との関係を予め定めた関数やテーブルを用いて、圧縮率を決定してもよい。これにより、例えば、転送データ量が非常に大きい場合と非常に小さい場合とで、圧縮率が大きく異なることを抑制できる。
【0030】
(C5)上述した実施形態において、決定部32は、圧縮率とランク数との関係を予め定めたテーブルを用いて、圧縮後の行列のランク数を決定している。決定部32は、数式を用いて、圧縮後のランク数を決定してもよい。より具体的には、決定部32は、予め定めた目標データ量と転送データ量との差分から削減したいデータ量を決定し、数式を用いて、削減したいデータ量から圧縮後の行列データのランク数を決定する。決定部32は、例えば、次の式(1)で削減したいデータ量からm×nの行列データのランク数を決定する。mおよびnはともに自然数である。
【0031】
D=(m×r+n×r+r)×bn/8…(1)
ここで、Dは削減したいデータ量であり、rは行列データのランク数である。bnは転送されるデータのビット数である。また、圧縮部33が、圧縮率とランク数との関係を予め定めた関数やテーブルを用いて、圧縮後の行列のランク数を決定してもよい。数式(1)を用いてランク数を決定することで、テーブルを用いる場合よりも、より削減したいデータ量に応じたランク数を選択できる。
【0032】
(C6)上述した実施形態において、圧縮部33は、特異値分解を用いて圧縮している。これに限らず、スパース化やアルゴリズムを用いた圧縮を行ってもよい。また、転送するデータがテンソルデータである場合、圧縮部33は、タッカー分解を用いて圧縮できる。
【0033】
本開示は、上述の実施形態に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現することができる。例えば発明の概要の欄に記載した各形態中の技術的特徴に対応する実施形態中の技術的特徴は、上述した課題を解決するために、あるいは上述の効果の一部又は全部を達成するために、適宜、差し替えや組み合わせを行うことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜削除することが可能である。
【0034】
本開示に記載の制御回路部30及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載の制御回路部30及びその手法は、一つ以上の専用ハードウエア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載の制御回路部30及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウエア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されていてもよい。
【符号の説明】
【0035】
10…CPU、11…演算部、20…メモリ、30…制御回路部、31…監視部、32…決定部、33…圧縮部、100…演算装置