JP2022108373A - 情報処理装置、情報処理方法、およびシステム - Google Patents

情報処理装置、情報処理方法、およびシステム Download PDF

Info

Publication number
JP2022108373A
JP2022108373A JP2021003322A JP2021003322A JP2022108373A JP 2022108373 A JP2022108373 A JP 2022108373A JP 2021003322 A JP2021003322 A JP 2021003322A JP 2021003322 A JP2021003322 A JP 2021003322A JP 2022108373 A JP2022108373 A JP 2022108373A
Authority
JP
Japan
Prior art keywords
execution
processes
information processing
inference
processing apparatus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021003322A
Other languages
English (en)
Inventor
美帆 河野
Miho Kawano
貴久 鈴木
Takahisa Suzuki
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2021003322A priority Critical patent/JP2022108373A/ja
Priority to US17/486,982 priority patent/US20220224956A1/en
Publication of JP2022108373A publication Critical patent/JP2022108373A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】1以上の演算装置を効率よく利用して複数の処理を実行すること。【解決手段】情報処理装置100は、複数の処理のそれぞれの処理について、当該処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を取得する。情報処理装置100は、1以上の演算装置に対して複数の処理を配置するにあたり、プロファイル情報を参照して、木構造110において、根から葉までのノードを探索することにより、1以上の演算装置に対する複数の処理の配置パターンを決定する。情報処理装置100は、例えば、プロファイル情報を参照して、それぞれの処理の実行が期限内に完了可能になるよう、木構造110において探索することにより、複数の処理についての実行効率を最大化可能な配置パターンを決定する。【選択図】図1

Description

本発明は、情報処理装置、情報処理方法、およびシステムに関する。
従来、動画像を処理する推論プロセスを、GPU(Graphics Processing Unit)を搭載するサーバ上で実行するケースがある。管理サーバは、GPUを搭載するサーバが複数存在し、推論プロセスが複数存在する場合、いずれの推論プロセスを、いずれのサーバに配置して実行するのかを決定することになる。特に、サーバの数が比較的少なく、計算リソースが限られたシステムでは、いずれの推論プロセスを、いずれのサーバに配置して実行することが好ましいのかを判断し、いずれの推論プロセスを、いずれのサーバに配置して実行するのかを決定することが望まれる。
先行技術としては、例えば、コプロセッサからリソース情報を収集して処理時間を計算し、計算した処理時間に基づいて推論処理を割り当てるものがある。また、例えば、推論処理装置における推論処理に処理遅延が発生しているかを検出し、処理遅延が発生している推論処理装置と同一の推論処理を実行可能な他の推論処理装置を選択する技術がある。また、例えば、処理時間が短い方の第1のデータ処理手段または第2のデータ処理手段を予測し、処理振分ルールを作成する技術がある。
米国特許出願公開第2020/021866号明細書 特開2020-135061号公報 特開2015-108993号公報
しかしながら、従来技術では、複数のサーバを効率よく利用して複数の推論プロセスを実行することが難しい。例えば、いずれの推論プロセスを、いずれのサーバに配置して実行することが好ましいのかを適切に判断することができないため、複数のサーバを効率よく利用して複数の推論プロセスを実行することができない。
1つの側面では、本発明は、1以上の演算装置を効率よく利用して複数の処理を実行することを目的とする。
1つの実施態様によれば、異なるモデルを用いて実行される複数の処理のそれぞれの処理について、当該処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を取得し、1以上の演算装置に対して前記複数の処理を配置するにあたり、取得した前記プロファイル情報を参照して、前記複数の処理に含まれる処理を配置した位置を表すノードが根から下位へと接続され、階層が深いほど、多くの処理が配置済みとなるよう形成される木構造において、前記それぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、前記根から葉までのノードを探索することにより、前記複数の処理についての実行効率を最大化可能な、前記1以上の演算装置に対する前記複数の処理の配置パターンを決定する情報処理装置、情報処理方法、およびシステムが提案される。
一態様によれば、1以上の演算装置を効率よく利用して複数の処理を実行することが可能になる。
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。 図2は、情報処理システム200の一例を示す説明図である。 図3は、情報処理装置100のハードウェア構成例を示すブロック図である。 図4は、推論実行リクエスト管理テーブル400の記憶内容の一例を示す説明図である。 図5は、実行用装置リソース情報管理テーブル500の記憶内容の一例を示す説明図である。 図6は、推論モデル実行プロファイル管理テーブル600の記憶内容の一例を示す説明図である。 図7は、割り当て結果管理テーブル700の記憶内容の一例を示す説明図である。 図8は、要求時刻超過情報管理テーブル800の記憶内容の一例を示す説明図である。 図9は、実行用装置201のハードウェア構成例を示すブロック図である。 図10は、情報収集装置202のハードウェア構成例を示すブロック図である。 図11は、情報処理システム200の機能的構成例を示すブロック図である。 図12は、情報処理システム200の具体的な機能的構成例を示すブロック図である。 図13は、情報処理システム200の動作例を示す説明図(その1)である。 図14は、情報処理システム200の動作例を示す説明図(その2)である。 図15は、情報処理システム200の動作例を示す説明図(その3)である。 図16は、情報処理システム200の動作例を示す説明図(その4)である。 図17は、情報処理システム200の動作例を示す説明図(その5)である。 図18は、情報処理システム200の動作例を示す説明図(その6)である。 図19は、情報処理システム200の動作例を示す説明図(その7)である。 図20は、全体処理手順の一例を示すフローチャートである。 図21は、割り当てパターン決定処理手順の一例を示すフローチャート(その1)である。 図22は、割り当てパターン決定処理手順の一例を示すフローチャート(その2)である。
以下に、図面を参照して、本発明にかかる情報処理装置、情報処理方法、およびシステムの実施の形態を詳細に説明する。
(実施の形態にかかる情報処理方法の一実施例)
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置100は、1以上の演算装置に対して複数の処理を配置する適切な配置パターンを決定するためのコンピュータである。
ここで、処理は、例えば、動画像に関して所定の演算を行う。処理は、具体的には、動画像のフレームに関して所定の演算を行う。所定の演算は、例えば、画像処理である。所定の演算は、具体的には、画像に映る物体の検知処理である。処理は、より具体的には、推論プロセスである。処理は、リアルタイムに実行されなくてもよい。処理は、実行を完了する期限が設定される。演算装置は、例えば、GPUを搭載するサーバである。
従来、動画像を処理する推論プロセスを、GPUを搭載するサーバ上で実行するにあたり、管理サーバが、いずれの推論プロセスを、いずれのサーバに配置して実行するのかを決定することになる。ここで、サーバの数が比較的少なく、計算リソースが限られたシステムでは、いずれの推論プロセスを、いずれのサーバに配置して実行することが好ましいのかを判断し、いずれの推論プロセスを、いずれのサーバに配置して実行するのかを決定することが望まれる。
しかしながら、従来では、複数のサーバを効率よく利用して複数の推論プロセスを実行することは難しい。例えば、いずれの推論プロセスを、いずれのサーバに配置して実行することが好ましいのかを適切に判断することができないため、複数のサーバを効率よく利用して複数の推論プロセスを実行することができない。具体的には、それぞれの推論プロセスの実行が、当該推論プロセスについて設定された期限内に完了可能であるのかを考慮せず、複数のサーバに対して複数の推論プロセスを配置してしまう場合がある。
例えば、複数の推論プロセスを、設定された期限までの残り時間が短い順に、計算リソースの空きが比較的大きいサーバに配置していく手法が考えられる。この手法では、いずれかのサーバに配置したいずれかの推論プロセスの実行を、設定された期限内に完了可能であることが保証されず、複数のサーバを効率よく利用して、複数の推論プロセスを適切に実行することは難しい。
また、例えば、ある期間に、複数の推論プロセスの推論実行リクエストを受け付けた際、複数の推論プロセスを、推論実行リクエストを受け付けた順に、計算リソースの空きが比較的大きいサーバに配置していく手法が考えられる。この手法では、いずれかのサーバに配置したいずれかの推論プロセスの実行を、設定された期限内に完了可能であることが保証されず、複数のサーバを効率よく利用して、複数の推論プロセスを適切に実行することは難しい。
また、例えば、複数のサーバに対して複数の推論プロセスを配置する際、いずれかの推論プロセスを、2以上のサーバに分散配置可能にする手法が考えられる。この手法では、効率よくサーバを利用することが難しい。例えば、推論プロセスを分散配置した場合、推論プロセスを分散配置した2以上のサーバのそれぞれのサーバで、推論プロセスに用いられるモデルを読み込むことになり、サーバを利用する効率が悪くなるという問題がある。
また、例えば、複数のサーバに対して複数の推論プロセスを配置する配置パターンのすべてを検証し、それぞれの推論プロセスの実行を、設定された期限までに完了可能であり、効率よくサーバを利用可能である適切な配置パターンを決定する手法が考えられる。この手法では、適切な配置パターンを決定するまでにかかる処理時間および処理負担が膨大になり易いという問題がある。
そこで、本実施の形態では、それぞれの処理の実行を、当該処理について設定された期限内に完了可能にしつつ、1以上の演算装置を効率よく利用して複数の処理を実行することができる情報処理方法について説明する。
図1において、情報処理装置100と、処理を配置可能な演算装置とが存在する。演算装置は、例えば、処理を実行可能なコンピュータである。演算装置は、例えば、コンピュータが有する、処理を実行可能なコアであってもよい。
配置は、割り当てである。配置は、例えば、処理をいずれの演算装置で実行するのかを決定することを含む。配置は、例えば、処理をいずれの演算装置でいつ実行開始するのかを決定することを含む。配置は、例えば、処理をいずれの演算装置のいずれの実行プロセス枠で実行するのかを決定することを含む。実行プロセス枠の実体は、例えば、何らかの処理プロセスである。当該処理プロセスは、例えば、配置された処理に用いられるモデルと、当該処理で演算する情報とが指定されることにより、当該処理として動作する。
図1の例では、演算装置は、2つの実行プロセス枠を有し、2つの処理を並列に実行可能である。また、実行が要求された複数の処理が存在する。処理は、例えば、データに対して所定の演算を行う。データは、例えば、フレームである。それぞれの処理の実行を完了する期限を示す要求時刻が設定されている。
図1の例では、requestAの推論プロセスaと、requestBの推論プロセスbとが存在する。表120に示すように、requestAの推論プロセスaは、要求時刻0:20[s]が設定されている。requestAの推論プロセスaは、10[frame]分のデータについて演算を行う処理である。requestBの推論プロセスbは、要求時刻0:50[s]が設定されている。requestBの推論プロセスbは、30[frame]分のデータについて演算を行う処理である。
(1-1)情報処理装置100は、複数の処理のそれぞれの処理について、当該処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を取得する。処理の実行準備にかかる所要時間は、例えば、GPUの初期化および当該処理の実行に用いられるモデルの読込にかかる所要時間である。
図1の例では、情報処理装置100は、requestAの推論プロセスaについて、初期化および推論プロセスaに用いられるモデルの読込にかかる所要時間5[s]と、推論プロセスaの実行にかかる所要時間1[s/frame]とを取得する。また、情報処理装置100は、requestBの推論プロセスbについて、初期化および推論プロセスbに用いられるモデルの読込にかかる所要時間5[s]と、推論プロセスbの実行にかかる所要時間1[s/frame]とを取得する。
(1-2)情報処理装置100は、1以上の演算装置に対して複数の処理を配置するにあたり、プロファイル情報を参照して、木構造110において、根から葉までのノードを探索することにより、1以上の演算装置に対する複数の処理の配置パターンを決定する。木構造110は、例えば、複数の処理に含まれる処理を配置した位置を表すノードが根から下位へと接続され、階層が深いほど、多くの処理が配置済みとなるよう形成される。
情報処理装置100は、例えば、プロファイル情報を参照して、それぞれの処理の実行が期限内に完了可能になるよう探索することにより、複数の処理についての実行効率を最大化可能な、1以上の演算装置に対する複数の処理の配置パターンを決定する。実行効率は、例えば、配置した処理の量の合計の、配置した処理の占有時間の合計に対する割合から算出される。処理の量は、例えば、処理で扱うデータの量である。占有時間は、処理の実行準備および実行で、演算装置を利用する時間である。実行効率は、具体的には、後述する式(1)によって算出可能である。
(1-2-1)図1の例では、情報処理装置100は、木構造110の根0を生成する。情報処理装置100は、推論プロセスaを、演算装置の実行プロセス枠#1に配置した結果を示すノード1を生成し、根0の下位に接続する。配置した結果は、例えば、符号111に示す。図中の(#1,#2)は、実行プロセス枠#1と実行プロセス枠#2とのそれぞれで、どの程度の量のデータを扱うのかを示す。情報処理装置100は、ノード1において、配置した推論プロセスaの実行が完了するまでの所要時間0.15[s]を算出し、算出した所要時間0.15[s]が、要求時刻0:20[s]を満たすか否かを判定し、実行効率0.67[fps]を算出する。
所要時間は、例えば、現時点から、推論プロセスの実行の開始までの待ち時間を含んでもよい。例えば、所要時間が、要求時刻を満たすとは、所要時間が、要求時刻を超過しないことである。所要時間が、要求時刻を満たさないとは、所要時間が、要求時刻を超過することである。所要時間が、要求時刻を超過するとは、所要時間が、現時刻から要求時刻までの時間を超過することである。所要時間が、要求時刻を超過しないとは、所要時間が、現時刻から要求時刻までの時間以下であることである。
ここでは、情報処理装置100は、算出した所要時間0.15[s]が、要求時刻0:20[s]を超過しないため、要求時刻0:20[s]を満たすと判定したとする。情報処理装置100は、要求時刻0:20[s]を満たすと判定した場合には、(1-2-2)の動作に移行する。一方で、情報処理装置100は、要求時刻0:20[s]を満たさないと判定した場合には、(1-2-2)の動作に移行せず、ノード1を削除してもよい。
(1-2-2)情報処理装置100は、要求時刻0:20[s]を満たすと判定した場合、推論プロセスbを、演算装置の実行プロセス枠#2に配置した結果を示すノード2を生成し、ノード1の下位に接続する。配置した結果は、例えば、符号112に示す。情報処理装置100は、ノード2において、配置した推論プロセスbの実行が完了するまでの所要時間0.35[s]を算出し、要求時刻0:50[s]を満たすか否かを判定し、実行効率0.8[fps]を算出する。
ここでは、情報処理装置100は、算出した所要時間0.35[s]が、要求時刻0:50[s]を超過しないため、要求時刻0:50[s]を満たすと判定したとする。情報処理装置100は、要求時刻0:50[s]を満たすと判定した場合には、(1-2-3)の動作に移行する。一方で、情報処理装置100は、要求時刻0:50[s]を満たさないと判定した場合には、ノード2を削除し、(1-2-3)の動作に移行してもよい。
(1-2-3)情報処理装置100は、要求時刻0:50[s]を満たし、ノード2が葉であるため、推論プロセスbを配置し直した結果を示すノード3を生成し、ノード1の下位に接続する。情報処理装置100は、ノード2と同様に、ノード3において、配置したrequestBの推論プロセスbの実行が完了するまでの所要時間が、要求時刻0:50[s]を満たすか否かを判定し、実行効率を算出する。
ここでは、情報処理装置100は、算出した所要時間が、要求時刻0:50[s]を超過しないため、要求時刻0:50[s]を満たすと判定したとする。情報処理装置100は、要求時刻0:50[s]を満たすと判定した場合には、(1-2-4)の動作に移行する。一方で、情報処理装置100は、要求時刻0:50[s]を満たさないと判定した場合には、ノード3を削除し、(1-2-4)の動作に移行してもよい。
(1-2-4)情報処理装置100は、推論プロセスaを配置し直した結果を示すノード4を生成し、ノード0の下位に接続する。配置した結果は、例えば、符号113に示す。情報処理装置100は、ノード1と同様に、ノード4において、配置したrequestAの推論プロセスaの実行が完了するまでの所要時間が、要求時刻0:20[s]を満たすか否かを判定し、実行効率を算出する。
ここでは、情報処理装置100は、算出した所要時間0.10[s]が、要求時刻0:20[s]を超過しないため、要求時刻0:20[s]を満たすと判定したとする。情報処理装置100は、要求時刻0:20[s]を満たすと判定した場合には、(1-2-5)の動作に移行する。一方で、情報処理装置100は、要求時刻0:20[s]を満たさないと判定した場合には、(1-2-5)の動作に移行せず、ノード4を削除してもよい。
(1-2-5)情報処理装置100は、要求時刻0:20[s]を満たすと判定した場合、推論プロセスbを配置し直した結果を示すノード5を生成し、ノード4の下位に接続する。情報処理装置100は、ノード5において、配置した推論プロセスbの実行が完了するまでの所要時間が、要求時刻0:50[s]を満たすか否かを判定し、実行効率を算出する。以降、情報処理装置100は、同様に、ノード6,7などを生成し、実行効率を算出する。
(1-2-6)情報処理装置100は、木構造110に残っている葉のうち、算出した実行効率が最大となる葉を特定する。情報処理装置100は、根から特定した葉までの経路で示される、1以上の演算装置に対して複数の推論プロセスを配置する配置パターンを、複数の推論プロセスについての実行効率を最大化可能な、適切な配置パターンに決定する。
これにより、情報処理装置100は、適切な配置パターンを決定することができる。情報処理装置100は、例えば、それぞれの処理の実行を、当該処理について設定された期限内に完了可能にしつつ、1以上の演算装置を効率よく利用して複数の処理を実行することができる適切な配置パターンを決定することができる。
情報処理装置100は、いずれかの処理を、2以上のサーバに分散配置可能にしても、複数の処理についての実行効率を最大化することができ、効率よく演算装置を利用することができる。情報処理装置100は、複数のサーバに対して複数の処理を配置する配置パターンのすべてを検証せずに済ませることができ、適切な配置パターンを決定するまでにかかる処理時間および処理負担の低減化を図ることができる。
ここでは、情報処理装置100が、木構造110を生成しながら、木構造110を探索することにより、適切な配置パターンを決定する場合について説明したが、これに限らない。例えば、情報処理装置100が、木構造110を生成した後、木構造110を探索することにより、適切な配置パターンを決定する場合があってもよい。また、情報処理装置100が、木構造110を生成する他のコンピュータから、木構造110を取得する場合があってもよい。この場合、情報処理装置100は、取得した木構造110を探索することにより、適切な配置パターンを決定することになる。
ここでは、データが、動画像のフレームである場合について説明したが、これに限らない。例えば、データは、コンピュータに関する動作情報、自然現象に関する観測情報、または、人体に関する生体情報などであってもよい。
(情報処理システム200の一例)
次に、図2を用いて、図1に示した情報処理装置100を適用した、情報処理システム200の一例について説明する。
図2は、情報処理システム200の一例を示す説明図である。図2において、情報処理システム200は、情報処理装置100と、1以上の実行用装置201と、1以上の情報収集装置202と、1以上のクライアント装置203とを含む。
情報処理システム200において、情報処理装置100と実行用装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
また、情報処理システム200において、実行用装置201と情報収集装置202とは、有線または無線のネットワーク210を介して接続される。また、情報処理システム200において、情報処理装置100とクライアント装置203とは、有線または無線のネットワーク210を介して接続される。
情報処理装置100は、図4~図8に後述する各種テーブルを記憶する。情報処理装置100は、推論プロセスの実行を要求する推論実行リクエストを、クライアント装置203から受信する。推論プロセスの実行は、設定された期限までに完了することが望まれる。換言すれば、推論プロセスは、設定された期限までに、処理対象の情報について所定の演算を行うことが望まれる。期限は、例えば、要求時刻で表される。期限は、例えば、数十秒~数分先の要求時刻である。情報処理装置100は、受信した推論実行リクエストを、図4に後述する推論実行リクエスト管理テーブル400を用いて記憶する。
情報処理装置100は、実行用装置201の性能情報を、実行用装置201から受信する。情報処理装置100は、受信した実行用装置201の性能情報を、図5に後述する実行用装置リソース情報管理テーブル500を用いて記憶する。情報処理装置100は、実行用装置201における、推論プロセスの実行準備にかかる所要時間と、推論プロセスの実行にかかる所要時間とを特定可能にするプロファイル情報を、実行用装置201から受信する。情報処理装置100は、受信したプロファイル情報を、図6に後述する推論モデル実行プロファイル管理テーブル600を用いて記憶する。
情報処理装置100は、受信したプロファイル情報に基づいて、複数の実行用装置201に対して複数の推論プロセスを配置する適切な配置パターンを決定する。情報処理装置100は、例えば、プロファイル情報に基づいて、図8に後述する要求時刻超過情報管理テーブル800を利用して、それぞれの推論プロセスの実行が要求時刻までに完了し、実行用装置201を効率よく利用する適切な配置パターンを決定する。情報処理装置100は、決定した配置パターンを、図7に後述する割り当て結果管理テーブル700を用いて記憶する。情報処理装置100は、決定した配置パターンに従って、複数の実行用装置201に対して複数の推論プロセスを配置する。情報処理装置100は、例えば、サーバ、または、PC(Personal Computer)などである。
実行用装置201は、GPUを有し、推論プロセスを実行するコンピュータである。実行用装置201は、推論プロセスの実行準備にかかる所要時間と、推論プロセスの実行にかかる所要時間とを特定可能にするプロファイル情報を生成し、情報処理装置100に送信する。実行用装置201は、情報処理装置100の制御に従って、自ノードに割り当てられた推論プロセスを実行する。実行用装置201は、例えば、自ノードに割り当てられた推論プロセスで扱う情報を、情報収集装置202から受信し、自ノードに割り当てられた推論プロセスを実行する。実行用装置201は、複数の推論プロセスを並列して実行可能である。実行用装置201は、推論プロセスを実行した結果を、クライアント装置203に送信してもよい。実行用装置201は、例えば、サーバ、または、PCなどである。
情報収集装置202は、推論プロセスで扱う情報を収集するコンピュータである。推論プロセスで扱う情報は、例えば、動画像のフレームである。情報収集装置202は、収集した情報を、実行用装置201に送信する。情報収集装置202は、例えば、動画像を撮像し、動画像を実行用装置201に送信する。収集した情報は、例えば、推論プロセスにより、期限までに所定の演算を行うことが要求される。期限は、例えば、要求時刻で表される。期限は、例えば、数十秒~数分先の要求時刻である。情報収集装置202は、例えば、サーバ、PC、タブレット端末、スマートフォン、ウェアラブル端末、定点カメラなどである。
クライアント装置203は、ユーザの操作入力に基づき、推論実行指示を、情報処理装置100に送信する。ユーザは、例えば、1以上の実行用装置201全体の管理者である。クライアント装置203は、推論プロセスを実行した結果を、実行用装置201から受信してもよい。クライアント装置203は、推論プロセスを実行した結果を、ユーザが参照可能に出力する。クライアント装置203は、例えば、サーバ、PC、タブレット端末、または、スマートフォンなどである。
(情報処理システム200の具体例)
情報処理システム200は、具体的には、一定時間ごとに収集した動画像の各フレームに映った物体を検知する推論プロセスを、実行用装置201で実行する物体検知システムを実現する。一定時間ごとに推論プロセスを、実行用装置201で実行するため、一定時間内に推論プロセスの実行を完了することが望まれ、期限が設定される。情報処理装置100は、推論プロセスを実行するにあたり、実行用装置201のGPUを効率よく利用することができるよう、複数の実行用装置201に対して複数の推論プロセスを配置する適切な配置パターンを決定する。これにより、情報処理装置100は、CPUに比べて導入コストが高いGPUを効率よく利用することができる。
(情報処理装置100のハードウェア構成例)
次に、図3を用いて、情報処理装置100のハードウェア構成例について説明する。
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。図3において、情報処理装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、情報処理装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることにより、コーディングされている処理をCPU301に実行させる。
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、情報処理装置100から着脱可能であってもよい。
情報処理装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
(推論実行リクエスト管理テーブル400の記憶内容)
次に、図4を用いて、推論実行リクエスト管理テーブル400の記憶内容の一例について説明する。推論実行リクエスト管理テーブル400は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図4は、推論実行リクエスト管理テーブル400の記憶内容の一例を示す説明図である。図4に示すように、推論実行リクエスト管理テーブル400は、リクエストIDと、推論モデルIDと、処理対象フレーム総数と、要求時刻と、リクエストステータスとのフィールドを有する。推論実行リクエスト管理テーブル400は、推論実行リクエストごとに各フィールドに情報を設定することにより、推論実行リクエストがレコード400-aとして記憶される。aは、任意の整数である。
リクエストIDのフィールドには、推論プロセスの実行を要求する推論実行リクエストを識別するリクエストIDが設定される。推論モデルIDのフィールドには、上記推論プロセスの実行に用いられる推論モデルを識別する推論モデルIDが設定される。処理対象フレーム総数のフィールドには、上記推論プロセスで扱うフレームの総数が設定される。要求時刻のフィールドには、上記推論プロセスの実行を完了する期限を示す要求時刻が設定される。リクエストステータスのフィールドには、上記推論プロセスが未配置であるか、または、配置済みであるかを示すフラグ情報が設定される。
(実行用装置リソース情報管理テーブル500の記憶内容)
次に、図5を用いて、実行用装置リソース情報管理テーブル500の記憶内容の一例について説明する。実行用装置リソース情報管理テーブル500は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図5は、実行用装置リソース情報管理テーブル500の記憶内容の一例を示す説明図である。図5に示すように、実行用装置リソース情報管理テーブル500は、実行用装置IDと、プロセス実行可否と、GPUメモリサイズ[GB]と、時刻と、空きメモリ[GB]とのフィールドを有する。実行用装置リソース情報管理テーブル500は、実行用装置201ごとに各フィールドに情報を設定することにより、実行用装置リソース情報がレコード500-bとして記憶される。bは、任意の整数である。
実行用装置IDのフィールドには、実行用装置201を識別する実行用装置IDが設定される。プロセス実行可否のフィールドには、上記実行用装置201において推論プロセスが実行可能な状態であるか否かを示すフラグ情報が設定される。GPUメモリサイズ[GB]のフィールドには、上記実行用装置201が有するGPUに対応するメモリサイズ[GB]が設定される。GBは、Giga Byteである。時刻のフィールドには、実行用装置リソース情報がいつの時刻に対応するのかを示す時刻が設定される。空きメモリ[GB]のフィールドには、上記時刻における、上記実行用装置201が有するGPUに対応するメモリサイズ[GB]のうち、空きメモリサイズ[GB]が設定される。
(推論モデル実行プロファイル管理テーブル600の記憶内容)
次に、図6を用いて、推論モデル実行プロファイル管理テーブル600の記憶内容の一例について説明する。推論モデル実行プロファイル管理テーブル600は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図6は、推論モデル実行プロファイル管理テーブル600の記憶内容の一例を示す説明図である。図6に示すように、推論モデル実行プロファイル管理テーブル600は、実行用装置IDと、推論モデルIDと、実行準備時間[s]と、推論処理時間[s]とのフィールドを有する。また、推論モデル実行プロファイル管理テーブル600は、実行準備時間増大率と、推論処理時間増大率と、最大専有メモリサイズ[GB]とのフィールドを有する。推論モデル実行プロファイル管理テーブル600は、推論モデルごとに各フィールドに情報を設定することにより、推論モデル実行プロファイル情報がレコード600-cとして記憶される。cは、任意の整数である。
実行用装置IDのフィールドには、実行用装置201を識別する実行用装置IDが設定される。推論モデルIDのフィールドには、推論プロセスの実行に用いられる推論モデルを識別する推論モデルIDが設定される。実行準備時間[s]のフィールドには、上記実行用装置201において、初期化および上記推論モデルの読込にかかる所要時間である実行準備時間[s]が設定される。sは、secondである。推論処理時間[s]のフィールドには、上記実行用装置201において、上記推論プロセスにより、1フレーム分の情報に対して所定の演算を行う際にかかる所要時間である推論処理時間[s]が設定される。
実行準備時間増大率のフィールドには、上記実行用装置201において、2つの推論プロセスを並列して実行する際、それぞれの推論プロセスの実行準備時間がどの程度増大するのかを示す実行準備時間増大率が設定される。推論処理時間増大率のフィールドには、上記実行用装置201において、2つの推論プロセスを並列して実行する際、それぞれの推論プロセスの推論処理時間がどの程度増大するのかを示す推論処理時間増大率が設定される。最大専有メモリサイズ[GB]のフィールドには、上記推論プロセスが占有するメモリサイズの最大値である最大専有メモリサイズ[GB]が設定される。
(割り当て結果管理テーブル700の記憶内容)
次に、図7を用いて、割り当て結果管理テーブル700の記憶内容の一例について説明する。割り当て結果管理テーブル700は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図7は、割り当て結果管理テーブル700の記憶内容の一例を示す説明図である。図7に示すように、割り当て結果管理テーブル700は、リクエストIDと、実行用装置IDと、開始時刻と、割り当てデータ数とのフィールドを有する。割り当て結果管理テーブル700は、推論実行リクエストごとに各フィールドに情報を設定することにより、割り当て結果がレコード700-dとして記憶される。dは、任意の整数である。
リクエストIDのフィールドには、推論プロセスの実行を要求する推論実行リクエストを識別するリクエストIDが設定される。実行用装置IDのフィールドには、上記推論プロセスが配置された実行用装置201を識別する実行用装置IDが設定される。開始時刻のフィールドには、上記実行用装置201で、上記推論プロセスの実行を開始する開始時刻が設定される。割り当てデータ数のフィールドには、上記実行用装置201で、上記推論プロセスにより所定の演算を行うフレーム数であるデータ数が設定される。
(要求時刻超過情報管理テーブル800の記憶内容)
次に、図8を用いて、要求時刻超過情報管理テーブル800の記憶内容の一例について説明する。要求時刻超過情報管理テーブル800は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図8は、要求時刻超過情報管理テーブル800の記憶内容の一例を示す説明図である。図8に示すように、要求時刻超過情報管理テーブル800は、リクエストIDと、実行用装置IDと、割り当て開始時刻と、割り当てデータ数と、超過時間とのフィールドを有する。要求時刻超過情報管理テーブル800は、要求時刻の超過ごとに各フィールドに情報を設定することにより、要求時刻超過情報がレコード800-eとして記憶される。eは、任意の整数である。
リクエストIDのフィールドには、推論プロセスの実行を要求する推論実行リクエストを識別するリクエストIDが設定される。実行用装置IDのフィールドには、実行用装置201を識別する実行用装置IDが設定される。割り当て開始時刻のフィールドには、上記実行用装置201で、上記推論プロセスの実行を開始する開始時刻が設定される。割り当てデータ数のフィールドには、上記実行用装置201で、上記推論プロセスにより所定の演算を行うフレーム数であるデータ数が設定される。超過時間のフィールドには、上記実行用装置201で、上記推論プロセスにより、上記フレーム数の所定の演算を行った際、上記推論プロセスの実行が完了する時刻が、上記推論プロセスに対応する要求時刻をどの程度超過するのかを示す超過時間が設定される。
(実行用装置201のハードウェア構成例)
次に、図9を用いて、実行用装置201のハードウェア構成例について説明する。
図9は、実行用装置201のハードウェア構成例を示すブロック図である。図9において、実行用装置201は、CPU901と、メモリ902と、ネットワークI/F903と、記録媒体I/F904と、記録媒体905と、GPU906と、ディスプレイ907と、入力I/F908と、入力装置909とを有する。また、各構成部は、バス900によってそれぞれ接続される。
ここで、CPU901は、実行用装置201の全体の制御を司る。メモリ902は、例えば、ROM、RAMおよびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU901のワークエリアとして使用される。メモリ902に記憶されるプログラムは、CPU901にロードされることにより、コーディングされている処理をCPU901に実行させる。
ネットワークI/F903は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F903は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F903は、例えば、モデムやLANアダプタなどである。
記録媒体I/F904は、CPU901の制御に従って記録媒体905に対するデータのリード/ライトを制御する。記録媒体I/F904は、例えば、ディスクドライブ、SSD、USBポートなどである。記録媒体905は、記録媒体I/F904の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体905は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体905は、実行用装置201から着脱可能であってもよい。
GPU906は、画像処理を行う処理装置である。ディスプレイ907は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ907は、例えば、CRT(Cathode Ray Tube)、液晶ディスプレイ、有機EL(Electroluminescence)ディスプレイなどである。入力I/F908は、入力装置909と接続され、入力装置909と内部のインターフェースを司り、データの入力を制御する。入力装置909は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置909は、例えば、キーボード、マウス、タッチパネル式の入力パッド、または、テンキーなどである。
実行用装置201は、上述した構成部の他、例えば、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、実行用装置201は、記録媒体I/F904や記録媒体905を複数有していてもよい。また、実行用装置201は、記録媒体I/F904や記録媒体905を有していなくてもよい。
(情報収集装置202のハードウェア構成例)
次に、図10を用いて、情報収集装置202のハードウェア構成例について説明する。
図10は、情報収集装置202のハードウェア構成例を示すブロック図である。図10において、情報収集装置202は、CPU1001と、メモリ1002と、ネットワークI/F1003と、記録媒体I/F1004と、記録媒体1005と、撮像装置1006とを有する。また、各構成部は、バス1000によってそれぞれ接続される。
ここで、CPU1001は、情報収集装置202の全体の制御を司る。メモリ1002は、例えば、ROM、RAMおよびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU1001のワークエリアとして使用される。メモリ1002に記憶されるプログラムは、CPU1001にロードされることにより、コーディングされている処理をCPU1001に実行させる。
ネットワークI/F1003は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F1003は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F1003は、例えば、モデムやLANアダプタなどである。
記録媒体I/F1004は、CPU1001の制御に従って記録媒体1005に対するデータのリード/ライトを制御する。記録媒体I/F1004は、例えば、ディスクドライブ、SSD、USBポートなどである。記録媒体1005は、記録媒体I/F1004の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体1005は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体1005は、情報収集装置202から着脱可能であってもよい。撮像装置1006は、複数のフレームで形成される動画像を撮像する装置である。撮像装置1006は、例えば、カメラである。
情報収集装置202は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報収集装置202は、記録媒体I/F1004や記録媒体1005を複数有していてもよい。また、情報収集装置202は、記録媒体I/F1004や記録媒体1005を有していなくてもよい。
(クライアント装置203のハードウェア構成例)
クライアント装置203のハードウェア構成例は、具体的には、図9に示した実行用装置201のハードウェア構成例と同様であるため、説明を省略する。クライアント装置203は、GPUを有さなくてもよい。
(情報処理システム200の機能的構成例)
次に、図11を用いて、情報処理システム200の機能的構成例について説明する。
図11は、情報処理システム200の機能的構成例を示すブロック図である。情報処理システム200において、情報処理装置100は、第1記憶部1100と、第1取得部1101と、探索部1102と、決定部1103と、配置部1104と、第1出力部1105とを含む。
第1記憶部1100は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、第1記憶部1100が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、第1記憶部1100が、情報処理装置100とは異なる装置に含まれ、第1記憶部1100の記憶内容が情報処理装置100から参照可能である場合があってもよい。
第1取得部1101~第1出力部1105は、制御部の一例として機能する。第1取得部1101~第1出力部1105は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
第1記憶部1100は、各機能部の処理において参照され、または更新される各種情報を記憶する。第1記憶部1100は、処理を実行することの要求を記憶する。処理は、例えば、推論プロセスである。処理は、例えば、モデルを用いて実行される。要求は、例えば、推論実行リクエストである。第1記憶部1100は、例えば、推論実行リクエストを、図4に示した推論実行リクエスト管理テーブル400を用いて記憶する。
第1記憶部1100は、演算装置において、処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を記憶する。演算装置は、例えば、実行用装置201である。演算装置は、例えば、実行用装置201のコアであってもよい。実行準備は、例えば、初期化および処理の実行に用いられるモデルの読込である。第1記憶部1100は、例えば、プロファイル情報を、図6に示した推論モデル実行プロファイル管理テーブル600を用いて記憶する。
第1記憶部1100は、1以上の演算装置に対して複数の処理を配置した結果を記憶する。配置は、割り当てである。配置は、例えば、処理をいずれの演算装置で実行するのかを決定することを含む。配置は、例えば、処理をいずれの演算装置でいつ実行開始するのかを決定することを含む。配置は、例えば、処理をいずれの演算装置のいずれの実行プロセス枠で実行するのかを決定することを含む。実行プロセス枠の実体は、例えば、何らかの処理プロセスである。当該処理プロセスは、配置された所定の処理を実現し得る。当該処理プロセスは、例えば、所定の処理に用いられるモデルと、所定の処理で演算する情報とが指定されることにより、所定の処理を実現する。第1記憶部1100は、例えば、1以上の演算装置に対して複数の処理を配置する適切な配置パターンを、図7に示した割り当て結果管理テーブル700を用いて記憶する。
第1記憶部1100は、木構造を記憶する。木構造は、例えば、複数の処理に含まれる処理を配置した位置を表すノードが根から下位へと接続され、階層が深いほど、多くの処理が配置済みとなるよう形成される。木構造は、例えば、処理を配置した位置を表す情報をノードとして階層化され、階層が深いほど、多くの処理が配置済みとなるよう形成される。木構造は、例えば、探索部1102によって生成される。
第1取得部1101は、各機能部の処理に用いられる各種情報を取得する。第1取得部1101は、取得した各種情報を、第1記憶部1100に記憶し、または、各機能部に出力する。また、第1取得部1101は、第1記憶部1100に記憶しておいた各種情報を、各機能部に出力してもよい。第1取得部1101は、例えば、情報処理装置100の利用者の操作入力に基づき、各種情報を取得する。第1取得部1101は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
第1取得部1101は、異なるモデルを用いて実行される複数の処理のそれぞれの処理を実行することの要求を取得する。第1取得部1101は、推論プロセスの実行を要求する推論実行リクエストを、クライアント装置203から受信することにより取得する。これにより、第1取得部1101は、1以上の演算装置に対して配置する複数の処理を特定可能にすることができる。
第1取得部1101は、異なるモデルを用いて実行される複数の処理のそれぞれの処理について、当該処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を取得する。第1取得部1101は、プロファイル情報を、実行用装置201から受信することにより取得する。これにより、第1取得部1101は、処理の実行が、当該処理に設定された期限までに完了可能であるか否かを評価可能にすることができる。また、第1取得部1101は、演算装置を利用する効率を評価する指針となる情報を得ることができる。
第1取得部1101は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、情報処理装置100の利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。
探索部1102は、取得したプロファイル情報を参照して、木構造において、それぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、根から葉までのノードを探索する。探索部1102は、木構造を生成しながら、根から葉までのノードを探索する。探索部1102は、木構造を生成した後、根から葉までのノードを探索してもよい。
探索部1102は、例えば、取得したプロファイル情報を参照して、木構造において、複数の処理のうち、1以上の演算装置に配置したそれぞれの処理の実行が、当該処理について設定された期限内に完了可能になるノードを、根から辿り、到達可能な葉を特定する。そして、探索部1102は、例えば、特定した到達可能なそれぞれの葉において、それぞれの処理の実行準備および実行にかかる所要時間の累計に基づいて、複数の処理についての実行効率を算出する。
探索部1102は、具体的には、根を生成し、対象ノードに設定する。その後、探索部1102は、具体的には、対象ノードに設定されたあるノードの下位に、複数の処理のいずれか一つの処理を配置した位置を表す新たなノードを接続し、新たなノードを、対象ノードに設定する、という動作を繰り返すことにより、木構造を生成する。
探索部1102は、より具体的には、当該あるノードの下位に、まだ配置していない処理のうち、比較的短い期限が設定されたいずれか一つの処理を配置した位置を表す新たなノードを接続し、対象ノードに設定する、という動作を繰り返す。これにより、探索部1102は、期限が比較的短い処理を優先して実行可能にすることができ、処理の実行が完了する時刻が期限を超過し難くなるよう、木構造を生成しながら、根から葉までのノードを探索することができる。
探索部1102は、より具体的には、動作を繰り返す際、対象ノードに設定されたあるノードが表す位置に配置したある処理の実行が、当該ある処理について設定された期限内に完了可能であるか否かを判定する。また、探索部1102は、より具体的には、対象ノードに設定されたあるノードが、葉であるか否かを判定する。
ここで、探索部1102は、より具体的には、完了可能でなければ、当該あるノードの親の下位に、当該あるノードが表す位置に配置していたある処理を新たに配置した、当該あるノードが表す位置とは異なる位置を表す新たなノードを接続する。そして、探索部1102は、より具体的には、対象ノードに設定されていた当該あるノードを削除し、接続した新たなノードを、対象ノードに設定する。
探索部1102は、さらに具体的には、完了可能でなければ、当該あるノードの親の下位に、当該ある処理の実行が、当該ある処理について設定された期限内に完了可能になるよう、当該ある処理を新たに分散配置した位置を表す新たなノードを接続する。そして、探索部1102は、さらに具体的には、対象ノードに設定されていた当該あるノードを削除し、接続した新たなノードを、対象ノードに設定する。これにより、探索部1102は、配置する処理の実行が完了する時刻が、当該処理について設定された期限を超過しないよう、木構造を生成しながら、根から葉までのノードを探索することができる。
一方で、探索部1102は、より具体的には、完了可能であり、対象ノードに設定されたあるノードが葉でなければ、あるノードの下位に、あるノードが表す位置に配置している処理とは異なる処理を配置した位置を示す新たなノードを接続する。そして、探索部1102は、より具体的には、接続した新たなノードを、対象ノードに設定する。これにより、探索部1102は、処理を順に配置することができ、木構造を生成することができる。
また、探索部1102は、より具体的には、完了可能であり、対象ノードに設定されたあるノードが葉であれば、あるノードにおいて、複数の処理についての実行効率を算出する。実行効率は、例えば、配置した処理の量の合計の、配置した処理の占有時間の合計に対する割合から算出される。処理の量は、例えば、処理で扱うデータの量である。占有時間は、処理の実行準備および実行で、演算装置を利用する時間である。これにより、探索部1102は、複数の処理の配置パターンを決定する指針となる情報を得ることができる。
決定部1103は、探索した結果に基づいて、複数の処理についての実行効率を最大化可能な、1以上の演算装置に対する複数の処理の配置パターンを決定する。決定部1103は、例えば、到達可能な葉のうち、算出した実行効率が最大となる葉に基づいて、複数の処理の配置パターンを決定する。決定部1103は、具体的には、根から、算出した実行効率が最大となる葉までの経路が示す配置パターンを、複数の処理の配置パターンに決定する。これにより、決定部1103は、適切な配置パターンを決定することができる。
配置部1104は、決定した配置パターンに従って、1以上の演算装置に対して複数の処理を配置する。配置部1104は、例えば、決定した配置パターンに従って、1以上の演算装置のそれぞれの演算装置に、当該演算装置に配置する処理を実行することの要求を送信する。要求は、例えば、配置する処理を特定可能にする情報を含む。要求は、例えば、配置する処理の実行に用いられるモデルを特定可能にする情報を含む。これにより、配置部1104は、1以上の演算装置を効率よく利用して、複数の処理を実行させることができる。
第1出力部1105は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、第1出力部1105は、少なくともいずれかの機能部の処理結果を、情報処理装置100の利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。第1出力部1105は、例えば、決定した配置パターンを出力する。
また、情報処理システム200において、実行用装置201は、第2記憶部1110と、第2取得部1111と、実行部1112と、監視部1113と、第2出力部1114とを含む。
第2記憶部1110は、例えば、図9に示したメモリ902や記録媒体905などの記憶領域によって実現される。以下では、第2記憶部1110が、実行用装置201に含まれる場合について説明するが、これに限らない。例えば、第2記憶部1110が、情報処理装置100とは異なる装置に含まれ、第2記憶部1110の記憶内容が実行用装置201から参照可能である場合があってもよい。
第2取得部1111~第2出力部1114は、制御部の一例として機能する。第2取得部1111~第2出力部1114は、具体的には、例えば、図9に示したメモリ902や記録媒体905などの記憶領域に記憶されたプログラムをCPU901に実行させることにより、または、ネットワークI/F903により、その機能を実現する。各機能部の処理結果は、例えば、図9に示したメモリ902や記録媒体905などの記憶領域に記憶される。
第2記憶部1110は、各機能部の処理において参照され、または更新される各種情報を記憶する。第2記憶部1110は、処理の実行に用いられるモデルを記憶する。第2記憶部1110は、自装置に配置された処理の実行準備にかかる所要時間と、自装置に配置された処理の実行にかかる所要時間とを特定可能にするプロファイル情報を記憶する。第2記憶部1110は、処理の対象となる情報を記憶する。第2記憶部1110は、例えば、推論プロセスの対象となる動画像のそれぞれのフレームを記憶する。
第2取得部1111は、各機能部の処理に用いられる各種情報を取得する。第2取得部1111は、取得した各種情報を、第2記憶部1110に記憶し、または、各機能部に出力する。また、第2取得部1111は、第2記憶部1110に記憶しておいた各種情報を、各機能部に出力してもよい。第2取得部1111は、例えば、実行用装置201の利用者の操作入力に基づき、各種情報を取得する。第2取得部1111は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
第2取得部1111は、自装置に配置される処理を特定可能に示した、自装置に配置される処理を実行することの要求を取得する。第2取得部1111は、自装置に配置される処理を実行することの要求を、情報処理装置100から受信することにより取得する。第2取得部1111は、実行用装置201の利用者の操作入力に基づき、自装置に配置される処理を実行することの要求の入力を受け付けることにより、当該要求を取得してもよい。第2取得部1111は、自装置に配置される処理を実行することの要求を、クライアント装置203から受信することにより取得してもよい。
第2取得部1111は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、実行用装置201の利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。第2取得部1111は、例えば、要求を取得したことを、実行部1112または監視部1113の処理を開始する開始トリガーとして受け付ける。
実行部1112は、自装置に配置された処理を実行する。実行部1112は、例えば、配置された処理に対応するモデルを利用して、当該処理の対象となる情報に基づいて、当該処理を実行する。実行部1112は、具体的には、配置された推論プロセスに対応するモデルと、推論プロセスの対象となる動画像のそれぞれのフレームとを取得する。そして、実行部1112は、具体的には、取得したモデルにより、取得した動画像のそれぞれのフレームに対して所定の演算を行うことにより、推論プロセスを実行する。これにより、実行部1112は、自装置に配置された処理を実行することができる。
監視部1113は、自装置に配置された処理の実行状況を監視し、自装置における、処理の実行準備にかかる所要時間と、処理の実行にかかる所要時間とを特定可能にするプロファイル情報を生成する。これにより、監視部1113は、プロファイル情報を、実行用装置201の利用者が作成せずとも、情報処理装置100に提供可能にすることができる。
第2出力部1114は、各機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F903による外部装置への送信、または、メモリ902や記録媒体905などの記憶領域への記憶である。これにより、第2出力部1114は、各機能部の処理結果を実行用装置201の利用者に通知可能にすることができる。
第2出力部1114は、例えば、自装置に配置された処理を実行した結果を出力する。第2出力部1114は、具体的には、推論プロセスを実行した結果を、クライアント装置203に送信する。これにより、第2出力部1114は、自装置に配置された処理を実行した結果を、管理者が参照可能にすることができる。
第2出力部1114は、例えば、自装置における、処理の実行準備にかかる所要時間と、処理の実行にかかる所要時間とを特定可能にするプロファイル情報を、情報処理装置100に送信する。これにより、第2出力部1114は、プロファイル情報を、情報処理装置100が利用可能にすることができる。
(情報処理システム200の具体的な機能的構成例)
次に、図12を用いて、情報処理システム200の具体的な機能的構成例について説明する。
図12は、情報処理システム200の具体的な機能的構成例を示すブロック図である。情報処理システム200において、情報処理装置100は、実行プロファイル収集部1201と、プロセス実行管理部1202と、プロセス配置部1203とを有する。プロセス実行管理部1202は、優先度決定部1204と、配置決定部1205とを有する。情報処理装置100は、推論実行リクエスト管理テーブル400と、実行用装置リソース情報管理テーブル500と、推論モデル実行プロファイル管理テーブル600とを記憶する。
また、実行用装置201は、フレームワーク1211と、プロセス監視部1212とを有する。実行用装置201は、推論プロセス1213を実行可能である。実行用装置201は、2以上の推論プロセス1213を並列して実行可能であってもよい。また、情報収集装置202は、データソース1221と、推論モデルDB(DataBase)1222とを記憶する。データソース1221は、推論プロセスが演算するフレームを記憶する。推論モデルDB1222は、推論モデルを記憶する。
実行プロファイル収集部1201は、推論プロセスを実行する際の、初期化および推論モデルの読込にかかる所要時間と、実行にかかる所要時間とを特定可能にする推論モデル実行プロファイルを、プロセス監視部1212から取得する。実行プロファイル収集部1201は、取得した推論モデル実行プロファイルを、推論モデル実行プロファイル管理テーブル600を用いて記憶する。
プロセス実行管理部1202は、推論実行リクエストを、クライアント装置203から受信し、推論実行リクエスト管理テーブル400を用いて記憶する。プロセス実行管理部1202は、推論実行リクエストが示す推論プロセスのうち、まだ配置していない推論プロセスを処理対象として特定する。プロセス実行管理部1202は、優先度決定部1204により、推論実行リクエスト管理テーブル400を参照して、一定時間ごとに、処理対象に特定したそれぞれの推論プロセスを配置する優先度を決定する。優先度決定部1204は、例えば、要求時刻までの残り時間が少ない順に、推論プロセスの優先度が高くなるよう、処理対象に特定したそれぞれの推論プロセスを配置する優先度を決定する。
プロセス実行管理部1202は、配置決定部1205により、処理対象に特定した推論プロセスを、1以上の実行用装置201に配置する。配置は、例えば、推論プロセスをいずれの実行用装置201で実行するのかを決定することを含む。配置は、例えば、推論プロセスをいずれの実行用装置201でいつ実行開始するのかを決定することを含む。配置は、例えば、実行用装置201が2以上の推論プロセスを並列して実行可能であれば、推論プロセスをいずれの実行用装置201のいずれの実行プロセス枠で実行するのかを決定することを含む。
配置決定部1205は、例えば、実行用装置リソース情報管理テーブル500と、推論モデル実行プロファイル管理テーブル600とを参照して、処理対象に特定した推論プロセスを、優先度が高い順に、1以上の実行用装置201に配置していく。配置決定部1205は、具体的には、木構造を生成しながら、それぞれの推論プロセスの実行が要求期限までに完了するよう、根から葉までのノードを探索し、実行効率が最も大きくなる葉に基づいて、適切な配置パターンを決定する。
配置決定部1205は、例えば、それぞれの推論プロセスの実行が要求期限までに完了可能な、適切な配置パターンが存在しない場合、いずれかの推論プロセスを処理対象から除外し、再び、適切な配置パターンの決定を試行してもよい。配置決定部1205は、具体的には、要求期限までの残り時間が最も長く、優先度が最も低い推論プロセスを、処理対象から除外する。配置決定部1205は、例えば、それぞれの推論プロセスの実行が要求期限までに完了可能な、適切な配置パターンが存在しない場合、クライアント装置を介して、管理者に、配置失敗を通知してもよい。
プロセス配置部1203は、決定した配置パターンに従って、推論プロセスを実行用装置201に配置して実行させる。プロセス配置部1203は、例えば、決定した配置パターンに従って、推論プロセスを実行することの要求を、実行用装置201に送信する。要求は、推論プロセスで用いられる推論モデルを特定可能にする情報を含む。要求は、推論プロセスで演算するフレームを特定可能にする情報を含む。
フレームワーク1211は、自装置に配置された推論プロセスを実行する。フレームワーク1211は、例えば、推論プロセスを実行することの要求を、情報処理装置100から受信する。フレームワーク1211は、例えば、受信した要求に基づいて、情報収集装置202と通信し、推論モデルDB1222から、推論プロセスに用いられる推論モデルを取得する。フレームワーク1211は、例えば、受信した要求に基づいて、情報収集装置202と通信し、データソース1221から、推論プロセスで演算するフレームを取得する。フレームワーク1211は、例えば、受信した要求に基づいて、取得した推論モデルを用いて、取得したフレームについて演算する推論プロセスを実行する。
プロセス監視部1212は、フレームワーク1211を監視し、推論プロセス1213を実行する際の、初期化および推論モデルの読込にかかる所要時間と、実行にかかる所要時間とを特定可能にする推論モデル実行プロファイルを生成する。プロセス監視部1212は、生成した推論モデル実行プロファイルを、情報処理装置100に送信する。
(情報処理システム200の動作例)
次に、図13~図19を用いて、情報処理システム200の動作例について説明する。
図13~図19は、情報処理システム200の動作例を示す説明図である。図13~図19の例では、requestAの推論プロセスaと、requestBの推論プロセスbと、requestCの推論プロセスcとが存在するとする。
推論プロセスaの要求時刻は、0:12である。推論プロセスaの全フレーム数は、8である。全フレーム数は、推論プロセスが演算するフレームがいくつあるかを示す。推論プロセスbの要求時刻は、0:18である。推論プロセスbの全フレーム数は、1である。推論プロセスcの要求時刻は、0:23である。推論プロセスcの全フレーム数は、12である。それぞれの推論プロセスの要求時刻と全フレーム数とは、推論実行リクエスト管理テーブル400を用いて記憶されている。
また、図13~図19の例では、実行用装置201が1つ存在するとする。実行用装置201は、2つの推論プロセスを並列して実行可能である。説明の都合上、実行用装置201は、実行プロセス枠#1,#2を用意しており、実行プロセス枠#1,#2のそれぞれで、1つの推論プロセスを実行可能であるとする。実行プロセス枠の実体は、例えば、何らかの処理プロセスである。当該処理プロセスは、読み込む推論モデルと、演算するフレームとが指定されることにより、推論プロセスとして動作する。
図13において、情報処理装置100は、推論プロセスaと、推論プロセスbと、推論プロセスcとのそれぞれの推論プロセスを、要求時刻までの残り時間が短い順にソートし、それぞれの推論プロセスの割り当ての優先度を決定する。情報処理装置100は、残り時間が短い方の推論プロセスの割り当ての優先度が高くなるよう、それぞれの推論プロセスの割り当ての優先度を決定する。
情報処理装置100は、木構造1300の根0を生成する。情報処理装置100は、優先度が最も高い推論プロセスaを割り当て対象に設定する。情報処理装置100は、処理対象に設定した推論プロセスaを、実行用装置201の実行プロセス枠#1に割り当てた結果を示すノード1を生成し、根0の下位に接続する。情報処理装置100は、ノード1において、割り当てた全推論プロセスの実行が完了するまでの所要時間0.13[s]を算出する。
情報処理装置100は、符号1310に示すように、算出した所要時間0.13[s]が、推論プロセスaについて設定された要求時刻0:12[s]を超過するため、ノード1を削除する。情報処理装置100は、超過時間として、1フレーム分の演算にかかる所要時間0.1[s]を特定し、要求時刻超過情報管理テーブル800を用いて記憶する。ここで、木構造1300は、図13に示す状態になる。
これにより、情報処理装置100は、ノード1を削除し、ノード1の下位の探索を打ち切ることができ、処理量の低減化を図ることができる。また、情報処理装置100は、要求時刻までに、どの程度のフレーム分の演算が間に合わなかったのかを把握可能にし、推論プロセスaを割り当て直す際の指針を得ることができる。次に、図14の説明に移行する。
図14において、情報処理装置100は、ノード1を削除したため、処理対象に設定した推論プロセスaを並列して実行するよう、推論プロセスaを割り当て直す。情報処理装置100は、例えば、7フレーム分の演算を行う推論プロセスaを、実行用装置201の実行プロセス枠#1に割り当て、1フレーム分の演算を行う推論プロセスaを、実行用装置201の実行プロセス枠#2に割り当てた結果を示すノード2を生成する。情報処理装置100は、生成したノード2を、根0の下位に接続する。情報処理装置100は、ノード2において、割り当てた全推論プロセスの実行が完了するまでの所要時間0.12[s]を算出する。
情報処理装置100は、符号1410に示すように、算出した所要時間0.12[s]が、推論プロセスaについて設定された要求時刻0:12[s]を超過しないため、ノード2を確定する。ここで、木構造1300は、図14に示す状態になる。これにより、情報処理装置100は、要求時刻までに、推論プロセスaの実行が完了するよう、推論プロセスaを割り当てることができる。次に、図15の説明に移行する。
図15において、情報処理装置100は、次に優先度が高い推論プロセスbを割り当て対象に設定する。情報処理装置100は、処理対象に設定した推論プロセスbを、空きリソースが比較的大きい実行用装置201の実行プロセス枠#2に割り当てた結果を示すノード3を生成し、ノード2の下位に接続する。情報処理装置100は、ノード3において、割り当てた全推論プロセスの実行が完了するまでの所要時間0.12[s]を算出する。
情報処理装置100は、符号1510に示すように、算出した所要時間0.12[s]が、推論プロセスbについて設定された要求時刻0:18[s]を超過しないため、ノード3を確定する。ここで、木構造1300は、図15に示す状態になる。これにより、情報処理装置100は、要求時刻を超過し難くなるよう、優先度が高い推論プロセスから順に割り当てていくことができる。次に、図16の説明に移行する。
図16において、情報処理装置100は、次に優先度が高い推論プロセスcを割り当て対象に設定する。情報処理装置100は、処理対象に設定した推論プロセスcを、実行用装置201の実行プロセス枠#2に割り当てた結果を示す葉4を生成し、ノード3の下位に接続する。情報処理装置100は、葉4において、割り当てた全推論プロセスの実行が完了するまでの所要時間0.29[s]を算出する。
情報処理装置100は、符号1610に示すように、算出した所要時間0.29[s]が、推論プロセスcについて設定された要求時刻0:23[s]を超過するため、葉4を削除する。情報処理装置100は、超過時間として、6フレーム分の演算にかかる所要時間0.6[s]を特定し、要求時刻超過情報管理テーブル800を用いて記憶する。ここで、木構造1300は、図16に示す状態になる。
これにより、情報処理装置100は、葉4を削除し、根0から葉4までの経路で特定される、推論プロセスの実行が要求時刻までに完了しない割り当てパターンを、暫定解として採用せずに済ませることができる。暫定解は、現時点で適切と判断される割り当てパターンである。次に、図17の説明に移行する。
図17において、情報処理装置100は、葉4を削除したため、処理対象に設定した推論プロセスcを並列して実行するよう、推論プロセスcを割り当て直す。情報処理装置100は、例えば、6フレーム分の演算を行う推論プロセスcを、実行用装置201の実行プロセス枠#1に割り当て、6フレーム分の演算を行う推論プロセスcを、実行用装置201の実行プロセス枠#2に割り当てた結果を示す葉5を生成する。情報処理装置100は、生成した葉5を、ノード3の下位に接続する。情報処理装置100は、葉5において、割り当てた全推論プロセスの実行が完了するまでの所要時間0.23[s]を算出する。
情報処理装置100は、符号1710に示すように、算出した所要時間0.23[s]が、推論プロセスcについて設定された要求時刻0:23[s]を超過しないため、葉5を確定する。情報処理装置100は、下記式(1)に従って、根0から葉5までの経路で特定される割り当てパターンについて、実行効率Pthroughput[fps]を算出する。実行効率は、実行用装置201における、推論プロセスの実行用装置201の占有時間の合計に対する、推論プロセスで演算するフレーム数の合計の割合である。
throughput=Σii/ΣjkF(xijk) ・・・(1)
iは、推論プロセスの番号である。jは、実行プロセス枠の番号である。kは、実行用装置201の番号である。Xiは、i番目の推論プロセスで演算する全フレーム数である。xijkは、k番目の実行用装置201で、j番目の実行プロセス枠に割り当てられたi番目の推論プロセスで演算するフレーム数である。F(xijk)は、j番目の実行プロセス枠に割り当てられたi番目の推論プロセスによるk番目の実行用装置201の占有時間である。F(xijk)は、具体的には、下記式(2)によって定義される。
F(xijk)=αpre・dik・Tpre+αinf・xijk・Tinf ・・・(2)
αpreは、実行準備時間増大率である。αpreは、例えば、実行用装置201において、2つの推論プロセスを並列して実行する際、それぞれの推論プロセスの実行準備時間がどの程度増大するのかを示す実行準備時間増大率である。αinfは、推論処理時間増大率である。αinfは、例えば、実行用装置201において、2つの推論プロセスを並列して実行する際、それぞれの推論プロセスの推論処理時間がどの程度増大するのかを示す推論処理時間増大率が設定される。Tpreは、実行準備時間である。Tinfは、推論処理時間である。
ikは、i番目の推論プロセスで用いられる推論モデルが、割り当ての際に、k番目の実行用装置201で既に読み込まれているか否かを示すフラグ情報である。フラグ情報は、1であれば、既に読み込まれていることを示す。フラグ情報は、0であれば、まだ読み込まれていないことを示す。dik=0であれば、既に読み込まれた推論モデルを用いる推論プロセスは、初期化および推論モデルの読込を省略可能となる。換言すれば、dik=0であると、既に読み込まれた推論モデルを用いる推論プロセスについての実行準備時間は、0となる。
ここでは、情報処理装置100は、実行効率0.46[fps]を算出する。情報処理装置100は、根0から葉5までの経路で特定される割り当てパターンを、暫定解に設定する。ここで、木構造1300は、図17に示す状態になる。これにより、情報処理装置100は、暫定解がどの程度適切な割り当てパターンであるのかを評価する指針となる実行効率を得ることができる。次に、図18の説明に移行する。
図18において、情報処理装置100は、葉5から上位に辿ったノードにおいて、当該ノードより下位で割り当て対象となる推論プロセスについて、要求時刻の超過が発生した実績があるか否かを判定する。ここで、情報処理装置100は、葉5から上位に辿ったノード3において、ノード3より下位で割り当て対象となる推論プロセスcについて、要求時刻の超過が発生した実績があると判定する。
情報処理装置100は、ノード3における推論プロセスbの並列度を変えずに、ノード3において割り当てた位置とは異なる位置に、推論プロセスbを割り当てた結果を示すノード6を生成する。情報処理装置100は、例えば、推論プロセスbの並列度を変えずに、ノード3において割り当てた実行プロセス枠#2の次に空きリソースが多い実行プロセス枠#1に、推論プロセスbを割り当てた結果を示すノード6を生成する。情報処理装置100は、生成したノード6を、ノード3と同じ階層になるよう、ノード2の下位に接続する。情報処理装置100は、ノード6において、割り当てた全推論プロセスの実行が完了するまでの所要時間0.18[s]を算出する。
情報処理装置100は、符号1810に示すように、算出した所要時間0.18[s]が、推論プロセスbについて設定された要求時刻0:18[s]を超過しないため、ノード6を確定する。ここで、木構造1300は、図18に示す状態になる。これにより、情報処理装置100は、要求時刻を超過させずに、暫定解とは異なる割り当てパターンがあるか否かを探索することができる。次に、図19の説明に移行する。
図19において、情報処理装置100は、次に優先度が高い推論プロセスcを割り当て対象に設定する。情報処理装置100は、処理対象に設定した推論プロセスcを、実行用装置201の実行プロセス枠#2に割り当てた結果を示す葉7を生成し、ノード6の下位に接続する。情報処理装置100は、葉7において、割り当てた全推論プロセスの実行が完了するまでの所要時間0.23[s]を算出する。
情報処理装置100は、符号1910に示すように、算出した所要時間0.23[s]が、推論プロセスcについて設定された要求時刻0:23[s]を超過しないため、葉7を確定する。情報処理装置100は、上記式(1)に従って、根0から葉7までの経路で特定される割り当てパターンについて、実行効率Pthroughput[fps]を算出する。
ここでは、情報処理装置100は、実行効率0.51[fps]を算出する。情報処理装置100は、根0から葉7までの経路で特定される割り当てパターンが、暫定解よりも実行効率が高いか否かを判定する。ここでは、情報処理装置100は、根0から葉7までの経路で特定される割り当てパターンが、暫定解よりも実行効率が高いため、根0から葉7までの経路で特定される割り当てパターンを、新たに暫定解に設定する。ここで、木構造1300は、図19に示す状態になる。
ここで、情報処理装置100は、それぞれの推論プロセスの並列数が最小となり、それぞれの推論プロセスについて設定された要求時刻を超過しないため、暫定解を適切な割り当てパターンに決定し、探索を打ち切る。例えば、暫定解より並列数が多い別の解は、暫定解より実行用装置201を効率よく利用していない解であるため、探索しなくてもよい。これにより、情報処理装置100は、適切な割り当てパターンを得ることができ、実行用装置201を効率よく利用可能にすることができる。
情報処理装置100は、例えば、同一の推論モデルを読み込む実行用装置の数の増加を抑制しつつ、適切な割り当てパターンを得ることができる。このため、情報処理装置100は、それぞれの実行用装置で、初期化および推論モデルの読込を実施する回数の低減化を図ることができ、実行用装置201を効率よく利用可能にすることができる。
(全体処理手順)
次に、図20を用いて、情報処理装置100が実行する、全体処理手順の一例について説明する。全体処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
図20は、全体処理手順の一例を示すフローチャートである。図20において、情報処理装置100は、推論実行リクエスト管理テーブル400を参照して、未割り当ての推論実行リクエストを取得し、要求時刻までの残り時間が短い順にソートし、割り当て対象の推論実行リクエストに設定する(ステップS2001)。
次に、情報処理装置100は、図21および図22を用いて後述する割り当てパターン決定処理を実行し、複数の実行用装置201に対する割り当て結果を、割り当て結果管理テーブル700に記録する(ステップS2002)。そして、情報処理装置100は、割り当て結果が、所定の条件を満たすか否かを判定する(ステップS2003)。所定の条件は、割り当て結果で、それぞれの推論実行リクエストが指定する推論プロセスの実行が完了し、当該推論実行リクエストが指定するすべてのフレームを処理し終える時刻が、当該推論実行リクエストが指定する要求時刻以前であることである。
ここで、所定の条件を満たす場合(ステップS2003:Yes)、情報処理装置100は、ステップS2004の処理に移行する。一方で、所定の条件を満たさない場合(ステップS2003:No)、情報処理装置100は、ステップS2005の処理に移行する。
ステップS2004では、情報処理装置100は、割り当て結果に従って、複数の実行用装置201に対して複数の推論プロセスを割り当て、複数の実行用装置201において複数の推論プロセスを実行させる(ステップS2004)。そして、情報処理装置100は、全体処理を終了する。
ステップS2005では、情報処理装置100は、要求時刻超過情報管理テーブル800を参照して、最も要求時刻までの残り時間が長い推論実行リクエストを、割り当て対象から除外する(ステップS2005)。次に、情報処理装置100は、割り当て対象の推論実行リクエストが残っているか否かを判定する(ステップS2006)。
ここで、割り当て対象の推論実行リクエストが残っている場合(ステップS2006:Yes)、情報処理装置100は、ステップS2002の処理に戻る。一方で、割り当て対象の推論実行リクエストが残っていない場合(ステップS2006:No)、情報処理装置100は、全体処理を終了する。これにより、情報処理装置100は、複数の実行用装置201を効率よく利用し、かつ、それぞれの推論プロセスの実行が完了する時刻が、要求時刻以前に収まるよう、複数の実行用装置201に対して複数の推論プロセスを割り当てることができる。
また、情報処理装置100は、いずれかの推論プロセスの実行が完了する時刻が、要求時刻以前に収まらなければ、割り当て対象とする推論実行リクエストの数を減らすことができる。そして、情報処理装置100は、比較的多くの推論プロセスの実行が完了する時刻が、要求時刻以前に収まるよう、複数の実行用装置201に対して複数の推論プロセスを割り当てることができる。
(割り当てパターン決定処理手順)
次に、図21および図22を用いて、情報処理装置100が実行する、割り当てパターン決定処理手順の一例について説明する。割り当てパターン決定処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
図21および図22は、割り当てパターン決定処理手順の一例を示すフローチャートである。図21において、情報処理装置100は、図20のステップS2001でソートした結果に基づいて、まだ選択していない未割り当ての推論実行リクエストのうち、残り時間が最も短い推論実行リクエストを選択する(ステップS2101)。
次に、情報処理装置100は、推論実行リクエスト管理テーブル400を参照して、選択した推論実行リクエストに対応するレコードを取得する(ステップS2102)。そして、情報処理装置100は、取得したレコードに基づいて、選択した推論実行リクエストの最大専有メモリサイズを取得する。情報処理装置100は、推論モデル実行プロファイル管理テーブル600を参照して、取得した推論実行リクエストの最大専有メモリサイズを取得する。情報処理装置100は、実行用装置リソース情報管理テーブル500を参照して、取得した推論実行リクエストの最大専有メモリサイズを早く確保可能な順に、複数の実行用装置201をソートする(ステップS2103)。
次に、情報処理装置100は、選択した推論実行リクエストの割り当て計算が初回であるか否かを判定する(ステップS2104)。割り当て計算は、推論実行リクエストが指定する推論プロセスおよび推論プロセスが演算するフレームを、いずれかの実行用装置201のいずれかの実行プロセス枠に割り当てることである。初回とは、例えば、根から現在のノードまでの経路上における初回である。
ここで、初回ではない場合(ステップS2104:No)、情報処理装置100は、図22のステップS2201の処理に移行する。一方で、初回である場合(ステップS2104:Yes)、情報処理装置100は、ステップS2105の処理に移行する。
ステップS2105では、情報処理装置100は、最も早く最大専有メモリサイズを確保可能な実行用装置201を1つ選択する(ステップS2105)。次に、情報処理装置100は、選択した実行用装置201における実行プロセス枠のうち、空きリソースが最も大きい実行プロセス枠に、選択した推論実行リクエストのすべてのフレームを割り当てる(ステップS2106)。空きリソースが最も大きいとは、実行プロセス枠に割り当て済みの推論プロセスの実行が完了する時刻が最も早いことである。
そして、情報処理装置100は、推論モデル実行プロファイル管理テーブル600を参照して、選択した実行用装置201上での占有時間および割り当てたフレーム数を取得する。情報処理装置100は、取得した実行用装置201上での占有時間および割り当てたフレーム数に基づいて、選択した推論実行リクエストが指定するすべてのフレームを処理し終える時刻を算出する(ステップS2107)。
次に、情報処理装置100は、算出した時刻が要求時刻以前であるか否かを判定する(ステップS2108)。ここで、要求時刻以前である場合(ステップS2108:Yes)、情報処理装置100は、ステップS2110の処理に移行する。一方で、要求時刻以前ではない場合(ステップS2108:No)、情報処理装置100は、ステップS2109の処理に移行する。
ステップS2109では、情報処理装置100は、超過した分の時間と、超過が発生した実行用装置201とを、推論要求リクエストに対応付けて、要求時刻超過情報管理テーブル800に記録する(ステップS2109)。これにより、情報処理装置100は、推論要求リクエストについて、算出した時刻が要求時刻を超過した実績があることを記録する。そして、情報処理装置100は、ステップS2104の処理に戻る。
ステップS2110では、情報処理装置100は、まだ割り当てていない推論実行リクエストが残っているか否かを判定する(ステップS2110)。ここで、推論実行リクエストが残っている場合(ステップS2110:Yes)、情報処理装置100は、ステップS2101の処理に戻る。一方で、推論実行リクエストが残っていない場合(ステップS2110:No)、情報処理装置100は、ステップS2111の処理に移行する。
ステップS2111では、情報処理装置100は、現在の割り当て結果における推論実行効率を算出し、過去の暫定解における推論実行効率よりも良好な推論実行効率であれば、現在の割り当て結果を、暫定解に決定する(ステップS2111)。そして、情報処理装置100は、ステップS2104の処理に戻る。
図22において、情報処理装置100は、暫定解があるか否かを判定する(ステップS2201)。ここで、暫定解がある場合(ステップS2201:Yes)、情報処理装置100は、ステップS2205の処理に移行する。一方で、暫定解がない場合(ステップS2201:No)、情報処理装置100は、ステップS2202の処理に移行する。
ステップS2202では、情報処理装置100は、推論モデル実行プロファイル管理テーブル600および要求時刻超過情報管理テーブル800を参照して、要求時刻の超過解消のために割り当て直すフレームの数を算出する(ステップS2202)。
次に、情報処理装置100は、現在の割り当て先の実行用装置201の次に早く最大専有メモリサイズを確保可能な実行用装置201を選択する(ステップS2203)。そして、情報処理装置100は、選択した実行用装置201における実行プロセス枠のうち、空きリソースが最も大きい実行プロセス枠に、算出した数のフレームを割り当て直す(ステップS2204)。割り当て直すフレーム以外は、例えば、現在の割り当て先の実行用装置201に割り当てたままであってもよい。この際、情報処理装置100は、空きリソースが最も大きい実行プロセス枠に、算出した数のフレームを割り当てても、超過解消不可能であれば、算出した数のフレームを割り当てなくてもよい。その後、情報処理装置100は、ステップS2209の処理に移行する。
ステップS2205では、情報処理装置100は、要求時刻超過情報管理テーブル800を参照して、選択した推論実行リクエスト以降の推論実行リクエストに、要求時刻を超過した実績がある推論実行リクエストがあるか否かを判定する(ステップS2205)。ある推論実行リクエスト以降の推論実行リクエストとは、ソートされた複数の推論実行リクエストの並びにおいて、ある推論実行リクエストよりも後方にある推論実行リクエストである。
ここで、要求時刻を超過した実績がある推論実行リクエストがない場合(ステップS2205:No)、情報処理装置100は、ステップS2210の処理に移行する。一方で、要求時刻を超過した実績がある推論実行リクエストがある場合(ステップS2205:Yes)、情報処理装置100は、ステップS2206の処理に移行する。
ステップS2206では、情報処理装置100は、要求時刻超過情報管理テーブル800を参照して、要求時刻を超過した実績がある推論実行リクエストを取得し、超過した分の時間に対応する、割り当て直すフレームの数を算出する(ステップS2206)。次に、情報処理装置100は、現在の割り当て先の実行用装置201の次に早く最大専有メモリサイズを確保可能な実行用装置201を選択する(ステップS2207)。
そして、情報処理装置100は、現在の割り当て結果における並列度を変えずに、選択した実行用装置201における実行プロセス枠のうち、空きリソースが最も大きい実行プロセス枠に、算出した数のフレームを割り当てる(ステップS2208)。この際、情報処理装置100は、空きリソースが最も大きい実行プロセス枠に、算出した数のフレームを割り当てても、超過解消不可能であれば、算出した数のフレームを割り当てなくてもよい。その後、情報処理装置100は、ステップS2209の処理に移行する。
ステップS2209では、情報処理装置100は、並列数上限未満で、推論プロセスを並列して割り当てることにより、超過解消可能であったか否かを判定する(ステップS2209)。並列数上限は、推論プロセスを、最大いくつまで分散して割り当てられるのかを示す。並列数上限は、例えば、それぞれの実行用ノードにおいて分散して割り当て可能な推論プロセスの数を足し合わせた和である。
ここで、並列数上限未満で、推論プロセスを並列して割り当てた際に、超過解消可能になる並列数がある場合(ステップS2209:Yes)、情報処理装置100は、図21のステップS2107の処理に戻る。一方で、並列数上限未満で、推論プロセスを並列して割り当てた際に、超過解消可能になる並列数がない場合(ステップS2209:No)、情報処理装置100は、ステップS2210の処理に移行する。
ステップS2210では、情報処理装置100は、選択した推論実行リクエストが、先頭の推論実行リクエストであるか否かを判定する(ステップS2210)。ここで、先頭の推論実行リクエストである場合(ステップS2210:Yes)、情報処理装置100は、割り当てパターン決定処理を終了する。一方で、先頭の推論実行リクエストではない場合(ステップS2210:No)、情報処理装置100は、ステップS2211の処理に移行する。
ステップS2211では、情報処理装置100は、選択した推論実行リクエストの1つ前の推論実行リクエストを選択する(ステップS2211)。そして、情報処理装置100は、図21のステップS2102の処理に戻る。
ここで、情報処理装置100は、図20~図22の各フローチャートにおける一部ステップの処理の順序を入れ替えて実行してもよい。例えば、ステップS2005,S2006の処理の順序は入れ替え可能である。また、情報処理装置100は、図20~図22の各フローチャートにおける一部ステップの処理を省略してもよい。
以上説明したように、情報処理装置100によれば、複数の処理のそれぞれの処理について、当該処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を取得することができる。情報処理装置100によれば、取得したプロファイル情報を参照して、木構造において、それぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、根から葉までのノードを探索することができる。これにより、情報処理装置100は、複数の処理についての実行効率を最大化可能な、1以上の演算装置に対する複数の処理の配置パターンを決定することができる。このため、情報処理装置100は、1以上の演算装置を効率よく利用しつつ、それぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、1以上の演算装置に対して複数の処理を配置可能にすることができる。
情報処理装置100によれば、取得したプロファイル情報を参照して、木構造において、複数の処理のうち、1以上の演算装置に配置した処理の実行が、当該処理について設定された期限内に完了可能になるノードを、根から辿ることができる。情報処理装置100によれば、根から辿ることにより到達可能なそれぞれの葉において、それぞれの処理の実行準備および実行にかかる所要時間の累計に基づいて、複数の処理についての実行効率を算出することができる。情報処理装置100によれば、算出した実行効率が最大となる葉に基づいて、複数の処理の配置パターンを決定することができる。これにより、情報処理装置100は、それぞれの葉から特定される配置パターンがどの程度適切な配置パターンであるのかを評価可能にすることができる。このため、情報処理装置100は、適切な配置パターンを決定し易くすることができる。
情報処理装置100によれば、木構造を生成しながら、それぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、根から葉までのノードを探索することにより、複数の処理の配置パターンを決定することができる。これにより、情報処理装置100は、木構造の生成と探索とを並列して実行することができる。
情報処理装置100によれば、初期状態では根を対象ノードに設定することができる。情報処理装置100によれば、対象ノードに設定されたあるノードの下位に、複数の処理のいずれか一つの処理を配置した位置を表す新たなノードを接続し、新たなノードを、対象ノードに設定する、という動作を繰り返すことができる。これにより、情報処理装置100は、木構造を生成することができる。
情報処理装置100によれば、動作を繰り返す際、対象ノードに設定されたあるノードが表す位置に配置した処理の実行が、当該処理について設定された期限内に完了可能であるか否かを判定することができる。情報処理装置100によれば、完了可能ではない場合、あるノードの親の下位に、あるノードが表す位置とは異なる、当該処理を配置した位置を表す新たなノードを接続し、新たなノードを、対象ノードに設定することができる。情報処理装置100によれば、あるノードを削除することができる。これにより、情報処理装置100は、あるノードの下位を探索しても、それぞれの処理の実行を、当該処理について設定された期限内に完了可能な、適切な配置パターンが発見されないことを把握することができる。情報処理装置100は、あるノードの下位を探索しても、適切な配置パターンが発見されないため、あるノードを削除し、あるノードから下位に向けての探索を打ち切ることができ、処理量の低減化を図ることができる。
情報処理装置100によれば、動作を繰り返す際、対象ノードに設定されたあるノードが葉であるか否か、および、あるノードが表す位置に配置した処理の実行が、当該処理について設定された期限内に完了可能であるか否かを判定することができる。情報処理装置100によれば、葉ではなく、かつ、完了可能であれば、あるノードの下位に、当該処理とは異なる処理を配置した位置を示す新たなノードを接続し、新たなノードを、対象ノードに設定することができる。これにより、情報処理装置100は、あるノードの下位に、それぞれの処理の実行を、当該処理について設定された期限内に完了可能な、適切な配置パターンが発見される可能性があれば、あるノードの下位に新たなノードを繋げていくことができる。このため、情報処理装置100は、適切な配置パターンが発見され易くすることができる。
情報処理装置100によれば、動作を繰り返す際、対象ノードに設定されたあるノードが葉であるか否か、および、あるノードが表す位置に配置した処理の実行が、当該処理について設定された期限内に完了可能であるか否かを判定することができる。情報処理装置100によれば、葉であり、かつ、完了可能であれば、あるノードにおいて、複数の処理についての実行効率を算出することができる。情報処理装置100によれば、算出した実行効率が最大となる葉に基づいて、1以上の演算装置に対する複数の処理の配置パターンを決定することができる。これにより、情報処理装置100は、実行効率により、葉から特定される配置パターンがどの程度適切であるのかを評価することができ、適切な配置パターンを決定し易くすることができる。
情報処理装置100によれば、対象ノードに設定されたあるノードの下位に、複数の処理に含まれるまだ配置していない処理のうち、比較的短い期限が設定されたいずれか一つの処理を配置した位置を表す新たなノードを接続していくことができる。これにより、情報処理装置100は、それぞれの処理の実行が、当該処理について設定された期限内に完了可能になり易いよう、複数の処理を順に配置していくことができる。
情報処理装置100によれば、動作を繰り返す際、対象ノードに設定されたあるノードが表す位置に配置した処理の実行が、当該処理について設定された期限内に完了可能であるか否かを判定することができる。情報処理装置100によれば、完了可能ではない場合、あるノードの親の下位に、当該処理の実行が、当該処理について設定された期限内に完了可能になるよう、当該処理を分散配置した位置を表す新たなノードを接続することができる。これにより、情報処理装置100は、処理を分散配置する場合を考慮して、配置パターンを決定することができる。情報処理装置100は、それぞれの処理の実行が、当該処理について設定された期限内に完了可能になり易くすることができる。
情報処理装置100によれば、それぞれの処理の実行準備にかかる所要時間に、初期化および当該処理の実行に用いられるモデルの読込にかかる所要時間を採用することができる。これにより、情報処理装置100は、初期化および処理の実行に用いられるモデルの読込にかかる所要時間を考慮し、それぞれの処理の実行が、当該処理について設定された期限内に完了可能であるか否かを精度よく判定可能にすることができる。
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した情報処理プログラムは、インターネットなどのネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)異なるモデルを用いて実行される複数の処理のそれぞれの処理について、当該処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を取得し、
1以上の演算装置に対して前記複数の処理を配置するにあたり、取得した前記プロファイル情報を参照して、前記複数の処理に含まれる処理を配置した位置を表すノードが根から下位へと接続され、階層が深いほど、多くの処理が配置済みとなるよう形成される木構造において、前記それぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、前記根から葉までのノードを探索することにより、前記複数の処理についての実行効率を最大化可能な、前記1以上の演算装置に対する前記複数の処理の配置パターンを決定する、
制御部を有することを特徴とする情報処理装置。
(付記2)前記制御部は、
取得した前記プロファイル情報を参照して、前記木構造において、前記複数の処理のうち、前記1以上の演算装置に配置した処理の実行が、当該処理について設定された期限内に完了可能になるノードを、前記根から辿ることにより到達可能なそれぞれの葉において、前記それぞれの処理の実行準備および実行にかかる所要時間の累計に基づいて、前記複数の処理についての実行効率を算出し、
算出した前記実行効率が最大となる葉に基づいて、前記複数の処理の配置パターンを決定する、ことを特徴とする付記1に記載の情報処理装置。
(付記3)前記制御部は、
取得した前記プロファイル情報を参照して、前記木構造を生成しながら、前記それぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、前記根から葉までのノードを探索することにより、前記複数の処理の配置パターンを決定する、ことを特徴とする付記1または2に記載の情報処理装置。
(付記4)初期状態では前記根が対象ノードに設定されており、
前記制御部は、
前記対象ノードに設定されたあるノードの下位に、前記複数の処理のいずれか一つの処理を配置した位置を表す新たなノードを接続し、前記新たなノードを、前記対象ノードに設定する、という動作を繰り返すことにより、前記木構造を生成する、ことを特徴とする付記3に記載の情報処理装置。
(付記5)前記制御部は、
前記動作を繰り返す際、前記対象ノードに設定されたあるノードが表す位置に配置した処理の実行が、当該処理について設定された期限内に完了可能ではない場合、前記あるノードの親の下位に、前記あるノードが表す位置とは異なる、当該処理を配置した位置を表す新たなノードを接続し、前記新たなノードを、前記対象ノードに設定し、前記あるノードを削除する、ことを特徴とする付記4に記載の情報処理装置。
(付記6)前記制御部は、
前記動作を繰り返す際、前記対象ノードに設定されたあるノードが葉ではなく、前記あるノードが表す位置に配置した処理の実行が、当該処理について設定された期限内に完了可能であれば、前記あるノードの下位に、当該処理とは異なる処理を配置した位置を示す新たなノードを接続し、前記新たなノードを、前記対象ノードに設定する、ことを特徴とする付記4または5に記載の情報処理装置。
(付記7)前記制御部は、
前記動作を繰り返す際、前記対象ノードに設定されたあるノードが葉であり、前記あるノードが表す位置に配置した処理の実行が、当該処理について設定された期限内に完了可能であれば、前記あるノードにおいて、前記複数の処理についての実行効率を算出し、
算出した前記実行効率が最大となる葉に基づいて、前記1以上の演算装置に対する前記複数の処理の配置パターンを決定する、ことを特徴とする付記4~6のいずれか一つに記載の情報処理装置。
(付記8)前記制御部は、
前記対象ノードに設定されたあるノードの下位に、前記複数の処理に含まれるまだ配置していない処理のうち、比較的短い期限が設定されたいずれか一つの処理を配置した位置を表す新たなノードを接続し、前記新たなノードを、前記対象ノードに設定する、という動作を繰り返す、ことを特徴とする付記4~7のいずれか一つに記載の情報処理装置。
(付記9)前記制御部は、
前記動作を繰り返す際、前記対象ノードに設定されたあるノードが表す位置に配置した処理の実行が、当該処理について設定された期限内に完了可能ではない場合、前記あるノードの親の下位に、前記あるノードが表す位置とは異なり、当該処理の実行が、当該処理について設定された期限内に完了可能になるよう、当該処理を分散配置した位置を表す新たなノードを接続し、前記新たなノードを、前記対象ノードに設定し、前記あるノードを削除する、ことを特徴とする付記5に記載の情報処理装置。
(付記10)前記それぞれの処理の実行準備にかかる所要時間は、初期化および当該処理の実行に用いられるモデルの読込にかかる所要時間である、ことを特徴とする付記1~9のいずれか一つに記載の情報処理装置。
(付記11)異なるモデルを用いて実行される複数の処理のそれぞれの処理について、当該処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を取得し、
1以上の演算装置に対して前記複数の処理を配置するにあたり、取得した前記プロファイル情報を参照して、前記複数の処理に含まれる処理を配置した位置を表すノードが根から下位へと接続され、階層が深いほど、多くの処理が配置済みとなるよう形成される木構造において、前記それぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、前記根から葉までのノードを探索することにより、前記複数の処理についての実行効率を最大化可能な、前記1以上の演算装置に対する前記複数の処理の配置パターンを決定する、
処理をコンピュータが実行することを特徴とする情報処理方法。
(付記12)情報処理装置と、異なるモデルを用いて実行される複数の処理に含まれる処理を配置可能な1以上の演算装置とを含むシステムであって、
前記1以上の演算装置のそれぞれの演算装置は、
当該演算装置に配置された処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を生成し、前記情報処理装置に送信し、
前記情報処理装置は、
前記プロファイル情報を、前記演算装置から取得し、
前記1以上の演算装置に対して前記複数の処理を配置するにあたり、取得した前記プロファイル情報を参照して、前記複数の処理に含まれる処理を配置した位置を表すノードが根から下位へと接続され、階層が深いほど、多くの処理が配置済みとなるよう形成される木構造において、前記複数の処理のそれぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、前記根から葉までのノードを探索することにより、前記複数の処理についての実行効率を最大化可能な、前記1以上の演算装置に対する前記複数の処理の配置パターンを決定する、
ことを特徴とするシステム。
100 情報処理装置
110,1300 木構造
111,112,113,1310,1410,1510,1610,1710,1810,1910 符号
120 表
200 情報処理システム
201 実行用装置
202 情報収集装置
203 クライアント装置
210 ネットワーク
300,900,1000 バス
301,901,1001 CPU
302,902,1002 メモリ
303,903,1003 ネットワークI/F
304,904,1004 記録媒体I/F
305,905,1005 記録媒体
400 推論実行リクエスト管理テーブル
500 実行用装置リソース情報管理テーブル
600 推論モデル実行プロファイル管理テーブル
700 割り当て結果管理テーブル
800 要求時刻超過情報管理テーブル
906 GPU
907 ディスプレイ
908 入力I/F
909 入力装置
1006 撮像装置
1100 第1記憶部
1101 第1取得部
1102 探索部
1103 決定部
1104 配置部
1105 第1出力部
1110 第2記憶部
1111 第2取得部
1112 実行部
1113 監視部
1114 第2出力部
1201 実行プロファイル収集部
1202 プロセス実行管理部
1203 プロセス配置部
1204 優先度決定部
1205 配置決定部
1211 フレームワーク
1212 プロセス監視部
1213 推論プロセス
1221 データソース
1222 推論モデルDB

Claims (10)

  1. 異なるモデルを用いて実行される複数の処理のそれぞれの処理について、当該処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を取得し、
    1以上の演算装置に対して前記複数の処理を配置するにあたり、取得した前記プロファイル情報を参照して、前記複数の処理に含まれる処理を配置した位置を表すノードが根から下位へと接続され、階層が深いほど、多くの処理が配置済みとなるよう形成される木構造において、前記それぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、前記根から葉までのノードを探索することにより、前記複数の処理についての実行効率を最大化可能な、前記1以上の演算装置に対する前記複数の処理の配置パターンを決定する、
    制御部を有することを特徴とする情報処理装置。
  2. 前記制御部は、
    取得した前記プロファイル情報を参照して、前記木構造において、前記複数の処理のうち、前記1以上の演算装置に配置した処理の実行が、当該処理について設定された期限内に完了可能になるノードを、前記根から辿ることにより到達可能なそれぞれの葉において、前記それぞれの処理の実行準備および実行にかかる所要時間の累計に基づいて、前記複数の処理についての実行効率を算出し、
    算出した前記実行効率が最大となる葉に基づいて、前記複数の処理の配置パターンを決定する、ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記制御部は、
    取得した前記プロファイル情報を参照して、前記木構造を生成しながら、前記それぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、前記根から葉までのノードを探索することにより、前記複数の処理の配置パターンを決定する、ことを特徴とする請求項1または2に記載の情報処理装置。
  4. 初期状態では前記根が対象ノードに設定されており、
    前記制御部は、
    前記対象ノードに設定されたあるノードの下位に、前記複数の処理のいずれか一つの処理を配置した位置を表す新たなノードを接続し、前記新たなノードを、前記対象ノードに設定する、という動作を繰り返すことにより、前記木構造を生成する、ことを特徴とする請求項3に記載の情報処理装置。
  5. 前記制御部は、
    前記動作を繰り返す際、前記対象ノードに設定されたあるノードが表す位置に配置した処理の実行が、当該処理について設定された期限内に完了可能ではない場合、前記あるノードの親の下位に、前記あるノードが表す位置とは異なる、当該処理を配置した位置を表す新たなノードを接続し、前記新たなノードを、前記対象ノードに設定し、前記あるノードを削除する、ことを特徴とする請求項4に記載の情報処理装置。
  6. 前記制御部は、
    前記動作を繰り返す際、前記対象ノードに設定されたあるノードが葉ではなく、前記あるノードが表す位置に配置した処理の実行が、当該処理について設定された期限内に完了可能であれば、前記あるノードの下位に、当該処理とは異なる処理を配置した位置を示す新たなノードを接続し、前記新たなノードを、前記対象ノードに設定する、ことを特徴とする請求項4または5に記載の情報処理装置。
  7. 前記制御部は、
    前記動作を繰り返す際、前記対象ノードに設定されたあるノードが葉であり、前記あるノードが表す位置に配置した処理の実行が、当該処理について設定された期限内に完了可能であれば、前記あるノードにおいて、前記複数の処理についての実行効率を算出し、
    算出した前記実行効率が最大となる葉に基づいて、前記1以上の演算装置に対する前記複数の処理の配置パターンを決定する、ことを特徴とする請求項4~6のいずれか一つに記載の情報処理装置。
  8. 前記制御部は、
    前記対象ノードに設定されたあるノードの下位に、前記複数の処理に含まれるまだ配置していない処理のうち、比較的短い期限が設定されたいずれか一つの処理を配置した位置を表す新たなノードを接続し、前記新たなノードを、前記対象ノードに設定する、という動作を繰り返す、ことを特徴とする請求項4~7のいずれか一つに記載の情報処理装置。
  9. 異なるモデルを用いて実行される複数の処理のそれぞれの処理について、当該処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を取得し、
    1以上の演算装置に対して前記複数の処理を配置するにあたり、取得した前記プロファイル情報を参照して、前記複数の処理に含まれる処理を配置した位置を表すノードが根から下位へと接続され、階層が深いほど、多くの処理が配置済みとなるよう形成される木構造において、前記それぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、前記根から葉までのノードを探索することにより、前記複数の処理についての実行効率を最大化可能な、前記1以上の演算装置に対する前記複数の処理の配置パターンを決定する、
    処理をコンピュータが実行することを特徴とする情報処理方法。
  10. 情報処理装置と、異なるモデルを用いて実行される複数の処理に含まれる処理を配置可能な1以上の演算装置とを含むシステムであって、
    前記1以上の演算装置のそれぞれの演算装置は、
    当該演算装置に配置された処理の実行準備にかかる所要時間と、当該処理の実行にかかる所要時間とを特定可能にするプロファイル情報を生成し、前記情報処理装置に送信し、
    前記情報処理装置は、
    前記プロファイル情報を、前記演算装置から取得し、
    前記1以上の演算装置に対して前記複数の処理を配置するにあたり、取得した前記プロファイル情報を参照して、前記複数の処理に含まれる処理を配置した位置を表すノードが根から下位へと接続され、階層が深いほど、多くの処理が配置済みとなるよう形成される木構造において、前記複数の処理のそれぞれの処理の実行が、当該処理について設定された期限内に完了可能になるよう、前記根から葉までのノードを探索することにより、前記複数の処理についての実行効率を最大化可能な、前記1以上の演算装置に対する前記複数の処理の配置パターンを決定する、
    ことを特徴とするシステム。
JP2021003322A 2021-01-13 2021-01-13 情報処理装置、情報処理方法、およびシステム Pending JP2022108373A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021003322A JP2022108373A (ja) 2021-01-13 2021-01-13 情報処理装置、情報処理方法、およびシステム
US17/486,982 US20220224956A1 (en) 2021-01-13 2021-09-28 Information processing device, information processing method, and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021003322A JP2022108373A (ja) 2021-01-13 2021-01-13 情報処理装置、情報処理方法、およびシステム

Publications (1)

Publication Number Publication Date
JP2022108373A true JP2022108373A (ja) 2022-07-26

Family

ID=82322391

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021003322A Pending JP2022108373A (ja) 2021-01-13 2021-01-13 情報処理装置、情報処理方法、およびシステム

Country Status (2)

Country Link
US (1) US20220224956A1 (ja)
JP (1) JP2022108373A (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5917492A (en) * 1997-03-31 1999-06-29 International Business Machines Corporation Method and system for displaying an expandable tree structure in a data processing system graphical user interface
IL157512A0 (en) * 2001-02-24 2004-03-28 Ibm A global tree network for computing structures
US6889226B2 (en) * 2001-11-30 2005-05-03 Microsoft Corporation System and method for relational representation of hierarchical data
JP7185133B2 (ja) * 2018-11-21 2022-12-07 富士通株式会社 情報処理装置、情報処理プログラムおよび分析方法
GB202020519D0 (en) * 2018-12-28 2021-02-03 Fujitsu Client Computing Ltd Information processing device, inference processing device, and information processing system
JP6614373B1 (ja) * 2019-02-13 2019-12-04 富士通クライアントコンピューティング株式会社 推論処理システム、推論処理装置及びプログラム

Also Published As

Publication number Publication date
US20220224956A1 (en) 2022-07-14

Similar Documents

Publication Publication Date Title
US20210089355A1 (en) Memory Allocation Method and Apparatus for Neural Network
JP4071668B2 (ja) システムの使用資源を調整する装置および方法
Sethi et al. RecShard: statistical feature-based memory optimization for industry-scale neural recommendation
CN1246778C (zh) 信息处理系统和存储器装置的分配方法
CN104050042B (zh) Etl作业的资源分配方法及装置
JP5121936B2 (ja) リソース割り当て装置及びリソース割り当てプログラム及び記録媒体及びリソース割り当て方法
CN1955912A (zh) 海量存储系统中的资源分配方法
CN112148468B (zh) 一种资源调度方法、装置、电子设备及存储介质
CN1855094A (zh) 对用户电子文件进行处理的方法和装置
Muelder et al. Visual analysis of i/o system behavior for high-end computing
Georgiou et al. Topology-aware job mapping
JP6432333B2 (ja) 情報処理装置、データ処理方法、およびデータ処理プログラム
CN1805424A (zh) 一种网格模拟方法及其模拟器
Cope et al. Robust data placement in urgent computing environments
JP2022108373A (ja) 情報処理装置、情報処理方法、およびシステム
JP2009169757A (ja) 分散処理プログラム、分散処理装置、および分散処理方法
JP5043166B2 (ja) 計算機システム、データ検索方法及びデータベース管理計算機
Iglesias et al. Increasing task consolidation efficiency by using more accurate resource estimations
JP2005208922A (ja) グリッドシステムにおけるジョブ割付方法、グリッド仲介装置及びリソース計算機
CN1848083A (zh) 一般软件要求分析器
Friese et al. Effectively using remote I/O for work composition in distributed workflows
JP2002297407A (ja) Jobスケジュール管理装置、jobスケジュール管理方法及びプログラム
JP6763316B2 (ja) 性能要件推定プログラム、性能要件推定装置、および性能要件推定方法
CN111309821A (zh) 基于图数据库的任务调度方法、装置及电子设备
KR101695238B1 (ko) 다중 컴퓨팅 자원을 이용한 작업 스케줄링 시스템 및 방법