(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022172927
(43)【公開日】2022-11-17
(54)【発明の名称】情報処理装置、集約制御プログラムおよび集約制御方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20221110BHJP
【FI】
G06F9/50 150C
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2021079279
(22)【出願日】2021-05-07
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.TENSORFLOW
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】鈴木 貴久
(72)【発明者】
【氏名】松倉 隆一
(72)【発明者】
【氏名】豊永 慎也
(72)【発明者】
【氏名】河野 美帆
(57)【要約】
【課題】1台のGPUで複数の映像の処理を実行する場合に、GPU22のメモリの利用効率を向上させる。
【解決手段】実行サーバ1は、複数のアプリケーション毎に、推論処理が利用する学習モデル32の識別情報、推論処理の動作周期、1フレームの推論処理の処理時間、学習モデル32の使用メモリ量を対応付けて記憶するプロファイル情報15を有する。実行サーバ1は、プロファイル情報15を用いて、学習モデル32毎に、アプリケーションの処理を集約するかしないかを示す集約要否および集約するために用いられるプロセス数を決定する集約対象決定部122を有する。実行サーバ1は、集約すると決定された学習モデル32を利用するアプリケーションの推論処理をアプリケーションの推論処理を実行するプロセスとは別の集約実行プロセス14で集約して実行する実行制御部124を有する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
GPU(Graphical Processing Unit)を用いた動画像に対するアプリケーションの処理の実行制御を行う情報処理装置であって、
複数のアプリケーション毎に、前記処理が利用する学習モデルの識別情報、前記処理の動作周期、1フレームの前記処理の処理時間、前記学習モデルの使用メモリ量を対応付けて記憶する記憶部と、
前記複数のアプリケーション毎に記憶された各種情報を用いて、前記学習モデル毎に、アプリケーションの処理を集約するかしないかを示す集約要否および集約するために用いられるプロセス数を決定する決定部と、
集約すると決定された学習モデルを利用するアプリケーションの処理を前記アプリケーションの処理を実行するプロセスとは別のプロセスで集約して実行する実行部と、
を有することを特徴とする情報処理装置。
【請求項2】
前記決定部は、前記複数のアプリケーション毎に対応付けられた前記学習モデルの識別情報、前記処理の動作周期および前記処理の処理時間を用いて、前記学習モデル毎に、アプリケーションの処理を集約するために用いられるプロセス数を決定する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記決定部は、
前記複数のアプリケーション毎に対応付けられた前記学習モデルの識別情報および前記学習モデルの使用メモリ量、並びに前記学習モデル毎に決定された集約用のプロセス数を用いて、前記学習モデル毎に、集約する場合の前記学習モデルの使用メモリ量および集約しない場合の前記学習モデルの使用メモリ量を算出し、
前記学習モデル毎に算出された、集約する場合の前記学習モデルの使用メモリ量と、集約しない場合の前記学習モデルの使用メモリ量とを用いて、前記学習モデル毎に、前記集約要否を決定する
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記決定部は、全ての学習モデルの集約しない場合の使用メモリ量が前記GPUの搭載メモリ量に収まらない場合には、集約する場合の前記学習モデルの使用メモリ量と、集約しない場合の前記学習モデルの使用メモリ量との差が大きい学習モデルの処理程優先して集約することを決定する
ことを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記決定部は、全ての学習モデルの集約しない場合の使用メモリ量が前記GPUの搭載メモリ量に収まる場合には、全ての学習モデルの処理を集約しないことを決定する
ことを特徴とする請求項3に記載の情報処理装置。
【請求項6】
GPU(Graphical Processing Unit)を用いた動画像に対するアプリケーションの処理の実行制御を行う集約制御プログラムであって、
複数のアプリケーション毎に、前記処理が利用する学習モデルの識別情報、前記処理の動作周期、1フレームの前記処理の処理時間、前記学習モデルの使用メモリ量を対応付けた情報を用いて、前記学習モデル毎に、アプリケーションの処理を集約するかしないかを示す集約要否および集約するために用いられるプロセス数を決定し、
集約すると決定された学習モデルを利用するアプリケーションの処理を前記アプリケーションの処理を実行するプロセスとは別のプロセスで集約して実行する、
処理をコンピュータに実行させる集約制御プログラム。
【請求項7】
GPU(Graphical Processing Unit)を用いた動画像に対するアプリケーションの処理の実行制御を行う集約制御方法であって、
複数のアプリケーション毎に、前記処理が利用する学習モデルの識別情報、前記処理の動作周期、1フレームの前記処理の処理時間、前記学習モデルの使用メモリ量を対応付けた情報を用いて、前記学習モデル毎に、アプリケーションの処理を集約するかしないかを示す集約要否および集約するために用いられるプロセス数を決定し、
集約すると決定された学習モデルを利用するアプリケーションの処理を前記アプリケーションの処理を実行するプロセスとは別のプロセスで集約して実行する、
処理をコンピュータが実行する集約制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、集約制御プログラムおよび集約制御方法に関する。
【背景技術】
【0002】
近年、GPU(Graphical Processing Unit)を使ってAI(Artificial Intelligence)処理を実行するシステムが増加している。例えば、映像のAI処理により物体検知等を行うシステムがある。
【0003】
このようなシステムでは、1台のGPUが1台のカメラから転送される映像を処理していたが、映像は一定周期で送られるため、処理の隙間でGPUが空く時間が生じる。そこで、1台のGPUが複数台のカメラから転送される映像を収容して処理することで、相互に隙間を埋めて効率よく利用することが期待される。
【0004】
一例として、オブジェクトの検出処理が、複数の学習モデルによる処理をシーケンシャル(逐次)またはパラレル(並列)に実行する技術が開示されている(例えば、特許文献1~3参照)。
【0005】
ここで、複数の学習モデルによる映像の処理をパラレル(並列)で実行する場合には、並列で実行する数分の学習モデルに関わるGPUのメモリ量を必要とする。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2002-83297号公報
【特許文献2】特開2020-112937号公報
【特許文献3】米国特許出願公開第2014/0270429号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、1台のGPUで複数の映像の処理を並列で実行する場合、GPUのメモリの利用効率が悪くなるという問題がある。かかる問題について説明する。
図12は、GPUのメモリ利用効率が悪いという問題を説明する図である。
図12左図に示すように、1台のGPUが、複数の処理を逐次実行している。ここでは、4個の映像の推論処理が逐次実行される場合を示す。各推論処理は、同一の学習モデルを利用している。かかる場合には、GPUは、各推論処理を集約して逐次実行するため、GPUのメモリ使用量は、1個の学習モデルに必要なメモリ使用量を示す。
【0008】
また、
図12右図に示すように、1台のGPUは、4個の映像の推論処理を並列で実行することができる。かかる場合には、GPUは、同一の学習モデルを利用していても、GPUのメモリ使用量は、並列で実行する数分の学習モデルに必要なメモリ使用量を示す。つまり、各推論処理を集約せずに並列で実行する場合には、各推論処理を集約して逐次に実行する場合と比較して、GPUのメモリ使用量が大きくなる。すなわち、1台のGPUで複数の映像の推論処理を並列で実行する場合には、GPUのメモリ使用量がGPUのメモリ総使用量を超える場合も想定され、GPUのメモリの利用効率が悪くなる。
【0009】
本発明は、1つの側面では、1台のGPUで複数の映像の処理を実行する場合に、GPUのメモリの利用効率を向上させることを目的とする。
【課題を解決するための手段】
【0010】
1つの態様では、情報処理装置は、GPU(Graphical Processing Unit)を用いた動画像に対するアプリケーションの処理の実行制御を行う情報処理装置であって、複数のアプリケーション毎に、前記処理が利用する学習モデルの識別情報、前記処理の動作周期、1フレームの前記処理の処理時間、前記学習モデルの使用メモリ量を対応付けて記憶する記憶部と、前記複数のアプリケーション毎に記憶された各種情報を用いて、前記学習モデル毎に、アプリケーションの処理を集約するかしないかを示す集約要否および集約するために用いられるプロセス数を決定する決定部と、集約すると決定された学習モデルを利用するアプリケーションの処理を前記アプリケーションの処理を実行するプロセスとは別のプロセスで集約して実行する実行部と、を有する。
【発明の効果】
【0011】
1実施態様によれば、1台のGPUで複数の映像の処理を実行する場合に、GPUのメモリの利用効率を向上させることが可能となる。
【図面の簡単な説明】
【0012】
【
図1】
図1は、実施例に係る実行サーバを含むシステムの機能構成の一例を示す図である。
【
図2】
図2は、実施例に係る集約制御を説明する図である。
【
図3】
図3は、実施例に係る実行サーバの機能構成の一例を示す図である。
【
図4】
図4は、実施例に係るプロファイル情報のデータ構造の一例を示す図である。
【
図5】
図5は、実施例に係る集約対象情報のデータ構造の一例を示す図である。
【
図8】
図8は、実施例に係る集約対象決定処理のフローチャートの一例を示す図である。
【
図9】
図9は、実施例に係る実行制御処理のフローチャートの一例を示す図である。
【
図10】
図10は、実施例に係る処理結果受信処理のフローチャートの一例を示す図である。
【
図11】
図11は、実行サーバのハードウェア構成の一例を示す図である。
【
図12】
図12は、GPUのメモリ利用効率が悪いという問題を説明する図である。
【発明を実施するための形態】
【0013】
以下に、本願の開示する情報処理装置、集約制御プログラムおよび集約制御方法の実施例を図面に基づいて詳細に説明する。なお、本発明は、実施例により限定されるものではない。
【実施例0014】
[システムの構成]
図1は、実施例に係る実行サーバを含むシステムの機能構成の一例を示す図である。システム9は、実行サーバ1と、ストレージサーバ3と、複数のカメラ5とを有する。システム9は、動画像(映像)に関し、推論処理する推論プロセス11(アプリケーション)を、GPU(Graphics Processing Unit)を搭載する実行サーバ1上で実行する。そして、システム9は、1台のGPU上で複数の推論プロセス11を実行することを想定する。ここでいう推論プロセス11とは、例えば、カメラ5から出力される映像から不審者を推定したり、交通量を推定したりするアプリケーションのことをいう。推論プロセス11は、AIフレームワーク13の所定のライブラリを組み込んで学習モデル32を用いて推論処理を実行する。
【0015】
ストレージサーバ3は、複数のカメラ5からそれぞれ出力される映像のデータソース31と、学習モデル32とを有する。学習モデル32は、推論プロセス11の推論処理に利用されるモデルである。
【0016】
実行サーバ1は、集約制御部12を、複数の推論プロセス11と、AIフレームワーク13との間に設ける。加えて、実行サーバ1は、プロファイル情報15を設ける。
【0017】
AIフレームワーク13は、推論プロセス11および後述する集約実行プロセス14の推論処理を実行する。AIフレームワーク13は、映像に関する推論処理を行うためのライブラリであり、推論プロセス11や集約実行プロセス14に組み込まれる。例えば、AIフレームワーク13は、推論プロセス11から呼び出され、推論処理を実行する。AIフレームワーク13としては、一例として、TensorFlow、MXNet、Pytorchなどが挙げられる。
【0018】
プロファイル情報15は、複数の推論プロセス11(アプリケーション)毎に、各アプリケーションが利用する学習モデル32と、推論処理の動作周期(フレームレート)、1フレームの処理時間、GPU22のメモリ使用量を対応付けた情報である。なお、プロファイル情報15については、詳細に説明する。
【0019】
集約制御部12は、集約制御の運用前に、プロファイル情報15に基づいて、学習モデル32毎に、学習モデル32を利用する推論プロセス11のアプリケーションの推論処理を集約するかしないかを示す集約要否および集約数を決定する。ここでいう集約数とは、集約して実行する場合に用いるプロセスの数のことをいう。このプロセスは、集約実行プロセス14のことである。そして、集約制御部12は、集約制御の運用時に、集約すると決定された学習モデル32を利用するアプリケーションの推論処理を、推論プロセス11とは別の集約実行プロセス14で実行するように制御する。すなわち、集約制御部12は、推論プロセス11からAIフレームワーク13への推論要求を監視し、集約対象の学習モデル32を利用するアプリケーションからの推論要求を集約実行プロセス14で推論を行わせるように推論要求の送信先を制御する。
【0020】
[集約制御の説明]
ここで、実施例に係る集約制御について、
図2を参照して説明する。
図2は、実施例に係る集約制御を説明する図である。
図2に示すように、集約制御部12は、プロファイル情報15とGPU22の搭載メモリ量に基づいて、集約対象の学習モデル32と、集約して実行する場合の集約実行プロセス14の数(集約数)を決定する。そして、集約制御部12は、集約対象の学習モデル32を利用するアプリケーションの推論処理を、推論プロセス11とは別のプロセスである集約実行プロセス14で実行するように制御する。なお、集約制御部12は、集約対象でない学習モデル32を利用するアプリケーションの推論処理については、そのままアプリケーションの推論プロセス11から実行するように制御する。
【0021】
ここでは、アプリケーションAの推論処理の推論プロセス11が起動されている。アプリケーションAの推論処理は、学習モデルXを利用する。アプリケーションBの推論処理の推論プロセス11が起動されている。アプリケーションBの推論処理は、学習モデルXを利用する。アプリケーションCの推論処理の推論プロセス11が起動されている。アプリケーションCの推論処理は、学習モデルYを利用する。集約制御部12は、プロファイル情報15とGPU22の搭載メモリ量に基づいて、集約対象の学習モデル32として学習モデルXを、集約数として「1」を決定したとする。そして、集約制御部12は、決定時に、集約実行プロセス14を集約数分起動する。その後、集約制御部12は、集約対象の学習モデルXを利用するアプリケーションA、Bの推論処理を、推論プロセス11とは別のプロセスである集約実行プロセス14で実行するように制御する。この結果、集約実行プロセス14は、アプリケーションAの推論処理と、アプリケーションBの推論処理とを集約して逐次実行する。集約実行プロセス14の実行によるGPUメモリ221のメモリ使用量は、1個の学習モデルXに必要なメモリ使用量となるので、並列で実行する場合と比べて少なくなる。
【0022】
なお、集約制御部12は、集約対象でない学習モデルYを利用するアプリケーションCの推論処理については、そのままアプリケーションCの推論プロセス11から実行するように制御する。これにより、集約制御部12は、1台のGPU22で複数の推論処理を実行する場合に、GPUメモリ221の利用効率を向上させることが可能となる。以降では、このような集約制御部12を含む実行サーバ1について、詳細に説明する。
【0023】
[実行サーバの機能構成]
図3は、実施例に係る実行サーバの機能構成の一例を示す図である。
図3に示すように、推論プロセス11、集約制御部12、AIフレームワーク13、集約実行プロセス14およびプロファイル情報15を有する。
【0024】
推論プロセス11は、アプリケーション111と、プロセス制御部112とを有する。推論プロセス11は、アプリケーション111毎に起動される。アプリケーション111は、学習モデル32を利用してフレーム毎に推論処理を行う。アプリケーション111は、各フレームの推論処理を行う際に、プロセス制御部112に対して推論要求を出力する。プロセス制御部112は、推論要求検知部1121、実行先判定要求部1122、推論要求送信部1123、処理結果受信部1124および処理結果送信部1125を有する。
【0025】
推論要求検知部1121は、アプリケーション111からの推論要求を検知する。実行先判定要求部1122は、集約制御部12に対して、推論要求を実行する実行先の判定を要求する。すなわち、実行先判定要求部1122は、アプリケーション111の推論要求を集約するかしないかを示す集約要否の判定を要求する。
【0026】
推論要求送信部1123は、推論要求の実行先が自身の推論プロセス11であると判定された場合には、自身の推論プロセス11からAIフレームワーク13に対して推論要求を実行する。すなわち、推論要求送信部1123は、アプリケーション111の推論要求を集約しない(集約否)と判定された場合には、自身の推論プロセス11からAIフレームワーク13に対して推論要求を実行する。
【0027】
処理結果受信部1124は、推論要求を集約しない(集約否)と判定された場合には、AIフレームワーク13から処理結果を受信する。また、処理結果受信部1124は、推論要求を集約する(集約要)と判定された場合には、集約制御部12から処理結果を受信する。
【0028】
処理結果送信部1125は、受信された処理結果をアプリケーション111に返信する。
【0029】
集約制御部12は、読込部121、集約対象決定部122、プロセス管理部123、実行制御部124、推論要求送信部125、処理結果受信部126および処理結果送信部127を有する。また、集約制御部12は、集約対象情報131および推論実行情報132を有する。
【0030】
読込部121は、プロファイル情報15を読み込む。ここでいうプロファイル情報15とは、例えば。集約対象の学習モデル32と、集約して実行する場合の集約実行プロセス14の数(集約数)を決定するために用いられる情報であり、アプリケーション111毎に事前に設定される。
【0031】
ここで、プロファイル情報15のデータ構造の一例を、
図4を参照して説明する。
図4は、実施例に係るプロファイル情報のデータ構造の一例を示す図である。
図4に示すように、プロファイル情報15は、アプリケーションの識別情報、学習モデルの識別情報、推論処理の動作周期、1回の推論処理の時間および学習モデルのGPUメモリ使用量を対応付けた情報である。アプリケーションの識別情報は、アプリケーション111の名前または推論プロセス11のプロセスID(IDentifier)を示す。学習モデルの識別情報は、アプリケーション111が利用する学習モデル32のモデル名または識別IDを示す。推論処理の動作周期は、1回の推論処理の開始から次回の推論処理の開始直前までの時間を示す。1回の推論処理の時間は、1回の推論処理に要する時間を示す。動作周期および推論処理の時間の時間単位は、一例として、ミリ秒(ms)である。学習モデルのGPUメモリ使用量は、学習モデル32が必要とするGPUメモリ221の使用量を示す。
【0032】
なお、1回の推論処理の動作周期および学習モデルのGPUメモリ使用量は、学習モデル32が同じであれば、同じ値となる。一例として、アプリケーションの識別情報が「アプリA」である場合に、学習モデルの識別情報として「X」、推論処理の動作周期として「100」、1回の推論処理の時間として「50」、学習モデルのGPUメモリ使用量として「aa」を記憶している。アプリケーションの識別情報が「アプリB」である場合に、学習モデルの識別情報として「X」、推論処理の動作周期として「200」、1回の推論処理の時間として「50」、学習モデルのGPUメモリ使用量として「aa」を記憶している。アプリケーションの識別情報が「アプリC」である場合に、学習モデルの識別情報として「Y」、推論処理の動作周期として「400」、1回の推論処理の時間として「80」、学習モデルのGPUメモリ使用量として「cc」を記憶している。
【0033】
図3に戻って、集約対象決定部122は、プロファイル情報15に基づき、集約対象の学習モデル32および集約して実行する場合の集約実行プロセス14の数(集約数)を決定する。
【0034】
例えば、集約対象決定部122は、同一の学習モデル32を利用するアプリケーション111に対して、各推論処理の動作間隔(動作周期)と推論処理時間とから、集約しても動作周期内で処理できるように集約実行プロセス14の数(集約数)を決定する。各推論処理の動作間隔および推論処理時間は、プロファイル情報15の各アプリケーション111に対応する推論処理の動作周期および1回の推論処理の時間から取得される。集約対象決定部122は、同一の学習モデル32を利用する各アプリケーション111の1回の推論処理時間と動作間隔(動作周期)を用いて、1回の推論処理時間/動作間隔を合計して得られる値(小数点以下を切り上げ)を計算する。集約対象決定部122は、計算して得られた値を、対象の学習モデル32の集約数として決定する。ここでいう1個のアプリケーション111における推論処理時間/動作間隔(動作周期)は、単位時間当たりの推論処理がGPUを占める割合である。したがって、対象の複数のアプリケーション111に対する推論処理時間/動作間隔の合計(小数点以下を切り上げ)が単位時間を超えない場合には、1個の集約実行プロセス14が各アプリケーション111の推論処理を各動作間隔内で実行できる。一方、推論処理時間/動作間隔の合計(小数点以下を切り上げ)が単位時間を超える場合には、合計(小数点以下を切り上げ)から得られる個数の集約実行プロセス14が各アプリケーション111の推論処理を各動作間隔内で実行できる。
【0035】
また、集約対象決定部122は、GPU22に搭載するメモリ量に収まるように、推論処理を集約する集約対象の学習モデル32を決定する。
【0036】
一例として、集約対象決定部122は、学習モデル32毎に、使用するGPUメモリ221のメモリ量と決定された集約数とから、集約する場合および集約しない場合のGPUメモリ221の総使用量を算出する。対象の学習モデル32に対する集約する場合のGPUメモリ221の総使用量Z1は、以下の式(1)で計算される。
集約する場合のGPUメモリ221の総使用量Z1=集約数×GPUメモリ使用量・・・(1)
【0037】
対象の学習モデル32に対する集約しない場合のGPUメモリ221の総使用量Z2は、以下の式(2)で計算される。
集約しない場合のGPUメモリ221の総使用量Z2=対象の学習モデル32を利用する推論プロセス11の数×GPUメモリ使用量・・・(2)
【0038】
なお、式(1)(2)のGPUメモリ使用量は、プロファイル情報15の中の対象の学習モデル32を利用するアプリケーション111に対応する学習モデルのGPUメモリ使用量から取得されれば良い。
【0039】
そして、集約対象決定部122は、利用される全ての学習モデル32に対する集約しない場合のGPUメモリ221の総使用量を算出する。そして、集約対象決定部122は、全ての学習モデル32に対する集約しない場合のGPUメモリ221の総使用量がGPU22に搭載するメモリ量より小さい場合には、集約対象の学習モデル32を決定しない。すなわち、集約対象決定部122は、いずれの学習モデル32に対するアプリケーション111の推論プロセス11も集約しないで、各推論プロセス11を並列処理することを決定する。
【0040】
そして、集約対象決定部122は、全ての学習モデル32に対する集約しない場合のGPUメモリ221の総使用量がGPU22に搭載するメモリ量以上の場合には、集約効果が大きい程優先度を高くして、集約対象の学習モデル32を決定する。一例として、集約対象決定部122は、学習モデル32毎に、集約する場合と集約しない場合とのGPUメモリ221の総使用量の差を計算する。対象の学習モデル32に対するGPUメモリ221の総使用量の差Z3は、以下の式(3)で計算される。
GPUメモリ221の総使用量の差Z3=推論プロセスの数×GPUメモリ使用量-集約数×GPUメモリ使用量・・・(3)
そして、集約対象決定部122は、GPUメモリ221の総使用量の差Z3が大きい程優先度を高くして、優先度が高い順に集約する学習モデル32を集約対象として決定する。
【0041】
そして、集約対象決定部122は、決定した学習モデル32を集約するとし、それ以外の学習モデル32を集約しないとしてGPUメモリ221の総使用量を算出する。なお、集約するとした学習モデル32に対するGPUメモリ221の総使用量は、式(1)により算出されれば良い。集約しないとした学習モデル32に対するGPUメモリ221の総使用量は、式(2)により算出されれば良い。
【0042】
そして、集約対象決定部122は、算出したGPUメモリ221の総使用量がGPU22に搭載するメモリ量より小さい場合には、GPUメモリ221に収まるので、集約対象決定処理を終了する。また、集約対象決定部122は、算出したGPUメモリ221の総使用量がGPU22に搭載するメモリ量以上の場合には、以下の処理を行う。集約対象決定部122は、GPUメモリ221に収まらないので、優先度の高い順に集約する学習モデル32を増やしていき、GPUメモリ221に収まるように集約対象の学習モデル32を決定する。
【0043】
プロセス管理部123は、集約実行プロセス14を管理する。例えば、プロセス管理部123は、集約対象決定部122によって集約対象として決定された学習モデル32の集約数分の集約実行プロセス14を起動する。そして、集約対象決定部122は、集約対象として決定された学習モデル32の識別情報に対応付けて当該学習モデル32を利用するアプリケーション111の識別情報を集約対象情報131の対象アプリケーションリストに記録する。加えて、集約対象決定部122は、集約対象として決定された学習モデル32の識別情報に対応付けて集約実行プロセス14のプロセスIDを集約対象情報131の集約実行プロセスリストに記録する。
【0044】
ここで、集約対象情報131のデータ構造の一例を、
図5を参照して説明する。
図5は、実施例に係る集約対象情報のデータ構造の一例を示す図である。
図5に示すように、集約対象情報131は、学習モデルの識別情報、対象アプリケーションリストおよび集約実行プロセスリストを対応付けた情報である。学習モデルの識別情報は、学習モデル32のモデル名または識別IDを示す。対象アプリケーションリストは、学習モデル32を利用するアプリケーション111の名前または推論プロセス11のプロセスIDを示す。集約実行プロセスリストは、学習モデル32に対応する集約数分の集約実行プロセス14のプロセスIDを示す。
【0045】
図3に戻って、実行制御部124は、推論要求の実行を制御する。例えば、実行制御部124は、推論プロセス11から推論要求の実行先判定の依頼を受け付ける。実行制御部124は、集約対象情報131を参照して、依頼に含まれるアプリケーション111の識別情報に対応する学習モデル32が集約対象であるか否かを判定する。実行制御部124は、対象の学習モデル32が集約対象でない場合には、推論要求の実行先が依頼元である旨を依頼元の推論プロセス11へ返信する。また、実行制御部124は、対象の学習モデル32が集約対象である場合には、集約対象情報131の集約実行プロセスリストを参照して、対象の学習モデル32に対応する集約実行プロセス14の空き状況を取得する。そして、実行制御部124は、対象の集約実行プロセス14が空いていれば、空いている集約実行プロセス14の一つを選択し、推論要求送信部125に対して推論要求の送信を指示する。また、実行制御部124は、対象の集約実行プロセス14が空いていなければ、対象の集約実行プロセス14が空くまで待機する。
【0046】
推論要求送信部125は、実行制御部124の指示に基づき、推論要求を対象の集約実行プロセス14に送信する。すなわち、推論要求送信部125は、推論要求を推論プロセス11とは別の集約実行プロセス14で実行させるべく、推論要求を対象の集約実行プロセス14に送信する。そして、推論要求送信部125は、対象の集約実行プロセス14の状態を「処理中」に変更する。集約実行プロセス14の状態は、推論実行情報132で管理されれば良い。
【0047】
処理結果受信部126は、推論要求を実行した対象の集約実行プロセス14から処理結果を受信する。そして、処理結果受信部126は、対象の集約実行プロセス14の状態を「空き」に変更する。集約実行プロセス14の状態は、推論実行情報132で管理されれば良い。処理結果送信部127は、処理結果を依頼元の推論プロセス11へ送信する。
【0048】
集約実行プロセス14は、集約対象の学習モデル32を利用するアプリケーション111の推論処理を実行するプロセスである。すなわち、集約実行プロセス14は、アプリケーション111の推論処理を実行する推論プロセス11とは別のプロセスである。集約実行プロセス14は、AIフレームワーク13に対して推論要求を送信する。そして、集約実行プロセス14は、AIフレームワーク13から処理結果を受信すると、受信した処理結果を処理結果受信部126に返信する。
【0049】
[集約数決定の一例]
ここで、集約対象決定部122によって行われる集約数決定について、
図6および
図7を参照して説明する。
図6は、集約数決定の一例を示す図である。
図6に示すように、対象のアプリケーション111を示すアプリAの情報について、利用モデルとして「X」、推論処理時間として「50ms」、動作周期として「100ms」が設定されている。アプリBの情報について、利用モデルとして「X」、推論処理時間として「50ms」、動作周期として「200ms」が設定されている。アプリCの情報について、利用モデルとして「Y」、推論処理時間として「80ms」、動作周期として「400ms」が設定されている。なお、ここでいう利用モデルX、Yとは、プロファイル情報15の「学習モデルの識別情報」に対応する。ここでいう推論処理時間とは、プロファイル情報15の「1回の推論処理の時間」のことをいう。動作周期とは、プロファイル情報15の「推論処理の動作周期」に対応する。
【0050】
このような状況の下、集約対象決定部122は、同一の学習モデル32を利用する各アプリケーション111の1回の推論処理時間と動作周期を用いて、1回の推論処理時間/動作周期を合計して得られる値(小数点以下を切り上げ)を計算する。集約対象決定部122は、計算して得られた値を、対象の学習モデル32の集約数として決定する。すなわち、集約対象決定部122は、同一の学習モデル32を利用する推論処理に対して、それぞれの動作周期および推論処理時間から、集約しても動作周期内で処理できるように集約実行プロセス14の数(集約数)を決定する。
【0051】
ここでは、モデルXの集約数
Xは、アプリAに関する「50/100」とアプリBに関する「50/200」を加算した値が「0.75」と計算されるので、小数点を切り上げて「1」と計算される。
図6下図に示すように、モデルXを利用するアプリAおよびアプリBが1つの集約実行プロセス114に集約されても、それぞれの動作周期内で処理することができる。
【0052】
また、モデルYの集約数
Yは、アプリCに関する「80/400」を計算した値が「0.2」と計算されるので、小数点を切り上げて「1」と計算される。
図6下図に示すように、モデルYを利用するアプリCが1つの集約実行プロセス114に集約されても、動作周期内で処理することができる。
【0053】
そして、それぞれのプロセスで実行される推論処理は、GPU22で並列実行される。
【0054】
[集約数決定の別例]
図7は、集約数決定の別例を示す図である。
図7に示すように、対象のアプリケーション111を示すアプリAの情報について、利用モデルとして「Y」、推論処理時間として「80ms」、動作周期として「100ms」が設定されている。アプリBの情報について、利用モデルとして「Y」、推論処理時間として「80ms」、動作周期として「200ms」が設定されている。アプリCの情報について、利用モデルとして「Y」、推論処理時間として「80ms」、動作周期として「400ms」が設定されている。なお、ここでいう利用モデルYとは、プロファイル情報15の「学習モデルの識別情報」に対応する。ここでいう推論処理時間とは、プロファイル情報15の「1回の推論処理の時間」のことをいう。動作周期とは、プロファイル情報15の「推論処理の動作周期」に対応する。
【0055】
このような状況の下、集約対象決定部122は、同一の学習モデル32を利用する各アプリケーション111の1回の推論処理時間と動作周期を用いて、1回の推論処理時間/動作周期を合計して得られる値(小数点以下を切り上げ)を計算する。集約対象決定部122は、計算して得られた値を、対象の学習モデル32の集約数として決定する。すなわち、集約対象決定部122は、同一の学習モデル32を利用する推論処理に対して、それぞれの動作周期および推論処理時間から、集約しても動作周期内で処理できるように集約する集約実行プロセス14の数(集約数)を決定する。
【0056】
ここでは、モデルYの集約数
Yは、アプリAに関する「80/100」とアプリBに関する「80/200」とアプリCに関する「80/400」を加算した値が「1.4」と計算されるので、小数点を切り上げて「2」と計算される。すなわち、モデルYは、2つに集約される。そして、モデルYを利用するアプリA,B、Cの推論処理は、GPU22で並列実行される。
図7下図に示すように、モデルYを利用するアプリA、アプリBおよびアプリCが2つの集約実行プロセス114に集約されても、それぞれの動作周期内で処理することができる。
【0057】
[集約対象決定処理のフローチャート]
図8は、実施例に係る集約対象決定処理のフローチャートの一例を示す図である。なお、集約対象決定処理は、集約制御の運用前に実施される。
【0058】
図8に示すように、集約対象決定部122は、学習モデル32毎の集約数を算出する(ステップS11)。例えば、集約対象決定部122は、プロファイル情報15から、学習モデル32毎に各アプリケーション111の1回の推論処理時間と動作周期を取得する。そして、集約対象決定部122は、学習モデル32毎に、1回の推論処理時間/動作周期を合計して得られる値(小数点以下を切り上げ)を算出して、各学習モデル32の集約数を算出する。
【0059】
集約対象決定部122は、学習モデル32毎の集約時のGPUメモリ使用量を算出する(ステップS12)。例えば、集約対象決定部122は、学習モデル32毎に、集約数およびGPUメモリ使用量を用いて、集約する場合のGPUメモリ221の総使用量Z1を算出する(式(1)参照)。GPUメモリ使用量は、プロファイル情報15における対象の学習モデル32のGPUメモリ使用量を用いれば良い。
【0060】
集約対象決定部122は、学習モデル32毎の非集約時のGPUメモリ使用量を算出する(ステップS13)。例えば、集約対象決定部122は、学習モデル32毎に、各学習モデル32を利用する推論プロセス11の数およびGPUメモリ使用量を用いて、集約しない場合のGPUメモリ221の総使用量Z2を算出する(式(2)参照)。対象の学習モデル32を利用する推論プロセス11の数は、プロファイル情報15における対象の学習モデル32に対応するアプリケーション111の数に対応する。GPUメモリ使用量は、プロファイル情報15における対象の学習モデル32のGPUメモリ使用量を用いれば良い。
【0061】
集約対象決定部122は、全学習モデル32の非集約時の総GPUメモリ使用量を算出する(ステップS14)。例えば、集約対象決定部122は、学習モデル32ごとの非集約時のGPUメモリ使用量を合計して、非集約時の総GPUメモリ使用量を算出すれば良い。
【0062】
集約対象決定部122は、総GPUメモリ使用量がGPUメモリ221に収まるか否かを判定する(ステップS15)。総GPUメモリ使用量がGPUメモリ221に収まると判定した場合には(ステップS15;Yes)、集約対象決定部122は、集約対象決定処理を終了する。
【0063】
一方、非集約時の総GPUメモリ使用量がGPUメモリ221に収まらないと判定した場合には(ステップS15;No)、集約対象決定部122は、集約効果の大きな学習モデル32を選択する(ステップS16)。例えば、集約対象決定部122は、学習モデル32毎に、集約する場合と集約しない場合とのGPUメモリ221の総使用量の差Z3を計算する(式(3)参照)。そして、集約対象決定部122は、総使用量の差Z3が大きいものから順に学習モデル32を選択する。
【0064】
そして、プロセス管理部123は、選択した学習モデル32に対応する集約数分の集約実行プロセス14を起動する(ステップS17)。そして、プロセス管理部123は、選択した学習モデル32を利用するアプリケーション111の識別情報および集約実行プロセス14のプロセスIDを集約対象情報131に記録する(ステップS18)。
【0065】
続いて、集約対象決定部122は、選択した学習モデル32を集約する場合、それ以外の学習モデル32を集約しない場合として総GPUメモリ使用量を算出する(ステップS19)。なお、集約する場合の選択した学習モデル32に対するGPUメモリ221の総使用量は、式(1)により算出されれば良い。集約しない場合の学習モデル32に対するGPUメモリ221の総使用量は、式(2)により算出されれば良い。そして、集約対象決定部122は、算出された総GPUメモリ使用量がGPUメモリ221に収まるか否かを判定すべく、ステップS15に移行する。
【0066】
[実行制御処理のフローチャート]
図9は、実施例に係る実行制御処理のフローチャートの一例を示す図である。
図9に示すように、実行制御部124は、推論要求の実行先判定を依頼されたか否かを判定する(ステップS21)。推論要求の実行先判定を依頼されていないと判定した場合には(ステップS21;No)、実行制御部124は、推論要求の実行先判定を依頼されるまで、判定処理を繰り返す。
【0067】
一方、推論要求の実行先判定を依頼されたと判定した場合には(ステップS21;Yes)、実行制御部124は、依頼元が集約対象の推論プロセス11であるか否かを判定する(ステップS22)。例えば、実行制御部124は、集約対象情報131を参照して、依頼に含まれるアプリケーション111の識別情報に対応する学習モデル32が集約対象であるか否かを判定する。
【0068】
依頼元が集約対象の推論プロセス11でないと判定した場合には(ステップS22;No)、実行制御部124は、推論要求の実行先は依頼元である旨を依頼元へ応答する(ステップS23)。そして、実行制御部124は、実行制御処理を終了する。
【0069】
一方、依頼元が集約対象の推論プロセス11であると判定した場合には(ステップS22;Yes)、実行制御部124は、対象の学習モデル32に対応する集約実行プロセス14の空き状況を取得する(ステップS24)。実行制御部124は、空きの集約実行プロセス14があるか否かを判定する(ステップS25)。
【0070】
空きの集約実行プロセス14がないと判定した場合には(ステップS25;No)、実行制御部124は、対象の集約実行プロセス14のいずれかが空くまで待機する(ステップS26)。そして、実行制御部124は、ステップS25に移行する。一方、空きの集約実行プロセス14があると判定した場合には(ステップS25;Yes)、実行制御部124は、空きの集約実行プロセス14の一つを選択する(ステップS27)。
【0071】
そして、推論要求送信部125は、選択した集約実行プロセス14に推論要求を送信する(ステップS28)。そして、推論要求送信部125は、推論実行情報132における、推論要求を送信した集約実行プロセス14の状態を「処理中」に変更する(ステップS29)。そして、実行制御部124および推論要求送信部125は、実行制御処理を終了する。
【0072】
[処理結果受信処理のフローチャート]
図10は、実施例に係る処理結果受信処理のフローチャートの一例を示す図である。
図10に示すように、処理結果受信部126は、処理結果を受信したか否かを判定する(ステップS31)。処理結果を受信していないと判定した場合には(ステップS31;No)、処理結果受信部126は、処理結果を受信するまで、判定処理を繰り返す。
【0073】
一方、処理結果を受信したと判定した場合には(ステップS31;Yes)、処理結果受信部126は、処理結果を依頼元の推論プロセス11へ送信する(ステップS32)。そして、処理結果受信部126は、対応する集約実行プロセス14の状態を「空き」に変更する(ステップS33)。そして、処理結果受信部126は、処理結果受信処理を終了する。
【0074】
[実行サーバのハードウェア構成]
図11は、実行サーバのハードウェア構成の一例を示す図である。
図11に示すように、実行サーバ1は、CPU21に加えてGPU22を有する。そして、実行サーバ1は、メモリ23、ハードディスク24およびネットワークインターフェイス25を有する。
図11に示した各部は、例えばバス26で相互に接続される。
【0075】
ネットワークインターフェイス25は、ネットワークインターフェイスカード等であり、ストレージサーバ3等の他の装置との通信を行う。ハードディスク24は、
図1および
図3に示した機能を動作させるプログラムやプロファイル情報15を記憶する。
【0076】
CPU21は、
図1および
図3に示した各処理部と同様の処理を実行するプログラムをハードディスク24等から読み出してメモリ23に展開することで、
図1および
図3等で説明した各機能を実行するプロセスを動作させる。例えば、このプロセスは、実行サーバ1が有する各処理部と同様の機能を実行する。具体的には、CPU21は、推論プロセス11、集約制御部12、AIフレームワーク13および集約実行プロセス14等と同様の機能を有するプログラムをハードディスク24等から読み出す。そして、CPU21は、推論プロセス11、集約制御部12、AIフレームワーク13および集約実行プロセス14等と同様の処理を実行するプロセスを実行する。
【0077】
GPU22は、
図1で示したAIフレームワーク13を用いて推論プロセス11の推論処理を実行するプログラムをハードディスク24等から読み出してメモリ23に展開することで、当該プログラムを実行するプロセスを動作させる。GPU22は、複数の推論プロセス11および集約実行プロセス14を多重で動作させる。
【0078】
[実施例の効果]
このようにして、上記実施例では、実行サーバ1は、GPU22を用いた動画像に対するアプリケーションの推論処理の実行制御を行う。実行サーバ1は、複数のアプリケーション毎に、推論処理が利用する学習モデル32の識別情報、推論処理の動作周期、1フレームの推論処理の処理時間、学習モデル32の使用メモリ量を対応付けて記憶する。実行サーバ1は、複数のアプリケーション毎に記憶された各種情報を用いて、学習モデル32毎に、アプリケーションの処理を集約するかしないかを示す集約要否および集約するために用いられるプロセス数を決定する。実行サーバ1は、集約すると決定された学習モデル32を利用するアプリケーションの推論処理をアプリケーションの推論処理を実行するプロセスとは別の集約実行プロセス14で集約して実行する。かかる構成によれば、実行サーバ1は、集約対象の学習モデル32を決定することで、GPU22の利用効率を向上させることができる。
【0079】
また、上記実施例では、実行サーバ1は、複数のアプリケーション毎に対応付けられた学習モデル32の識別情報、推論処理の動作周期および推論処理の処理時間を用いて、学習モデル32毎に、アプリケーションの推論処理を集約するために用いられる集約実行プロセス14のプロセス数を決定する。かかる構成によれば、実行サーバ1は、同一の学習モデル32を利用する推論処理に対して、それぞれの動作周期および処理時間を用いることで、集約しても動作周期内で推論処理できるように集約するプロセス数を決定できる。
【0080】
また、上記実施例では、実行サーバ1は、複数のアプリケーション毎に対応付けられた学習モデル32の識別情報および学習モデル32の使用メモリ量、並びに学習モデル32毎に決定された集約用のプロセス数を用いて、学習モデル32毎に、集約する場合の学習モデル32の使用メモリ量および集約しない場合の学習モデル32の使用メモリ量を算出する。そして、実行サーバ1は、学習モデル32毎に算出された、集約する場合の学習モデル32の使用メモリ量と、集約しない場合の学習モデル32の使用メモリ量とを用いて、学習モデル32毎に、集約要否を決定する。かかる構成によれば、実行サーバ1は、GPU22のメモリ利用効率を向上させることが可能になる。
【0081】
また、上記実施例では、実行サーバ1は、全ての学習モデル32の集約しない場合の使用メモリ量がGPU22の搭載メモリ量に収まらない場合には、集約する場合の学習モデル32の使用メモリ量と、集約しない場合の学習モデル32の使用メモリ量との差が大きい学習モデル32の推論処理程優先して集約することを決定する。かかる構成によれば、実行サーバ1は、推論処理の実行に関し、GPU22のメモリ利用効率を向上させることができる。
【0082】
また、上記実施例では、実行サーバ1は、全ての学習モデル32の集約しない場合の使用メモリ量がGPU22の搭載メモリ量に収まる場合には、全ての学習モデル32の推論処理を集約しないことを決定する。かかる構成によれば、実行サーバ1は、全ての学習モデル32の推論処理を集約しないことで、並列処理することとなり、GPU22の時間利用効率を向上させることができる。
【0083】
[その他]
なお、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0084】
また、図示した実行サーバ1に含まれる集約制御部12およびプロセス制御部112の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、処理結果送信部1125と処理結果受信部1124とを1つの部として統合しても良い。また、処理結果受信部126と処理結果送信部127とを1つの部として統合しても良い。また、集約対象決定部122を、集約対象を決定する第1の決定部と、集約数を決定する第2の決定部とに分散しても良い。また、プロファイル情報15などを記憶する記憶部(図示しない)を実行サーバ1の外部装置としてネットワーク経由で接続するようにしても良い。