(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024010278
(43)【公開日】2024-01-24
(54)【発明の名称】推論リクエスト配分プログラム、推論リクエスト配分方法および情報処理装置
(51)【国際特許分類】
G06F 9/50 20060101AFI20240117BHJP
【FI】
G06F9/50 150D
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022111521
(22)【出願日】2022-07-12
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】三輪 真弘
(57)【要約】
【課題】リクエストを効率的に割り当てる。
【解決手段】記憶部11は、複数のエッジデバイスから過去に受信した複数の第1リクエストに対する複数のエッジサーバによる推論処理の履歴情報11aを記憶する。処理部12は、履歴情報11aから、1つのエッジサーバにおいて第1推論モデルによる第1推論処理の結果に応じて実行される、第2推論モデルによる第2推論処理が行われたリクエストの数の指標値を算出する。処理部12は、新たに受信した複数の第2リクエストに対する第1推論処理の第1処理時間と複数の第2リクエストのうちの上記指標値を基に予測される数のリクエストに対する第2推論処理の第2処理時間とを合計した第3処理時間を得る。処理部12は、第3処理時間が規定値以下の場合、複数の第2リクエストを1つのエッジサーバに送信し、第3処理時間が規定値を超える場合、複数の第2リクエストを2以上のエッジサーバに分配する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータに、
複数のエッジデバイスから過去に受信した複数の第1リクエストに対する複数のエッジサーバによる推論処理の履歴から、1つのエッジサーバにおいて第1推論モデルによる第1推論処理の結果に応じて実行される、第2推論モデルによる第2推論処理が行われたリクエストの数の指標値を算出し、
前記複数のエッジデバイスから新たに受信した複数の第2リクエストに対する前記第1推論処理の第1処理時間と、前記複数の第2リクエストのうちの前記指標値を基に予測される数のリクエストに対する前記第2推論処理の第2処理時間とを合計した第3処理時間が規定値以下である場合、前記複数の第2リクエストを前記1つのエッジサーバに送信し、前記第3処理時間が規定値を超える場合、前記複数の第2リクエストを前記複数のエッジサーバのうちの2以上のエッジサーバに分配する、
処理を実行させる推論リクエスト配分プログラム。
【請求項2】
前記複数の第2リクエストの分配では、前記2以上のエッジサーバそれぞれに割り当てる第2リクエストの数の差が小さくなるように分配する、
処理を前記コンピュータに実行させる請求項1記載の推論リクエスト配分プログラム。
【請求項3】
前記複数の第2リクエストの分配では、分配先の候補のエッジサーバの台数を1つずつ増やすとともに、前記台数のエッジサーバそれぞれに前記複数の第2リクエストを分配した場合における当該エッジサーバによる前記第1推論処理および前記第2推論処理それぞれの処理時間を合計した第4処理時間が前記規定値以下であるか否かを判定し、前記第4処理時間が前記規定値以下であると判定されたときの前記台数を、前記2以上のエッジサーバの前記台数とする、
処理を前記コンピュータに実行させる請求項2記載の推論リクエスト配分プログラム。
【請求項4】
前記複数の第2リクエストの分配では、前記複数の第2リクエストのうち、前記第1推論処理および前記第2推論処理それぞれの処理時間を合計した第5処理時間が前記規定値を満たす第1の数の第2リクエストを前記1つのエッジサーバに送信し、残りの第2リクエストを他のエッジサーバに送信する、
処理を前記コンピュータに実行させる請求項1記載の推論リクエスト配分プログラム。
【請求項5】
前記履歴に基づいて前記指標値を算出可能であるか否かを判定し、
前記指標値を算出可能でない場合、所定数単位のリクエストに対する前記第1推論処理の第6処理時間が前記所定数単位のリクエストに対する前記第2推論処理の処理時間に所定割合を乗じた基準時間以下であるか否かの判定に応じて、前記複数のエッジサーバに対する前記複数の第2リクエストの分配方法を選択する、
処理を前記コンピュータに実行させる請求項1記載の推論リクエスト配分プログラム。
【請求項6】
前記分配方法の選択では、
前記第6処理時間が前記基準時間以下の場合、前記複数の第2リクエストを前記1つのエッジサーバに送信し、前記1つのエッジサーバによる前記複数の第2リクエストに対する前記第1推論処理の結果に応じて、前記複数の第2リクエストのうちの前記第2推論処理の対象となる第2リクエストの、他のエッジサーバへの再分配を前記1つのエッジサーバに実行させ、
前記第6処理時間が前記基準時間を超える場合、前記複数のエッジサーバの全てに対して、前記複数の第2リクエストを分散して送信する、
処理を前記コンピュータに実行させる請求項5記載の推論リクエスト配分プログラム。
【請求項7】
前記指標値を算出可能であるか否かの判定では、前記履歴における、前記複数のエッジサーバそれぞれによる前記第2推論処理の実行および不実行の変化の傾向に基づいて、前記指標値を算出可能であるか否かを判定する、
処理を前記コンピュータに実行させる請求項5記載の推論リクエスト配分プログラム。
【請求項8】
前記第2推論モデルは、前記第1推論モデルよりも高精度な推論処理に用いられる推論モデルである、請求項1記載の推論リクエスト配分プログラム。
【請求項9】
コンピュータが、
複数のエッジデバイスから過去に受信した複数の第1リクエストに対する複数のエッジサーバによる推論処理の履歴から、1つのエッジサーバにおいて第1推論モデルによる第1推論処理の結果に応じて実行される、第2推論モデルによる第2推論処理が行われたリクエストの数の指標値を算出し、
前記複数のエッジデバイスから新たに受信した複数の第2リクエストに対する前記第1推論処理の第1処理時間と、前記複数の第2リクエストのうちの前記指標値を基に予測される数のリクエストに対する前記第2推論処理の第2処理時間とを合計した第3処理時間が規定値以下である場合、前記複数の第2リクエストを前記1つのエッジサーバに送信し、前記第3処理時間が規定値を超える場合、前記複数の第2リクエストを前記複数のエッジサーバのうちの2以上のエッジサーバに分配する、
推論リクエスト配分方法。
【請求項10】
複数のエッジデバイスから過去に受信した複数の第1リクエストに対する複数のエッジサーバによる推論処理の履歴を記憶する記憶部と、
前記履歴から、1つのエッジサーバにおいて第1推論モデルによる第1推論処理の結果に応じて実行される、第2推論モデルによる第2推論処理が行われたリクエストの数の指標値を算出し、前記複数のエッジデバイスから新たに受信した複数の第2リクエストに対する前記第1推論処理の第1処理時間と、前記複数の第2リクエストのうちの前記指標値を基に予測される数のリクエストに対する前記第2推論処理の第2処理時間とを合計した第3処理時間が規定値以下である場合、前記複数の第2リクエストを前記1つのエッジサーバに送信し、前記第3処理時間が規定値を超える場合、前記複数の第2リクエストを前記複数のエッジサーバのうちの2以上のエッジサーバに分配する処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は推論リクエスト配分プログラム、推論リクエスト配分方法および情報処理装置に関する。
【背景技術】
【0002】
現在、AI(Artificial Intelligence)を用いた推論処理を行うシステムが利用されている。推論処理は、機械学習により生成される推論モデルに基づいて実行される。推論モデルは、要因(説明変数や独立変数と言うことがある)と結果(目的変数や従属変数と言うことがある)との間の関係を一般化したモデルである。機械学習には、推論モデルとしてニューラルネットワーク(NN:Neural Network)を使用するものがある。例えば、深層ニューラルネットワーク(DNN:Deep Neural Network)を使用する機械学習は深層学習(DL:Deep Learning)と言われる。
【0003】
ここで、推論処理を行うシステムの実現手法として、MEC(Multi-access Edge Computing)が考えられている。MECは、エッジデバイスで取得されたデータをエッジサーバに送信し、当該データを用いた推論処理をエッジサーバにオフロードする手法である。
【0004】
なお、ジョブキューに蓄積されている待ちジョブ数が増加条件を満たしたフローが存在する場合、当該フローの振分先とするジョブ処理部の数を増加させる分散処理システムの提案がある。提案の分散処理システムでは、増加条件として、一定期間(例えば10分間)待ちジョブ数が10という閾値を超えていた状態が続いたという条件が例示される。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
複数のエッジデバイスから複数のリクエストを受信し、複数のリクエストを複数のエッジサーバに振り分ける情報処理装置が利用されることがある。また、エッジサーバは、情報処理装置から転送されたリクエストに対し、まずは第1推論モデルによる推論処理を実行し、第1推論モデルによる推論処理の結果に応じて、第2推論モデルによる推論処理を実行することがある。
【0007】
この場合、複数のリクエストのうち、第2推論モデルによる推論処理が行われるリクエストの数は不定となる。したがって、例えば上記提案のように情報処理装置が受信済のリクエストの数と閾値との比較結果だけでエッジサーバへの振り分けを行うと、当該エッジサーバで比較的多くのリクエストに対して第2推論モデルによる推論処理が行われ得る。このため、エッジサーバの処理負荷が過大になり、推論処理の結果を得るまでに時間がかかる可能性がある。
【0008】
1つの側面では、本発明は、リクエストを効率的に割り当てることを目的とする。
【課題を解決するための手段】
【0009】
1つの態様では、推論リクエスト配分プログラムが提供される。この推論リクエスト配分プログラムは、コンピュータに、複数のエッジデバイスから過去に受信した複数の第1リクエストに対する複数のエッジサーバによる推論処理の履歴から、1つのエッジサーバにおいて第1推論モデルによる第1推論処理の結果に応じて実行される、第2推論モデルによる第2推論処理が行われたリクエストの数の指標値を算出し、複数のエッジデバイスから新たに受信した複数の第2リクエストに対する第1推論処理の第1処理時間と、複数の第2リクエストのうちの指標値を基に予測される数のリクエストに対する第2推論処理の第2処理時間とを合計した第3処理時間が規定値以下である場合、複数の第2リクエストを1つのエッジサーバに送信し、第3処理時間が規定値を超える場合、複数の第2リクエストを複数のエッジサーバのうちの2以上のエッジサーバに分配する、処理を実行させる。
【0010】
また、1つの態様では、推論リクエスト配分方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
【発明の効果】
【0011】
1つの側面では、リクエストを効率的に割り当てることができる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施の形態の情報処理装置を説明する図である。
【
図2】第2の実施の形態の情報処理システムの例を示す図である。
【
図3】ゲートウェイサーバのハードウェア例を示す図である。
【
図4】エッジサーバにおける推論モデルの例を示す図である。
【
図6】ゲートウェイサーバの機能例を示す図である。
【
図10】バッチテーブル作成例を示すフローチャートである。
【
図11】履歴テーブル作成例を示すフローチャートである。
【
図12】リクエスト割り当て例を示すフローチャートである。
【
図13】推定可否判定例を示すフローチャートである。
【
図14】見積り式による割り当て例を示すフローチャートである。
【
図15】割り当て可否判定例を示すフローチャートである。
【
図16】空きエッジサーバの選択例を示すフローチャートである。
【
図17】集中・再分配による割り当て例を示すフローチャートである。
【
図18】代表エッジサーバの処理例を示すフローチャートである。
【
図19】ロードバランスによる割り当て例を示すフローチャートである。
【
図20】サーバ数割り当て見直し例を示すフローチャートである。
【
図21】ゲートウェイサーバによるリクエストの割り当て例を示す図である。
【
図22】見積り式による他の割り当て例を示すフローチャートである。
【
図23】ゲートウェイサーバによるリクエストの他の割り当て例を示す図である。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0014】
図1は、第1の実施の形態の情報処理装置を説明する図である。
情報処理装置10およびエッジデバイス21,22,23,24は、ネットワーク1に接続される。エッジデバイス21,22,23,24は、推論処理に用いられるデータを取得し、当該データを含む推論処理のリクエストを情報処理装置10に送信する。エッジデバイスは、エンドポイントと言われてもよい。
【0015】
情報処理装置10およびエッジサーバ31,32,33は、ネットワーク2に接続される。情報処理装置10は、エッジデバイス21,22,23,24から受信した複数のリクエストをエッジサーバ31,32,33に振り分ける。エッジサーバ31,32,33は、情報処理装置10から受信したリクエストに基づいて推論処理を実行する。
【0016】
エッジデバイス21,22,23,24は、例えば画像などのデータを取得するカメラなどのセンサとCPU(Central Processing Unit)とメモリと通信インタフェースとを備える。エッジサーバ31,32,33は、CPUとGPU(Graphics Processing Unit)などの推論処理のアクセラレータとメモリと通信インタフェースとを備える。エッジサーバ31,32,33が備える演算リソースは同等である。すなわち、エッジサーバ31,32,33による推論処理に対する処理スペックは同等である。エッジデバイス21,22,23,24が備える演算リソースは、エッジサーバ31,32,33の演算リソースに比べて小さい。エッジサーバ31,32,33へ推論処理をオフロードするシステムの実現手法は、MECと言われることがある。
【0017】
エッジサーバ31は、第1推論モデル41および第2推論モデル42を有する。例えば、第1推論モデルおよび第2推論モデルは、ニューラルネットワークを示す情報である。エッジサーバ31は、入力されるリクエストRに対して、まずは第1推論モデル41による第1推論処理を実行する。エッジサーバ31は、第1推論処理の結果に応じて、第2推論モデル42による第2推論処理を実行する。エッジサーバ31は、リクエストRに対して第2推論処理を実行しない場合は、リクエストRに対して第1推論処理の結果Z1を出力する。エッジサーバ31は、リクエストRに対して第2推論処理を実行する場合は、リクエストRに対する第2推論処理の結果Z2を出力する。エッジサーバ32,33も同様に、第1推論モデル41および第2推論モデル42を用いた推論処理を実行する。このように、エッジサーバ31,32,33でリクエストRに対して第2推論モデル42を用いた第2推論処理が行われるか否かは、情報処理装置10がリクエストRを受信した時点では不定となる。
【0018】
第1推論モデル41および第2推論モデル42を用いた推論処理の例としては、自動車の識別が挙げられる。一例では、第1推論モデル41による第1推論処理では、リクエストに含まれる画像データに、自動車に相当する部分が含まれるか否かを判定する。第2推論モデル42による第2推論処理では、画像データに自動車に相当する部分が含まれる場合に、当該自動車の車種を識別する。この場合、第1推論処理による画像データに自動車に相当する部分が含まれないという判定結果は、結果Z1の一例である。また、第2推論処理による自動車の車種の識別結果は、結果Z2の一例である。
【0019】
ここで、第2推論処理では、第1推論処理よりも高精度な推論が行われるため、第2推論処理によるエッジサーバ31,32,33それぞれの負荷は、第1推論処理による負荷よりも高くなる。第1推論モデル41は、第2推論モデル42に比べて認識精度が低く軽量なため、軽量モデルと言われてもよい。軽量モデルに対して、第2推論モデル42は高精度モデルと言われてもよい。
【0020】
情報処理装置10は、エッジデバイス21,22,23,24から受信する複数のリクエストをエッジサーバ31,32,33に効率的に割り当てる機能を提供する。情報処理装置10は、記憶部11と処理部12とキュー13とを有する。
【0021】
記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部12は、CPU、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)が含まれ得る。
【0022】
キュー13は、エッジデバイス21,22,23,24から受信したリクエストを保持する記憶部である。キュー13は、記憶部11の一部の記憶領域でもよい。例えば、キュー13は、情報処理装置10が備えるRAMの記憶領域により実現されてもよい。
【0023】
処理部12は、エッジデバイス21,22,23,24から受信した複数のリクエストをキュー13に格納し、一定時間ごとにキュー13に保持される複数のリクエストをエッジサーバ31,32,33に転送する。このとき、処理部12は次の処理を実行する。
【0024】
処理部12は、記憶部11に記憶された履歴情報11aに基づいて、1つのエッジサーバにおいて第2推論モデル42による第2推論処理が行われたリクエストの数の指標値Pを算出する。ここで、履歴情報11aは、エッジデバイス21,22,23,24から過去に受信した複数の第1リクエストに対するエッジサーバ31,32,33による推論処理の履歴を示す。例えば、第2推論処理が行われたリクエストの数の指標値Pは、一定時間ごとにエッジサーバ31,32,33に転送される複数のリクエストのうち第2推論処理が行われるリクエストの数の割合でもよい。
【0025】
処理部12は、エッジデバイス21,22,23,24から新たに受信した複数の第2リクエストに対する第1推論処理の第1処理時間T1を算出する。例えば、処理部12は、1つのリクエスト当たりの第1推論処理の単位処理時間t1を予め取得しておき、単位処理時間t1に複数の第2リクエストの数N(Nは2以上の整数)を乗じることで、第1処理時間T1を算出してもよい。
【0026】
各エッジサーバによりバッチング処理が行われる場合、単位処理時間t1は、2,3,…などの複数個のリクエスト当たりの処理時間でもよい。ここで、バッチング処理は、複数個のリクエストをまとめて推論モデルに入力することで、単一のリクエストを入力するよりも高速に推論結果を得る手法である。バッチング処理により、まとめて入力するリクエストの数が多いほど、推論処理の高速化が図られる。一まとめにするリクエストの数Mは、バッチサイズと言われる。Mは2以上の整数である。例えば、バッチサイズMに対する単位処理時間t1を用いる場合、複数の第2リクエストの数NをMで割った値を単位処理時間t1に乗じることで、第1処理時間T1が得られる。
【0027】
また、処理部12は、複数の第2リクエストのうちの指標値Pを基に予測される数Qのリクエストに対する第2推論処理の第2処理時間T2を予測する。Qは正の実数である。例えば、指標値Pが、第2推論処理が行われるリクエストの数の割合を示す場合、処理部12は、複数の第2リクエストの数に指標値Pを乗じることで、数Qを算出してもよい。処理部12は、1つのリクエスト当たりの第2推論処理の単位処理時間t2を予め取得しておき、単位処理時間t2に数Qを乗じることで、第2処理時間T2を算出してもよい。
【0028】
各エッジサーバによりバッチング処理が行われる場合、単位処理時間は、2,3,…などの複数個のリクエスト当たりの処理時間でもよい。例えば、バッチサイズMに対する単位処理時間t2を用いる場合、数QをMで割った値を単位処理時間t2に乗じることで、第2処理時間T2が得られる。
【0029】
そして、処理部12は、第1処理時間T1と第2処理時間T2とを合計した第3処理時間T(=T1+T2)が規定値以下であるか否かを判定する。処理部12は、第3処理時間Tが規定値以下の場合、すなわち、T≦規定値の場合、複数の第2リクエストを1つのエッジサーバに送信する。処理部12は、第3処理時間Tが規定値を超える場合、すなわち、T>規定値の場合、複数の第2リクエストを複数のエッジサーバのうちの2以上のエッジサーバに分配する。ここで、第3処理時間Tと比較される規定値は、各リクエストに対するエッジサーバでの推論処理に許容される所要時間として、予め定められる。
【0030】
例えば、処理部12は、キュー13に保持されるリクエストR1,R2,R3,R4をエッジサーバ31,32,33に振り分ける。
図1(A)は、第3処理時間T≦規定値の場合を例示する。第3処理時間T≦規定値の場合、処理部12は、例えば1つのエッジサーバ31にリクエストR1,R2,R3,R4を振り分ける。すなわち、処理部12は、1つのエッジサーバ31にリクエストR1,R2,R3,R4を送信する。一方、
図1(B)は、第3処理時間T>規定値の場合を例示する。第3処理時間T>規定値の場合、処理部12は、例えばエッジサーバ31にリクエストR1,R2を振り分け、エッジサーバ32にリクエストR3,R4を振り分ける。すなわち、処理部12は、エッジサーバ31にリクエストR1,R2を送信し、エッジサーバ32にリクエストR3,R4を送信する。
【0031】
ここで、2以上のエッジサーバに分配する場合、処理部12は、当該2以上のエッジサーバそれぞれに割り当てた第2リクエストに対する推論処理の実行時間が規定値以下になるように分配する。例えば、処理部12は、当該2以上のエッジサーバそれぞれに割り当てる第2リクエストに対する推論処理の実行時間が規定値以下になるように、当該2以上のエッジサーバそれぞれに等しい数のリクエストを送信してもよい(等分配)。あるいは、処理部12は、1つのエッジサーバでの推論処理の実行時間が規定値以下になるように当該エッジサーバに集中して第2リクエストを送信し、残った第2リクエストを他のエッジサーバに送信してもよい。後者の場合、例えば、処理部12は、まずはエッジサーバ31に集中して送信し、次に、残った第2リクエストをエッジサーバ32に集中して送信し、更に残った第2リクエストをエッジサーバ33に集中して送信するというように順番に割り当ててもよい。
【0032】
以上説明したように、情報処理装置10によれば、過去に受信した複数の第1リクエストに対する複数のエッジサーバによる推論処理の履歴から、第2推論モデルによる第2推論処理が行われたリクエストの数の指標値Pが算出される。新たに受信した複数の第2リクエストに対する第1推論処理の第1処理時間T1と、複数の第2リクエストのうちの指標値Pを基に予測される数Qのリクエストに対する第2推論処理の第2処理時間T2とを合計した第3処理時間Tが規定値と比較される。第3処理時間Tが規定値以下である場合、複数の第2リクエストが1つのエッジサーバに送信される。第3処理時間Tが規定値を超える場合、複数の第2リクエストが複数のエッジサーバのうちの2以上のエッジサーバに分配される。
【0033】
これにより、情報処理装置10は、リクエストを効率的に割り当てることができる。例えば、情報処理装置10は、1つのエッジサーバによって規定の時間内に複数の第2リクエストの推論処理を完了できると予測される場合には、当該1つのエッジサーバに複数の第2リクエストを割り当てることで、余計なエッジサーバを割り当てずに済む。また、エッジサーバがバッチング処理を行う場合に、当該エッジサーバにおいて比較的多くの第2リクエストをまとめてバッチング処理が可能となるため、推論処理の効率化も図れる。
【0034】
また、情報処理装置10は、1つのエッジサーバだけでは規定の時間内に推論処理を完了できないと予測される場合には、複数の第2リクエストを2以上のエッジサーバに分配することで、推論処理を規定の時間内に完了する可能性を高められる。
【0035】
以下では、より具体的な例により情報処理装置10の機能を更に詳細に説明する。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
【0036】
図2は、第2の実施の形態の情報処理システムの例を示す図である。
第2の実施の形態の情報処理システムは、ゲートウェイサーバ100、エッジデバイス200,200a,200b,200cおよびエッジサーバ300,300a,300b,…を有する。ゲートウェイサーバ100は、ネットワーク50,60に接続される。エッジデバイス200~200cは、ネットワーク50に無線で接続される。エッジサーバ300,300a,…は、ネットワーク60に接続される。
【0037】
第2の実施の形態の情報処理システムは、MECにより実現される推論処理システムである。すなわち、当該情報処理システムは、エッジデバイス200~200cで収集された画像データに基づく推論処理を、ゲートウェイサーバ100を介してエッジサーバ300,300a,…にオフロードする。
【0038】
ゲートウェイサーバ100は、画像データを含む複数のリクエストをエッジデバイス200~200cから受信するサーバコンピュータである。ゲートウェイサーバ100は、エッジデバイス200~200cから受信した複数のリクエストを保持するキューを有する。ゲートウェイサーバ100は、キューに保持される複数のリクエストを、エッジサーバ300,300a…に定期的に転送する。ゲートウェイサーバ100は、第1の実施の形態の情報処理装置10の一例である。
【0039】
エッジデバイス200~200cは、それぞれがカメラを備え、当該カメラにより周囲を撮影することで画像データを定期的に生成する。エッジデバイス200~200cは、生成した画像データを含む、推論処理のリクエストをゲートウェイサーバ100に送信する。なお、一例として、エッジデバイスの数を4つとしているが、エッジデバイスの数は4以外の複数でもよい。また、エッジデバイスは、エンドポイントと言われてもよい。
【0040】
エッジサーバ300,300a,…は、ゲートウェイサーバ100から受信したリクエストに基づいて推論処理を実行するサーバコンピュータである。エッジサーバ300,300a,…それぞれは物理的なコンピュータ(物理マシン)により実現されてもよいし、物理マシン上で動作する仮想的なコンピュータ(仮想マシン)により実現されてもよい。
【0041】
ここで、エッジサーバ300,300a,…を用いて実行される推論処理のタスクの一例として、自動車の識別を挙げる。エッジサーバ300,300a,…それぞれは、画像データに自動車に相当する部分が存在するか否かを判定し、存在する場合、自動車の車種を識別し、識別した車種の情報を出力する。このような情報処理システムは、例えば駐車場の監視、道路上の交通量のモニタリング、および、不審車両や盗難車の監視などに利用され得る。また、このような情報処理システムは、例えば道路上を走行する車種に応じた屋外広告を、運転者から視認可能な屋外のディスプレイに表示させるサービスなどの種々のサービスにも利用され得る。
【0042】
図3は、ゲートウェイサーバのハードウェア例を示す図である。
ゲートウェイサーバ100は、CPU101、RAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106およびNIC(Network Interface Card)107,108を有する。なお、CPU101は、第1の実施の形態の処理部12の一例である。RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
【0043】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、ゲートウェイサーバ100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0044】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、ゲートウェイサーバ100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0045】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、ゲートウェイサーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0046】
GPU104は、CPU101からの命令に従って、ゲートウェイサーバ100に接続されたディスプレイ71に画像を出力する。ディスプレイ71としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0047】
入力インタフェース105は、ゲートウェイサーバ100に接続された入力デバイス72から入力信号を取得し、CPU101に出力する。入力デバイス72としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、ゲートウェイサーバ100に、複数の種類の入力デバイスが接続されていてもよい。
【0048】
媒体リーダ106は、記録媒体73に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体73として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0049】
媒体リーダ106は、例えば、記録媒体73から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体73は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体73やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0050】
NIC107,108は、それぞれネットワーク50,60に接続され、ネットワーク50,60を介して、エッジデバイス200~200cおよびエッジサーバ300,300a,…を含む他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、ネットワーク50におけるスイッチやルータなどの通信装置とケーブルで接続される。NIC108は、例えば、ネットワーク60におけるスイッチやルータなどの通信装置とケーブルで接続される。NIC107,108は、無線通信インタフェースでもよい。
【0051】
なお、エッジデバイス200~200cは、カメラとCPUとRAMと無線通信インタフェースとを有する。例えば、エッジデバイス200~200cは、ネットワーク50と無線で接続される。エッジサーバ300,300a,…は、ゲートウェイサーバ100と同様のハードウェアで実現される。エッジサーバ300,300a,…は、推論処理に用いられるGPUなどのアクセラレータを備える。エッジサーバ300,300a,…のハードウェアの性能(スペック)は同等である。
【0052】
図4は、エッジサーバにおける推論モデルの例を示す図である。
エッジサーバ300は、軽量モデル310および高精度モデル320を有する。軽量モデル310および高精度モデル320は、ニューラルネットワークを示す情報である。軽量モデル310および高精度モデル320は、推論モデルと言われてもよい。推論モデルは、学習モデルやAIモデルなどと言われることもある。
【0053】
軽量モデル310は、リクエストの画像データにおける物体の有無を識別する推論処理に用いられる。例えば、物体は自動車である。高精度モデル320は、画像データにおける物体(例えば、自動車)の種別を識別する推論処理に用いられる。高精度モデル320による推論処理は、軽量モデル310で物体ありと識別される場合に実行される。
【0054】
軽量モデル310による推論処理で物体なしと識別される場合、エッジサーバ300は、該当のリクエストに対する推論結果として、物体なしを出力する。軽量モデル310による推論処理で物体ありと識別され高精度モデル320による推論処理が実行される場合、エッジサーバ300は、該当のリクエストに対する推論結果として、識別された物体の種別を出力する。
【0055】
高精度モデル320は、軽量モデル310に比べ、リクエストに含まれる画像データに対する高精度な認識を行う。例えば、軽量モデル310による推論処理のスループットは、2Kfps(frame per second)~20Kfps程度である。高精度モデル320による推論処理のスループットは、30fps~200fps程度である。このため、エッジサーバ300において、高精度モデル320による推論処理が多発すると、エッジサーバ300の負荷が高まり、リクエストに対する推論結果を得られるまでの時間が長くなる可能性がある。
【0056】
なお、
図4では、エッジサーバ300を例示して説明したが、エッジサーバ300a,300b,…も同様に、軽量モデル310および高精度モデル320による推論処理を行う。また、軽量モデル310は、第1の実施の形態の第1推論モデルの一例である。高精度モデル320は、第1の実施の形態の第2推論モデルの一例である。
【0057】
また、エッジサーバ300,300a,…による推論処理には、下記の文献1が参考にされてもよい。
文献1:C. Zhang, et al., “A Fast Filtering Mechanism to Improve Efficiency of Large-Scale Video Analytics,”IEEE Transactions on Computers, Volume:69, Issue:6, pp.914-928, June 2020.
ここで、エッジサーバ300,300a,…はバッチング処理を行う。
【0058】
図5は、バッチング処理の例を示す図である。
ゲートウェイサーバ100は、リクエストキュー110を有する。リクエストキュー110は、例えばRAM102の記憶領域を用いて実現される。リクエストキュー110には、あるタイミングにおいて、4つのエッジデバイス200~200cから送信された4つのリクエストが保持されている。
【0059】
エッジサーバ300は、軽量モデル310や高精度モデル320に所定数のリクエストをまとめて入力して推論処理を行える。このような推論処理の手法は、バッチング処理と言われる。バッチング処理により、1つにまとめるリクエストの数が多いほど、推論処理のスループットの向上を図れる。エッジサーバ300,300a,…も同様である。
【0060】
図5の例では、ゲートウェイサーバ100により、リクエストキュー110に保持される4つのリクエストがエッジサーバ300の軽量モデル310でまとめて処理され得る。例えば、エッジサーバ300で最大で「4」までのバッチサイズを利用可能であれば4つのリクエストがまとめて処理される。ここで、前述のようにバッチサイズは、一まとめにするリクエストの数である。あるいは、エッジサーバ300で最大で「2」までのバッチサイズを利用可能であれば4つのリクエストが2つずつまとめて処理される。
【0061】
エッジサーバ300は、軽量モデル310による推論処理の結果、4つのリクエストのうちの2つに対して物体なしを出力し、残りに2つに対して物体ありと識別する。この場合、残りの2つのリクエストがエッジサーバ300の高精度モデル320でまとめて処理され得る。エッジサーバ300は、残りの2つのリクエストに対して識別した物体種別を出力する。
【0062】
ゲートウェイサーバ100は、このような推論処理が行われる情報処理システムにおいて、各エッジサーバに対してリクエストを効率的に割り当てる機能を提供する。
図6は、ゲートウェイサーバの機能例を示す図である。
【0063】
ゲートウェイサーバ100は、前述のリクエストキュー110に加えて、記憶部120、バッチテーブル作成部130、履歴テーブル作成部140および制御部150を有する。記憶部120は、RAM102やHDD103の記憶領域により実現される。バッチテーブル作成部130、履歴テーブル作成部140および制御部150は、RAM102に記憶されたプログラムがCPU101により実行されることで実現される。
【0064】
リクエストキュー110は、エッジデバイス200~200cから送信されたリクエストを保持するキューである。
記憶部120は、第1バッチテーブル121、第2バッチテーブル122および履歴テーブル123を記憶する。
【0065】
第1バッチテーブル121は、軽量モデル310による推論処理を1個のリクエストまたは複数個のリクエストに対して行う場合の単位処理時間を保持するテーブルである。複数個のリクエストに対する推論処理は、バッチング処理となる。
【0066】
第2バッチテーブル122は、高精度モデル320による推論処理を1個のリクエストまたは複数個のリクエストに対して行う場合の単位処理時間を保持するテーブルである。
履歴テーブル123は、ゲートウェイサーバ100が過去に受信した複数のリクエストに対する、エッジサーバ300,300a,…による推論処理の履歴を保持するテーブルである。履歴テーブル123は、過去の複数のリクエストに対して、高精度モデル320による推論処理が行われたか否かを示す。
【0067】
バッチテーブル作成部130は、第1バッチテーブル121および第2バッチテーブル122を予め作成し、記憶部120に格納する。例えば、バッチテーブル作成部130は、ゲートウェイサーバ100の運用の初期段階において、第1バッチテーブル121および第2バッチテーブル122を作成する。バッチテーブル作成部130は、テスト用のリクエストを用いてエッジサーバ300,300a,…による1個のリクエストや複数個のリクエストに対する推論処理を実行させる。そして、バッチテーブル作成部130は、テスト用のリクエストに対する当該推論処理の実行時間を基に、第1バッチテーブル121および第2バッチテーブル122を作成する。
【0068】
履歴テーブル作成部140は、履歴テーブル123を作成する。履歴テーブル作成部140は、エッジデバイス200~200cのリクエストに対し、エッジサーバ300,300a,…で推論処理が行われると、当該リクエストに対して高精度モデル320による推論処理が行われたか否かの情報を各エッジサーバから取得する。履歴テーブル作成部140は、各エッジサーバから取得した情報を、履歴テーブル123に記録する。
【0069】
制御部150は、各エッジサーバに対するリクエストの割り当てを制御する。制御部150は、受信部151、推定処理部152、割り当て処理部153および送信部154を有する。
【0070】
受信部151は、エッジデバイス200~200cそれぞれからリクエストを定期的に受信し、リクエストキュー110に格納する。
推定処理部152は、履歴テーブル123に基づいて、リクエストキュー110に保持されるN個のリクエストのうち、高精度モデル320による推論処理の対象となるリクエストの個数NHを推定する。
【0071】
割り当て処理部153は、リクエストキュー110に保持される複数のリクエストに対してリクエストの転送先のエッジサーバを割り当てる。まず、割り当て処理部153は、推定処理部152により推定された個数NHに基づいて、リクエストキュー110に保持される複数のリクエストを1つのエッジサーバに割り当てた場合の処理時間Tを見積もる。割り当て処理部153は、複数のリクエストを軽量モデル310で実行する場合の処理時間T1=TL_totalと、複数のリクエストのうちの推定された個数のリクエストを高精度モデル320で実行する場合の処理時間T2=TH_totalとの合計により、処理時間Tを求める。T=T1+T2=TL_total+TH_totalである。
【0072】
そして、割り当て処理部153は、処理時間Tが規定値以下であるか否かを、式(1)で表される見積り式により判定する。処理時間Tが規定値以下である場合、割り当て処理部153は、1つのエッジサーバに当該複数のリクエストを割り当てる。処理時間Tが規定値よりも長い場合、割り当て処理部153は、2以上のエッジサーバに当該複数のリクエストを配分する。
【0073】
【0074】
ここで、Ttargetは、予め定められる時間期限である。Ttargetは、正の実数である。Ttargetは、各リクエストに対して共通に設定される。TMarginは、余分にかかる時間を考慮するための項である。具体的には、リクエストキュー110に複数のリクエストがある場合に先頭のリクエストは後ろのリクエストよりも長くリクエストキュー110内に待機しているため、当該待機の待ち時間分などがTMarginとして設定される。TMarginは、Ttargetより小さい正の実数である。
【0075】
また、TL_totalは、リクエストキュー110にあるN個のリクエストについて、軽量モデル310により1個当たりのリクエストにかかる単位処理時間TLをかけた値であり、式(2)で表される。
【0076】
【0077】
一方、バッチング処理が可能な場合、軽量モデル310におけるバッチサイズBL単位でリクエストが処理される。このため、TL_totalは、N/BLに対して、バッチサイズBLごとにかかる単位処理時間TL_Bをかけた時間であり、式(3)で表される。
【0078】
【0079】
TH_totalは、高精度モデル320で処理されるリクエスト数NHについて、式(2)、(3)と同様にして算出される。バッチング処理を行わない場合、TH_totalは、式(4)で表される。
【0080】
【0081】
THは、高精度モデル320により1個当たりのリクエストにかかる単位処理時間である。バッチング処理が可能な場合、TH_totalは、NH/BHに対して、バッチサイズBHごとにかかる単位処理時間TH_Bをかけた時間であり、式(5)で表される。
【0082】
【0083】
よって、バッチング処理が可能な場合、式(1)で表される見積り式は、式(6)のように変形される。
【0084】
【0085】
Ttarget-TMarginは、処理時間Tと比較される規定値に相当する。
なお、後述されるように、割り当て処理部153は、NHを推定可能な場合に、式(6)で表される見積り式に基づく割り当てを行い、NHを推定不可能な場合には当該見積り式による割り当てを行わずに、別の方法を用いる。
【0086】
送信部154は、割り当て処理部153による割り当て結果に基づいて、リクエストキュー110に保持されるリクエストを、割り当て先のエッジサーバに送信する。
次に、記憶部120に保持されるデータ構造例を説明する。
【0087】
図7は、第1バッチテーブルの例を示す図である。
第1バッチテーブル121は、記憶部120に保持される。第1バッチテーブル121は、バッチサイズB
Lおよび単位処理時間T
L_Bの項目を含む。バッチサイズB
Lの項目には、エッジサーバ300,300a,…で利用可能な軽量モデル310に対するバッチサイズが登録される。単位処理時間T
L_Bの項目には、該当のバッチサイズに対応する軽量モデル310による処理時間が登録される。単位処理時間T
L_Bの単位は、ms(ミリ秒)である。
【0088】
例えば、第1バッチテーブル121は、バッチサイズBL=1、単位処理時間TL_B=5のレコードを有する。このレコードは、バッチサイズBL=1のときの軽量モデル310による単位処理時間が5msであることを示す。
【0089】
また、第1バッチテーブル121は、バッチサイズBL=2、単位処理時間TL_B=7のレコードを有する。このレコードは、バッチサイズBL=2のときの軽量モデル310による単位処理時間が7msであることを示す。
【0090】
第1バッチテーブル121には、他のバッチサイズに対する単位処理時間が登録されてもよい。
図8は、第2バッチテーブルの例を示す図である。
【0091】
第2バッチテーブル122は、記憶部120に保持される。第2バッチテーブル122は、バッチサイズBHおよび単位処理時間TH_Bの項目を含む。バッチサイズBHの項目には、エッジサーバ300,300a,…で利用可能な高精度モデル320に対するバッチサイズが登録される。単位処理時間TH_Bの項目には、該当のバッチサイズに対応する高精度モデル320による処理時間が登録される。単位処理時間TH_Bの単位は、msである。
【0092】
例えば、第2バッチテーブル122は、バッチサイズBH=1、単位処理時間TH_B=30のレコードを有する。このレコードは、バッチサイズBH=1のときの高精度モデル320による単位処理時間が30msであることを示す。
【0093】
また、第2バッチテーブル122は、バッチサイズBH=2、単位処理時間TH_B=45のレコードを有する。このレコードは、バッチサイズBH=2のときの高精度モデル320による単位処理時間が45msであることを示す。
【0094】
第2バッチテーブル122には、他のバッチサイズに対する単位処理時間が登録されてもよい。
例えば、N=4、NH=2、BL=BH=2、Ttarget-TMargin=60のとき、式(6)は、4/2*7+2/2*45=59≦60となる。この場合、式(6)は満たされるので、処理時間T=TL_total+TH_totalが規定値(Ttarget-TMargin)以下であると判定される。
【0095】
図9は、履歴テーブルの例を示す図である。
履歴テーブル123は、記憶部120に保持される。履歴テーブル123は、エッジデバイスID、-1(前回)、-2(前々回)、-3、-4、-5、-6の項目を含む。エッジデバイスIDの項目には、エッジデバイスIDが登録される。エッジデバイスIDは、エッジデバイスの識別情報である。-1(前回)、-2(前々回)、-3、-4、-5、-6の各項目は、ゲートウェイサーバ100からエッジサーバ300,300a,…へのリクエストの送信回を示す。「-1」は、前回である。「-2」は、前々回である。以降、-3、-4、…と1ずつ数が小さくなるたびに1回分ずつ送信回が遡る。-1(前回)、-2(前々回)、-3、-4、-5、-6の各項目には、該当の送信回において、該当のエッジデバイスからのリクエストに対し、高精度モデル320により推論処理が実行されたか否かを示すフラグが登録される。フラグ「1」は、高精度モデル320による推論処理が実行されたことを示す。フラグ「0」は、高精度モデル320による推論処理が実行されなかったことを示す。
【0096】
なお、エッジデバイス200のエッジデバイスIDは「ED1」である。エッジデバイス200aのエッジデバイスIDは「ED2」である。エッジデバイス200bのエッジデバイスIDは「ED3」である。エッジデバイス200cのエッジデバイスIDは「ED4」である。
【0097】
例えば、履歴テーブル123は、エッジデバイスIDが「ED1」、-1が「0」、-2が「0」、-3が「0」、-4が「0」、-5が「0」、-6が「0」のレコードを有する。このレコードは、エッジデバイス200では、過去6回の送信回において、高精度モデル320による推論処理が1回も実行されなかったことを示す。
【0098】
また、履歴テーブル123は、エッジデバイスIDが「ED2」、-1が「0」、-2が「1」、-3が「1」、-4が「0」、-5が「1」、-6が「0」のレコードを有する。このレコードは、エッジデバイス200aでは、過去6回の送信回のうち、-2、-3、-5に対応する送信回において、高精度モデル320による推論処理が実行され、それ以外の送信回では高精度モデル320による推論処理が実行されなかったことを示す。
【0099】
履歴テーブル123には、エッジデバイスID「ED3」、「ED4」に対するレコードも登録される。
ここで、推定処理部152は、高精度モデル320の処理個数を推定する前段階として、履歴テーブル123に基づき、当該処理個数を推定可能であるか否かを判定する。具体的には、推定処理部152は、高精度モデル320で処理されたか否かが、過去一定期間において概ねどちらかで安定しているエッジデバイスの割合が所定割合より大きい場合に推定可能と判定する。
【0100】
一例として、推定処理部152は、履歴テーブル123に基づいて、過去6期間において、高精度モデル320での処理の有無が変化した回数の割合が一定以上のエッジデバイスを計数する。過去6期間では、高精度モデル320での処理の有無が最大5回切り替わる可能性がある。推定処理部152は、履歴テーブル123を基に、実際に何回変化したかを計測する。
【0101】
履歴テーブル123の例によれば、高精度モデル320での処理の有無が変化した回数、および、変化した回数の割合は次の通りである。エッジデバイス200では、変化した回数は0回であり、変化した回数の割合は0/5=0である。エッジデバイス200aでは、変化した回数は4回であり、変化した回数の割合は4/5=0.8である。エッジデバイス200bでは、変化した回数は0回であり、変化した回数の割合は0/5=0である。エッジデバイス200cでは、変化した回数は1回であり、変化した回数の割合は1/5=0.2である。
【0102】
例えば、推定処理部152は、変化した回数の割合が0.2以下のエッジデバイスの数の割合Vが70%以上であれば、過去履歴の結果が安定しており、NHを推定可能と判断する。上記の場合、V=(3/4)*100=75%であるので、推定処理部152は、NHを推定可能と判定する。
【0103】
このように、推定処理部152は、各エッジサーバによる高精度モデル320による推論処理の実行および不実行の変化の傾向に基づいて、高精度モデル320の処理個数を推定可能であるか否かを判定してもよい。
【0104】
NHが推定可能と判定された場合、推定処理部152は、履歴テーブル123を基に、NHの値を得る。例えば、リクエストキュー110にあるリクエストがエッジデバイス200,200b,200cの3個のリクエストである場合、過去に高精度モデル320で処理されたリクエストの平均の個数をエッジデバイスごとに求め、それらの和をNHとする。
【0105】
具体的には、エッジデバイス200では、高精度モデル320で処理されたリクエストの平均の個数は、0/6=0である。エッジデバイス200bでは、高精度モデル320で処理されたリクエストの平均の個数は、0/6=0である。エッジデバイス200cでは、高精度モデル320で処理されたリクエストの平均の個数は、4/6=0.67である。よって、推定処理部152は、NH=0+0+0.67=0.67とする。NH=0.67は、3個のリクエスト当たり、0.67個が高精度モデル320で処理されることを示す。すなわち、リクエストキュー110にあるリクエストの数が3個の場合、当該3個のリクエストを1台のエッジサーバに送信すると、当該1台のエッジサーバにおいて、3個のうちの0.67個のリクエストが高精度モデル320で処理されることを示す。
【0106】
これは、高精度モデル320で処理されるリクエストの割合が、振分対象のリクエストの数のうちの0.67/3=0.22であることを示しているとも言える。よって、例えばリクエストキュー110にあるリクエストがエッジデバイス200,200b,200cからの各2個、合計6個のリクエストの場合に、推定処理部152は、NH=6*0.22=1.3個と推定することもできる。
【0107】
次に、ゲートウェイサーバ100の処理手順を説明する。
図10は、バッチテーブル作成例を示すフローチャートである。
(S10)バッチテーブル作成部130は、軽量モデル310、高精度モデル320のそれぞれについて、バッチサイズを変更した場合の処理時間T
L_B,T
H_Bを計測する。バッチテーブル作成部130は、計測したバッチサイズごとのT
L_B,T
H_Bを、それぞれ第1バッチテーブル121および第2バッチテーブル122に記録する。そして、バッチテーブル作成が終了する。
【0108】
ステップS10では、例えばバッチテーブル作成部130は、テスト用のリクエストをエッジサーバ300に送信し、当該リクエストに対する軽量モデル310、高精度モデル320それぞれでの処理時間をエッジサーバ300から取得してもよい。
【0109】
バッチテーブル作成が完了すると、ゲートウェイサーバ100の本番運用が開始される。すると、ゲートウェイサーバ100は、次の処理を行う。
図11は、履歴テーブル作成例を示すフローチャートである。
【0110】
(S20)履歴テーブル作成部140は、各エッジデバイスからのリクエストに対するエッジサーバの処理の履歴を取得し、履歴テーブル123に記録する。そして、履歴テーブル作成が終了する。
【0111】
なお、運用開始当初、履歴テーブル123に一定数の履歴が蓄積されるまでは、割り当て処理部153は、所定の負荷分散方法でリクエストの振分を行ってもよい。例えば、割り当て処理部153は、利用可能な全てのエッジサーバに、ラウンドロビンなどでリクエストを等分配してもよい。
【0112】
履歴テーブル123に一定数の履歴が蓄積されると、ゲートウェイサーバ100は、次の手順によりリクエストの割り当てを行う。
図12は、リクエスト割り当て例を示すフローチャートである。
【0113】
リクエスト割り当ては、例えば一定時間ごとに実行される。
(S30)推定処理部152は、リクエストキュー110にある複数のリクエストに対して、高精度モデル320で処理されるリクエストの個数N
Hを推定可能であるか否かを判定する。推定可能である場合、ステップS31に処理が進む。推定可能でない場合、ステップS32に処理が進む。
図9で説明したように、推定処理部152は、履歴テーブル123に基づいてステップS30の判定を行える。
【0114】
(S31)割り当て処理部153は、式(6)で表される見積り式による割り当てを実行する。見積り式による割り当ての詳細は後述される。そして、リクエスト割り当てが終了する。
【0115】
(S32)割り当て処理部153は、第1バッチテーブル121および第2バッチテーブル122に基づいて、軽量モデル310の処理時間が高精度モデル320の処理時間の所定割合以下であるか否かを判定する。軽量モデル310の処理時間が高精度モデル320の処理時間の所定割合以下である場合、ステップS33に処理が進む。軽量モデル310の処理時間が高精度モデル320の処理時間の所定割合よりも長い場合、ステップS34に処理が進む。割り当て処理部153は、例えば、第1バッチテーブル121および第2バッチテーブル122の両方にあるバッチサイズのうちの最大のバッチサイズに対する単位処理時間TL_B,TH_Bに基づいて、ステップS33の判定を実行してもよい。例えば、所定割合は、1/20である。この場合、例えば、TL_B≦(TH_B/20)の場合、ステップS32はYesとなる。一方、TL_B>(TH_B/20)の場合、ステップS32はNoとなる。
【0116】
(S33)割り当て処理部153は、集中・再分配による割り当てを実行する。集中・再分配による割り当ては、リクエストキュー110にある複数のリクエストを、まずは1つのエッジサーバに割り当て、当該エッジサーバでの処理に応じて他のエッジサーバへの再分配を実行させる割り当て方法である。集中・再分配による割り当ての詳細は後述される。そして、リクエスト割り当てが終了する。
【0117】
(S34)割り当て処理部153は、ロードバランスによる割り当てを実行する。ロードバランスによる割り当ては、予め定められた負荷分散方法によって、リクエストの割り当て先を決定する方法である。ロードバランスによる割り当ての詳細は後述される。そして、リクエスト割り当てが終了する。
【0118】
図13は、推定可否判定例を示すフローチャートである。
推定可否判定の処理は、ステップS30に相当する。
(S40)推定処理部152は、履歴テーブル123に基づいて、過去一定期間における高精度モデル320での処理の有無が変化した回数が一定回数以下のエッジデバイスの数を取得する。
図9で例示したように過去6回分の期間を処理対象とする場合、最大5回の変化回数に対し、例えば一定回数は1である。
【0119】
(S41)推定処理部152は、リクエストの振分先候補のエッジデバイスの総数に対する、取得したエッジデバイスの数の割合は、一定割合以上であるか否かを判定する。当該エッジデバイスの数の割合が一定割合以上である場合、ステップS42に処理が進む。当該エッジデバイスの数の割合が一定割合未満である場合、ステップS43に処理が進む。ステップS41の判定に用いられる一定割合は、例えば0.7である。
【0120】
(S42)推定処理部152は、高精度モデル320で処理されるリクエストの数NHを推定可能と判定する。そして、推定可否判定が終了する。
(S43)推定処理部152は、高精度モデル320で処理されるリクエストの数NHを推定不可と判定する。そして、推定可否判定が終了する。
【0121】
図14は、見積り式による割り当て例を示すフローチャートである。
見積り式による割り当ての処理は、ステップS31に相当する。
(S50)割り当て処理部153は、変数Ns=0に設定する。
【0122】
(S51)割り当て処理部153は、Ns+1台以上のエッジサーバがあるか否かを判定する。Ns+1台以上のエッジサーバがある場合、ステップS52に処理が進む。Ns+1台以上のエッジサーバがない場合、ステップS58に処理が進む。
【0123】
(S52)割り当て処理部153は、Nsに1を加算する(Ns+=1)。
(S53)割り当て処理部153は、リクエストキュー110にある複数のリクエストに対するエッジサーバの現在の割り当てをキャンセルする。
【0124】
(S54)割り当て処理部153は、リクエストキュー110にある複数のリクエストをNs台で分割する。例えば、複数のリクエストの数をN個とすると、割り当て処理部153は、エッジサーバ1台当たりのリクエスト数をN/Ns個とする(等分配)。なお、NがNsで割り切れない場合、割り当て処理部153は、N÷Nsの商をNs台のエッジサーバに割り当て、N÷Nsの剰余kをNs台のエッジサーバのうちのk個のエッジサーバに1つずつ等分配すればよい。こうして、割り当て処理部153は、各エッジサーバに割り当てられるリクエスト数の差が小さくなるように各エッジサーバへ割り当てるリクエスト数を決定する。例えば、5個のリクエストを3台に割り当てる場合、2個,2個,1個のような割り当てとなる。
【0125】
(S55)割り当て処理部153は、ステップS54で分割した単位でNs台のエッジサーバにリクエストを割り当て可能か判定する。割り当て可能かの判定、すなわち、割り当て可否判定の処理の詳細は後述される。
【0126】
(S56)割り当て処理部153は、ステップS55の判定結果が割り当て可能を示すか否かを判定する。割り当て可能である場合、ステップS57に処理が進む。割り当て不可能である場合、ステップS51に処理が進む。
【0127】
(S57)割り当て処理部153は、ステップS54で分割した単位でNs台のエッジサーバにリクエストを割り当てる。なお、割り当て処理部153は、割り当て先の候補であるエッジサーバ300,300a,300b,…のうちの任意のエッジサーバを、割り当て先として選択可能である。例えば、割り当て処理部153は、後述される空きエッジサーバの選択を行い、当該空きエッジサーバを割り当て先としてもよい。送信部154は、割り当て処理部153の割り当て結果に基づいて、リクエストキュー110にある複数のリクエストそれぞれを、当該リクエストの割り当て先のエッジサーバに送信する。そして、見積り式による割り当てが終了する。
【0128】
(S58)割り当て処理部153は、リクエストキュー110にある複数のリクエストをNs台分に分割して、Ns台のエッジサーバに割り当てる。例えば、複数のリクエストの数をN個とすると、割り当て処理部153は、エッジサーバ1台当たりのリクエスト数をN/Ns個とする(等分配)。なお、NがNsで割り切れない場合、割り当て処理部153は、ステップS54と同様にして各エッジサーバに割り当てるリクエストの個数を決定する。こうして、割り当て処理部153は、各エッジサーバに割り当てられるリクエスト数の差が小さくなるように各エッジサーバへ割り当てるリクエスト数を決定する。なお、割り当て処理部153は、ステップS57と同様にして、割り当て先のエッジサーバを選択する。送信部154は、割り当て処理部153の割り当て結果に基づいて、リクエストキュー110にある複数のリクエストそれぞれを、当該リクエストの割り当て先のエッジサーバに送信する。そして、見積り式による割り当てが終了する。
【0129】
図15は、割り当て可否判定例を示すフローチャートである。
割り当て可否判定の処理は、ステップS55に相当する。
(S60)割り当て処理部153は、式(6)で表される見積り式の条件を満たすか否かを判定する。具体的には、割り当て処理部153は、式(6)の左辺で表される処理時間Tを計算し、処理時間Tが式(6)の右辺で表される規定値以下であるか否かを判定する。Tが規定値以下(T≦規定値)の場合、見積り式の条件が満たされると判定され、ステップS61に処理が進む。Tが規定値より長い(T>規定値)の場合、見積り式の条件が満たされないと判定され、ステップS62に処理が進む。
【0130】
(S61)割り当て処理部153は、割り当て可能と判定する。そして、割り当て可否判定が終了する。
(S62)割り当て処理部153は、割り当て不可と判定する。そして、割り当て可否判定が終了する。
【0131】
ここで、ステップS60では、割り当て処理部153は、式(6)の左辺(=処理時間T)を、ステップS57で決定された各エッジサーバに対するリクエストの数nに基づいて計算する。各エッジサーバに対するリクエストの数nについて、エッジサーバごとに差がある場合、割り当て処理部153は、各エッジサーバに対するnのうち最大のnを用いる。そして、割り当て処理部153は、第1バッチテーブル121におけるバッチサイズのうちn以下の大きい値を優先して、処理時間TL_totalの計算に用いるバッチサイズBLとしてもよい。例えば、n=5とする。第1バッチテーブル121では最大BL=2である。この場合、n=5=4+1として、割り当て処理部153は、TL_total=4/2*7+1/1*5=19(ms)のようにバッチサイズBL=1,2を組合せて処理時間TL_totalを計算してもよい。
【0132】
また、割り当て処理部153は、エッジサーバ1台当たりの高精度モデル320により処理されるリクエストの数をm=NH/Nsとする。なお、NH/Nsが割り切れない場合、割り当て処理部153は、小数点以下を切り上げ、切り捨て、または四捨五入などにより丸めることで、mを整数化して求めてもよい。そして、割り当て処理部153は、第2バッチテーブル122におけるバッチサイズのうちm以下の大きい値を優先して、処理時間TH_totalの計算に用いるバッチサイズBHとしてもよい。例えば、m=3とする。第2バッチテーブル122では最大BH=2である。この場合、割り当て処理部153は、m=3=2+1として、TH_total=2/2*45+1/1*30=75(ms)のようにバッチサイズBH=1,2を組合せて処理時間TH_totalを計算してもよい。
【0133】
図16は、空きエッジサーバの選択例を示すフローチャートである。
空きエッジサーバの選択の処理は、ステップS57,S58で実行される。
(S70)割り当て処理部153は、利用可能なエッジサーバ300,300a,…のうち、最近利用されていない方からNs台を選択する。すなわち、割り当て処理部153は、最後にリクエストを処理してからの経過時間が長いエッジサーバを優先してNs台を選択する。そして、割り当て処理部153は、選択したエッジサーバを、リクエストキュー110にある複数のリクエストの割り当て先とする。そして、空きエッジサーバの選択が終了する。
【0134】
図17は、集中・再分配による割り当て例を示すフローチャートである。
集中・再分配による割り当ての処理は、ステップS33に相当する。
(S80)割り当て処理部153は、所定の準備処理を実行済であるか否かを判定する。準備処理は、ステップS81~S83の処理に相当する。準備処理を実行済の場合、ステップS84に処理が進む。準備処理を未実行の場合、ステップS81に処理が進む。
【0135】
(S81)割り当て処理部153は、利用可能なエッジサーバ300,300a,…のうち、任意の1台を代表エッジサーバに選択する。例えば、割り当て処理部153は、エッジデバイスIDが番号を含む場合に、当該番号が最小のエッジサーバを代表エッジサーバとして選択してもよいし、代表エッジサーバをランダムに選択してもよい。
【0136】
(S82)割り当て処理部153は、軽量モデル310および高精度モデル320のロードを代表エッジサーバに指示する。これにより、代表エッジサーバにおいて、軽量モデル310および高精度モデル320が、代表エッジサーバのRAMにロードされる。
【0137】
(S83)割り当て処理部153は、高精度モデル320のロードを作業エッジサーバに指示する。作業エッジサーバはエッジサーバ300,300a,…のうちの代表エッジサーバ以外のエッジサーバである。ステップS83の指示により、作業エッジサーバにおいて、高精度モデル320が、作業エッジサーバのRAMにロードされる。このように、作業エッジサーバでは、軽量モデル310がロードされなくてもよい。
【0138】
(S84)割り当て処理部153は、リクエストキュー110にある複数のリクエストを代表エッジサーバに割り当てる。送信部154は、リクエストキュー110にある複数のリクエストを、代表エッジサーバに送信する。そして、集中・再分配による割り当てが終了する。
【0139】
なお、集中・再分配による割り当てを行う場合、作業エッジサーバにおいて、軽量モデル310がロード済の場合もある。その場合、割り当て処理部153は、作業エッジサーバに対し、ロード済の軽量モデル310のアンロードを指示してもよい。作業エッジサーバには高精度モデル320だけをロードさせることで、作業エッジサーバにおけるメモリ使用量を節約できる。
【0140】
なお、代表エッジサーバは、ゲートウェイサーバ100から複数のリクエストを受信すると、代表エッジサーバの判断で、リクエストの再分配を行うことがある。そこで、次に代表エッジサーバの処理手順を説明する。
【0141】
図18は、代表エッジサーバの処理例を示すフローチャートである。
一例として、代表エッジサーバがエッジサーバ300であると仮定する。ただし、代表エッジサーバがエッジサーバ300以外の場合も同様の手順となる。
【0142】
(S90)エッジサーバ300は、ゲートウェイサーバ100から複数のリクエストを受信する。エッジサーバ300は、受信した複数のリクエストに対して、軽量モデル310による推論処理を実行する。エッジサーバ300は、軽量モデル310による推論処理の結果から、高精度モデル320による推論処理を実行すべきリクエストの数NHを特定する。
【0143】
(S91)エッジサーバ300は、代表エッジサーバ、すなわち、エッジサーバ300のみで高精度モデル320による推論処理が可能か否か判定する。可能な場合、ステップS92に処理が進む。不可能な場合、ステップS93に処理が進む。
【0144】
ステップS91では、エッジサーバ300は、
図15の割り当て可否判定と同様の判定を行う。ただし、ステップS91では軽量モデル310による処理時間T1=T
L_totalは考慮しなくてよい。よって、式(1)は、式(7)のように変形される。
【0145】
【0146】
バッチング処理が可能な場合、式(7)は、式(5)を基に式(8)に変形される。
【0147】
【0148】
このため、エッジサーバ300は、見積り式として、式(8)を用いて、
図15の割り当て可否判定と同様に、処理時間T=T
H_totalが規定値(T
target-T
Margin)以下であるか否かを判定する。処理時間T≦規定値の場合、代表エッジサーバのみで高精度モデル320による推論処理が可能と判定される。また、処理時間T>規定値の場合、代表エッジサーバのみでは高精度モデル320による推論処理が不可能と判定される。
【0149】
ステップS91を実行するため、エッジサーバ300はRAMやHDDなどに、第2バッチテーブル122に相当する情報を予め保持する。エッジサーバ300は、処理時間Tの算出に、エッジサーバ300で利用可能なバッチサイズのうちのNH以下の大きい値を優先して、処理時間TH_totalの計算に用いるバッチサイズBHとしてもよい。例えば、NH=3とする。また、第2バッチテーブル122相当の情報において最大BH=2であるとする。この場合、エッジサーバ300は、NH=3=2+1として、TH_total=2/2*45+1/1*30=75(ms)のように計算してもよい。
【0150】
(S92)エッジサーバ300は、代表エッジサーバ、すなわち、エッジサーバ300だけで、NH個のリクエストに対する高精度モデル320による推論処理を実行する。そして、代表エッジサーバの処理が終了する。
【0151】
(S93)エッジサーバ300は、NH個のリクエストを特定のバッチサイズに分割し、代表エッジサーバおよび作業エッジサーバに、分割した単位でリクエストを分散する。その結果、代表エッジサーバ(エッジサーバ300)および作業エッジサーバにより、NH個のリクエストに対する高精度モデル320による推論処理が分散して処理される。そして、代表エッジサーバの処理が終了する。
【0152】
なお、ステップS93では、ステップS52~S56と同様の手順により、式(8)の見積り式を満たすNs(=リクエストを分散するエッジサーバの数)の値やバッチサイズが特定されてもよい。
【0153】
なお、ステップS90~S93の手順は、エッジサーバ300が有するプロセッサなどの処理部によって実行され得る。例えば、エッジサーバ300のプロセッサは、エッジサーバ300のRAMに記憶されたプログラムを実行することで、ステップS90~S93の手順を実行し得る。
【0154】
図19は、ロードバランスによる割り当て例を示すフローチャートである。
ロードバランスによる割り当ては、ステップS34に相当する。
(S100)割り当て処理部153は、リクエストキュー110にある複数のリクエストを、利用可能なエッジサーバ分に分割する。具体的には、割り当て処理部153は、利用可能な全てのエッジサーバ300,300a,…に対して割り当てるリクエストの数の差が小さくなるように、複数のリクエストを等分する。
【0155】
(S101)割り当て処理部153は、分割したリクエストを各エッジサーバに送信する。すなわち、割り当て処理部153は、全てのエッジサーバ300,300a,…それぞれに対して等分した数のリクエストを送信する。これにより、利用可能な全てのエッジサーバ300,300a,…に対して負荷が分散される。そして、ロードバランスによる割り当てが終了する。
【0156】
なお、エッジサーバ300,300a,…それぞれは、受信したリクエストに対して、軽量モデル310による推論処理を実行し、軽量モデル310による推論処理の結果に応じて高精度モデル320による推論処理を実行する。
【0157】
ところで、情報処理システムでは、エッジサーバのスケールアウトが可能な場合がある。例えば、ゲートウェイサーバ100は、次のように、エッジサーバのスケールアウトを制御してもよい。
【0158】
図20は、サーバ数割り当て見直し例を示すフローチャートである。
(S110)割り当て処理部153は、
図12で例示される見積り式による割り当て、集中・再分配による割り当て、および、ロードバランスによる割り当ての何れかの割り当てモードを選択した後、選択された割り当てモードを、継続して所定期間実行する。
【0159】
(S111)割り当て処理部153は、所定時間だけ当該割り当てモードでの割り当てを行った全回数に対し、各エッジサーバにおいて、推論処理が規定時間で完了しなかった回数の割合を求める。割り当て処理部153は、規定時間で完了しない当該割合が閾値よりも大きいか否かを判定する。規定時間で完了しない割合が閾値よりも大きい場合、ステップS112に処理が進む。規定時間で完了しない割合が閾値以下の場合、サーバ数割り当て見直しが終了する。
【0160】
(S112)割り当て処理部153は、エッジデバイス200~200cからのリクエストの振分に利用可能なエッジサーバを所定数だけ追加する。例えば、割り当て処理部153は、エッジデバイス200~200cからのリクエストの振分候補の物理マシンをエッジサーバとして新たに追加してもよい。あるいは、割り当て処理部153は、仮想マシンを動作させる物理マシン上に新たな仮想マシンを起動させて、当該仮想マシンをリクエストの振分候補のエッジサーバとして追加してもよい。そして、サーバ数割り当て見直しが終了する。
【0161】
こうして、ゲートウェイサーバ100は、エッジデバイス200~200cからの複数の第2リクエストに対して、適切な数のエッジサーバを割り当て可能になる。
ここで、
図14で例示した、見積り式によるリクエストの割り当ての例を説明する。
【0162】
図21は、ゲートウェイサーバによるリクエストの割り当て例を示す図である。
図21(A)は、リクエストキュー110に格納された4つのリクエストR1,R2,R3,R4を、1台のエッジサーバ300に割り当てる例を示す。割り当て処理部153は、式(6)で表される見積り式に基づいて、1台のエッジサーバでの処理時間Tが規定値(T
target-T
Margin)以下であると判定する。すると、割り当て処理部153は、リクエストR1,R2,R3,R4をエッジサーバ300に割り当てる。
【0163】
図21(B)は、4つのリクエストR1,R2,R3,R4を、2台のエッジサーバ300,300aに割り当てる例を示す。割り当て処理部153は、式(6)で表される見積り式に基づいて、1台のエッジサーバでの処理時間Tが規定値(T
target-T
Margin)より長いと判定する。すると、割り当て処理部153は、各エッジサーバでの処理時間Tが規定値(T
target-T
Margin)以下となるように、リクエストR1,R2をエッジサーバ300に割り当て、リクエストR3,R4をエッジサーバ300aに割り当てる。このとき、割り当て処理部153は、エッジサーバ300,300aで処理されるリクエストの数の差が小さくなるように、すなわち、ほぼ等分配するように割り当てるので、エッジサーバ300,300aに対しほぼ均等に負荷を分散できる。
【0164】
このように、ゲートウェイサーバ100は、バッチング処理による推論処理の効率化を図りながら、最小限のエッジサーバにリクエストを割り当てることができる。
なお、ゲートウェイサーバ100は、
図14で例示した手順に代えて、次の手順によりリクエストの割り当てを行ってもよい。
【0165】
図22は、見積り式による他の割り当て例を示すフローチャートである。
見積り式による他の割り当ての処理は、ステップS31に相当する。
(S120)割り当て処理部153は、リクエストキュー110にある複数のリクエストを1台のエッジサーバに割り当て可能であるか否かを判定する。ステップS120の判定方法は、Ns=1の場合における
図15の手順と同じである。
【0166】
(S121)割り当て処理部153は、ステップS120の判定結果が割り当て可能を示すか否かを判定する。割り当て可能である場合、ステップS122に処理が進む。割り当て不可能である場合、ステップS123に処理が進む。
【0167】
(S122)割り当て処理部153は、リクエストキュー110にある複数のリクエストを1台のエッジサーバに割り当てる。送信部154は、割り当てられた1台のエッジサーバに、リクエストキュー110にある複数のリクエストを送信する。そして、見積り式による他の割り当てが終了する。
【0168】
(S123)割り当て処理部153は、式(6)で表される見積り式に基づいて、1台のエッジサーバに割り当て可能なリクエスト数を計算する。例えば、割り当て処理部153は、式(6)における、リクエストキュー110にある複数のリクエストの数Nを、Nより小さい数N’に置き換える。そして、割り当て処理部153は、数N’と当該数N’に対して予測されるNHとが、置き換え後の式(6)を満たすように最大のN’を求める。このときのNHは、推定処理部152により計算される、複数のリクエストの個数に対する高精度モデル320で処理される個数の割合をN’に乗じることで計算される。
【0169】
また、見積り式に用いるバッチサイズは、
図15の説明で例示した方法と同様の方法で選択される。例えば、割り当て処理部153は、第1バッチテーブル121におけるバッチサイズのうちN’以下の大きい値を優先して、処理時間T
L_totalの計算に用いるバッチサイズB
Lとしてもよい。また、割り当て処理部153は、第2バッチテーブル122におけるバッチサイズのうちN
H以下の大きい値を優先して、処理時間T
H_totalの計算に用いるバッチサイズB
Hとしてもよい。
【0170】
(S124)割り当て処理部153は、1台のエッジサーバに割り当て可能な分のリクエストを1台のエッジサーバに割り当て、残りのリクエストを他のエッジサーバに割り当てる。送信部154は、割り当て処理部153の割り当て結果に基づいて、リクエストキュー110にある複数のリクエストを、割り当て先のエッジサーバに送信する。そして、見積り式による他の割り当てが終了する。
【0171】
なお、ステップS124において、1台の他のエッジサーバだけでは、残りのリクエストに対する処理時間が見積り式の条件を満たせない場合もある。その場合、割り当て処理部153は、残りのリクエストのうちのステップS123で計算したリクエスト数の分を当該1台の他のエッジサーバに送信し、更に残りのリクエストを2台目の他のエッジサーバに割り当ててもよい。
【0172】
次に、
図22で例示した、見積り式によるリクエストの他の割り当ての例を説明する。
図23は、ゲートウェイサーバによるリクエストの他の割り当て例を示す図である。
図23(A)は、リクエストキュー110に格納された4つのリクエストR1,R2,R3,R4を、1台のエッジサーバ300に割り当てる例を示す。割り当て処理部153は、式(6)で表される見積り式に基づいて、1台のエッジサーバでの処理時間Tが規定値(T
target-T
Margin)以下であると判定する。すると、割り当て処理部153は、リクエストR1,R2,R3,R4をエッジサーバ300に割り当てる。
【0173】
図23(B)は、4つのリクエストR1,R2,R3,R4を、2台のエッジサーバ300,300aに割り当てる例を示す。割り当て処理部153は、式(6)で表される見積り式に基づいて、1台のエッジサーバでの処理時間Tが規定値(T
target-T
Margin)より長いと判定する。すると、割り当て処理部153は、1台のエッジサーバでの処理時間Tが規定値(T
target-T
Margin)以下となるように、リクエストR1,R2,R3をエッジサーバ300に割り当て、残りのリクエストR4をエッジサーバ300aに割り当てる。
【0174】
このように、ゲートウェイサーバ100は、バッチング処理による推論処理の効率化を図りながら、最小限のエッジサーバにリクエストを割り当てることができる。
また、ゲートウェイサーバ100は、エッジサーバ300,300a,…における推論処理が完了するまでの時間が、規定値として指定される時間内に収まる可能性を高められる。このため、推論処理の結果を用いて提供される、不審車両の監視に応じた通報や車種のモニタリングに応じた広告提供などの種々のサービスにおけるレスポンス性能を高めることができる。
【0175】
ところで、ゲートウェイサーバ100によるリクエストの割り当て方法の比較例として、
図17で例示した集中・再分配による割り当てのみを行うことも考えられる。しかし、この場合、リクエストを集中させた特定のエッジサーバにおいて他のエッジサーバへのリクエストの再転送のコストが発生する。例えば、再分配が行われる場合、ゲートウェイサーバから当該特定のエッジサーバにリクエストが転送され、その後、特定のエッジサーバから更に他のエッジサーバへリクエストが転送されるというように、追加の転送が行われる。また、特定のエッジサーバでは、軽量モデル310による処理時間として、受信したリクエスト個数分がかかるため、単純に特定のエッジサーバにリクエストを集中させると、規定値で定められる時間期限を超過する可能性がある。
【0176】
そこで、ゲートウェイサーバ100は、リクエストキュー110に溜まった複数のリクエストに対し、各リクエストを送信するエッジデバイスの過去のリクエストの履歴から、リクエストが高精度モデル320で処理されるかどうかの個数を推定する。ゲートウェイサーバ100は、それら高精度モデル320で処理されるリクエスト数および軽量モデル310で処理されるリクエスト数に対する処理時間Tが時間期限を満たす場合に特定のエッジサーバに送付する(見積り式による割り当て)。これにより、ゲートウェイサーバ100は、再転送の発生や時間超過の発生を防げる。
【0177】
また、ゲートウェイサーバ100は、処理時間Tが時間期限を満たさない場合は2以上のエッジサーバに分けてリクエストを送付する。なお、2以上のエッジサーバに分ける場合、単純に分割する方法や高精度モデル320で実施される可能性が高いものをまとめる方法なども考えられる。
【0178】
更に、過去の履歴から各エッジデバイスからのリクエストが高精度モデル320で実行されるかどうかの推定が困難と判断される場合もある。その場合、ゲートウェイサーバ100は、所定バッチサイズに対する軽量モデル310の単位処理時間TL_Bを高精度モデル320の単位処理時間TH_Bと比較する。例えば、ゲートウェイサーバ100は、当該TL_Bが当該TL_Hに所定割合(例えば1/20)を乗じた基準値以下であれば、特定のエッジサーバに複数のリクエストを送信し、再分配を実行させる(集中・再分配による割り当て)。
【0179】
このように、各リクエストが高精度モデル320で実行されるかどうかが不透明の場合は、軽量モデル310での処理時間が非常に小さい場合であれば、特定のエッジサーバに処理させ、高精度モデルで処理される個数を明らかにすることが有効と考えられる。
【0180】
更に、ゲートウェイサーバ100は、集中・再分配による割り当てを行えない場合には、利用可能な各エッジサーバの負荷を均等にするように、リクエストを割り当てる(ロードバランスによる割り当て)。
【0181】
こうして、ゲートウェイサーバ100は、バッチング処理を有効活用するため、比較的少ないサーバリソースで推論処理のタスクを実行可能にできる。また、ゲートウェイサーバ100は、単純に特定のエッジサーバにリクエストを集中して送付し、当該特定のエッジサーバに再分配させる比較例の方法に比べ、リクエストの再転送のコストや推論の時間超過の可能性を減らすことが可能になる。
【0182】
以上説明したように、ゲートウェイサーバ100は次の処理を実行する。
制御部150は、複数のエッジサーバによる推論処理の履歴から、1つのエッジサーバにおいて第1推論モデルによる第1推論処理の結果に応じて実行される、第2推論モデルによる第2推論処理が行われたリクエストの数の指標値を算出する。履歴は、複数のエッジデバイスから過去に受信した複数の第1リクエストに対する複数のエッジサーバによる推論処理の履歴を示す。履歴は、過去の第1リクエストに対する第2推論モデルの実行有無を示す。制御部150は、複数のエッジデバイスから新たに受信した複数の第2リクエストに対する第1推論処理の第1処理時間と、複数の第2リクエストのうちの当該指標値を基に予測される数のリクエストに対する第2推論処理の第2処理時間とを求める。制御部150は、第1処理時間と第2処理時間とを合計した第3処理時間が規定値以下である場合、複数の第2リクエストを1つのエッジサーバに送信する。制御部150は、第3処理時間が規定値を超える場合、複数の第2リクエストを複数のエッジサーバのうちの2以上のエッジサーバに分配する。
【0183】
これにより、ゲートウェイサーバ100は、各エッジサーバにリクエストを効率的に割り当てることができる。例えば、ゲートウェイサーバ100は、1つのエッジサーバによって規定の時間内に複数の第2リクエストの推論処理を完了できると予測される場合には、1つのエッジサーバに複数の第2リクエストを割り当てることで、余計なエッジサーバを割り当てずに済む。また、エッジサーバがバッチング処理を行う場合に、当該エッジサーバにおいて比較的多くの第2リクエストをまとめてバッチング処理が可能となる。このため、ゲートウェイサーバ100は、バッチング処理による推論処理の効率化も図れる。
【0184】
更に、ゲートウェイサーバ100は、1つのエッジサーバだけでは規定の時間内に推論処理を完了できないと予測される場合には、複数の第2リクエストを2以上のエッジサーバに分配することで、推論処理を規定の時間内に完了する可能性を高められる。
【0185】
なお、軽量モデル310は、第1推論モデルの一例である。高精度モデル320は、第2推論モデルの一例である。履歴テーブル123は、複数のエッジサーバによる推論処理の履歴の一例である。
図9の説明で例示された、高精度モデル320で処理されるリクエストの個数が、3個のリクエスト当たり0.67個であるという計算結果は、上記指標値の一例である。また、
図9の説明で例示された、振分対象のリクエストの数のうちの高精度モデル320で処理されるリクエストの割合が0.67/3=0.22であるという計算結果も、上記指標値の一例である。
【0186】
また、制御部150は、第1処理時間や第2処理時間を、第1推論処理や第2推論処理で処理される単位リクエスト数に応じた単位処理時間に基づいて算出してもよい。これにより、ゲートウェイサーバ100は、バッチング処理を行う場合の第1処理時間や第2処理時間の予測精度を高められる。ここで、単位リクエスト数は、エッジサーバで利用可能なバッチサイズに相当する。
【0187】
制御部150は、
図14で例示した方法で、リクエストの割り当てを行ってもよい。すなわち、制御部150は、複数の第2リクエストの分配では、2以上のエッジサーバそれぞれに割り当てる第2リクエストの数の差が小さくなるように分配してもよい。これにより、ゲートウェイサーバ100は、分配先のエッジサーバの負荷をほぼ均等にできる。
【0188】
また、制御部150は、複数の第2リクエストの分配では、分配先の候補のエッジサーバの台数Nsを1つずつ増やしてもよい。それとともに、制御部150は、台数Nsのエッジサーバそれぞれに複数の第2リクエストを分配した場合における当該エッジサーバによる第1推論処理および第2推論処理それぞれの処理時間を合計した第4処理時間が規定値以下であるか否かを判定してもよい。制御部150は、第4処理時間が規定値以下であると判定されたときの台数Nsを、リクエストの分配先とする2以上のエッジサーバの台数としてもよい。
【0189】
これにより、ゲートウェイサーバ100は、バッチング処理による推論処理の効率化を図りながら、最小限のエッジサーバにリクエストを割り当てることができる。
あるいは、制御部150は、
図22で例示した方法で、リクエストの割り当てを行ってもよい。すなわち、制御部150は、複数の第2リクエストの分配では、複数の第2リクエストのうち、第1推論処理および第2推論処理それぞれの処理時間を合計した第5処理時間が規定値を満たす第1の数の第2リクエストを1つのエッジサーバに送信してもよい。そして、制御部150は、残りの第2リクエストを他のエッジサーバに送信してもよい。
【0190】
これにより、ゲートウェイサーバ100は、バッチング処理による推論処理の効率化を図りながら、最小限のエッジサーバにリクエストを割り当てることができる。
また、
図12で例示されるように、制御部150は、複数のエッジサーバによる推論処理の履歴に基づいて上記指標値を算出可能であるか否かを判定してもよい。この判定は、ステップS30に相当する。制御部150は、当該指標値を算出可能である場合に、当該指標値を算出する。一方、制御部150は、当該指標値を算出可能でない場合、所定数単位のリクエストに対する第1推論処理の第6処理時間が所定数単位のリクエストに対する第2推論処理の処理時間に所定割合を乗じた基準時間以下であるか否かを判定してもよい。この判定は、ステップS32に相当する。制御部150は、当該判定に応じて複数のエッジサーバに対する複数の第2リクエストの分配方法を選択してもよい。この選択は、ステップS33,S34の何れかの選択に相当する。
【0191】
このように、ゲートウェイサーバ100は、第2推論モデルで処理されるリクエストの個数を推定可能でない場合でも、他の分配方法を選択可能にすることができる。なお、所定数単位のリクエストに対する第1推論処理の第6処理時間は、第1バッチテーブル121に基づいて取得される。また、所定数単位のリクエストに対する第2推論処理の処理時間は、第2バッチテーブル122に基づいて取得される。
【0192】
例えば、制御部150は、分配方法の選択では、第6処理時間が基準時間以下の場合、複数の第2リクエストを1つのエッジサーバに送信する。また、制御部150は、当該1つのエッジサーバによる複数の第2リクエストに対する第1推論処理の結果に応じて、複数の第2リクエストのうちの第2推論処理の対象となる第2リクエストの、他のエッジサーバへの再分配を当該1つのエッジサーバに実行させる。一方、制御部150は、第6処理時間が基準時間を超える場合、複数のエッジサーバの全てに対して、複数の第2リクエストを分散して送信する。
【0193】
これにより、ゲートウェイサーバ100は、第2推論モデルで処理されるリクエストの個数を推定可能でない場合でも、他の分配方法を適切に選択できる。
制御部150は、上記指標値を算出可能であるか否かの判定では、複数のエッジサーバによる推論処理の履歴における、複数のエッジサーバそれぞれによる第2推論処理の実行および不実行の変化の傾向に基づいて、指標値を算出可能であるか否かを判定してもよい。
【0194】
これにより、ゲートウェイサーバ100は、当該指標値を適切に算出可能になる。例えば、第2推論処理の実行および不実行の変化が頻発している場合、各リクエストに対して第2推論処理の対象になるリクエストの数が安定していないことになる。第2推論処理の対象になるリクエストの数が安定していない場合、第2推論処理が行われるリクエストの数を適切に見積れない可能性がある。そこで、ゲートウェイサーバ100は、複数のエッジサーバそれぞれによる第2推論処理の実行および不実行の変化の傾向に基づいて、指標値を算出可能であるか否かを判定することで、当該指標値を適切に得られるようになる。また、ゲートウェイサーバ100は、当該指標値を適切に得られない場合には、他の分配方法(割り当て方法)を選択可能になる。
【0195】
また、第2推論モデルは、第1推論モデルよりも高精度な推論処理に用いられる推論モデルでもよい。このように、ゲートウェイサーバ100の機能は、異なる推論モデルにより、前段の推論処理の結果に応じて後段の推論処理の精度を段階的に向上させる情報処理システム、または、推論処理システムに好適である。
【0196】
また、
図20で例示したように、制御部150は、エッジサーバのスケールアウトを行ってもよい。例えば、制御部150は、複数の第2リクエストの分配では、上記のように分配先の候補のエッジサーバの台数Nsを1つずつ増やすとともに、第4処理時間と規定値との比較を行う。この場合、制御部150は、分配先の候補のエッジサーバの台数Nsが複数のエッジサーバの数Nに達すると、Ns=Nでの第4処理時間が規定値を超過すると判定された場合でも複数のエッジサーバの全てに複数の第2リクエストを分散して送信する。そして、制御部150は、第4処理時間が規定値を超過すると判定されて複数のエッジサーバの全てに複数の第2リクエストを分散して送信した回数の所定期間における割合が閾値よりも大きいことを検出する。すると、制御部150は、複数のエッジサーバに新たなエッジサーバを追加する。
【0197】
これにより、ゲートウェイサーバ100は、エッジデバイス200~200cからの複数の第2リクエストに対して、適切な数のエッジサーバを割り当て可能になる。
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体73に記録できる。
【0198】
例えば、プログラムを記録した記録媒体73を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体73に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0199】
1,2 ネットワーク
10 情報処理装置
11 記憶部
11a 履歴情報
12 処理部
13 キュー
21,22,23,24 エッジデバイス
31,32,33 エッジサーバ
41 第1推論モデル
42 第2推論モデル