(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-29
(45)【発行日】2024-09-06
(54)【発明の名称】処理システム、処理方法及び処理プログラム
(51)【国際特許分類】
G06N 3/02 20060101AFI20240830BHJP
G06N 20/00 20190101ALI20240830BHJP
G16Y 30/00 20200101ALI20240830BHJP
【FI】
G06N3/02
G06N20/00
G16Y30/00
(21)【出願番号】P 2021112405
(22)【出願日】2021-07-06
【審査請求日】2023-10-26
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(73)【特許権者】
【識別番号】899000068
【氏名又は名称】学校法人早稲田大学
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】史 旭
(72)【発明者】
【氏名】江田 毅晴
(72)【発明者】
【氏名】坂本 啓
(72)【発明者】
【氏名】榎本 昇平
(72)【発明者】
【氏名】森永 一路
(72)【発明者】
【氏名】渡辺 裕
【審査官】北川 純次
(56)【参考文献】
【文献】国際公開第2021/070215(WO,A1)
【文献】中国特許出願公開第111401552(CN,A)
【文献】中国特許出願公開第111901829(CN,A)
【文献】米国特許出願公開第2020/0184333(US,A1)
【文献】特開2020-135549(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02- 3/10
G06N 20/00-20/20
G16Y 30/00
(57)【特許請求の範囲】
【請求項1】
エッジ装置とサーバ装置とを用いて行われる処理システムであって、
前記エッジ装置は、
第1モデルを用いて、データの特徴量を抽出し、抽出した特徴量を基に前記データに対する推論処理を実行する第1推論部と、
前記第1推論部による推論結果に対する確信度が閾値以上である場合には前記第1推論部による推論結果を出力し、前記確信度が閾値未満である場合には前記データの特徴量を前記サーバ装置に出力することを判定する判定部と、
前記第1推論部によって抽出された前記データの特徴量を量子化し、出力する量子化部と、
を有し、
前記サーバ装置は、
前記第1モデルよりも推論精度が高い第2モデルを用いて、前記エッジ装置から出力された前記データの特徴量を基に前記データに対する推論処理を実行する第2推論部、
を有し、
前記処理システムは、
前記量子化部によってそれぞれ異なる量子化ビット数で量子化されたサンプリングデータの各特徴量に基づいて前記第2推論部が推定した各推論結果の精度を取得する推論精度取得部と、
前記量子化部によってそれぞれ異なる量子化ビット数で量子化された前記サンプリングデータの各特徴量の情報量をそれぞれ計算する第1情報量計算部と、
前記第1情報量計算部が計算した各情報量と、前記推論精度取得部が取得した各推論結果の精度とを基に、前記量子化部における初期の量子ビット数を設定する第1設定部と、
を有することを特徴とする処理システム。
【請求項2】
前記第1設定部は、前記第1情報量計算部が計算した各情報量と、前記推論精度取得部が取得した各推論結果の精度と、前記エッジ装置と前記サーバ装置との間の通信におけるデータ量の重みづけパラメータと、推論精度の重みづけパラメータとを基に、前記量子化部における初期の量子ビット数を設定することを特徴とする請求項1に記載の処理システム。
【請求項3】
前記エッジ装置は、
前記量子化部によってそれぞれ異なる量子化ビット数で量子化された推論対象データの各特徴量の情報量をそれぞれ計算する第2情報量計算部と、
前記第2情報量計算部が計算した各情報量のうち、所定の許容情報損失範囲において最も小さい量子化ビット数で量子化された情報量を取得し、取得した情報量に対応する量子化ビット数を、前記量子化部における量子ビット数として設定する第2設定部と、
をさらに有することを特徴とする請求項1または2に記載の処理システム。
【請求項4】
前記許容情報損失範囲は、最大ビット数で量子化された前記サンプリングデータの特徴量の情報量と前記初期の量子ビット数で量子化された前記サンプリングデータの特徴量との差分である最大情報損失量を、最大ビット数で量子化された前記推論対象データの特徴量の情報量から減じた情報量から、前記最大ビット数で量子化された前記推論対象データの特徴量の情報量までの範囲であることを特徴とする請求項3に記載の処理システム。
【請求項5】
エッジ装置とサーバ装置とを用いて行われる処理システムが実行する処理方法であって、
前記エッジ装置が、第1モデルを用いて、データの特徴量を抽出し、抽出した特徴量を基に前記データに対する推論処理を実行する第1推論工程と、
前記エッジ装置が、前記第1推論工程による推論結果に対する確信度が閾値以上である場合には前記第1推論工程における推論結果を出力し、前記確信度が閾値未満である場合には前記データの特徴量を前記サーバ装置に出力することを判定する判定工程と、
前記エッジ装置が、前記第1推論工程において抽出された前記データの特徴量を量子化し、出力する量子化工程と、
前記サーバ装置が、前記第1モデルよりも推論精度が高い第2モデルを用いて、前記エッジ装置から出力された前記データの特徴量を基に前記データに対する推論処理を実行する第2推論工程と、
前記処理システムが、前記量子化工程においてそれぞれ異なる量子化ビット数で量子化されたサンプリングデータの各特徴量に基づいて前記第2推論工程において推定された各推論結果の精度を取得する推論精度取得工程と、
前記処理システムが、前記量子化工程においてそれぞれ異なる量子化ビット数で量子化された前記サンプリングデータの各特徴量の情報量をそれぞれ計算する第1情報量計算工程と、
前記処理システムが、前記第1情報量計算工程において計算された各情報量と、前記推論精度取得工程において取得された各推論結果の精度とを基に、前記量子化工程における初期の量子ビット数を設定する第1設定工程と、
を含んだことを特徴とする処理方法。
【請求項6】
方法をコンピュータに実行させる処理プログラムであって、
エッジ装置としてのコンピュータに、
第1モデルを用いて、データの特徴量を抽出し、抽出した特徴量を基に前記データに対する推論処理を実行する第1推論ステップと、
前記第1推論ステップによる推論結果に対する確信度が閾値以上である場合には前記第1推論ステップによる推論結果を出力し、前記確信度が閾値未満である場合には前記データの特徴量をサーバ装置に出力することを判定する判定ステップと、
前記第1推論ステップにおいて抽出された前記データの特徴量を量子化し、出力する量子化ステップと、
を実行させ、
前記サーバ装置としてのコンピュータに、
前記第1モデルよりも推論精度が高い第2モデルを用いて、前記エッジ装置から出力された前記データの特徴量を基に前記データに対する推論処理を実行する第2推論ステップ、
を実行させ、
処理システムを構成する装置としてのコンピュータに、
前記量子化ステップにおいてそれぞれ異なる量子化ビット数で量子化されたサンプリングデータの各特徴量に基づいて前記第2推論ステップにおいて推定された各推論結果の精度を取得する推論精度取得ステップと、
前記量子化ステップにおいてそれぞれ異なる量子化ビット数で量子化された前記サンプリングデータの各特徴量の情報量をそれぞれ計算する第1情報量計算ステップと、
前記第1情報量計算ステップにおいて計算された各情報量と、前記推論精度取得ステップにおいて取得された各推論結果の精度とを基に、前記量子化ステップにおける初期の量子ビット数を設定する第1設定ステップと、
を実行させることを特徴とする処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理システム、処理方法及び処理プログラムに関する。
【背景技術】
【0002】
エッジコンピューティングに代表されるように、データや演算をサーバ装置に集約せずに、よりユーザに近いエッジ装置で処理を行う技術が実用化され始めている。
【0003】
しかしながら、全ての演算をエッジ装置で行うことが必ずしも効率的であるとは限らない。例えば、非常に演算量が大きくなるような難しいタスクをエッジ装置で行おうとすると、エッジ装置の処理能力が逼迫し、結果として早いレスポンスを求める他のタスクに遅延が生じるなどのデメリットが生じる場合がある。そこで、エッジ装置とサーバ装置とで適応的に処理を分担させる技術として、エッジ装置でタスクを処理した結果の確信度に応じて、エッジ装置で処理した結果をユーザに返すか、サーバに伝送してサーバ装置で処理した結果をユーザに返すか、を制御する技術がある(非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0004】
【文献】榎本昇平等, “モデルカスケードによる深層学習推論の高速化”, 信学技報, vol. 119, no. 481, PRMU2019-98, pp. 203-208, 2020年3月.
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、エッジ装置とサーバ装置との間で処理を分担してタスクを処理しようとした場合、タスクに係るデータをエッジ装置からサーバ装置まで伝送するときにデータを圧縮される場合を考える。データを圧縮する場合、量子化する工程を含む手法が多いが、このときに行われる量子化は、汎用的に用いることができる範囲でしか量子化パラメータの変更が許容されないことが多い。しかしながら、エッジ装置とサーバ装置との間で処理を分担するデータの種別及びタスクは多岐にわたるため、データの種別及びタスクに応じて量子化パラメータを適応的に設定したいという要望があった。
【0006】
本発明は、上記に鑑みてなされたものであって、エッジ装置からサーバ装置へのデータの転送の際に実行する、転送データの量子化における量子化パラメータを適応的に設定することができる処理システム、処理方法及び処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決し、目的を達成するために、本発明に係る処理システムは、エッジ装置とサーバ装置とを用いて行われる処理システムであって、エッジ装置は、第1モデルを用いて、データの特徴量を抽出し、抽出した特徴量を基にデータに対する推論処理を実行する第1推論部と、第1推論部による推論結果に対する確信度が閾値以上である場合には第1推論部による推論結果を出力し、確信度が閾値未満である場合にはデータの特徴量をサーバ装置に出力することを判定する判定部と、第1推論部によって抽出されたデータの特徴量を量子化し、出力する量子化部と、を有し、サーバ装置は、第1モデルよりも推論精度が高い第2モデルを用いて、エッジ装置から出力されたデータの特徴量を基にデータに対する推論処理を実行する第2推論部、を有し、処理システムは、量子化部によってそれぞれ異なる量子化ビット数で量子化されたサンプリングデータの各特徴量に基づいて第2推論部が推定した各推論結果の精度を取得する推論精度取得部と、量子化部によってそれぞれ異なる量子化ビット数で量子化されたサンプリングデータの各特徴量の情報量をそれぞれ計算する第1情報量計算部と、第1情報量計算部が計算した各情報量と、推論精度取得部が取得した各推論結果の精度とを基に、量子化部における初期の量子ビット数を設定する第1設定部と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、エッジ装置からサーバ装置へのデータの転送の際に実行する、転送データの量子化における量子化パラメータを適応的に設定することができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態1に係る処理システムの処理方法の概要を説明する図である。
【
図2】
図2は、実施の形態1に係る処理システムの構成の一例を模式的に示す図である。
【
図3】
図3は、初期の量子ビット数の設定処理を説明する図である。
【
図4】
図4は、初期の量子化ビット数の設定処理の処理手順を示すシーケンス図である。
【
図5】
図5は、実施の形態1に係る推論処理の処理手順を示すシーケンス図である。
【
図6】
図6は、実施の形態1に係る処理システムの構成の他の例を模式的に示す図である。
【
図7】
図7は、実施の形態1に係る処理システムの構成の他の例を模式的に示す図である。
【
図8】
図8は、実施の形態2に係る処理システムの構成の一例を模式的に示す図である。
【
図9】
図9は、運用段階における量子ビット数の最適化処理を説明する図である。
【
図10】
図10は、運用段階における量子化ビット数の設定処理の処理手順を示すフローチャートである。
【
図11】
図11は、プログラムが実行されることにより、エッジ装置、サーバ装置及び設定装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。なお、以下では、Aに対し、“-A”と記載する場合は「“A”の直上に“-”が記された記号」と同等であるとする。
【0011】
[実施の形態1]
[実施の形態1の概要]
本発明の実施の形態1について説明する。本発明の実施の形態1では、学習済みの高精度モデル及び軽量モデルを使って推論処理を行う処理システムについて説明する。なお、実施の形態の処理システムでは、推論処理において用いるモデルとして、DNN(Deep Neural Network)を用いた場合を例に説明する。実施の形態1の処理システムでは、どのようなニューラルネットワークを用いてもよいし、学習済みモデルに代えて低演算量の信号処理と高演算量の信号処理を用いてもよい。
【0012】
図1は、実施の形態1に係る処理システムの処理方法の概要を説明する図である。実施の形態1に係る処理システムでは、高精度モデル及び軽量モデルは、モデルカスケードを構成する。この処理システムでは、高速かつ低精度な軽量モデル(例えば、DNN1(第1モデル))を用いるエッジ装置と、低速かつ高精度な高精度モデル(例えば、DNN2(第2モデル))を用いるクラウド(サーバ装置)とのいずれにおいて処理を実行するかを、確信度を用いて制御する。
【0013】
例えば、サーバ装置は、エッジと比較したときに論理的に遠い場所に配置された装置である。エッジ装置は、ユーザから物理的及び論理的に近い場所に配置されたIoT機器及び各種端末装置であり、サーバ装置と比してリソースが少ない。
【0014】
DNN1及びDNN2は、入力されたデータを基に推論結果を出力するモデルである。
図1の例では、DNN1は、画像を入力とし、画像から抽出した特徴量を基に、当該画像に写る物体のクラスごとの確率を推論する。DNN2は、DNN1が抽出した特徴量(以下、特徴マップという)を入力として、推論対象である画像に写る物体のクラスごとの確率を推論する。なお、DNN1及びDNN2は、いずれも同じ画像に対する推論を行う。
【0015】
処理システムでは、エッジ装置において、確信度と閾値との比較結果に基づいて、DNN1及びDNN2のいずれにおける推論結果を採用するかを判定する。確信度は、エッジ装置とサーバ装置とのいずれにおいて処理対象データを処理すべきかを判定するための値である。確信度は、DNN1による被写体認識の結果が正解であることの確からしさの度合いである。例えば、確信度は、DNN1が出力した、画像に写る物体のクラスの確率、例えば最も高いクラスの確率であってもよい。
【0016】
処理システムでは、取得した確信度が所定の閾値以上である場合、DNN1の推論結果が採用される。つまり、軽量モデルの推論結果が、モデルカスケードの最終的な推定結果として出力される。一方で、処理システムでは、確信度が所定の閾値未満である場合、同一画像から抽出した特徴マップをDNN2に入力して得られた推論結果が、最終的な推論結果として出力される。
【0017】
このように、処理システムは、エッジ装置とサーバ装置とのいずれにおいて処理対象データを処理すべきかを、確信度を基に選択して処理対象データを処理する。
【0018】
そして、処理システムでは、推論処理をDNN2に実行させる場合、エッジ装置は、DNN1によって抽出された特徴マップを量子化し、量子化した特徴マップをサーバ装置に出力する。エッジ装置とサーバ装置との間で処理を分担して処理しようとするデータの種別とタスクとは、多岐にわたる。
【0019】
そこで、処理システムでは、エッジ装置とサーバ装置との間で分担して処理を行おうとするカスケードモデルにおいて、事前準備の段階で、対象とする情報及びタスクで求められる精度に応じて、量子化パラメータを適応的に設定する。これによって、処理システムでは、運用段階において、求められる推論精度を維持しつつデータ伝送量を低減することができる。
【0020】
[処理システム]
次に、実施の形態1に係る処理システムの構成について説明する。
図2は、実施の形態1に係る処理システムの構成の一例を模式的に示す図である。
【0021】
実施の形態1に係る処理システム100は、サーバ装置20、エッジ装置30及び設定装置40を有する。サーバ装置20及びエッジ装置30は、ネットワークNを介して接続される。ネットワークNは、例えばインターネットである。サーバ装置20及び設定装置40、エッジ装置30及び設定装置40は、ネットワーク(不図示)を介して接続される。サーバ装置20は、例えば、クラウド環境に設けられたサーバである。また、エッジ装置30は、例えば、IoT機器及び各種端末装置である。設定装置40は、例えば、クラウド環境に設けられたサーバである。
【0022】
サーバ装置20、エッジ装置30及び設定装置は、それぞれROM(Read Only Memory)、RAM(Random Access Memory)、CPU(Central Processing Unit)等を含むコンピュータ等に所定のプログラムが読み込まれて、CPUが所定のプログラムを実行することで実現される。また、GPUやVPU(Vision Processing Unit)、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)や専用のAI(Artificial Intelligence)チップに代表されるいわゆるアクセラレータも用いられる。サーバ装置20、エッジ装置30及び設定装置は、それぞれ、NIC(Network Interface Card)等を有し、LAN(Local Area Network)やインターネットなどの電気通信回線を介した他の装置との間の通信を行うことも可能である。
【0023】
図2に示すように、サーバ装置20は、学習済みの高精度モデルであるDNN2を用いて推論を行う推論部21(第2推論部)を有する。DNN2は、モデルパラメータ等の情報を含む。DNN2は、DNN1が抽出した特徴マップを入力として、推論を行う。
【0024】
推論部21は、DNN2を用いて、エッジ装置30から出力された入力画像の特徴マップを基に、入力画像に対する推論処理を実行する。推論部21は、エッジ装置30から出力された、量子化された特徴マップを復号化して、DNN2の入力とする。推論部21は、DNN2の出力として推論結果(例えば、画像に写る物体のクラスごとの確率)を取得し、出力する。なお、運用時において、推論結果をユーザに返す場合、推論部21で得られた推論結果は、エッジ装置30に伝送され、エッジ装置30からユーザに返してもよい。
【0025】
ここで、サーバ装置20及びエッジ装置30は、モデルカスケードを構成する。このため、推論部21は、常に推論を行うわけではない。推論部21は、推論処理をサーバ装置20に実行させると判定された場合に、量子化された特徴マップの入力を受け付けて、DNN2による推論を行う。
【0026】
エッジ装置30は、学習済みの軽量モデルであるDNN1を有する推論部31(第1推論部)と、判定部32と、量子化部33を有する。
【0027】
推論部31は、学習済みの軽量モデルであるDNN1を用いて推論を行う。DNN1は、モデルパラメータ等の情報を含む。DNN1は、画像から特徴量を抽出して特徴マップを出力する特徴抽出層Bf1と、特徴マップを入力として推論結果(例えば、画像に写る物体のクラスごとの確率)を取得する処理層Bd1とを有する。推論部31は、DNN1を用いて、入力画像の特徴量を特徴マップとして抽出し、抽出した特徴マップを基に入力画像に対する推論処理を実行する。
【0028】
推論部31は、DNN1に、処理対象の画像を入力して推論結果を取得する。推論部31は、DNN1を用いて、処理対象データの特徴量を抽出し、抽出した特徴量を基に前記処理対象データに対する推論処理を実行する。推論部31は、処理対象の画像の入力を受け付け、処理対象の画像を処理し、推論結果(例えば、画像に写る物体のクラスごとの確率)を出力する。
【0029】
判定部32は、エッジ装置30とサーバ装置20とのいずれの推論結果を採用するか否かを、確信度と所定の閾値とを比較することで判定する。
【0030】
判定部32は、確信度が所定の閾値以上である場合、推論部31が推論した推論結果を出力する。判定部32は、確信度が所定の閾値未満である場合、エッジ側のDNN1の特徴抽出層Bf1の出力である特徴マップを量子化した後にサーバ装置20に出力して、推論処理をサーバ装置20に配置されたDNN2に実行させる。
【0031】
量子化部33は、運用段階において、判定部32が推論処理をサーバ装置20に実行させることを判定した場合、DNN1の特徴抽出層Bf1によって抽出された特徴マップを量子化し、量子化した特徴マップをサーバ装置20に出力する。量子化の際の量子化ビット数は、事前準備段階において、第1設定部43によって設定される。また、量子化部33は、事前準備段階において、推論部31の特徴抽出層Bf1が抽出したサンプリングデータの特徴マップを、それぞれ異なる量子化ビット数で量子化し、量子化後の各特徴マップを設定装置40に出力する。
【0032】
設定装置40は、推論精度取得部41と、第1情報量計算部42と、第1設定部43とを有する。設定装置40は、事前準備段階において、対象とする情報量及びタスクで求められる精度に応じて、量子化部33における量子化パラメータを適応的に設定する。設定装置40は、量子化部33における量子化ビット数を設定する。
【0033】
事前準備段階において、サンプリングデータがエッジ装置30に入力される。DNN1の特徴抽出層Bf1は、サンプリングデータの特徴マップを抽出する。量子化部33は、サンプリングデータの特徴マップをそれぞれ異なる量子化ビット数で量子化し、設定装置40及びサーバ装置20に出力する。サーバ装置20では、量子化部33によってそれぞれ異なる量子化ビット数で量子化されたサンプリングデータの特徴マップごとに、推論部21が推論を実行する。
【0034】
推論精度取得部41は、事前準備段階において、量子化部33によってそれぞれ異なる量子化ビット数で量子化されたサンプリングデータの各特徴マップに基づいて推論部21が推定した各推論結果の精度を取得する。推論精度として、例えば、分類タスクの場合、分類が正しくできたデータと全体データとの割合(正解率)が考えられる。
【0035】
第1情報量計算部42は、事前準備段階において、量子化部33によってそれぞれ異なる量子化ビット数で量子化されたサンプリングデータの各特徴マップの情報量をそれぞれ計算する。
【0036】
第1設定部43は、事前準備段階において、第1情報量計算部42が計算した各情報量と、推論精度取得部41が取得した各推論結果の精度とを基に、量子化部33における初期の量子ビット数を設定する。第1設定部43は、第1情報量計算部42が計算した各情報量と、推論精度取得部41が取得した各推論結果の精度と、エッジ装置30とサーバ装置20との間の通信における情報量の重みづけパラメータλ1(後述)と、推論精度の重みづけパラメータλ2(後述)とを基に、量子化部33における初期の量子ビット数を設定する。
【0037】
[量子化ビット数の設定]
次に、量子化部33における初期の量子ビット数の設定処理について説明する。
図3は、初期の量子ビット数の設定処理を説明する図である。
【0038】
事前準備段階において、ドメインデータをサンプリング、アノテーションし(
図3の(1))、サンプリングデータをエッジ装置30のDNN1の特徴抽出層Bf1に入力することで、サンプリングデータの特徴マップを生成する(
図3の(2))。
【0039】
続いて、量子化部33は、サンプリングデータの特徴マップを、int2,int3,int4,int5,int6,int7,int8量子化を用いて量子化する(
図3の(3))。
【0040】
第1情報量計算部42は、各量子化ビット数に応じた特徴マップの情報量を式(1)に基づいてそれぞれ計算する(
図3の(4))。
【0041】
【0042】
第1情報量計算部42は、量子化ビット数ごとに、int2,int3,int4,int5,int6,int7,int8量子化を用いて量子化した特徴マップの平均情報量を計算する(
図3の(4))。平均情報量は、各量子化ビット数で量子化した全てのサンプルデータの特徴マップの情報量の平均を指す。
【0043】
続いて、量子化部33によってそれぞれ異なる量子化ビット数で量子化したサンプリングデータの各特徴マップがサーバ装置20のDNN2に入力され、特徴マップごとに推論が実行される(
図3の(5))。推論精度取得部41は、各量子化ビット数で量子化された特徴マップごとに推論結果の精度(例えば、グラフE1)を取得する(
図3の(6))。
【0044】
なお、グラフE1は、オフロード率と全体精度との関係を示すグラフである。閾値は、オフロード率に連動し、オフロード率を下げる場合には閾値を上げる。グラフE1において、オフロード率(Offload rate)が「0」である場合は、全てのデータがエッジ装置30により処理され、オフロード率が「1」である場合は、全てのデータがサーバ装置20により処理される。
【0045】
第1設定部43は、第1情報量計算部42が計算した各情報量と、推論精度取得部41が取得した各推論結果の精度とを基に、量子化部33における初期の量子ビット数を設定する(
図3の(7))。具体的には、第1設定部43は、オフロード率に対する各量子化ビット数での量子化による精度の落ち具合と、第1情報量計算部42が計算した情報量に基づいて、初期の量子化ビット数を最適化する。例えば、第1設定部43は、式(2)を用いて、初期の量子化ビット数を設定する。
【0046】
【0047】
式(2)において、λ1,λ2は、ユーザが設定するハイパーパラメータである。λ1は、エッジ装置30とサーバ装置20との間の通信における情報量の重視度合いで値が設定されるものである。λ2は、推論精度の重視度合いで値が設定される。λ1,λ2は、エッジ装置30とサーバ装置20との間で処理を分担するデータの種別、タスクに応じて、ユーザが設定するものである。
【0048】
なお、各量子化ビットで量子化された特徴マップの情報量及び推論結果のうち、各量子化ビット数で量子化された特徴マップに基づくDNN2の推論精度が、エッジ装置30のDNN1の精度より高く、または、各量子化ビット数で量子化された特徴マップに基づくDNN2の推論精度が、ユーザの要求精度以上を満たすものが、式(2)の計算対象となる。
【0049】
図3の例では、第1設定部43は、第1情報量計算部42による計算結果と、int5量子化に対応する推論精度の結果より、int5量子化、すなわち、初期の量子化ビット数として「5」を設定する。
【0050】
グラフE1の枠W1に示すように、int5量子化を用いて量子化を行った場合、オフセット率が増加しても推論精度の低下は比較的低く、推論精度への影響も少ない。また、全ての入力画像の特徴マップをint8量子化(テンソルの各値を8bitで表現)して、サーバへ送る場合には、転送データ量が依然として大きいままである。これに対し、int5量子化を適用して量子化することにより、int8量子化よりデータ量が約2.5倍削減できる。
【0051】
例えば、被写体認識のタスクを想定した場合、カメラと被写体との位置の距離(画像内における被写体が占める領域の大きさ)が遠い場合或いは近い場合、被写体の絶対的な大きさが大きい場合或いは小さい場合などを例に考える。この例の場合、被写体がカメラとの距離が近い場合(例えば精度90%)、普通精度は距離が遠い場合(例えば精度50%)より良いだと考えられる。ユーザの希望精度が例えば50%の場合、距離が近いカメラのほうが、より低ビット数で量子化できる可能性が高いため、第1設定部43は、量子化ビット数を下げて量子化する。また、遠いカメラの場合、さらに量子化ビット数を下げると精度が50%以下になるため、第1設定部43は、量子化ビット数を下げずint8量子化のままとする。このように、処理システム100では、ユーザまたはユースケースが希望する、エッジ装置30からサーバ装置20に伝送するデータ量の低減と、推論精度の確保との双方を満たしながら、ドメインデータの特徴に合った最適な量子化ビット数を設定する。
【0052】
なお、量子化した特徴マップを用いてDNN2を再学習することが可能である場合、全体精度の回復が期待できるため、第1設定部43は、量子化部33に、int2量子化、int3量子化或いはint4量子化を用いて量子化を行うよう設定してもよい場合がある(グラフE1の枠W2参照)。
【0053】
[初期の量子化ビット数の設定処理]
次に、量子化部33における初期の量子化ビット数の設定処理について説明する。
図4は、初期の量子化ビット数の設定処理の処理手順を示すシーケンス図である。
【0054】
図4に示すように、事前準備段階において、エッジ装置30の推論部31には、サンプリングドメインデータが入力され(ステップS1)、推論部31は、サンプリングデータの特徴量を抽出し(ステップS2)、特徴マップを生成する。推論部31は、特徴マップを量子化部33に出力する(ステップS3)。
【0055】
量子化部33は、サンプリングデータの特徴マップを、それぞれ異なる量子化ビット数で量子化し(ステップS4)、量子化後の各特徴マップを設定装置40及びサーバ装置20の推論部21に出力する(ステップS5,S6)。設定装置40では、第1情報量計算部42が、量子化部33によってそれぞれ異なる量子化ビット数で量子化されたサンプリングデータの各特徴マップの情報量をそれぞれ計算する第1情報量計算処理を行う(ステップS7)。第1情報量計算部42は、計算結果を第1設定部43に出力する(ステップS8)。
【0056】
サーバ装置20では、推論部21が、量子化部33によってそれぞれ異なる量子化ビット数で量子化されたサンプリングデータの特徴マップごとに、推論部21が推論を実行し(ステップS9)、各推論結果を設定装置40に出力する(ステップS10)。
【0057】
設定装置40では、推論精度取得部11が、量子化部33によってそれぞれ異なる量子化ビット数で量子化されたサンプリングデータの各特徴マップに基づいて推論部21が推定した各推論結果の精度を取得し(ステップS11)、各推論結果の精度を第1設定部43に出力する(ステップS12)。
【0058】
第1設定部43は、第1情報量計算部42が計算した各情報量と、推論精度取得部41が取得した各推論結果の精度とを基に、量子化部33における初期の量子ビット数を設定する(ステップS13,S14)。
【0059】
[推論処理の処理手順]
図5は、実施の形態1に係る推論処理の処理手順を示すシーケンス図である。
図5に示すように、運用時では、エッジ装置30の推論部31が、画像の入力を受け付けると(ステップS21)、入力画像を推論部31に入力する。推論部31は、入力画像の特徴量を特徴マップとして抽出し(ステップS22)、判定部32に出力する(ステップS23)。推論部31は、特徴マップを基に入力画像に対する推論処理を実行し(ステップS24)、判定部32に出力する(ステップS25)。
【0060】
判定部32は、推論部31による推論結果に基づいて確信度を計算し(ステップS26)、計算した確信度と所定の閾値とを比較し、確信度が所定の閾値以上であるか否かを判定する(ステップS27)。
【0061】
確信度が閾値以上である場合(ステップS27:Yes)、判定部32は、推論部31のDNN1が推論した推論結果を出力する(ステップS28)。一方、確信度が閾値未満である場合(ステップS27:No)、判定部32は、特徴マップを量子化部33に出力する(ステップS29)。量子化部33は、第1設定部43が設定した初期の量子化ビット数で特徴マップを量子化し(ステップS30)、サーバ装置20に送信する(ステップS31)。
【0062】
サーバ装置20では、推論部21が、エッジ装置30から出力された、量子化された特徴マップを復号化し、DNN2の入力とする。推論部21では、DNN2が、エッジ装置30から出力された特徴マップを基に、入力画像に対する推論処理を実行する(ステップS32)。サーバ装置20は、DNN2の推論結果をエッジ装置30に送信し(ステップS33)、エッジ装置30から出力される(ステップS34)。
【0063】
なお、
図5では、ユーザに推論結果を返す構成を想定し、エッジ装置30から最終的な推論結果を出力する構成としているが、サーバ装置20側で最終的な推論結果を用いる場合は、DNN2の推論結果をサーバ装置20から出力する、或いは、サーバ装置20でそのまま保持するよう構成してもよい。DNN1の推論結果を使用する場合には、エッジ装置30は、サーバ装置20側で当該推論結果を用いる場合、推論結果をサーバ装置20に送信すればよい。
【0064】
[実施の形態1の効果]
このように、処理システム100では、事前準備の段階で、エッジ装置からサーバ装置に送信するデータ量とタスクで求められる精度とに応じて、量子化部33における量子化の量子化ビット数を適応的に設定する。これによって、処理システム100では、実際に運用する際、求められる推論精度を維持しながら、データ伝送量を低減することができる。この実施の形態1を適用することで、リアルタイムに高精度の動作が可能な監視カメラ映像自動分析、自動運転、スマートスピーカー等の実現を可能とする。
【0065】
なお、
図2では、設定装置40を設け、量子化部33の量子化ビット数を設定した場合を例に説明したが、これに限らない。
図6及び
図7は、実施の形態1に係る処理システムの構成の他の例を模式的に示す図である。
【0066】
図6に示す処理システム100Aに示すように、サーバ装置20A側に、推論精度取得部41を設け、エッジ装置30Aに、第1情報量計算部42及び第1設定部43を設け、量子化部33の量子化ビット数を設定してもよい。また、
図7に示す処理システム100Bに示すように、サーバ装置20Bに、推論精度取得部41、第1情報量計算部42及び第1設定部43を設けてもよい。
【0067】
[実施の形態2]
次に、実施の形態2について説明する。実施の形態2では、実際の運用段階において、量子化部33における量子化ビット数を動的に最適化する。
【0068】
[処理システム]
次に、実施の形態2に係る処理システムの構成について説明する。
図8は、実施の形態2に係る処理システムの構成の一例を模式的に示す図である。
【0069】
図8に示すように、実施の形態2に係る処理システム200は、
図2に示すエッジ装置30に代えて、エッジ装置230を有する。エッジ装置230は、エッジ装置30と比して、さらに、第2情報量計算部234及び第2設定部235を有する。
【0070】
運用段階において、推論対象データがエッジ装置30に入力される。推論部31では、DNN1の特徴抽出層Bf1において、推論対象データの特徴マップを抽出する。ここで、量子化ビット数の最適化のために、量子化部33は、所定タイミングで、推論対象データの特徴マップをそれぞれ異なる量子化ビット数で量子化する。
【0071】
第2情報量計算部234は、量子化部33によってそれぞれ異なる量子化ビット数で量子化された推論対象データの各特徴量の情報量をそれぞれ計算する。
【0072】
第2設定部235は、第2情報量計算部234が計算した各情報量のうち、所定の許容情報損失範囲において最も小さい量子化ビット数で量子化された情報量を取得し、取得した情報量に対応する量子化ビット数を、量子化部33における量子ビット数として設定する。
【0073】
[量子化ビット数の最適化]
次に、運用段階における、量子化部33の量子ビット数の最適化処理について説明する。
図9は、運用段階における量子ビット数の最適化処理を説明する図である。
【0074】
まず、事前準備段階(
図9の(A))において、
図4に示すステップS1~ステップS14が実行されることで、初期の量子ビット数が設定される。例えば、
図3で例示したように、量子化部33の量子化として、int5量子化が設定される。
【0075】
ここで、最大ビット数で量子化されたサンプリングデータの特徴量の情報量と初期の量子ビット数で量子化されたサンプリングデータの特徴量との差分である最大情報損失量を求めておく。
図4の例では、int8量子化でサンプリングデータの特徴マップを量子化した場合の平均情報量 ̄H
(8)(=6.0827)と、初期の量子化ビット数「5」をパラメータとするint5量子化でサンプリングデータの特徴マップを量子化した場合の平均情報量 ̄H
(5)(=3.6407)との差分2.442が、最大情報損失量である(
図9の(1))。
【0076】
そして、運用段階において、量子化部33は、所定タイミングで、推論対象の入力画像の特徴マップをint2,int3,int4,int5,int6,int7,int8量子化で量子化する。第2情報量計算部234は、推論対象の入力画像ごとに、量子化部33によってint2,int3,int4,int5,int6,int7,int8量子化で量子化された推論対象の入力画像の各特徴マップの情報量をそれぞれ計算する。
【0077】
続いて、第2設定部235は、第2情報量計算部234が計算した各情報量のうち、所定の許容情報損失範囲において最も小さい量子化ビット数で量子化された情報量を取得する。
【0078】
許容情報損失範囲は、最大情報損失量を、最大ビット数で量子化された推論対象の入力データの特徴量の情報量から減じた情報量と、最大ビット数で量子化された推論対象の入力データの特徴量の情報量との間の範囲である。
図9の例では、許容情報損失範囲は、最大情報損失量「2.442」を、int8量子化で量子化された推論対象の入力データの特徴量の情報量「3.9876」から減じた情報量「1.5456」から、int8量子化で量子化された推論対象の入力データの特徴量の情報量「3.9876」までの範囲である(
図9の(2))。
【0079】
第2設定部235は、第2情報量計算部234が計算した各情報量のうち、許容情報損失範囲「1.5456」から「3.9876」までにおいて最も小さい量子化ビット数で量子化された情報量を取得する。
図9の例の場合、第2設定部235は、int4量子化に対応する情報量「1.6016」を取得する。そして、第2設定部235は、取得した情報量「1.6016」に対応する量子化ビット数「4」を、量子化部33における量子化ビット数として設定する(
図9の(3))。以降の処理において、量子化部33は、int4量子化で特徴マップを量子化する。
【0080】
[運用段階における量子化ビット数の設定処理]
図10は、運用段階における量子化ビット数の設定処理の処理手順を示すフローチャートである。
【0081】
運用段階では、推論対象データがエッジ装置30に入力されると、推論部31が、推論対象データの特徴マップを抽出する(ステップS201)。量子化部33は、所定タイミングで、推論対象データの特徴マップをそれぞれ異なる量子化ビット数で量子化する(ステップS202)。
【0082】
第2情報量計算部234は、量子化部33によってそれぞれ異なる量子化ビット数で量子化された推論対象データの各特徴マップの情報量をそれぞれ計算する第2情報量計算処理を行う(ステップS203)。
【0083】
第2設定部235は、第2情報量計算部234が計算した各情報量のうち、所定の許容情報損失範囲において最も小さい量子化ビット数で量子化された情報量を取得し、取得した情報量に対応する量子化ビット数を、量子化部33における量子ビット数として設定する(ステップS204)。
【0084】
[実施の形態2の効果]
このように、実施の形態2に係る処理システム200では、エッジ装置230が、推論段階において、リアルタイムに個々の特徴マップの情報量に基づいて動的に量子化ビット数を最適化する。たとえば、エッジ装置230は、情報量が少ない入力画像をより少ないビット数で圧縮することができる。また、エッジ装置230は、情報量が多い入力画像については、情報量を落すことなくサーバ装置20に送信するため、サーバ装置20での推論の精度も保持可能である。
【0085】
なお、本実施の形態1,2では、処理対象データとして画像を例に説明したが、画像に限らず、各種センサが検知した検知結果でもよい。また、本実施の形態1,2では、エッジ装置30またはサーバ装置20が複数であってもよく、また、エッジ装置30とサーバ装置20とがいずれも複数であってもよい。
【0086】
[システム構成等]
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、CPU及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0087】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部又は一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0088】
[プログラム]
図11は、プログラムが実行されることにより、エッジ装置30、サーバ装置20及び設定装置40が実現されるコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、演算を補助するために前述したアクセラレータを備えてもよい。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0089】
メモリ1010は、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0090】
ハードディスクドライブ1090は、例えば、OS(Operating System)1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、エッジ装置30、サーバ装置20及び設定装置40の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、エッジ装置30、サーバ装置20及び設定装置40における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0091】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
【0092】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0093】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【0094】
20,20A,20B サーバ装置
21,31 推論部
30,30A,230 エッジ装置
32 判定部
33 量子化部
40 設定装置
41 推論精度取得部
42 第1情報量計算部
43 第1設定部
100,100A,100B,200 処理システム
234 第2情報量計算部
235 第2設定部