(57)【要約】      （修正有）【課題】推論処理に係る可用性を向上させることが可能な情報処理システム、情報処理装置及びプログラムを提供する。【解決手段】情報処理装置は、複数の推論処理装置と、処理内容が異なる推論処理を推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう推論処理装置の入出力を制御する制御部と、障害が発生した推論処理装置を検出する障害検出部と、障害検出部で障害の発生が検出された場合に、障害が発生した推論処理装置で実行されていた推論処理を、推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、障害が発生した推論処理装置の前段の推論処理で導出された推論結果を他の推論処理装置に入力し、推論結果に基づく他の推論処理装置の推論結果を、障害が発生した推論処理装置の後段の推論処理装置に出力する第２障害対応部と、を備える。【選択図】図２
2020135060.tif 000002
【特許請求の範囲】
【請求項１】
複数の推論処理装置と、
処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する制御部と、
障害が発生した前記推論処理装置を検出する障害検出部と、
前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、
障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する第２障害対応部と、
を備える情報処理システム。
【請求項２】
前記複数の推論処理装置は、待機系の推論処理装置を含み、
前記第１障害対応部は、前記他の推論処理装置として、前記待機系の前記推論処理装置を選択する、請求項１に記載の情報処理システム。
【請求項３】
前記第１障害対応部は、前記他の推論処理装置として、障害が発生した前記推論処理装置の前段又は後段の推論処理装置を選択する、請求項１に記載の情報処理システム。
【請求項４】
前記第１障害対応部は、前記他の推論処理装置として、障害が発生した前記推論処理装置以外の前記推論処理装置のうち、前記推論処理の負荷が低い推論処理装置を選択する、請求項１に記載の情報処理システム。
【請求項５】
前記推論処理装置の各々から出力された前記推論結果を保持する保持部を更に備え、
前記第２障害対応部は、前記保持部が保持する前記推論結果のうち、障害が発生した前記推論処理装置の前段の前記推論処理装置で実行されていた推論処理の推論結果を、前記他の推論処理装置に入力する、請求項１〜４の何れか一項に記載の情報処理システム。
【請求項６】
前記推論処理装置の各々は、自己の推論処理の推論結果を保持する保持部を更に備え、
前記第２障害対応部は、障害が発生した前記推論処理装置の前段の推論処理装置が保持する推論結果を、前記他の推論処理装置に入力する、請求項１〜４の何れか一項に記載の情報処理システム。
【請求項７】
前記第２障害対応部は、前記他の推論処理装置の推論結果が出力された後、障害が発生した前記推論処理装置の前段の前記推論処理装置の出力先を、前記他の推論処理装置に設定する、請求項１〜６の何れか一項に記載の情報処理システム。
【請求項８】
複数の推論処理装置と接続可能な情報処理装置であって、
処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する制御部と、
障害が発生した前記推論処理装置を検出する障害検出部と、
前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、
障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する第２障害対応部と、
を備える情報処理装置。
【請求項９】
複数の推論処理装置と接続可能な情報処理装置のコンピュータを、
処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する制御部と、
障害が発生した前記推論処理装置を検出する障害検出部と、
前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、
障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する第２障害対応部と、
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
予め機械学習により生成された学習済みモデルを有する推論処理装置では、その学習済みモデルを用いて様々な推論処理を行うことがある。
【０００３】
また、上記の推論処理に関し、例えば、複数の推論処理装置を並列接続し、前段の推論処理装置で行われた推論処理の結果を用いて後段の推論処理装置が推論処理を行う、パイプライン処理型の装置構成が存在する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−１２０５４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記したパイプライン処理型の装置構成では、複数段に亘る推論処理のうち何れかの段階で障害が発生すると、一連する推論処理が途中で中断されてしまうことになる。そのため、最終結果となる推論結果を出力することができず、可用性に欠けるという問題がある。
【０００６】
開示の技術は、上記に鑑みてなされたものであって、推論処理に係る可用性を向上させることが可能な情報処理システム、情報処理装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１態様に係る情報処理システムは、複数の推論処理装置と、制御部と、第１障害対応部と、第２障害対応部とを備える。制御部は、処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する。障害検出部は、障害が発生した前記推論処理装置を検出する。第１障害対応部は、前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる。第２障害対応部は、障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する。
【０００８】
本発明の第２態様に係る情報処理装置は、複数の推論処理装置と接続可能な情報処理装置であって、制御部と、障害検出部と、第１障害対応部と、第２障害対応部とを備える。制御部は、処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する。障害検出部は、障害が発生した前記推論処理装置を検出する。第１障害対応部は、前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる。第２障害対応部は、障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する。
【０００９】
本発明の第３態様に係るプログラムは、複数の推論処理装置と接続可能な情報処理装置のコンピュータを、処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する制御部と、障害が発生した前記推論処理装置を検出する障害検出部と、前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する第２障害対応部と、して機能させる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態に係る情報処理システムのハードウェア構成の一例を示す図である。
【図２】図２は、実施形態に係る情報処理装置及び推論処理装置の機能構成の一例を示す図である。
【図３】図３は、実施形態に係る途中結果のデータフォーマットの一例を示す図である。
【図４】図４は、実施形態の障害対応処理部によって実行される障害対応処理の一例を示すフローチャートである。
【図５】図５は、実施形態に係る情報処理システムの正常動作時の入出力状態の一例を模式的に示す図である。
【図６】図６は、実施形態に係る情報処理システムの障害発生時の入出力状態の一例を模式的に示す図である。
【図７】図７は、変形例１に係る情報処理システムの正常動作時の入出力状態の一例を模式的に示す図である。
【図８】図８は、変形例１に係る情報処理システムの障害発生時の入出力状態の一例を模式的に示す図である。
【図９】図９は、変形例２に係る情報処理システムの正常動作時の入出力状態の一例を模式的に示す図である。
【図１０】図１０は、変形例２に係る情報処理システムの障害発生時の入出力状態の一例を模式的に示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する情報処理システム、情報処理装置及びプログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により開示技術が限定されるものではない。また、実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略される。
【００１２】
図１は、実施形態に係る情報処理システム１のハードウェア構成の一例を示す図である。図１に示すように、情報処理システム１は、情報処理装置１００、中継装置２００、推論処理装置３００−１〜３００−４を有する。ここで、推論処理装置３００−１〜３００−３は、通常時に使用される稼働系の推論処理装置であり、後述する推論処理等を実行する。一方、推論処理装置３００−４は、通常時には使用されない待機系の推論処理装置である。以下では、稼働系の推論処理装置３００−１〜３００−３を、総称して推論処理装置３００と表記する場合がある。また、後述する変換ボード３０１−１〜３０１−４、コプロセッサ３０２−１〜３０２−４、モデルファイル３０４−１〜３０４−３等についても同様に総称して表記する場合がある。
【００１３】
情報処理装置１００は、マザーボード１０１、メインプロセッサ１０２、ディスプレイ（Ｄｉｓｐｌａｙ）１０３、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インタフェース１０４、イーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ）インタフェース１０５、ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）１０６、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）１０７、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０８、及びＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）１０９を有する。
【００１４】
マザーボード１０１は、情報処理装置１００の主機能を担う部品が装着された基板である。メインプロセッサ１０２は、情報処理装置１００の主機能を担うプロセッサであり。メインプロセッサ１０２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の電子回路を採用できる。ディスプレイ１０３は、各種の情報を表示する表示部として機能する。
【００１５】
ＵＳＢインタフェース１０４は、ＵＳＢデバイスが接続可能であり、ＵＳＢデバイスとメインプロセッサ１０２との通信を媒介可能である。本実施形態の情報処理システム１では、ＵＳＢデバイスの一例であるカメラ４００が、ＵＳＢインタフェース１０４に接続される。カメラ４００で撮像された画像データ（以下、カメラ画像）が、ＵＳＢインタフェース１０４を介して、情報処理装置１００に入力される。
【００１６】
イーサネットインタフェース１０５は、イーサネットケーブルが接続可能であり、イーサネットケーブルを介した外部機器とメインプロセッサ１０２との通信を媒介可能である。ＤＩＭＭ１０７は、各種の情報を一時記憶可能なＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発性の記憶媒体である。ＳＳＤ１０７及びＨＤＤ１０８は、各種の情報を電源断後も記憶可能な不揮発性の記憶媒体である。ＳＳＤ１０７及びＨＤＤ１０８は、メインプロセッサ１０２が実行する各種のプログラムや、後述するモデルファイル３０４及び推論処理接続設定情報Ｄ１等、各種の情報を記憶する。ＴＰＭ１０９は、システムのセキュリティ機能を実現するモジュールである。
【００１７】
中継装置２００は、ブリッジボード２０１及びブリッジコントローラ２０２を有する。ブリッジボード２０１は、例えばＰＣＩｅ（PCI  Express：ピーシーアイエクスプレス）等のバス（例えば、拡張バス）又はＩ／Ｏインタフェースを含み、ブリッジコントローラ２０２が搭載されるための基板である。ブリッジコントローラ２０２は、情報処理装置１００に対して複数の推論処理装置３００をブリッジ接続しており、情報処理装置１００及び複数の推論処理装置３００の間の通信を媒介（中継）する。
【００１８】
推論処理装置３００−１〜３００−４は、互いに並列して中継装置２００に接続されている。各推論処理装置３００−１〜３００−４は、変換ボード（ｃｏｎｖ．ボード）３０１−１〜３０１−４及びコプロセッサ３０２−１〜３０２−４を有する。変換ボード３０１は、アクセラレータボードとも呼ばれ、情報処理システム１の処理能力を高めるために、追加して利用するハードウェアが搭載された基板である。
【００１９】
コプロセッサ３０２は、ＡＩ（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）推論処理や画像処理等の演算処理に適したプロセッサである。コプロセッサ３０２は、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や専用チップなどのアクセラレータ等を採用できる。また、コプロセッサ３０２は、ＣＰＵ及びＧＰＵの組み合わせであってもよい。
【００２０】
ＡＩ推論処理は、人工知能（ＡＩ）を用いた推論処理であり、多層構造のニューラルネットワーク（階層ニューラルネットワーク）を用いた推論モデルによる推論処理を含む。推論処理装置３００は、階層ニューラルネットワークを用いた推論モデルに対して機械学習を行うことで生成された学習済み推論モデルとして、モデルファイル３０４−１〜３０３−３をＳＳＤ１０７等の不揮発性の記憶媒体に保持する。コプロセッサ３０２は、モデルファイル３０４をロードすることで、ロードしたモデルファイル３０４に基づく推論処理を実行する。
【００２１】
次に、図２を参照して、上述した情報処理装置１００及び推論処理装置３００の機能構成について説明する。ここで、図２は、情報処理装置１００及び推論処理装置３００の機能構成の一例を示す図である。
【００２２】
情報処理装置１００は、機能構成として、カメラ画像取得部１１０及びシステム制御部１２０を有する。情報処理装置１００の各機能構成は、例えばメインプロセッサ１０２内で機能的に構成され得る。
【００２３】
カメラ画像取得部１１０は、カメラ４００で撮像されたカメラ画像を取得する。また、カメラ画像取得部１１０は、取得したカメラ画像をＤＩＭＭ１０６等の記憶媒体に一時記憶させる。
【００２４】
システム制御部１２０は、推論処理装置３００の動作を統括的に制御する。具体的には、システム制御部１２０は、推論処理制御部１２１と、入出力制御部１２２と、途中結果取得部１２３と、障害検出部１２４と、障害対応処理部１２５とを備える。ここで、推論処理制御部１２１及び入出力制御部１２２は、制御部の一例である。また、障害検出部１２４また、障害検出部の一例である。また、障害対応処理部１２５は、第１障害対応部及び第２障害対応部の一例である。なお、これらの機的構成は、メインプロセッサ１０２がＳＳＤ１０７又はＨＤＤ１０８に記憶されたプログラムを実行した結果として実現されるソフトウェア構成であってもよいし、メインプロセッサ１０２等が備える専用回路等によって実現されるハードウェア構成であってもよい。
【００２５】
推論処理制御部１２１は、推論処理装置３００の各々で実行される推論処理を制御する。具体的には、推論処理制御部１２１は、例えば情報処理システム１の起動時等において、ＳＳＤ１０７等の記憶媒体からモデルファイル３０４−１〜３０４−３を読み出し、ブリッジコントローラ２０２経由で所定の推論処理装置３００にロードさせる。
【００２６】
ここで、モデルファイル３０４の各々と、当該モデルファイル３０４のロード先となる推論処理装置３００との関係は、推論処理接続設定情報Ｄ１に設定されている。例えば、本実施形態の場合、推論処理接続設定情報Ｄ１には、モデルファイル３０４−１のロード先が推論処理装置３００−１であり、モデルファイル３０４−２のロード先が推論処理装置３００−２であり、モデルファイル３０４−３のロード先が推論処理装置３００−３であることが設定されている。
【００２７】
推論処理制御部１２１は、推論処理接続設定情報Ｄ１の設定内容に基づき、モデルファイル３０４の各々を対応する推論処理装置３００にロードさせる。なお、システム制御部１２０は、モデルファイル３０４とともに、ミドルウェア３０５も推論処理装置３００にロードさせる構成としてもよい。
【００２８】
一方、推論処理装置３００は、図２に示すように、推論アプリケーション３０３、モデルファイル３０４、ミドルウェア３０５、ドライバ３０６、ホストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）３０７を有する。
【００２９】
推論アプリケーション３０３は、仮想環境技術等を用いることで、システム制御部１２０からロードが指示されたモデルファイル３０４をロードする。また、推論アプリケーション３０３は、推論処理装置３００の起動時に、モデルファイル３０４の初期化を行う。推論処理装置３００（コプロセッサ３０２）は、推論アプリケーション３０３及びミドルウェア３０５等と協働し、ロードされたモデルファイル３０４を用いることで、所定の推論処理を実行することが可能となる。
【００３０】
ここで、モデルファイル３０４−１〜３０４−３は、処理内容が互いに異なる推論処理に対応している。具体的には、モデルファイル３０４−１〜３０４−３のロードにより実行可能となる推論処理は、シーケンシャルに実行され、前段の推論処理で出力される推論結果を用いて、後段の推論処理が推論結果を出力するよう構成されている。なお、処理内容は、全てが異なっている必要はなく、少なくとも一部の推論処理が異なっていればよい。
【００３１】
例えば、カメラ画像から人物を検出し、当該人物の年齢及び性別を判別するシステムの場合、モデルファイル３０４−１〜３０４−３の各々は、以下の推論処理に対応する。まず、モデルファイル３０４−１は、カメラ画像から人物が存在する領域を抽出（推論）する推論処理（以下、人物抽出推論処理）に対応する。モデルファイル３０４−２は、推論された人物の外観的特徴から当該人物の年齢を推論する推論処理（以下、年齢推論処理）に対応する。モデルファイル３０４−３は、推論された人物の外観的特徴及び年齢から当該人物の性別を推論する推論処理（性別推論処理）に対応する。
【００３２】
より詳細には、人物抽出推論処理では、カメラ画像及び当該カメラ画像を識別する画像識別子を入力とし、カメラ画像に表された人物を認識（推論）すると、その人物の存在位置を表す位置情報（例えば、カメラ画像上での座標等）を抽出する。そして、人物抽出推論処理では、抽出した人物毎に、その人物を識別する人物識別子、当該人物の位置情報、及び推論結果の信頼度等を対応付けた推論結果を、画像識別子とともに第１推論結果として出力する。なお、人物抽出推論処理では、入力されたカメラ画像を第１推論結果とともに出力する構成としてもよい。
【００３３】
また、年齢推論処理では、カメラ画像、第１推論結果を入力とし、第１推論結果で指示された各人物の位置情報に基づき、カメラ画像に表された人物の外観的な特徴等から当該人物の年齢を推論する。そして、年齢推論処理では、人物（人物識別子）毎に、推論した年齢、及び推論結果の信頼度等を対応付けた推論結果を、画像識別子及び第１推論結果とともに第２推論結果として出力する。なお、年齢推論処理では、入力されたカメラ画像を第２推論結果とともに出力する構成としてもよい。
【００３４】
また、性別推論処理では、カメラ画像、第２推論結果を入力とし、第２推論結果で指示された各人物の位置情報及び年齢に基づき、カメラ画像に表された人物の外観的な特徴等から当該人物の性別を推論する。そして、性別推論処理では、人物（人物識別子）毎に、推論した性別、及び推論結果の信頼度等を対応付けた推論結果を、画像識別子及び第２推論結果とともに出力する。この場合、性別推論処理が出力する第３推論結果が、一連する推論処理の最終的な推論結果となる。なお、性別推論処理は、入力されたカメラ画像を第３推論結果とともに出力する構成としてもよい。
【００３５】
入出力制御部１２２は、各推論処理装置３００の入出力を制御する。具体的には、入出力制御部１２２は、推論処理接続設定情報Ｄ１に基づき、推論処理装置３００の各々で実行される推論処理の入出力を制御する。
【００３６】
例えば、上述したカメラ画像から抽出した人物の年齢及び性別を推論するような場合、入出力制御部１２２は、カメラ画像の入力先を、モデルファイル３０４−１のロード先の推論処理装置３００−１（人物抽出推論処理）に設定する。また、入出力制御部１２２は、推論処理装置３００−１（人物抽出推論処理）の出力先を、モデルファイル３０４−２のロード先の推論処理装置３００−２（年齢推論処理）に設定する。また、入出力制御部１２２は、推論処理装置３００−２（年齢推論処理）の出力先を、モデルファイル３０４−３のロード先の推論処理装置３００−３（性別推論処理）に設定する。そして、入出力制御部１２２は、推論処理装置３００−３（性別推論処理）の出力先をシステム制御部１２０に設定する。
【００３７】
これにより、推論処理装置３００−１〜３００−３では、前段の推論処理で出力された推論結果を用いて、後段の推論処理が推論結果を出力する、パイプライン処理型の推論処理システムが実現されることになる。
【００３８】
ところで、上述したパイプライン処理型の構成では、複数段に亘る推論処理のうち、何れか一の段階の推論処理（推論処理装置３００）で障害が発生すると、一連する推論処理が途中で中断されてしまうため、最終結果となる第３推論結果を出力することができず、可用性に欠けるという問題がある。
【００３９】
そこで、本実施形態のシステム制御部１２０では、推論処理装置３００−１〜３００−３の何れか一つに障害が発生した場合に、障害発生により中断した推論処理装置３００の推論処理を、待機系の推論処理装置３００−４に引き継がせる。
【００４０】
具体的には、システム制御部１２０は、途中結果取得部１２３、障害検出部１２４及び障害対応処理部１２５の機能により、中断した推論処理を待機系の推論処理装置３００−４に引き継がせるための処理を実現する。以下、途中結果取得部１２３、障害検出部１２４及び障害対応処理部１２５について説明する。
【００４１】
途中結果取得部１２３は、各段階の推論処理で出力される推論結果を取得し、途中結果としてＳＳＤ１０７等の記憶装置に一時記憶する。具体的には、途中結果取得部１２３は、推論処理装置３００−１（人物抽出推論処理）から出力される第１推論結果と、推論処理装置３００−２（年齢推論処理）から出力される第２推論結果とをそれぞれ取得し、途中結果として記憶装置に保存する。
【００４２】
ここで、途中結果には、各段階の推論処理で導出された推論結果が含まれる。例えば、第１推論結果には、人物抽出推論処理で推論（抽出）された各人物を識別する人物識別子、当該人物のカメラ画像内での位置情報、推論結果の信頼度等が含まれる。第２推論結果には、第１推論結果の内容に加え、年齢推論処理で推論された各人物の年齢、推論結果の信頼度等が含まれる。これらの第１推論結果及び第２推論結果は、処理対象となった共通のカメラ画像を識別する画像識別子に対応付けて出力される。
【００４３】
図３は、途中結果のデータフォーマットの一例を示す図である。なお、図３は、第２推論結果の一例である。
【００４４】
図３において、途中結果は、先頭と末尾の角括弧“［］”で規定される領域Ａ１内に記録される。領域Ａ１は、波括弧“｛｝”で規定される領域Ａ２を一又は複数含み、カメラ画像毎の途中結果が領域Ａ２内に記録される。
【００４５】
領域Ａ２には、カメラ画像を識別するための画像識別子Ａ２１（＃００１、＃００２）が含まれる。また、領域Ａ２は、角括弧“［］”で規定された領域Ａ３を含む。また、領域Ａ２には、推論処理装置３００での推論処理が完了した処理日時Ａ２２と、途中結果取得部１２３がこの途中結果を取得した受信日時Ａ２３とが記録される。本例の場合、処理日時Ａ２２は、推論処理装置３００−２で年齢推論処理が完了した日時となる。
【００４６】
領域Ａ３は、波括弧“｛｝”で規定された領域Ａ４を一又は複数含む。領域Ａ４は、画像識別子Ａ２１のカメラ画像から抽出（推論）された人物毎に生成され、人物毎の途中結果（推論結果）が記録される。
【００４７】
領域Ａ４には、抽出された各人物を識別するための人物識別子Ａ４１（＃０１、＃０２等）が記録される。また、領域Ａ４内には、人物識別子Ａ４１について推論された第１推論結果及び第２推論結果の内容が記録される。具体的には、領域Ａ４内には、人物抽出推論処理の推論結果（第１推論結果）に対応する、人物の位置情報Ａ４２と、その信頼度Ａ４３とが含まれる。また、領域Ａ４内には、年齢推論処理の推論結果に対応する、人物の年齢Ａ４４と、その信頼度Ａ４５とが含まれる。
【００４８】
このように、図３に示すデータフォーマットの途中結果では、カメラ画像や人物に係る項目は入れ子状に記録され、第２推論結果が第１推論結果を包含する形態となる。
【００４９】
なお、途中結果が第１推論結果の場合には、領域Ａ４内の項目は、人物識別子Ａ４１、位置情報Ａ４２及び信頼度Ａ４３となり、年齢Ａ４４及び信頼度Ａ４５はヌルとなる。また、この場合、処理日時Ａ２２は、推論処理装置３００−１で人物抽出推論処理が完了した日時となる。
【００５０】
また、推論処理装置３００−３の推論処理（性別推論処理）で出力される最終的な推論結果（第３推論結果）についても、上記と同様のフォーマットで出力する構成としてもよい。この場合、第３推論結果は、第１推論結果及び第２推論結果を包含した状態で、該当する人物（人物識別子）の領域Ａ４内に記録されることになる。
【００５１】
また、図３のデータフォーマットでは、複数のカメラ画像の途中結果とまとめて記録可能な例を説明したが、カメラ画像毎に途中結果を記録する形態としてもよい。この場合、例えば、領域Ａ１に含まれる領域Ａ２は単一となる。
【００５２】
また、図３のデータフォーマットでは、第１推論結果は第２推論結果に包含される形態としたが、これに限らず、第１推論結果と第２推論結果とを独立したデータとして出力してもよい。また、第３推論結果についても、第１推論結果及び第２推論結果と独立したデータとして出力してもよい。この場合、第１推論結果〜第３推論結果の各々は、画像識別子及び人物識別子を共通要素として含み、各々の推論処理で得られた推論結果を含むものになる。
【００５３】
図２に戻り、障害検出部１２４は、推論処理装置３００−１〜３００−３を監視し、障害が発生した推論処理装置３００を検出する。ここで、障害の検出方法は特に問わず、種々の方法を採用することが可能である。
【００５４】
例えば、障害検出部１２４は、推論処理装置３００−１〜３００−３の各々から障害発生の通知を受けることで、障害が発生した推論処理装置３００を検出してもよい。また、例えば、障害検出部１２４は、途中結果に記録された処理日時に基づき、障害が発生した推論処理装置３００を検出してもよい。この場合、障害検出部１２４は、途中結果に記録された処理日時から、所定時間（例えば１分）以上経過しても、次段の推論処理装置３００から推論結果が出力されないことを検出した場合に、次段の推論処理装置３００に障害が発生したと判断してもよい。
【００５５】
障害対応処理部１２５は、障害検出部１２４で障害が検出された場合に、障害が発生した推論処理装置３００で実行されていた推論処理を、害が発生した推論処理装置３００以外の他の推論処理装置に引き継がせるための障害対応処理を実行する。
【００５６】
具体的には、障害対応処理部１２５は、障害検出部１２４で障害の発生が検出されると、入出力制御部１２２と協働し、全体の推論処理を停止させる。例えば、障害対応処理部１２５は、システム制御部１２０からのカメラ画像の出力先や、推論処理装置３００の出力先をヌルに設定することで、推論処理装置３００の入出力を停止させる。
【００５７】
また、障害対応処理部１２５は、推論処理接続設定情報Ｄ１に基づき、障害が発生した推論処理装置３００の前段の推論処理装置３００を特定する。例えば、推論処理装置３００−３で障害の発生が検出された場合、障害対応処理部１２５は、モデルファイル３０４のロードによって実現される推論処理の順序に基づき、前段の推論処理装置３００が推論処理装置３００−２であると特定する。
【００５８】
次いで、障害対応処理部１２５は、推論処理制御部１２１と協働し、待機系の推論処理装置３００−４を新規推論処理装置として起動させると、新規推論処理装置に対し、障害が発生した推論処理装置３００でロードされていたモデルファイル３０４をロードさせる。これにより、新規推論処理装置では、ロードされたモデルファイル３０４に対応する推論処理が設定される。なお、「新規推論処理装置」は、障害が発生した推論処理装置３００以外の「他の推論処理装置」に対応する概念である。
【００５９】
次いで、障害対応処理部１２５は、障害が発生した推論処理装置３００の前段の推論処理装置３００の途中結果が保存されているか否かを確認する。ここで、途中結果が保存されている場合、障害対応処理部１２５は、入出力制御部１２２と協働することで、システム制御部１２０からの入力先を新規推論処理装置に設定するとともに、新規推論処理装置の出力先を、障害が発生した推論処理装置３００の後段の推論処理装置３００に設定する。
【００６０】
なお、障害が発生した推論処理装置３００が、最後段の推論処理装置３００（本実施形態では、推論処理装置３００−３）の場合には、新規推論処理装置の出力先を、システム制御部１２０に設定する。
【００６１】
次いで、障害対応処理部１２５は、カメラ画像（画像識別子）と、該当する途中結果とを新規推論処理装置に送信（入力）する。新規推論処理装置では、カメラ画像及び途中結果の入力に伴い推論処理を実行し、その推論結果を後段の推論処理装置３００又はシステム制御部１２０に出力する。また、障害対応処理部１２５は、新規推論処理装置より後段の推論処理装置３００の入出力を再開させる。これにより、システム制御部１２０は、障害の発生により中断されていた推論処理の最終結果（第３推論結果）を取得することができる。
【００６２】
次いで、障害対応処理部１２５は、次以降のカメラ画像を処理するため、新規推論処理装置を含めた推論処理装置３００の全体で、一連する推論処理が実行できるよう入出力設定を更新する。具体的には、障害対応処理部１２５は、障害が発生した推論処理装置３００の前段の推論処理装置３００の出力先を新規推論処理装置に設定する。また、新規推論処理装置の出力先を、障害が発生した推論処理装置３００の後段の推論処理装置３００に設定する。また、障害対応処理部１２５は、カメラ画像（画像識別子）の入力先を、モデルファイル３０４−１のロード先に設定する。そして、障害対応処理部１２５は、更新後の状態を推論処理接続情報に反映する。
【００６３】
なお、障害が発生した推論処理装置３００が、推論処理装置３００−１の場合には、障害対応処理部１２５は、カメラ画像（画像識別子）の入力先を新規推論処理装置に設定する。
【００６４】
次いで、障害対応処理部１２５は、入出力制御部１２２と協働し、更新後の推論処理接続情報に基づいた入出力経路で、全体の推論処理を再開させる。
【００６５】
このように、障害対応処理部１２５は、推論処理装置３００の何れかで障害が発生すると、障害が発生した推論処理装置３００で行われていた推論処理を、新規推論処理装置に設定する。また、障害対応処理部１２５は、障害が発生した推論処理装置３００の前段の推論処理装置３００で導出された推論結果（途中結果）を、新規推論処理装置に入力することで、中段されていた推論処理を継続して実行させる。そして、障害対応処理部１２５は、中段されていた推論処理が完了すると、全体の推論処理の入出力を更新することで、新規推論処理装置を稼働系の推論処理装置３００とする。
【００６６】
なお、障害対応処理部１２５は、新規推論処理装置による推論処理の完了に伴い、処理されたカメラ画像（画像識別子）に係る途中結果を削除する形態としてもよい。
【００６７】
次いで、図４を参照して、上述した障害対応処理部１２５の動作について説明する。図４は、障害対応処理部１２５によって実行される障害対応処理の一例を示すフローチャートである。
【００６８】
まず、障害対応処理部１２５は、障害検出部１２４により障害の発生が検出されたか否かを判定する（ステップＳ１１）。ここで、障害の発生が検出されない場合は（ステップＳ１１；Ｎｏ）、稼働系の推論処理装置３００による通常の推論処理（カメラ画像取得部１１０によるカメラ画像の保存、及び途中結果取得部１２３による途中経過の保存）が行われるものとする。
【００６９】
ステップＳ１１で、障害の発生が検出されると（ステップＳ１１；Ｙｅｓ）、障害対応処理部１２５は、入出力制御部１２２と協働し、全体の推論処理を停止させる（ステップＳ１３）。
【００７０】
続いて、障害対応処理部１２５は、推論処理接続設定情報Ｄ１に基づき、障害が発生した推論処理装置３００の前段の推論処理装置３００を特定する（ステップＳ１４）。次いで、障害対応処理部１２５は、新規推論処理装置（推論処理装置３００−４）を起動させると（ステップＳ１５）、推論処理制御部１２１と協働することで、障害が発生した推論処理装置３００で実行されていた推論処理を新規推論処理装置に設定する（ステップＳ１６）。
【００７１】
続いて、障害対応処理部１２５は、障害が発生した推論処理装置３００の前段の推論処理装置３００の途中結果が保存されているか否かを確認する（ステップＳ１７）。途中結果が保存されている場合（ステップＳ１７；Ｙｅｓ）、障害対応処理部１２５は、入出力制御部１２２と協働することで、新規推論処理装置の入出力を設定する（ステップＳ１８）。
【００７２】
続いて、障害対応処理部１２５は、新規推論処理装置に対し、カメラ画像（画像識別子）及び途中結果を送信（入力）する（ステップＳ１９）。そして、障害対応処理部１２５は、中断されていた推論処理の最終結果を取得し（ステップＳ２０）、ステップＳ２１に移行する。なお、ステップＳ１７で途中結果が保存されていないと判定した場合には（ステップＳ１７；Ｎｏ）、ステップＳ２１に移行する。
【００７３】
続く、ステップＳ２１では、障害対応処理部１２５は、新規推論処理装置を含めた推論処理装置３００の全体で、一連する推論処理が実行できるよう入出力設定を更新し、新規推論処理装置に反映する（ステップＳ２１）。
【００７４】
そして、障害対応処理部１２５は、入出力制御部１２２と協働し、更新後の推論処理接続情報に基づいた入出力経路で、全体の推論処理を再開させ（ステップＳ２２）、本処理を終了する。
【００７５】
このように、障害対応処理部１２５は、推論処理装置３００−１〜３００−３の何れかに障害が発生すると、障害発生までに得られた途中結果を用いて、一連する推論処理を新規推論処理装置に引き継がせる。これにより、障害発生により推論処理が途中で中断された場合であっても、途中結果を破棄することなく、最終結果となる推論結果を出力することができるため、推論処理に係る可用性の向上を図ることができる。
【００７６】
以下、図５及び図６を参照し、情報処理システム１でのデータの入出力について説明する。ここで、図５は、情報処理システム１の正常動作時の入出力状態の一例を模式的に示す図である。なお、推論処理装置３００−１〜３００−３の各々には、予めロードされたモデルファイル３０４−１〜３０４−３により、人物抽出推論処理３１０、年齢推論処理３２０、性別推論処理３３０を実行可能な環境がそれぞれ設定されているものとする。
【００７７】
まず、カメラ４００によって撮像が行われると、カメラ画像取得部１１０は、撮像によって得られたカメラ画像Ｇ１を取得し（符号Ｐ１）、ＳＳＤ１０７等の記憶媒体Ｍ１１に保存する（符号Ｐ２）。次いで、システム制御部１２０は、記憶媒体Ｍ１１に保存されたカメラ画像Ｇ１を読み出し、画像識別子とともに推論処理装置３００−１に出力する（符号Ｐ３）。
【００７８】
推論処理装置３００−１では、カメラ画像及びカメラ画像識別子が入力されると、人物抽出推論処理３１０によって、カメラ画像に表された人物が抽出（推論）される。推論処理装置３００−１は、人物抽出推論処理３１０の推論結果と、カメラ画像識別子とを第１推論結果とし、カメラ画像とともに推論処理装置３００−２に出力する（符号Ｐ４）。また、途中結果取得部１２３は、第１推論結果を取得し、途中結果としてＳＳＤ１０７等の記憶媒体Ｍ１２に保存する（符号Ｐ５）。
【００７９】
また、推論処理装置３００−２では、推論処理装置３００−１から、カメラ画像、及び第１推論結果が入力されると、年齢推論処理３２０によって、カメラ画像に表された人物の年齢が推論される。推論処理装置３００−２は、年齢推論処理３２０の推論結果と、第１推論結果とを第２推論結果とし、カメラ画像とともに推論処理装置３００−３に出力する（符号Ｐ６）。また、途中結果取得部１２３は、年齢推論処理３２０の第２推論結果を取得し、途中結果としてＳＳＤ１０７等の記憶媒体Ｍ１３に保存する（符号Ｐ７）。なお、記憶媒体Ｍ１１、Ｍ１２、Ｍ１３は、同一の記憶装置であってもよいし、異なる記憶装置であってもよい。また、記憶媒体Ｍ１２、Ｍ１３は、保持部の一例である。
【００８０】
また、推論処理装置３００−３では、推論処理装置３００−２から、カメラ画像、カメラ画像識別子、第１推論結果及び第２推論結果が入力されると、性別推論処理３３０によって、カメラ画像に表された人物の性別が推論される。推論処理装置３００−３は、性別推論処理３３０の推論結果と、カメラ画像識別子と、第２推論結果とを第３推論結果Ｒ１とし、情報処理装置１００（システム制御部１２０）に出力する（符号Ｐ８）。
【００８１】
第３推論結果Ｒ１は、一連する推論処理の最終結果となる。例えば、システム制御部１２０は、取得した第３推論結果Ｒ１に基づき、対応するカメラ画像とともに各人物の年齢及び性別を表示したり、年齢及び性別毎に人数を計数したりする。なお、推論処理装置３００−１〜３００−３による推論処理は、カメラ画像Ｇ１毎に行われるものとする。
【００８２】
ここで、例えば、推論処理装置３００−３で障害が発生すると、図６に示すように、障害検出部１２４は、推論処理装置３００−３で発生した障害を検出する（符号Ｐ１１）。図６は、情報処理システム１の障害発生時の入出力状態の一例を模式的に示す図である。この場合、障害対応処理部１２５は、障害発生の検出に伴い、以下の処理を実行する。
【００８３】
まず、障害対応処理部１２５は、全体の推論処理を停止する。これにより、図５に示した推論処理装置３００の入出力が一旦停止することになる。次いで、障害対応処理部１２５は、推論処理装置３００−３にロードされていたモデルファイル３０４−３を、新規推論処理装となる推論処理装置３００−４にロードさせることで、推論処理装置３００−４に性別推論処理３４０を設定する。
【００８４】
続いて、障害対応処理部１２５は、記憶媒体Ｍ１１に記憶されたカメラ画像の出力先を推論処理装置３００−４に設定するとともに（符号Ｐ１２）、推論処理装置３００−３の前段にあたる推論処理装置３００−２の途中結果（第２推論結果）の出力先を推論処理装置３００−４に設定する（符号Ｐ１３）。また、推論処理装置３００−４の出力先を情報処理装置１００（システム制御部１２０）に設定する（符号Ｐ１４）。
【００８５】
次いで、障害対応処理部１２５は、カメラ画像及び途中結果（第２推論結果）の出力（送信）を開始することで、これらのデータが推論処理装置３００−２に入力される。これにより、推論処理装置３００−４の性別推論処理３４０によって導出された第３推論結果Ｒ１が、情報処理装置１００に出力されることになる。
【００８６】
そして、障害対応処理部１２５は、新規推論処理装置を含めた推論処理装置３００の全体で、一連する推論処理が実行できるよう入出力設定を更新する。図６では、カメラ画像取得部１１０で取得されたカメラ画像が、記憶媒体Ｍ１１を経由して、推論処理装置３００−１に入力されるよう設定した例を示している（符号Ｐ１５、Ｐ１６）。また、推論処理装置３００−１の出力先を推論処理装置３００−２とし、推論処理装置３００−２の出力先を推論処理装置３００−４とした例を示している（符号Ｐ１７、Ｐ１８）。なお、入出力設定の更新後、破線で示した符号Ｐ１２、符号Ｐ１３の経路は、使用されなくなる。
【００８７】
以上のように、本実施形態では、稼働系の推論処理装置３００−１〜３００−３の何れかに障害が発生した場合であっても、障害発生までに得られた途中結果を用いて、推論処理装置３００−４に一連する推論処理を引き継がせることができる。これにより、障害発生により推論処理が途中で中断された場合であっても、途中結果を破棄することなく、最終結果となる推論結果を出力することができるため、推論処理に係る可用性の向上を図ることができる。
【００８８】
また、本実施形態によれば、情報処理システム１は、待機系の推論処理装置３００−４を含み、障害対応処理部１２５は、障害が発生した推論処理装置３００以外の他の推論処理装置として、待機系の推論処理装置３００−４を選択する。これにより、稼働系の推論処理装置３００−１〜３００−３の何れかに障害が発生した場合であっても、待機系の推論処理装置３００−４を用いて推論処理を引き継がせることが可能となる。
【００８９】
また、本実施形態によれば、障害対応処理部１２５は、他の推論処理装置として、障害が発生した推論処理装置３００以外の推論処理装置として、推論処理の負荷が低い待機系の推論処理装置３００−４を選択する。これにより、推論処理の効率化やスループットの向上を図ることができる。
【００９０】
また、本実施形態によれば、情報処理装置１００（システム制御部１２０）は、推論処理装置３００の各々から出力された推論結果を保持する記憶媒体Ｍ１２、Ｍ１３等の保持部を備え、障害対応処理部１２５は、保持部が保持する推論結果のうち、障害が発生した推論処理装置３００の前段の推論処理装置３００で実行されていた推論処理の推論結果を、他の推論処理装置（推論処理装置３００−４）に入力する。これにより、障害が発生した推論処理装置３００の前段の推論処理装置３００で実行された推論結果を、推論処理装置３００−４に引き継がせることができるため、途中結果を破棄することなく、最終結果となる推論結果を出力させることが可能となる。
【００９１】
また、本実施形態によれば、障害対応処理部１２５は、他の推論処理装置（推論処理装置３００−４）の推論結果が出力された後、障害が発生した推論処理装置３００の前段の推論処理装置３００の出力先を、他の推論処理装置（推論処理装置３００−４）に設定する。これにより、推論処理装置３００−４を含めた推論処理装置３００の全体で、一連する推論処理を継続して実行することが可能となる。
【００９２】
なお、上述した実施形態は、情報処理システム１の構成又は機能の一部を変更することで、適宜に変形して実施することも可能である。そこで、以下では、上述した実施形態に係るいくつかの変形例を他の実施形態として説明する。なお、以下では、上述した実施形態と異なる点を主に説明することとし、既に説明した内容と共通する点については詳細な説明を省略する。また、以下で説明する変形例は、個別に実施されてもよいし、適宜組み合わせて実施されてもよい。
【００９３】
（変形例１）
上述した実施形態では、推論処理装置３００の各々から出力される途中結果を情報処理装置１００側で保持する形態を説明したが、これに限らず、推論処理装置３００の各々が保持する形態としてもよい。以下、変形例１として、推論処理装置３００の各々が途中結果を保持する形態について説明する。
【００９４】
図７は、本変形例に係る情報処理システム１の正常動作時の入出力状態の一例を模式的に示す図である。図７に示すように、本変形例の構成では、推論処理装置３００−１及び推論処理装置３００−２の各々が、自己の推論処理装置３００での推論結果を保持する点が、上述した実施形態と相違する。
【００９５】
具体的には、推論処理装置３００−１は、人物抽出推論処理３１０による第１推論結果を途中結果として、自己の推論処理装置３００−１が備える記憶媒体Ｍ２１に保持する（符号Ｐ２１）。また、推論処理装置３００−２は、年齢推論処理３２０による第２推論結果を途中結果として、自己の推論処理装置３００−２が備える記憶媒体Ｍ２２に保持する（符号Ｐ２２）。なお、記憶媒体Ｍ２１、Ｍ２２は、保持部の一例である。また、本実実施形態では、推論処理装置３００−３は保持部を具備しない構成としたが、保持部を具備する構成としてもよい。
【００９６】
ここで、例えば、推論処理装置３００−３で障害が発生すると、図８に示すように、障害検出部１２４は、推論処理装置３００−３で発生した障害を検出する（符号Ｐ３１）。図８は、本変形例に係る情報処理システム１の障害発生時の入出力状態の一例を模式的に示す図である。この場合、障害対応処理部１２５は、障害発生の検出に伴い、以下の処理を実行する。
【００９７】
まず、障害対応処理部１２５は、全体の推論処理を停止する。これにより、図７に示した推論処理装置３００の入出力が一旦停止することになる。次いで、障害対応処理部１２５は、推論処理装置３００−３にロードされていたモデルファイル３０４−３を、新規推論処理装となる推論処理装置３００−４にロードさせることで、推論処理装置３００−４に性別推論処理３４０を設定する。
【００９８】
続いて、障害対応処理部１２５は、記憶媒体Ｍ１１に記憶されたカメラ画像の出力先を推論処理装置３００−４に設定するとともに（符号Ｐ３２）、推論処理装置３００−３の前段にあたる推論処理装置３００−２の途中結果（第２推論結果）の出力先を推論処理装置３００−４に設定する（符号Ｐ３３）。また、推論処理装置３００−４の出力先を情報処理装置１００（システム制御部１２０）に設定する（符号Ｐ３４）。
【００９９】
続いて、障害対応処理部１２５は、カメラ画像及び途中結果（第２推論結果）の出力（送信）を開始することで、これらのデータが推論処理装置３００−４に入力される。これにより、推論処理装置３００−４の性別推論処理３４０によって導出された第３推論結果Ｒ１が、情報処理装置１００に出力されることになる。
【０１００】
そして、障害対応処理部１２５は、新規推論処理装置を含めた推論処理装置３００の全体で、一連する推論処理が実行できるよう入出力設定を更新する。図８では、カメラ画像取得部１１０で取得されたカメラ画像が、記憶媒体Ｍ１１を経由して、推論処理装置３００−１に入力されるよう設定した例を示している（符号Ｐ３５、Ｐ３６）。また、推論処理装置３００−１の出力先を推論処理装置３００−２とし、推論処理装置３００−２の出力先を推論処理装置３００−４とした例を示している（符号Ｐ３７、Ｐ３８）。
【０１０１】
以上のように、本変形例によれば、上述した実施形態と同様に、推論処理に係る可用性の向上を図ることができる。なお、本変形例の場合、途中結果取得部１２３は不要となるため、情報処理装置１００のシステム制御部１２０から途中結果取得部１２３を取り除いた構成としてもよい。
【０１０２】
また、本変形例によれば、推論処理装置３００の各々は、自己の推論処理の推論結果を保持する記憶媒体Ｍ２１、Ｍ２２等の保持部を備え、障害対応処理部１２５は、障害が発生した推論処理装置３００の前段の推論処理装置３００が保持する推論結果を、障害が発生した推論処理装置３００以外の他の推論処理装置（推論処理装置３００−４）に入力する。これにより、障害が発生した推論処理装置３００の前段の推論処理装置３００で実行された推論結果を、推論処理装置３００−４に引き継がせることができるため、途中結果を破棄することなく、最終結果となる推論結果を出力させることが可能となる。
【０１０３】
（変形例２）
上述した実施形態では、新規推論処理装置として、待機系の推論処理装置３００を用いて推論処理を引き継ぐ形態を説明したが、これに限らず、稼働系の推論処理装置３００を用いて推論処理を引き継がせてもよい。以下、変形例２として、稼働系の推論処理装置３００に推論処理を引き継がせる形態について説明する。
【０１０４】
図９は、本変形例に係る情報処理システム１の正常動作時の入出力状態の一例を模式的に示す図である。図９に示すように、本変形例の構成では、上述した実施形態の構成から、待機系の推論処理装置３００−４を取り除いた構成となっている。なお、推論処理装置３００−１〜３００−３は、何れも稼働系の推論処理装置３００である。
【０１０５】
図９の構成において、例えば、推論処理装置３００−３で障害が発生すると、図１０に示すように、障害検出部１２４は、推論処理装置３００−３で発生した障害を検出する（符号Ｐ４１）。図１０は、本変形例に係る情報処理システム１の障害発生時の入出力状態の一例を模式的に示す図である。この場合、障害対応処理部１２５は、障害発生の検出に伴い、以下の処理を実行する。
【０１０６】
まず、障害対応処理部１２５は、全体の推論処理を停止する。これにより、図９に示した推論処理装置３００の入出力が一旦停止することになる。次いで、障害対応処理部１２５は、推論処理装置３００−３にロードされていたモデルファイル３０４−３を、新規推論処理装置となる正常稼働中の推論処理装置３００の何れか一つにロードさせることで、新規推論処理装に性別推論処理３４０を設定する。
【０１０７】
ここで、新規推論処理装置は、正常稼働中の推論処理装置３００であれば特に問わないものとするが、障害が発生した推論処理装置３００の前段又は後段の推論処理装置３００を選択することが、データの入出力の関係から効率的である。また、新規推論処理装置は、既存の推論処理の負荷が低い推論処理装置３００を選択することで、推論処理の効率化やスループットの向上を図ることができる。
【０１０８】
図１０では、障害が発生した推論処理装置３００−３の前段の、推論処理装置３００−２を新規推論処理装置に選定した例を示している。具体的には、障害対応処理部１２５は、推論処理装置３００−３にロードされていたモデルファイル３０４−３を、推論処理装置３００−２にロードさせることで、推論処理装置３００−２に性別推論処理３４０を設定する。これにより、推論処理装置３００−２では、既存の年齢推論処理３２０と、新たに設定された性別推論処理３４０とを実行することが可能となる。
【０１０９】
続いて、障害対応処理部１２５は、記憶媒体Ｍ１１に記憶されたカメラ画像の出力先を推論処理装置３００−２（性別推論処理３４０）に設定するとともに（符号Ｐ４２）、推論処理装置３００−３の前段にあたる推論処理装置３００−２の途中結果（第２推論結果）の出力先を推論処理装置３００−２（性別推論処理３４０）に設定する（符号Ｐ４３）。また、障害対応処理部１２５は、推論処理装置３００−２（性別推論処理３４０）の出力先を情報処理装置１００（システム制御部１２０）に設定する（符号Ｐ４４）。
【０１１０】
続いて、障害対応処理部１２５は、カメラ画像及び途中結果（第２推論結果）の出力（送信）を開始することで、これらのデータが推論処理装置３００−２の性別推論処理３４０に入力される。これにより、推論処理装置３００−２の性別推論処理３４０によって導出された第３推論結果Ｒ１が、情報処理装置１００に出力されることになる。
【０１１１】
そして、障害対応処理部１２５は、新規推論処理装置を含めた推論処理装置３００の全体で、一連する推論処理が実行できるよう入出力設定を更新する。図１０では、カメラ画像取得部１１０で取得されたカメラ画像が、記憶媒体Ｍ１１を経由して、推論処理装置３００−１に入力されるよう設定した例を示している（符号Ｐ４５、Ｐ４６）。また、推論処理装置３００−１の出力先を推論処理装置３００−２の年齢推論処理３２０とし、年齢推論処理３２０の出力先を推論処理装置３００−２の性別推論処理３４０とした例を示している（符号Ｐ４７、Ｐ４８）。
【０１１２】
以上のように、本変形例によれば、上述した実施形態と同様、推論処理に係る可用性の向上を図ることができる。
【０１１３】
また、本変形例によれば、障害対応処理部１２５は、障害が発生した推論処理装置３００以外の他の推論処理装置として、障害が発生した推論処理装置３００の前段又は後段の推論処理装置３００を選択し、障害が発生した推論処理装置３００で実行されていた推論処理を、選択した他の推論処理装置に実行させる。これにより、障害発生時に実行する入出力設定の更新を効率的に行うことができる。
【０１１４】
また、本変形例によれば、障害対応処理部１２５は、他の推論処理装置として、推論処理の負荷が低い推論処理装置３００を選択する。これにより、推論処理の効率化やスループットの向上を図ることができる。
【０１１５】
（変形例３）
上述した実施形態では、稼働系の推論処理装置３００の段数、つまり一連する推論処理の段数を３としたが、複数段であればその段数は特に問わないものとする。また、上述した実施形態では、待機系の推論処理装置３００を一としたが、これに限らず、待機系の推論処理装置３００を複数個用意してもよい。
【０１１６】
（変形例４）
上述した実施形態では、複数の推論処理装置３００がシーケンシャルに推論処理を行う例を説明したが、これに限らず、一部の推論処理装置３００が並列で推論処理を行う構成であってもよい。例えば、上述した実施形態での推論処理装置３００の構成において、推論処理装置３００−２及び推論処理装置３００−３が、推論処理装置３００−１の第１推論結果を受けて、年齢及び性別の推論を並列で行ってもよい。この場合において、上述した実施形態又は変形例の手法を用いることで、障害の発生により推論処理が中断したような場合であっても、中断した推論処理を継続して実行することができる。
【０１１７】
（変形例５）
上述した実施形態では、推論処理装置３００の各々を単体の装置とすることで、情報処理システム１の全体をシステムとして定義する形態を説明した。しかしながら、推論処理装置３００の各々を情報処理装置１００の周辺機器や拡張カード等として情報処理システム１を捉えた場合、情報処理システム１全体を、一の情報処理装置として定義することも可能である。
【０１１８】
上述の実施形態では、各部のバス（例えば、拡張バス）又はＩ／ＯインタフェースとしてＰＣＩｅを例に挙げて説明したが、バスまたはＩ／ＯインタフェースはＰＣＩｅに限定されない。例えば、各部のバスまたはＩ／Ｏインタフェースは、データ転送バスによって、デバイス（周辺制御コントローラ）とプロセッサとの間でデータ転送を行える技術であればよい。データ転送バスは、１個の筐体等に設けられたローカルな環境（例えば、１つのシステム又は１つの装置）で高速にデータを転送できる汎用のバスであってもよい。Ｉ／Ｏインタフェースは、パラレルインタフェース及びシリアルインタフェースの何れであってもよい。
【０１１９】
Ｉ／Ｏインタフェースは、シリアル転送の場合、ポイント・ツー・ポイント接続ができ、データをパケットベースで転送可能な構成でよい。なお、Ｉ／Ｏインタフェースは、シリアル転送の場合、複数のレーンを有してよい。Ｉ／Ｏインタフェースのレイヤー構造は、パケットの生成及び復号を行うトランザクション層と、エラー検出等を行うデータリンク層と、シリアルとパラレルとを変換する物理層とを有してよい。また、Ｉ／Ｏインタフェースは、階層の最上位であり１又は複数のポートを有するルート・コンプレックス、Ｉ／Ｏデバイスであるエンド・ポイント、ポートを増やすためのスイッチ、及び、プロトコルを変換するブリッジ等を含んでよい。Ｉ／Ｏインタフェースは、送信するデータとクロック信号とをマルチプレクサによって多重化して送信してもよい。この場合、受信側は、デマルチプレクサでデータとクロック信号を分離してよい。
【符号の説明】
【０１２０】
１  情報処理システム
１００  情報処理装置
１１０  カメラ画像取得部
１２０  システム制御部
１２１  推論処理制御部
１２２  入出力制御部
１２３  途中結果取得部
１２４  障害検出部
１２５  障害対応処理部
３００  推論処理装置
３０２  コプロセッサ
３０３  推論アプリケーション
３０４  モデルファイル
３０５  ミドルウェア
【図１】
2020135060.tif 000003
【図２】
2020135060.tif 000004
【図３】
2020135060.tif 000005
【図４】
2020135060.tif 000006
【図５】
2020135060.tif 000007
【図６】
2020135060.tif 000008
【図７】
2020135060.tif 000009
【図８】
2020135060.tif 000010
【図９】
2020135060.tif 000011
【図１０】
2020135060.tif 000012
【手続補正書】
【提出日】令和1年10月1日(2019.10.1)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
本発明の第１態様に係る情報処理システムは、複数の推論処理装置と、制御部と、第１障害対応部と、第２障害対応部とを備える。制御部は、処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する。障害検出部は、障害が発生した前記推論処理装置を検出する。第１障害対応部は、前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる。第２障害対応部は、障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する。また、第２障害対応部は、前記他の推論処理装置の推論結果が出力された後、障害が発生した前記推論処理装置の前段の前記推論処理装置の出力先を、前記他の推論処理装置に設定する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
本発明の第２態様に係る情報処理装置は、複数の推論処理装置と接続可能な情報処理装置であって、制御部と、障害検出部と、第１障害対応部と、第２障害対応部とを備える。制御部は、処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する。障害検出部は、障害が発生した前記推論処理装置を検出する。第１障害対応部は、前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる。第２障害対応部は、障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する。また、第２障害対応部は、前記他の推論処理装置の推論結果が出力された後、障害が発生した前記推論処理装置の前段の前記推論処理装置の出力先を、前記他の推論処理装置に設定する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
本発明の第３態様に係るプログラムは、複数の推論処理装置と接続可能な情報処理装置のコンピュータを、処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する制御部と、障害が発生した前記推論処理装置を検出する障害検出部と、前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する第２障害対応部と、して機能させる。また、第２障害対応部は、前記他の推論処理装置の推論結果が出力された後、障害が発生した前記推論処理装置の前段の前記推論処理装置の出力先を、前記他の推論処理装置に設定する。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の推論処理装置と、
処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する制御部と、
障害が発生した前記推論処理装置を検出する障害検出部と、
前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、
障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する第２障害対応部と、
を備え、
前記第２障害対応部は、前記他の推論処理装置の推論結果が出力された後、障害が発生した前記推論処理装置の前段の前記推論処理装置の出力先を、前記他の推論処理装置に設定する情報処理システム。
【請求項２】
前記複数の推論処理装置は、待機系の推論処理装置を含み、
前記第１障害対応部は、前記他の推論処理装置として、前記待機系の前記推論処理装置を選択する、請求項１に記載の情報処理システム。
【請求項３】
前記第１障害対応部は、前記他の推論処理装置として、障害が発生した前記推論処理装置の前段又は後段の推論処理装置を選択する、請求項１に記載の情報処理システム。
【請求項４】
前記第１障害対応部は、前記他の推論処理装置として、障害が発生した前記推論処理装置以外の前記推論処理装置のうち、前記推論処理の負荷が低い推論処理装置を選択する、請求項１に記載の情報処理システム。
【請求項５】
前記推論処理装置の各々から出力された前記推論結果を保持する保持部を更に備え、
前記第２障害対応部は、前記保持部が保持する前記推論結果のうち、障害が発生した前記推論処理装置の前段の前記推論処理装置で実行されていた推論処理の推論結果を、前記他の推論処理装置に入力する、請求項１〜４の何れか一項に記載の情報処理システム。
【請求項６】
前記推論処理装置の各々は、自己の推論処理の推論結果を保持する保持部を更に備え、
前記第２障害対応部は、障害が発生した前記推論処理装置の前段の推論処理装置が保持する推論結果を、前記他の推論処理装置に入力する、請求項１〜４の何れか一項に記載の情報処理システム。
【請求項７】
複数の推論処理装置と接続可能な情報処理装置であって、
処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する制御部と、
障害が発生した前記推論処理装置を検出する障害検出部と、
前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、
障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する第２障害対応部と、
を備え、
前記第２障害対応部は、前記他の推論処理装置の推論結果が出力された後、障害が発生した前記推論処理装置の前段の前記推論処理装置の出力先を、前記他の推論処理装置に設定する情報処理装置。
【請求項８】
複数の推論処理装置と接続可能な情報処理装置のコンピュータを、
処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する制御部と、
障害が発生した前記推論処理装置を検出する障害検出部と、
前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、
障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する第２障害対応部と、
して機能させ、
前記第２障害対応部は、前記他の推論処理装置の推論結果が出力された後、障害が発生した前記推論処理装置の前段の前記推論処理装置の出力先を、前記他の推論処理装置に設定するプログラム。
【請求項９】
複数の推論処理装置と、
処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する制御部と、
障害が発生した前記推論処理装置を検出する障害検出部と、
前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、
障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する第２障害対応部と、
を備え、
前記第１障害対応部は、前記他の推論処理装置として、障害が発生した前記推論処理装置以外の前記推論処理装置のうち、前記推論処理の負荷が低い推論処理装置を選択する情報処理システム。
【請求項１０】
複数の推論処理装置と接続可能な情報処理装置であって、
処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する制御部と、
障害が発生した前記推論処理装置を検出する障害検出部と、
前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、
障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する第２障害対応部と、
を備え、
前記第１障害対応部は、前記他の推論処理装置として、障害が発生した前記推論処理装置以外の前記推論処理装置のうち、前記推論処理の負荷が低い推論処理装置を選択する情報処理装置。
【請求項１１】
複数の推論処理装置と接続可能な情報処理装置のコンピュータを、
処理内容が異なる推論処理を前記推論処理装置の各々に実行させ、前段の推論処理装置で行われた推論処理の推論結果を用いて、後段の推論処理装置が推論処理を行うよう前記推論処理装置の入出力を制御する制御部と、
障害が発生した前記推論処理装置を検出する障害検出部と、
前記障害検出部で障害の発生が検出された場合に、障害が発生した前記推論処理装置で実行されていた推論処理を、当該推論処理装置以外の他の推論処理装置に実行させる第１障害対応部と、
障害が発生した前記推論処理装置の前段の推論処理で導出された推論結果を前記他の推論処理装置に入力し、当該推論結果に基づく前記他の推論処理装置の推論結果を、障害が発生した前記推論処理装置の後段の前記推論処理装置に出力する第２障害対応部と、
して機能させ、
前記第１障害対応部は、前記他の推論処理装置として、障害が発生した前記推論処理装置以外の前記推論処理装置のうち、前記推論処理の負荷が低い推論処理装置を選択するプログラム。