(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
[第1の実施形態]
[第1の実施形態の構成]
本発明の第1の実施形態について図を参照して詳細に説明する。
図1は、本実施形態の解析ノードの構成の概要を示したものである。本実施形態の解析ノードは、解析実行手段1と、内容変動観測手段2と、資源割当手段3を備えている。解析実行手段1は、前段工程および後段工程を少なくとも含む複数の工程からなる解析処理を、工程にそれぞれ割り当てられた計算資源によって実行する。内容変動観測手段2は、前段工程における処理対象データの内容変化を内容変動観測情報として観測する。資源割当手段3は、内容変動観測情報を基に後段工程の処理負荷の変動を予測して、後段工程に割り当てられている計算資源を変更する。
【0014】
[第1の実施形態の効果]
本実施形態の解析ノードは、内容変動観測手段2において、前段工程の内容変化を内容変動観測情報として観測している。また、本実施形態の解析ノードは、資源割当手段3において内容変動観測情報を基に後段工程の負荷の変動を予測して、予測結果を基に後段工程に割り当てられている計算資源を変更している。このように、前段工程の変化を基に、後段工程の負荷を予測して、後段工程への計算資源の割り当てを変更することで、負荷が変動した際にスループットを低下させることなく、解析処理を行うことができる。また、本実施形態の解析ノードは、解析処理を行っている際に前段工程の変化を基に、後段工程への計算資源の割り当てを動的に変更することができるので、計算資源の割り当ての変更を行う際に解析処理の停止を必要としない。その結果、本実施形態の解析ノードを用いることで、負荷変動に対応して計算資源を適切に管理し、高スループットで解析処理を継続的に行うことができる。
【0015】
[第2の実施形態]
[第2の実施形態の構成]
本発明の第2の実施形態について図を参照して詳細に説明する。
図2は、本実施形態の解析システムの構成を示したものである、本実施形態の解析システムは、解析ノード10と、データ取得部20を備えている。
【0016】
本実施形態の解析システムは、データ取得部20から解析ノード10に入力されたデータの解析を、解析ノード10において前段工程と後段工程の2段階の解析処理によって行う。本実施形態の解析システムは、例えば、入力された映像データから人の顔を検出し、さらに検出した顔の特徴を抽出する映像解析システムとして用いられる。
【0017】
解析ノード10の構成について説明する。
図3は、本実施形態の解析ノード10の構成を示すブロック図である。解析ノード10は、解析実行部100と、負荷観測部200と、内容変動観測部300と、観測データ記憶部400と、資源割当部500を備えている。
【0018】
解析実行部100は、データ取得部20から入力されたデータの解析処理を行う。解析実行部100は、前段解析部110と、後段解析部120をさらに備えている。前段解析部110は、複数の解析ワーカ111をさらに備えている。また、後段解析部120は、複数の解析ワーカ121をさらに備えている。
図3では、解析ワーカ111および解析ワーカ121をそれぞれ2つずつ備えている例を示しているが、解析ワーカ111および解析ワーカ121は、単数であってもよく、また、3つ以上であってもよい。
【0019】
解析実行部100は、前段解析部110の解析ワーカ111において、入力されたデータに前段工程として1次処理を施す。また、解析実行部100は、後段解析部120の解析ワーカ121において、1次処理の処理結果に後段工程として2次処理を施して最終結果として出力する。前段解析部110の解析ワーカ111は、1次処理の処理結果のデータのうち所定の品質基準を満たしたデータのみを後段解析部120に出力する。所定の品質基準は、後段工程における解析処理を正常に行うことができるデータであるかを判断する基準として設定されている。
【0020】
本実施形態の解析システムが、例えば、映像解析システムとして用いられているとき、解析ワーカ111は、前段工程として、データ取得部20から映像データから、映像に映っている人の顔を検出する。前段解析部110の解析ワーカ111は、検出した顔のうち基準以上の大きさの顔のデータを解析結果として後段解析部120に出力する。
【0021】
前段解析部110が解析結果のデータとして出力する顔の大きさを判断する際の基準は、後段解析部120における後段工程において顔の特徴量を抽出するために十分な大きさとしてあらかじめ設定されている。すなわち、本実施形態の解析システムが映像解析システムとして用いられているとき、所定の品質基準は、顔の大きさとして設定されている。
【0022】
後段解析部120は、解析ワーカ121において前段解析部110から入力されたデータの後段工程の解析処理を行って、処理結果を最終結果として出力する。本実施形態の解析システムが映像解析システムとして用いられているとき、後段解析部120の解析ワーカ121は、後段工程として、解析ワーカ111において検出された顔から顔の特徴量を抽出する。すなわち、前段解析部110は、解析タスクとして入力された映像データから顔の検出を行う。また、後段解析部12は、解析タスクとして検出された顔から顔の特徴量のデータの抽出を行う。
【0023】
解析実行部100は、複数のコアを有するCPU(Central Processing Unit)、半導体記憶装置およびCPUコアで実行するプログラムを記録するハードディスクドライブ等によって構成されている。CPUコアで実行するプログラムとしては、OS(Operating System)および解析処理用のプログラムが記録されている。OSおよび解析処理用のプログラムは、不揮発性の半導体記憶装置に記録されていてもよい。前段解析部110および後段解析部120は、それぞれに割り当てられたCPUコアにおいてデータの解析処理を行う。また、本実施形態の解析実行部100は、第1の実施形態の解析実行手段1に相当する。
【0024】
負荷観測部200は、解析実行部100の計算資源の負荷を観測し、観測した結果を負荷観測データとして観測データ記憶部400に保存する。負荷観測部200は、計算資源の負荷として、例えば、解析実行部100の計算資源であるCPUコアやメモリの消費量を観測する。CPUコアの消費量は、例えば、CPUコアの使用時間として観測される。また、メモリの消費量は、解析処理に使用している記憶容量の値として観測される。負荷観測部200は、負荷観測データとして解析処理のスループットを観測してもよい。
【0025】
図4は、映像解析システムにおいて負荷観測部200が観測した負荷観測データの例を示したものである。
図4の負荷観測データは、フェーズID、カメラID、WorkerID、消費CPU、消費メモリおよび観測日時の情報によって構成されている。フェーズIDは、前段工程と後段工程のどちらの処理を行っているかを示している。
図4では、前段工程の処理が「顔検出」、後段工程の処理が「顔特抽」として示されている。フェーズIDには、実行内容を示す文字列、数値またはフラグなどを用いることができる。また、フェーズIDには、前段または後段を示すフラグを用いてもよい。カメラIDは、解析対象の映像データの送信元のカメラの識別子を示している。
図4では、カメラIDが「1」と「2」の2台のカメラから映像データが入力されている。
【0026】
WorkerIDは、解析ワーカ111および解析ワーカ121の識別子を示している。WorkerIDの識別子には、OSのプロセスID、起動時に割り振られたシーケンス番号または文字列などを用いることもできる。消費CPUおよび消費メモリは、CPUコアおよびメモリの消費量をそれぞれ示している。観測日時は、負荷観測データを観測した日時を示している。
【0027】
内容変動観測部300は、前段解析部110における解析対象データの内容変化を観測し、観測した結果を内容観測データとして観測データ記憶部400に保存する。内容変動観測部300は、前段解析部110が後段解析部120に出力する解析結果のデータ数と、内部的に保持している解析結果のデータ数を取得し、観測データ記憶部400に保存する。本実施形態では、前段解析部110が後段解析部120に出力せずに内部的に保持しているデータを内部情報と呼ぶ。また、本実施形態の内容変動観測部300は、第1の実施形態の内容変動観測手段2に相当する。
【0028】
解析システムが映像解析システムの場合、内部情報は、前段解析部110が画像から検出した顔のうち、基準よりも小さいために後段解析部120の処理に送られない顔の検出結果が該当する。
【0029】
図5は、映像解析システムにおける内容観測データの例を示したものである。
図5の内容観測データは、フェーズID、カメラID、項目、解析結果、内部情報および観測日時の情報によって構成されている。フェーズIDは、観測対象の処理内容を示している。フェーズIDの「顔検出」は、前段工程における顔の検出処理を示している。フェーズIDには、解析内容を示す文字列に代えて、数値やフラグなどをもちいてもよい。カメラIDは、解析用の映像データの送信元のカメラの識別子を示している。項目は、観測している映像データの属性を示している。映像データに含まれる顔の数を処理対象とするので、
図5では、項目として「対象数」が設定されている。解析結果は、前段解析部110の解析ワーカ111が後段解析部120に出力するデータに含まれるデータ数を示している。内部情報は、前段解析部110の解析ワーカ111が後段解析部120に出力しないデータ数を示している。解析結果および内容情報は、数値データ以外であってもよい。解析結果および内容情報は、例えば、行列やベクトルなどの値であってもよい。観測日時は、内容観測データを観測した日時を示している。
【0030】
観測データ記憶部400は、内容変動観測部300が前段解析部110から取得した解析対象データの内容変化の情報を保存する。内容変化とは、例えば、解析結果および内容情報のデータ数の変化のことをいう。また、観測データ記憶部400は、負荷観測部200が観測した解析実行部100の負荷観測データを保存する。観測データ記憶部400は、例えば、半導体記憶装置によって構成されている。観測データ記憶部400は、ハードディスクドライブ等の他の記憶装置によって構成されていてもよい。
【0031】
資源割当部500は、前段解析部110で行われている解析処理の変化を観測した内容観測データを基に、後段解析部120へのCPUコアやメモリ等の計算資源の割り当てを動的に変更する機能を有する。資源割当部500は、負荷変動予測部501と、資源割当計画部502をさらに備えている。
【0032】
負荷変動予測部501は、内容観測データと、負荷観測データを基に、後段解析部120で発生する負荷を予測する。負荷変動予測部501は、観測データ記憶部400から内容観測データおよび負荷観測データを取得し、後段解析部120の負荷を予測し、負荷情報として資源割当計画部502に出力する。
【0033】
資源割当計画部502は、負荷情報を基に後段解析部120に割り当てられている計算資源量を変更する。資源割当計画部502は、例えば、解析ワーカ121に対応するOSのプロセス数を増減させる。解析ワーカ121に割り当てられるCPUコアの数やメモリの容量などを変更することで、資源の最適な割り当てを行うことができる。また、本実施形態の資源割当部500は、第1の実施形態の資源割当手段3に相当する。
【0034】
負荷観測部200、内容変動観測部300および資源割当部500は、CPU、半導体記憶装置および各処理を実行するプログラムが記録されたハードディスクドライブ等によって構成されている。負荷観測部200、内容変動観測部300および資源割当部500は、それぞれ独立したユニットであってもよく、また、同一のユニットにおいて動作してもよい。また、負荷観測部200、内容変動観測部300および資源割当部500を構成するCPUや記憶装置は、解析実行部100および観測データ記憶部400のいずれか、または、両方と同一のユニットであってもよい。
【0035】
データ取得部20は、解析用データを取得し、取得したデータを解析ノード10に送る。解析システムが映像解析システムであるとき、データ取得部20は、例えば、映像を撮影するカメラが該当する。カメラによって撮影された映像データは、通信回線を介して解析ノード10に伝送される。本実施形態の解析システムは、データ取得部20を2つ備えている。データ取得部20の数は、2つ以外であってもよい。
【0036】
[第2の実施形態の動作]
本実施形態の解析システムの動作について説明する。始めに解析システムの起動時の動作について説明する。
図6は、本実施形態の解析システムにおけるシステム起動動作を示したものである。
【0037】
作業者の操作等によって解析システムの起動が行われ解析ノード10が起動すると、解析実行部100は、解析ワーカ111と、解析ワーカ121を初期配置で起動する(ステップA1)。初期配置は、解析システムの仕様等に基づいてあらかじめ設定されている。
【0038】
解析ワーカ111および解析ワーカ121を初期配置で起動すると、解析実行部100は、データ取得部20から入力される解析対象のデータの解析を行う。解析実行部100に解析対象のデータが入力されると、前段解析部110の解析ワーカ111は、前段工程として、入力されたデータの解析を行う。前段解析部110は、解析結果を前段工程における1次処理の結果として後段解析部120に送る。
【0039】
後段解析部120に1次処理の処理結果が入力されると、後段解析部120の解析ワーカ121は、後段工程として、1次処理の処理結果の解析を行う。後段解析部120は、解析結果を後段工程における2次処理の結果、すなわち、最終結果として出力する。
【0040】
解析実行部100は、入力される解析対象のデータの解析および出力を、解析対象のデータが入力されるごとに繰り返し行う。
【0041】
次に、本実施形態の解析システムにおいて計算資源の割り当てを変更する際の動作について説明する。
図7は、本実施形態の解析システムにおいて計算資源の割り当てを動的に変更する際の動作フローを示したものである。
【0042】
解析実行部100が入力されたデータの解析および出力を行っている際に、負荷観測部200は、解析実行部100の前段解析部110および後段解析部120の負荷を監視する。負荷観測部200は、前段解析部110および後段解析部120の負荷の情報を負荷観測データとして収集する(ステップB1)。負荷観測部200は、収集した負荷観測データを観測データ記憶部400に保存する。
【0043】
また、内容変動観測部300は、前段解析部110から解析結果と内部情報を内容観測データとして収集する(ステップB2)。内容変動観測部300は、収集した内容観測データを観測データ記憶部400に保存する。
【0044】
負荷観測データおよび内容観測データが保存されると、負荷変動予測部501は、観測データ記憶部400に保存された負荷観測データおよび内容観測データを基に、後段解析部120の負荷変動を予測する(ステップB3)。
【0045】
負荷変動予測部501は、例えば、過去の負荷変動の履歴を基にした学習モデルベースの予測によって後段解析部120の負荷変動の予測を行う。また、負荷変動予測部501は、あらかじめ設定されたルールに基づくルールベースでの予測によって後段解析部120の負荷変動の予測を行ってもよい。負荷変動予測部501は、負荷変動の予測を行うと、予測結果を資源割当計画部502に送る。
【0046】
資源割当計画部502は、負荷変動の予測結果を受け取ると、後段解析部120内の解析ワーカ121の数と解析ワーカ121への計算資源の割り当てを変更する(ステップB4)。資源割当計画部502によって後段解析部120の構成が再設定されると、解析実行部100は、再設定された構成に基づいて、入力される解析対象のデータの解析および出力を行う。解析システムが動作しているとき(ステップB5でNo)、解析ノード10の各部位は、ステップB1からの処理を繰り返し行う。また、解析システムが停止したとき(ステップB5でYes)、解析ノード10の各部位は動作を停止する。
【0047】
次に、本実施形態の解析システムを映像解析システムとして用いた場合を例に、解析システムの動作について、より具体的に説明する。以下では、データ取得部20である2台のカメラから入力される映像データについて人の顔の検出と特徴量抽出の2段階の処理を、解析ノード10である6つのコアを有するCPUを備えたサーバで処理する場合の動作を例に説明を行う。また、以下の説明では、前段解析部110において顔検出処理を行う解析ワーカ111は、初期設定として、各カメラについて1プロセス、合計2プロセス設定されているとする。また、後段解析部120において顔の特徴量の抽出処理を行う解析ワーカ121は、初期設定として、カメラ1について2プロセス、カメラ2について3プロセスの合計5プロセス設定されているとする。また、各プロセスはCPUコアを1つまで使用できるものする。
【0048】
カメラとして備えられているデータ取得部20から映像データが解析ノード10として備えられているサーバに入力されると、解析実行部100は、初期設定に基づいて映像データの解析を行う。初期設定に基づいて、解析実行部100は、解析実行部100が入力されたデータの解析を行っている際に、内容変動観測部300は、前段解析部110から内容観測データを収集し、観測データ記憶部400に保存する。
【0049】
図8は、解析ノード10に入力される映像に含まれる映像フレームの例を模式的に示したものである。
図8のような映像フレームを処理する場合には、前段解析部110は、例えば、画像の中の通路801を通行する人の顔を検知する。
【0050】
前段解析部110は、検知した顔802および顔803のうち、カメラに近く十分な大きさで写っている顔803について、顔照合などの入力データとして品質が十分であると判断する。顔照合などの入力データとして品質が十分であると、前段解析部110は、顔803を検知した情報を、顔の特徴量の抽出に用いるための解析結果として後段解析部120に送る。また、前段解析部110は、カメラから遠く小さく写っている顔802について、顔照合などの入力データとして不適合と判断し、後段解析部120には送られない。前段解析部110は、後段解析部120に送らない顔802のデータ数を、内部情報として保持する。
【0051】
前段解析部110が
図8の画像について上記のような処理を行ったとき、内容変動観測部300は、十分な大きさで写っている顔803の数である5をカメラ1についての解析結果として取得する。また、内容変動観測部300は、カメラから遠く小さく写っている顔802の数である12をカメラ1についての内部情報として取得する。内容変動観測部300は、解析結果および内部情報の数を取得すると、取得した解析結果および内部情報の数を内部観測データとして観測データ記憶部400に保存する。
【0052】
また、負荷観測部200は、解析実行部100内の解析ワーカ111および解析ワーカ121から負荷情報を収集する。負荷観測部200は、収集した負荷情報を観測データ記憶部400に負荷観測データとして保存する。
【0053】
図4の例では、前段解析部110の解析ワーカ111である「Worker ID=顔検出_1−1」プロセスが、CPUコアを78パーセント消費し、732MBのメモリを消費している。サーバは、6コアのCPUによって構成されているので、CPUの消費量は600パーセント以下である必要がある。
図4では、解析ワーカ111および解析ワーカ121において実行される5プロセスのCPUコアの使用率の合計は492パーセントである。そのため、
図4の例ではCPUコアの使用率に108パーセントの余剰がある。
【0054】
次に、負荷変動予測部501は、現時刻TよりΔt時間前からの内容観測データを観測データ記憶部400から取得する。負荷変動予測部501は、取得した内容観測データを基に、内容変化を予測する。
図9は、モデルベースで予測を行う場合の例を概念図として示している。
【0055】
図9の例では、負荷変動予測部501は、負荷変動を表現する複数のモデル関数f
1(R,I)からf
N(R,I)を保持している。Rは、内容観測データ内の解析結果のデータ数である。また、Iは、内容観測データ内の内部情報のデータ数である。
【0056】
現時刻TからΔt時間前からの内部観測データを基に、負荷変動予測部501は、直近の内容変動を最もよく表現するモデルf
n(R,I)を選択する。内容変動を最もよく表現するモデルf
n(R,I)を選択すると、負荷変動予測部501は、現時刻Tにおける解析結果のデータ数R=5と、内部情報のデータ数I=12をモデルの引数としてf
n(5,12)を計算する。負荷変動予測部501は、時刻T+1以降の後段解析部120における解析対象のデータ数を予測する。また、負荷変動予測部501は、カメラ2についても同様の方法で後段解析部120における負荷を予測する。負荷変動予測部501は後段解析部120における負荷を予測すると、予測結果を資源割当計画部502に送る。
【0057】
負荷変動予測部501は、負荷変動の予測を、上記のようなモデルベースの手法に代えて、ルールベースなどの他の予測手法によって行ってもよい。
【0058】
負荷変動予測部501から負荷変動の予測結果を受け取ると、資源割当計画部502は、観測データ記憶部400が保存している負荷観測データと、負荷変動の予測結果の負荷予測値を基に、後段解析部120における解析ワーカ121の数の最適値を算出する。
【0059】
図10は、後段解析部120において解析を行うデータ数および解析ワーカ121の数の実数と予測値の例を模式的に示したものである。
図10において、負荷変動予測部501は、時刻T以降においてカメラ1の負荷の増加を予測している。しかし、
図4に示す負荷観測データでは、既にカメラ1の顔特徴量の抽出処理にCPUコアの179パーセントを消費している。プロセス2つに割り当てられたCPUコアの使用可能量200パーセントに対して、既に179パーセント消費しているため、増加する負荷に耐えられない可能性が高い。
【0060】
一方で、
図10に示すように、カメラ2については、時刻T以降において、負荷の減少が予測されている。カメラ2の顔特徴量の抽出処理において必要なCPUコアの消費量は164パーセントである。そのため、カメラ2の顔特徴量の抽出処理において必要なCPUコアの消費量はプロセス3つに割り当てられたCPUコアの使用可能量300パーセントに対して余裕がある。このようなとき、資源割当計画部502は、時刻T以降の処理において、カメラ1の解析ワーカ121を1プロセス増加し、カメラ2の解析ワーカ121を1プロセス削減する。
【0061】
このように、前段解析部110において行われる処理を監視して、後段解析部120の解析ワーカ121の構成を動的に見直すことで、後段解析部120における処理を効率的に行うことができる。
【0062】
[第2の実施形態の効果]
本実施形態の解析システムでは、資源割当部500が前段解析部110の内容変動観測データを基に、後段解析部120の負荷を予測している。また、資源割当部500は、負荷の予測を基に、後段解析部120の解析ワーカの数だけを増減させている。そのため、本実施形態の解析システムは、計算資源の割り当てを変更する際に、解析ノード10を停止させることなく、計算資源の割り当てを最適化することができる。
【0063】
また、本実施形態の解析システムでは、内容変動観測部300が解析対象の内容の変動を観測している。また、資源割当部500は、内容の変動の観測結果を基に、後段解析部120の負荷を予測している。よって、資源割当部500は、実際に後段解析部120の負荷が増加または減少する前に、解析ワーカ121の数を最適な数に変更することできる。そのため、本実施形態の解析システムは、負荷変動が頻繁に発生するシステムにおいて、リアルタイム性と高スループットを両立することができる。すなわち、本実施形態の解析システムは、負荷変動に対応して計算資源を適切に管理し、高スループットで解析処理を継続的に行うことができる。
【0064】
[第3の実施形態]
[第3の実施形態の構成]
本発明の第3の実施形態について図を参照して詳細に説明する。
図11は、本実施形態の解析システムの構成を示したものである、本実施形態の解析システムは、第1の解析ノード30と、第2の解析ノード40と、データ取得部20を備えている。データ取得部20の構成は、第2の実施形態と同様である。
【0065】
本実施形態の解析システムは、第1の解析ノード30において後段工程に十分な計算資源の割り当てを行えないとき、第2の解析ノード40において解析処理の一部を分散処理することを特徴する。本実施形態の解析システムは、第2の実施形態と同様に、入力された映像データから人の顔を検出し、さらに検出した顔の特徴を抽出する映像解析システムなどに用いることができる。
【0066】
第1の解析ノード30の構成について説明する。
図12は、本実施形態の第1の解析ノード30の構成を示すブロック図である。第1の解析ノード30は、解析実行部600と、負荷観測部200と、内容変動観測部300と、観測データ記憶部400と、資源割当部700を備えている。
【0067】
本実施形態の負荷観測部200、内容変動観測部300および観測データ記憶部400の構成と機能は、第2の実施形態の同名称の部位と同様である。
【0068】
解析実行部600は、データ取得部20から入力されたデータの解析を行う。解析実行部600は、前段解析部110と、後段解析部620をさらに備えている。前段解析部110は、複数の解析ワーカ111をさらに備えている。本実施形態の前段解析部110および解析ワーカ111の構成と機能は、第2の実施形態の同名称の部位と同様である。
【0069】
後段解析部620は、複数の解析ワーカ121と、タスク送信部630をさらに備えている。本実施形態の解析ワーカ121の構成と機能は、第2の実施形態の解析ワーカ121と同様である。
【0070】
タスク送信部630は、資源割当計画部702の制御に基づいて、他の解析ノードに解析タスクを送信する機能を有する。タスク送信部630は、資源割当計画部702が自装置の後段解析部620で処理しきれないと判断した解析タスクを、資源割当計画部702からの送信指示に基づいて、第2の解析ノード40に送信する。
【0071】
解析実行部600は、第2の実施形態の解析実行部100と同様に、複数のコアを有するCPU、半導体記憶装置およびCPUコアで実行するプログラムを記録するハードディスクドライブ等によって構成されている。
【0072】
資源割当部700は、負荷変動予測部501と、資源割当計画部702を備えている。本実施形態の負荷変動予測部501の構成と機能は、第2の実施形態の負荷変動予測部501と同様である。
【0073】
資源割当計画部702は、第2の実施形態の資源割当計画部502と同様の機能を有する。また、資源割当計画部702は、解析タスクの処理に必要な計算資源が自装置の後段解析部620に割り当てられている計算資源内であるかを判断する機能をさらに有する。資源割当計画部702は、解析タスクの処理に必要な計算資源を自装置の後段解析部620において確保できないと判断したときに、解析タスクの一部を第2の解析ノード40に送信する指示をタスク送信部630に送る。
【0074】
資源割当部700は、第2の実施形態の資源割当部500と同様に、CPU、半導体記憶装置および各処理を実行するプログラムが記録されたハードディスクドライブ等によって構成されている。
【0075】
第2の解析ノード40は、第1の解析ノード30と同一の構成の解析ノードを用いることができる。また、第2の解析ノード40は、後段工程の処理のみを実行する解析ノードであってもよい。
【0076】
[第3の実施形態の動作]
本実施形態の解析システムの動作について説明する。
図13は、本実施形態の解析システムにおいて、解析処理の一部を分散処理によって行う際の動作フローを示したものである。
【0077】
本実施形態の解析システムにおいて、初期設定でシステムを起動し、初期設定に基づいて解析処理が行われている際に、内容観測データおよび負荷観測データの収集が行われる動作は、第2の実施形態と同様である。
【0078】
すなわち、解析実行部600が入力されたデータの解析および出力を行っている際に、負荷観測部200は、解析実行部600の前段解析部110および後段解析部620を監視し、前段解析部110および後段解析部620の負荷観測データを収集する。負荷観測部200は、収集した負荷観測データを観測データ記憶部400に保存する。
【0079】
また、内容変動観測部300は、前段解析部110から解析結果と内部情報を内容観測データとして収集する。内容変動観測部300は、収集した内容観測データを観測データ記憶部400に保存する。
【0080】
負荷観測データおよび内容観測データが保存されると、負荷変動予測部501は、観測データ記憶部400に保存された負荷観測データおよび内容観測データを基に、後段解析部620の負荷変動を予測する。負荷変動予測部501は、負荷変動の予測を行うと、予測結果を資源割当計画部702に送る。資源割当計画部702は、負荷変動の予測結果を受け取ると、後段解析部620の計算資源の割り当ての見直しを行う(ステップC1)。
【0081】
計算資源の割り当ての見直しを行った際に、解析システムが停止しているとき(ステップC2でYes)、第1の解析ノード30の各部位は処理を停止する。
【0082】
解析システムが動作を継続しているとき(ステップC2でNo)、資源割当計画部702は、負荷変動の予測結果を受け取ると、後段解析部620において必要な計算資源を確保できるかを判断する。必要な資源を確保できた場合には(ステップC3でYes)、資源割当計画部702は、第2の実施形態と同様に、後段解析部620内の解析ワーカの数や、解析ワーカへの資源の割り当てを変更する。
【0083】
資源割当計画部702によって計算資源の構成が再設定されると、解析実行部600は、再設定された構成に基づいて、入力される解析対象のデータの解析および出力を行う。解析実行部600が再設定された構成に基づいて解析処理を行うと、第1の解析ノード30の各部位は、ステップC1からの動作を繰り返し行う。
【0084】
必要な資源を確保できない場合には(ステップC3でNo)、資源割当計画部702は、タスク送信部630を生成する(ステップC4)。タスク送信部630を生成すると、資源割当計画部702は、タスク送信部630に後段解析部620における解析タスクの一部を第2の解析ノード40に送信する指示を送る。
【0085】
解析タスクの一部を第2の解析ノード40に送信する指示を受け取ると、タスク送信部630は、指示された解析タスクを第2の解析ノード40に送信する(ステップC5)。第1の解析ノード30の後段解析部620および第2の解析ノード40は、それぞれに割り当てられた解析タスクの処理を行い、処理結果を最終結果として出力する。
【0086】
また、タスク送信部630から、解析タスクの一部が第2の解析ノード40に送られて解析処理が行われると、第1の解析ノード30の各部位および第2の解析ノード40は、システムが動作している間、上記の動作を繰り返し行う。
【0087】
次に、本実施形態の解析システムを映像解析システムに適用した場合において、解析タスクの分散処理を行う場合の動作についてより詳細に説明する。
【0088】
以下では、顔の検出と特徴量抽出の2段階からなる映像解析を2台のカメラ映像に対して、5つのコアを有するCPUを備えるサーバで処理する場合について説明する。また、初期配置として、前段解析部110において顔検出処理を行う解析ワーカ111に、各カメラについて1プロセスずつの合計2プロセス設定されているとする。また、後段解析部620において顔の特徴量の抽出を行う処理を行う解析ワーカ621に、カメラ1について2プロセス、カメラ2について3プロセスの合計5プロセスが設定されているとする。また、各プロセスはCPUコアを1つまで使用できるものとする。
【0089】
資源割当計画部702は、観測データ記憶部400が保存している負荷観測データと、負荷変動予測部501が予測した負荷予測データを基に、後段解析部620における解析ワーカ121の数の最適値を算出する。
【0090】
図4のような状態のとき、
図10に示しように負荷変動予測部501は、カメラ1の負荷の増加を予測する。しかし、
図4に示すように、既にカメラ1の顔特徴抽出処理では、プロセス2つに割り当てられたCPUコアの使用可能量200パーセント分の処理能力に対して179パーセントを消費している。そのため、資源割当計画部702は、現在の設定では増加する負荷に耐えられないと判断する。
【0091】
第1の解析ノード30は、5コアを有するCPUを備えているため、CPUコアの消費量は合計で500パーセントを上回ることはできない。しかし、
図4の例では、配備されている解析ワーカ111および解析ワーカ121の合計5プロセスのCPUコア使用率は492パーセントであり、8パーセントの余剰しかない。よって、カメラ1に対して、顔特徴抽出処理を実行するプロセスをさらに追加して計算資源を割り当てることができない。そのため、資源割当計画部702は、自装置において後段工程の処理を全て実行することは出来ないと判断する。
【0092】
自装置において全ての処理を実行できないと判断すると、資源割当計画部702は、タスク送信部630を生成し、後段解析部620の解析ワーカ121の1プロセスに相当する解析タスクを、タスク送信部630から第2の解析ノード40に送信する。第1の解析ノード30と第2の解析ノード40で分散処理を行うことで、処理速度を落とすことなく処理を継続することができる。
【0093】
[第3の実施形態の効果]
本実施形態の解析システムでは、資源割当計画部702は、第1の解析ノード30の解析ワーカ121の増減に加えて、第2の解析ノード40にタスクを送信するためのタスク送信部630を生成している。本実施形態の解析システムでは、タスク送信部630が、第2の解析ノード40に、自装置で処理できない解析タスクを分散することで、負荷が自装置の処理の能力を超えて増大した場合にも解析システム全体のスループットを維持することができる。
【0094】
第3の実施形態では、解析ノードが2台の例について示したが、解析システムは、解析ノードを3台以上備えていてもよい。そのような構成とした場合に、タスクの送信元の解析ノードは、他の解析ノードにタスクを均等に分配してもよく、負荷の小さい解析ノードにタスクを送信してもよい。また、各解析ノードに、カメラ等から解析用のデータの入力が行われ、それぞれの解析ノードで解析処理を行いつつ、処理能力が足りないときに互いにタスクを送信する構成としてもよい。そのような、構成とすることで、計算資源をより効率的に活用することができる。
【0095】
また、第3の実施形態では、第1の解析ノード30から第2の解析ノード40に直接、タスクを送信しているが、メッセージキューを介して、複数の解析ノードに均一にタスクを分散する構成としてもよい。
【0096】
第2および第3の実施形態では、前段工程と後段工程の2段階の処理を行っているが、3段階以上の解析処理を行ってもよい。3段階以上の解析処理を行う場合にも、いずれかの工程の内容変動を基に、内容変動を観測した工程よりも後段の工程に割り当てる計算資源を動的に変更することで、解析システムと停止せずに負荷変動に対応して計算資源を適切に管理することができる。
【0097】
また、第2のおよび第3の実施形態の解析システムは、起動時に初期設定に基づいて動作しているが、起動時に、以前に動作した際の後段工程への計算資源の割り当てに基づいて動作が行われるようにしてもよい。そのような構成とすることで、起動時から効率的に計算資源を活用して動作することが可能になる。
【0098】
第2および第3の実施形態では、人の顔を検出する映像解析システムを例に説明をしたが、映像解析システムの解析対象は、人以外の生物や物であってもよい。また、第2および第3の実施形態の解析システムは、複数段階の処理によってデータを処理する用途であれば、映像解析システム以外の用途のシステムに用いてもよい。
【0099】
第1乃至第3の実施形態の解析ノードの各機能に相当する処理は、コンピュータプログラムとしてコンピュータで実行されるようにしてもよい。また、第1乃至第3の実施形態に示した各処理をコンピュータに実行させることのできるプログラムは、記録媒体に格納して頒布することもできる。記録媒体としては、例えば、データ記録用磁気テープや、ハードディスクなどの磁気ディスクを用いることができる。また、記録媒体としては、CD-ROM(Compact Disc Read Only Memory)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto Optical disk)を用いることもできる。半導体メモリを記録媒体として用いてもよい。
【0100】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【0101】
この出願は、2016年11月22日に出願された日本出願特願2016−226465を基礎とする優先権を主張し、その開示の全てをここに取り込む。