(57)【要約】【課題】複数のプロセッサによる処理効率を向上できる情報処理装置及び情報処理システムを提供する。【解決手段】本願の開示する情報処理装置は、一つの態様において、Ｎを２以上の整数とするとき、処理状況に関するリソース情報をＮ個のプロセッサのそれぞれから受信する受信部と、前記受信されたＮ個のプロセッサのリソース情報を計算式に適用して、アプリケーションによる処理要求に対する処理時間を前記Ｎ個のプロセッサのそれぞれについて計算する計算部と、前記Ｎ個のプロセッサの処理時間に基づいて、前記Ｎ個のプロセッサから１つのプロセッサを選択する選択部と、前記処理要求を前記１つのプロセッサへ送信する送信部とを有する。【選択図】図２
2020109551.tif 000002
【特許請求の範囲】
【請求項１】
Ｎを２以上の整数とするとき、処理状況に関するリソース情報をＮ個のプロセッサのそれぞれから受信する受信部と、
前記受信されたＮ個のプロセッサのリソース情報を計算式に適用して、アプリケーションによる処理要求に対する処理時間を前記Ｎ個のプロセッサのそれぞれについて計算する計算部と、
前記Ｎ個のプロセッサの処理時間に基づいて、前記Ｎ個のプロセッサから１つのプロセッサを選択する選択部と、
前記処理要求を前記１つのプロセッサへ送信する送信部と、
を備えた情報処理装置。
【請求項２】
前記処理要求に対する前記１つのプロセッサによる処理時間を測定する測定部と、
前記受信されたＮ個のプロセッサのリソース情報と前記測定された処理時間とに基づいて重回帰分析を行い、前記計算式を更新する更新部と、
をさらに備えた
請求項１に記載の情報処理装置。
【請求項３】
前記計算式は、前記Ｎ個のプロセッサに対応したＮ個のパラメータを含み、
前記更新部は、前記計算式における前記Ｎ個のパラメータを更新する
請求項２に記載の情報処理装置。
【請求項４】
前記処理要求は、処理内容を識別する処理識別子を含み、
前記計算部は、前記Ｎ個のプロセッサのリソース情報を、異なるＮ個のプロセッサと異なるＭ個の処理内容との組み合わせに対応付けられたＮ×Ｍ個の前記計算式のうち前記処理識別子で識別される処理内容に対応したＮ個の前記計算式に適用する
請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記Ｎ個のプロセッサのそれぞれは、前記処理要求に応じた推論処理を行う推論処理装置である
請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
請求項１から５のいずれか１項に記載の情報処理装置と、
Ｎを２以上の整数とするとき、それぞれが前記情報処理装置と通信可能に接続されたＮ個のプロセッサと、
を備えた情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理システムに関する。
【背景技術】
【０００２】
複数のプロセッサが通信可能に接続された情報処理装置では、複数のプロセッサに処理を振り分ける並列分散制御が行われることがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−３７５３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、情報処理装置において、並列分散制御が固定的に行われると、複数のプロセッサによる処理効率が低下する可能性がある。
【０００５】
開示の技術は、上記に鑑みてなされたものであって、複数のプロセッサによる処理効率を向上できる情報処理装置及び情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願の開示する情報処理装置は、一つの態様において、Ｎを２以上の整数とするとき、処理状況に関するリソース情報をＮ個のプロセッサのそれぞれから受信する受信部と、前記受信されたＮ個のプロセッサのリソース情報を計算式に適用して、アプリケーションによる処理要求に対する処理時間を前記Ｎ個のプロセッサのそれぞれについて計算する計算部と、前記Ｎ個のプロセッサの処理時間に基づいて、前記Ｎ個のプロセッサから１つのプロセッサを選択する選択部と、前記処理要求を前記１つのプロセッサへ送信する送信部とを有する。
【０００７】
本願の開示する情報処理システムは、一つの態様において、上記の情報処理装置と、それぞれが前記情報処理装置と通信可能に接続された複数のプロセッサとを有する。
【発明の効果】
【０００８】
本願の開示する情報処理装置の一つの態様によれば、複数のプロセッサによる処理効率を向上できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態にかかる情報処理システムのハードウェア構成を示す図である。
【図２】図２は、実施形態における情報処理装置の機能構成を示す図である。
【図３】図３は、実施形態における推論処理装置の機能構成を示す図である。
【図４】図４は、実施形態における判別パラメータ情報のデータ構造を示す図である。
【図５】図５は、実施形態における判別パラメータ情報の更新処理（コプロセッサＡ、処理Ｊの場合）を示す図である。
【図６】図６は、実施形態における判別パラメータ情報の更新処理（コプロセッサＡ、処理Ｋの場合）を示す図である。
【図７】図７は、実施形態における判別パラメータ情報の更新処理（コプロセッサＢ、処理Ｊの場合）を示す図である。
【図８】図８は、実施形態における推論処理装置のモデルファイルを用いた動作を示す図である。
【図９】図９は、実施形態における共通フォーマットからモデルファイルの入力層のフォーマットへの変換処理を示す図である。
【図１０】図１０は、実施形態におけるモデルファイルの出力層のフォーマットから共通フォーマットへの変換処理を示す図である。
【図１１】図１１は、実施形態における推論処理装置の他のモデルファイルを用いた動作を示す図である。
【図１２】図１２は、実施形態における共通フォーマットから他のモデルファイルの入力層のフォーマットへの変換処理を示す図である。
【図１３】図１３は、実施形態における他のモデルファイルの出力層のフォーマットから共通フォーマットへの変換処理を示す図である。
【図１４】図１４は、実施形態の変形例における推論処理装置の機能構成を示す図である。
【図１５】図１５は、実施形態の他の変形例における情報処理システムのハードウェア構成を示す図である。
【図１６】図１６は、実施形態の他の変形例における情報処理システムのソフトウェア構成を示す図である。
【図１７】図１７は、実施形態の他の変形例におけるＰＣＩｅブリッジコントローラのハードウェア構成を示す図である。
【図１８】図１８は、実施形態の他の変形例におけるＰＣＩｅのレイヤ構成を示す図である。
【図１９】図１９は、実施形態の他の変形例におけるコプロセッサＧからの他のプロセッサの見え方を示す図である。
【図２０】図２０は、実施形態の他の変形例におけるコプロセッサＤからの他のプロセッサの見え方を示す図である。
【図２１】図２１は、実施形態の他の変形例におけるＰＣＩｅブリッジコントローラを介したプロセッサ間のデータ転送処理を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示する情報処理システムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により開示技術が限定されるものではない。また、実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略される。
【００１１】
（実施形態）
実施形態にかかる情報処理システムは、メインプロセッサ及び複数のコプロセッサを有し、複数のコプロセッサに処理を振り分ける並列分散制御がメインプロセッサ側で行われる並列分散システムである。情報処理システムでは、メインプロセッサ側における並列分散制御が固定的に行われると、複数のコプロセッサによる処理効率が低下する可能性がある。
【００１２】
例えば、複数のコプロセッサにおける演算処理能力の差を考慮して、負荷の大きい処理を演算処理能力の高いコプロセッサに割り振り、負荷の小さい処理を演算処理能力の低いコプロセッサに割り振る制御が考えられる。この制御では、並列分散システム内に特定の処理に対して高速であるようなコプロセッサが混在している場合、複数のコプロセッサにおける現在のリソースの空き状況によっては、適切な（例えば、最適な）並列分散制御とならないことがある。
【００１３】
また、各コプロセッサ（各推論処理装置）が予め機械学習により生成された学習済みモデルを有する場合、各推論処理装置では、その学習済みモデルを用いて様々な推論処理を行うことがある。このとき、推論処理装置において、様々な推論処理に対して、同じ学習済みモデルが用いられると、推論処理が効率的に行われない可能性がある。
【００１４】
そこで、本実施形態では、情報処理システムにおいて、複数のコプロセッサから収集されたリソース情報をコプロセッサの個数分の計算式にそれぞれ適用して処理時間を計算し、得られた複数のコプロセッサの処理時間に基づいて、推論処理を割り振るコプロセッサを選択して推論要求を送信することで、並列分散制御のリアルタイム的な効率化を目指す。
【００１５】
また、推論処理を識別する推論処理識別子が推論要求に含まれるようにし、各コプロセッサ（各推論処理装置）において、複数のモデルファイルのうち受信された推論要求に含まれた推論処理識別子に対応するモデルファイルを特定して読み込み、推論処理を実行させることで、各コプロセッサ（各推論処理装置）における推論処理の効率化を目指す。
【００１６】
具体的には、情報処理システムにおいて、処理内容及びコプロセッサの組み合わせに対応付けられた複数の計算式を用意する。各計算式は、複数のコプロセッサに対応した複数のパラメータ（複数の判別パラメータ）を含み、複数のコプロセッサのリソース情報を適用（代入）して処理時間が求められるように構成されている。情報処理システムは、用意された複数の計算式のうちアプリケーションによる推論要求に対応したコプロセッサの個数分の計算式に、それぞれ、複数のコプロセッサから収集されたリソース情報を適用して処理時間を計算する。情報処理システムは、計算で得られた複数のコプロセッサの処理時間に基づいて、処理を割り振るコプロセッサを選択して推論要求を送信する。例えば、情報処理システムは、処理時間が最も短いコプロセッサを選択して推論要求を送信することができる。これにより、性能差として演算処理能力に加えて処理内容も考慮できるので、並列分散制御を高精度化できるとともに、現在のリソースの空き状況を考慮できるので、並列分散制御をリアルタイム的に効率化できる。
【００１７】
また、情報処理システムは、推論処理識別子と入力データとを含む推論要求を、その選択したコプロセッサ（各推論処理装置）に送信する。複数のコプロセッサ（複数の推論処理装置）は、それぞれ、互いに異なる推論処理に対応した複数のモデルファイルを有する。複数のモデルファイルは、それぞれ、互いに異なる推論処理に対して適切化されるように機械学習が行われた学習済み推論モデルに対応している。推論要求を受信したコプロセッサ（推論処理装置）は、推論要求に含まれた推論処理識別子に対応するモデルファイルを特定し、特定されたモデルファイルを読み込み、推論処理を実行する。これにより、様々な推論処理に対して同じ学習済みモデルが用いられる場合に比較して、推論処理毎に機械学習で効率化されたモデルファイルを用いることができるので、各コプロセッサ（各推論処理装置）における推論処理を効率化できる。
【００１８】
具体的には、情報処理システム１は、図１及び図２のように構成され得る。図１は、情報処理システム１のハードウェア構成を示す図である。図２は、情報処理装置１００の機能構成を示す図である。
【００１９】
Ｎを任意の２以上の整数とするとき、情報処理システム１は、情報処理装置１００、中継装置２００、及びＮ個の推論処理装置３００−１〜３００−Ｎを有する。
【００２０】
情報処理装置１００は、ハードウェア構成として、図１に示すように、マザーボード１０１、メインプロセッサ１０２、ディスプレイ（Ｄｉｓｐｌａｙ）１０３、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インタフェース１０４、イーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ）インタフェース１０５、ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）１０６、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）１０７、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０８、及びＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）１０９を有する。
【００２１】
図１に示すマザーボード１０１は、情報処理装置１００の主機能を担う部品が装着された基板である。メインプロセッサ１０２は、情報処理装置１００の主機能を担うプロセッサであり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の電子回路を採用できる。ディスプレイ１０３は、各種の情報を表示する表示部として機能する。ＵＳＢインタフェース１０４は、ＵＳＢデバイスが接続可能であり、ＵＳＢデバイスとメインプロセッサ１０２との通信を媒介可能である。イーサネットインタフェース１０５は、イーサネットケーブルが接続可能であり、イーサネットケーブルを介した外部機器とメインプロセッサ１０２との通信を媒介可能である。ＤＩＭＭ１０７は、各種の情報を一時記憶可能なＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発性の記憶媒体である。ＳＳＤ１０７及びＨＤＤ１０８は、各種の情報を電源断後も記憶可能な不揮発性の記憶媒体である。ＴＰＭ１０９は、システムのセキュリティ機能を実現するモジュールである。
【００２２】
また、情報処理装置１００は、機能構成として、図２に示すように、上位アプリケーション１１０−１〜１１０−ｎ（ｎは任意の２以上の整数）、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）１２０、及びＡＩクラスタ管理部１３０を有する。図２に示す各機能構成は、メインプロセッサ１０２内で機能的に構成され得る。
【００２３】
図１に示す中継装置２００は、ブリッジボード２０１及びブリッジコントローラ２０２を有する。ブリッジボード２０１は、ブリッジコントローラ２０２が搭載されるための基板である。ブリッジコントローラ２０２は、情報処理装置１００に対して複数の推論処理装置３００をブリッジ接続しており、情報処理装置１００及び複数の推論処理装置３００の間の通信を媒介（中継）する。
【００２４】
複数の推論処理装置３００−１〜３００−Ｎは、互いに並列して中継装置２００に接続されている。各推論処理装置３００−１〜３００−Ｎは、変換ボード（ｃｏｎｖ．ボード）３０１−１〜３０１−Ｎ及びコプロセッサ３０２−１〜３０２−Ｎを有する。変換ボード３０１は、アクセラレータボードとも呼ばれ、情報処理システム１の処理能力を高めるために、追加して利用するハードウェアが搭載された基板である。
【００２５】
コプロセッサ３０２は、ＡＩ（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）推論処理や画像処理等の並列演算処理に適したプロセッサであり、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や専用チップなどのアクセラレータ等を採用できる。また、コプロセッサ３０２は、ＣＰＵ及びＧＰＵの組み合わせであってもよい。
【００２６】
ＡＩ推論処理は、人工知能（ＡＩ）を用いた推論処理であり、多層構造のニューラルネットワーク（階層ニューラルネットワーク）を用いた推論モデルによる推論処理を含む。各プロセッサ３０２は、階層ニューラルネットワークを用いた推論モデルに対して機械学習を行って学習済み推論モデルを生成できるとともに、学習済み推論モデルの利活用を行うことができる。
【００２７】
学習済み推論モデルとしてのモデルファイル３０４は、様々な推論処理に対して、同じ学習済みモデルを用いると、推論処理が効率的に行われない可能性がある。
【００２８】
例えば、機械学習による推論処理では、大きなデータから複数の着目するデータを抽出し、その複数の着目したデータをさらに深掘りするような複数の推論処理を組み合わせたシステムが必要とされ得る。一例として、以下の（ａ）及び（ｂ）の２つのやり方で実現することが考えられる。
（ａ）高性能の推論処理装置で複数の処理を実行する。
（ｂ）複数の推論処理装置で、それぞれの装置を行う推論処理を固定して実行する。
【００２９】
例えば、カメラ画像から人物を検出し、男女別の人数をカウントするシステムの場合、以下の（１）、（２）のような処理になる。
（１）カメラ画像から人物抽出推論処理を実行する。
（２）（１）の結果、抽出された人物ごとに以下の（ア）及び（イ）の推論処理を実行する。
（ア）男女判定推論処理を実行する。
（イ）（ア）の判定結果に応じて、男性、女性の人数をカウントアップする。
【００３０】
この処理を、前述の（ａ）、（ｂ）のパターンに当てはめると、以下の（ａ’）及び（ｂ’）のようになる。
（ａ’）高性能の推論処理装置では、人物抽出推論処理、男女判定推論処理をすべて実行可能な状態に展開して、（１）、（２）の処理を実行する。
（ｂ’）複数の推論処理装置で実行する場合は、人物抽出推論処理を１台、抽出した複数の人物の男女判定推論処理を複数台で実行する。
【００３１】
高性能な推論処理装置で実行する場合と複数の推論処理装置で実行する場合とのいずれも、実行する推論処理が固定化されてしまい、推論処理装置の性能を効率的に活用することができない可能性がある。
【００３２】
その点を考慮し、推論処理の内容をある程度分類・類型化し、各推論処理装置３００−１〜３００−Ｎにおいて、互いに異なる推論処理に対応した複数のモデルファイル３０４を用意し、実行すべき推論処理を推論要求識別子で指定できるようにする。
【００３３】
すなわち、Ｍを任意の２以上の整数とするとき、各推論処理装置３００−１〜３００−Ｎは、図３に示すように、ホストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）３０７、ドライバ３０６、ミドルウェア３０５、Ｍ個のモデルファイル３０４−１〜３０４−Ｍ、及び推論アプリケーション３０３を有する。図３は、推論処理装置３００の機能構成を示す図である。
【００３４】
Ｍ個のモデルファイル３０４−１〜３０４−Ｍは、互いに異なる推論処理に対応している。ミドルウェア３０５は、Ｍ個のモデルファイル３０４−１〜３０４−Ｍをそれぞれ実行可能である。推論アプリケーション３０３は、推論処理識別子と入力データとパラメータとを含む推論要求を外部から受信し、Ｍ個のモデルファイル３０４−１〜３０４−Ｍのうち推論処理識別子に対応するモデルファイルを特定する。ミドルウェア３０５は、推論アプリケーション３０３で特定されたモデルファイル３０４を読み込み、推論処理を実行する。
【００３５】
例えば、初期状態において、階層ニューラルネットワークを用いた推論モデルを含むモデルファイル３０４−１〜３０４−Ｍとモデルファイルを読み込み、推論処理を実行すべきミドルウェア３０５とは、図１に示す情報処理装置１００におけるＳＳＤ１０７及び／又はＨＤＤ１０８に格納されている。
【００３６】
階層ニューラルネットワークは、階層構造を持ち、入力層と出力層との間に複数の中間層を有し得る。複数の中間層は、例えば、畳み込み層、活性化関数層、プーリング層、全結合層、及びソフトマックス層を含む。畳み込み層では、入力層により入力したニューロンデータの畳み込み演算（畳み込み処理）を行い、入力ニューロンデータの特徴を抽出する。活性化関数層では、畳み込み層で抽出された特徴を強調する。プーリング層では、入力したニューロンデータの間引きを行う。全結合層では、抽出された特徴を結合して特徴を示す変数を生成する。ソフトマックス層は、全結合層で生成された変数を確率に変換する。ソフトマックス層による演算結果のニューロンデータは、出力層に出力され、出力層で所定の処理（例えば、画像の識別）が行われる。各層の数及び位置は、要求されるアーキテクチャに応じて随時変更され得る。すなわち、ニューラルネットワークの階層構造や各層の構成は、識別する対象などに応じて、設計者が予め定めることができる。
【００３７】
すなわち、推論モデルとしてのモデルファイル３０４−１〜３０４−Ｍは、推論モデル（階層ニューラルネットワーク）に対する定義情報及び重み情報を含んでいる。定義情報は、ニューラルネットワークに関する情報を記憶したデータである。例えば、定義情報には、ニューラルネットワークの階層構造や各階層のユニットの構成、ユニットの接続関係などのニューラルネットワークの構成を示す情報が記憶される。画像の認識を行う場合、定義情報には、例えば、設計者等によって定められた畳み込みニューラルネットワークの構成を示す情報が記憶される。重み情報は、ニューラルネットワークの各層の演算で用いられる重み値などの重みの値を記憶したデータである。重み情報に記憶された重みの値は、初期状態では、所定の初期値とされ、学習に応じて更新される。
【００３８】
情報処理システム１の起動時等において、モデルファイル３０４−１〜３０４−Ｍ及びミドルウェア３０５は、メインプロセッサ１０２によりＳＳＤ１０７及び／又はＨＤＤ１０８から読み出され、ブリッジコントローラ２０２経由で所定の推論処理装置３００（所定のコプロセッサ３０２）へロードされる。所定の推論処理装置３００（所定のコプロセッサ３０２）は、ミドルウェア３０５により各モデルファイル３０４−１〜３０４−Ｍの機械学習を行う。ミドルウェア３０５は、互いに異なる推論処理に対応する各モデルファイル３０４−１〜３０４−Ｍに対して、その対応する推論処理に適した機械学習をそれぞれ行う。
【００３９】
この機械学習は、多層構造のニューラルネットワークを用いた機械学習とすることができ、ディープラーニング（深層学習）とも呼ばれる。ディープラーニングは、ニューラルネットワークの多階層化が進んでおり、多くの分野で有効性が確認されている。例えば、ディープラーニングは、画像・音声の認識において人間に匹敵するほど高い認識精度を発揮している。
【００４０】
ディープラーニングでは、識別対象に関する教師あり学習を行うことにより、ニューラルネットワークに自動的に識別対象の特徴を学習する。ディープラーニングでは、特徴を学習したニューラルネットワークを用いて識別対象を識別する。所定の推論処理装置３００（所定のコプロセッサ３０２）は、複数のモデルファイル３０４−１〜３０４−Ｍに対して、互いに異なる推論処理に適したモデルとなるように、異なる識別対象の特徴を学習させてもよい。
【００４１】
例えば、推論処理として画像における人物検出を例示すると、ディープラーニングでは、人物全体が写った大量の画像を学習用の画像として教師あり学習を行うことにより、画像に写った人物全体の特徴をニューラルネットワークに自動的に学習する。あるいは、推論処理として画像における顔検出を例示すると、ディープラーニングでは、人物の顔が写った大量の画像を学習用の画像として教師あり学習を行うことにより、画像に写った人物の顔の特徴をニューラルネットワークに自動的に学習する。
【００４２】
教師あり学習で一般的に使用される誤差逆伝播法では、学習用のデータをニューラルネットワークに順伝播させて認識を行い、認識結果と正解とを比較して誤差を求める。そして、誤差逆伝播法では、認識結果と正解との誤差を認識時と逆方向にニューラルネットワークに伝播させ、ニューラルネットワークの各階層の重みを変更して最適解に近づけていく。
【００４３】
脳には、多数のニューロン（神経細胞）が存在する。各ニューロンは、他のニューロンから信号を受け取り、他のニューロンへ信号を受け渡す。脳は、この信号の流れによって、様々な情報処理を行う。ニューラルネットワークは、このような脳の機能の特性を計算機上で実現したモデルである。ニューラルネットワークは、脳のニューロンを模したユニットを階層的に結合している。ユニットは、ノードとも呼ばれる。各ユニットは、他のユニットからデータを受け取り、データに重みを適用して他のユニットへ受け渡す。ニューラルネットワークは、ユニットの重みを学習によって変化させて受け渡すデータを変化させることで様々な識別対象を識別（認識）できる。
【００４４】
ディープラーニングでは、このように特徴を学習したニューラルネットワークを用いることで、画像に写った識別対象を識別することなどの推論処理が可能な学習済み推論モデルを生成できる。
【００４５】
学習済み推論モデルが生成されると、所定のコプロセッサ３０２は、学習済み推論モデルとしてのモデルファイル３０４と機械学習に用いたミドルウェア３０５とをブリッジコントローラ２０２及びメインプロセッサ１０２経由でＳＳＤ１０７及び／又はＨＤＤ１０８に格納させる。
【００４６】
例えば、学習済み推論モデルを利活用すべきタイミング又はその前において、モデルファイル３０４及びミドルウェア３０５は、メインプロセッサ１０２によりＳＳＤ１０７及び／又はＨＤＤ１０８から読み出され、ブリッジコントローラ２０２経由で各コプロセッサ３０２−１〜３０２−Ｎへロードされ得る。各コプロセッサ３０２は、ミドルウェア３０５により、学習済み推論モデルとしてのモデルファイル３０４を用いることで、所定のＡＩ推論処理を実行可能である（図３参照）。
【００４７】
ＡＩ推論処理では、同じ処理が繰り返し実行され得る。例えば、人物検出の推論処理では、画像中の人物の検出が繰り返し行われ得る。ＡＩ推論処理のような、同じ処理を繰り返し実行するような処理がコプロセッサ３０２で実行される場合、複数のコプロセッサ３０２−１〜３０２−Ｎのリソース状況からおおよその処理時間を推定することができ、それを並列分散制御に活用すれば、情報処理装置１００側で、より効率的な分散制御が可能となる。すなわち、複数のコプロセッサ３０２−１〜３０２−Ｎの間で処理性能が互いに異なる場合でも、処理内容ごとに複数のコプロセッサ３０２−１〜３０２−Ｎのプロセッサのリソース状況の情報をもとにその処理内容の処理時間を各コプロセッサ３０２−１〜３０２−Ｎについて計算できる。そして、計算された複数のコプロセッサ３０２−１〜３０２−Ｎの処理時間に基づいて、その処理内容（タスク）に対して適切な（例えば、最も速い応答を返す）コプロセッサ３０２を選択すれば、タスクの振り分けを効率化でき、これにより、システム全体としての処理性能を向上できる。
【００４８】
例えば、図２に示すＡＰＩ１２０は、上位アプリケーション１１０−１〜１１０−ｎがＡＩクラスタ管理部１３０とプロセス間通信を行うためのインタフェースとして機能し、例えば、オブジェクト交換フォーマットを共通フォーマットとして規定している。すなわち、ＡＰＩ１２０は、上位アプリケーション１１０−１〜１１０−ｎ間のフォーマットの違いを吸収してＡＩクラスタ管理部１３０との間で共通フォーマットによる情報の送受信を行うことを可能にする。上位アプリケーション１１０からの推論指示に応じて、ＡＰＩ１２０は、共通フォーマットでの推論要求を、推論処理識別子、入力データ、及びパラメータを含む推論要求（図９（ａ）参照）として生成し得る。
【００４９】
アプリケーションからＡＰＩ１２０への推論指示は、例えば、関数ｅｓｔｉｍａｔｅ（ＡＩＮａｍｅ，  ＩｎＤａｔａ，  Ｐａｒａｍ，  Ｆｕｎｃ）として実装され得る。
【００５０】
関数ｅｓｔｉｍａｔｅの引数として指定される「ＡＩＮａｍｅ」は、推論要求における推論処理識別子に対応し、実行させたいＡＩ推論処理（モデルファイル）を識別する情報を文字列（string）型のデータで指定し得る。例えば、「ＡＩＮａｍｅ」は、モデルファイル３０４−１〜３０４−ｋ（図３参照）を識別する情報（例えば、モデルファイルの名前）であってもよい（図９（ａ）、図１２（ａ）参照）。
【００５１】
関数ｅｓｔｉｍａｔｅの引数として指定される「ＩｎＤａｔａ」は、推論要求における入力データに対応し、ＡＩ推論処理で処理したい入力データを多次元配列（ｎｕｍｐｙ）型のデータで指定し得る。「ＩｎＤａｔａ」は、例えば画像データであり、画素位置（横位置、縦位置）を引数として与えるとその階調値（色深度）を要素として返す多次元配列とされ得る（図９（ａ）、図１２（ａ）参照）。
【００５２】
関数ｅｓｔｉｍａｔｅの引数として指定される「Ｐａｒａｍ」は、推論要求におけるパラメータに対応し、ＡＩ推論処理で絞り込みを行う条件などを文字列（string）型のデータで指定し得る（図９（ａ）、図１２（ａ）参照）。
【００５３】
関数ｅｓｔｉｍａｔｅは、戻り値として、受け付け番号を整数（ｉｎｔ）型のデータで返し得る。
【００５４】
上位アプリケーション１１０−１〜１１０−ｎは、ユーザからの指示又はシステム側から要求などに応じて、所定の推論指示を生成してＡＰＩ１２０を実行する。ＡＰＩ１２０は、例えば関数ｅｓｔｉｍａｔｅ（ＡＩＮａｍｅ，  ＩｎＤａｔａ，  Ｐａｒａｍ，  Ｆｕｎｃ）として指示された要求指示に応じて、推論処理識別子、入力データ、及びパラメータを含む推論要求を共通フォーマット（図９（ａ）参照）で生成してＡＩクラスタ管理部１３０へ送信する。すなわち、上位アプリケーション１１０からＡＰＩ１２０が実行されるごとに、アプリケーションの推論指示に応じた推論要求が、上位アプリケーション１１０による推論要求として、共通フォーマットでＡＩクラスタ管理部１３０へ送信される。その後、ＡＰＩ１２０は、例えば関数ｅｓｔｉｍａｔｅ（ＡＩＮａｍｅ，  ＩｎＤａｔａ，  Ｐａｒａｍ，  Ｆｕｎｃ）の戻り値として、受け付け番号を上位アプリケーション１１０へ返す。
【００５５】
図２に示すＡＩクラスタ管理部１３０は、複数の推論処理装置３００−１〜３００−ＮによるＡＩ推論処理を管理する。ＡＩクラスタ管理部１３０は、どのＡＩ推論処理（どのモデルファイル）がどの推論処理装置３００（どのコプロセッサ３０２）で実行されているかを監視するとともに、どのＡＩ推論処理（どのモデルファイル）をどの推論処理装置３００（どのコプロセッサ３０２）で実行すべきであるのかを制御する。ＡＩクラスタ管理部１３０は、複数のコプロセッサ３０２−１〜３０２−ＮにＡＩ推論処理を振り分ける並列分散制御を行い得る。
【００５６】
すなわち、ＡＩクラスタ管理部１３０は、上位アプリケーション１１０による推論要求を受けると、推論要求に応じて、複数のコプロセッサ３０２−１〜３０２−Ｎから収集されたリソース情報をコプロセッサ３０２の個数分（図２の場合、７個）の計算式に適用して処理時間を計算する。ＡＩクラスタ管理部１３０は、計算で得られた複数のコプロセッサ３０２−１〜３０２−Ｎの処理時間に基づいて、推論要求に含まれた推論処理識別子で示されるＡＩ推論処理を割り振るコプロセッサ３０２を選択する。ＡＩクラスタ管理部１３０は、ＡＩ推論処理を実行させるべきコプロセッサとして、複数のコプロセッサ３０２−１〜３０２−Ｎのうち、計算で得られた処理時間が最も短いコプロセッサ３０２を選択し得る。
【００５７】
ＡＩクラスタ管理部１３０は、並列分散制御部１３１、送信部１３２、受信部１３３、プロセッサ監視部１３４、判別パラメータ情報１３５、測定部１３６、及び更新部１３７を有する。プロセッサ監視部１３４は、リソース情報収集部１３４１を有する。
【００５８】
並列分散制御部１３１は、アプリケーションによる推論要求をＡＰＩ１２０から受け、推論要求に応じて、複数のコプロセッサ３０２−１〜３０２−ＮにＡＩ推論処理を振り分ける並列分散制御を行い得る。並列分散制御部１３１は、送信キュー１３１１及び送信先判別部１３１２を有する。
【００５９】
送信キュー１３１１は、ＡＰＩ１２０から供給された推論要求をキューイングする。送信キュー１３１１は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）構造を有する待ち行列バッファーであり、各推論要求が、キューイングされた順番にデキューされる。
【００６０】
送信先判別部１３１２は、計算部１３１２ａ及び選択部１３１２ｂを有する。計算部１３１２ａは、デキューされた推論要求（共通フォーマットでの推論要求）を送信キュー１３１１から受けると、判別パラメータ情報１３５を参照し、デキューされた推論要求に含まれた推論処理識別子に対応する計算式を特定する。
【００６１】
判別パラメータ情報１３５は、異なるＮ個のコプロセッサと異なるＭ個の処理内容との組み合わせに対応付けられたＮ×Ｍ個の計算式を含む。判別パラメータ情報１３５に含まれた各計算式は、Ｎ個のコプロセッサに対応したＮ個の判別パラメータを含む。Ｎ個の判別パラメータのそれぞれは、リソース情報の値を処理時間に変換する変換係数と、対応するコプロセッサのリソース情報が処理時間（予測値）にどの程度影響を与えるかを示す寄与率とを含み得る。計算部１３１２ａは、Ｎ×Ｍ個の計算式のうち、推論処理識別子に対応したＮ個の計算式を特定し得る。
【００６２】
例えば、判別パラメータ情報１３５は、図４に示すようなデータ構造を有する。図４は、判別パラメータ情報１３５のデータ構造を示す図である。判別パラメータ情報１３５は、プロセッサ識別情報欄１３５１、処理識別情報欄１３５２、及び計算式欄１３５３を有する。プロセッサ識別情報欄１３５１には、プロセッサを識別する情報が記録されており、例えば、コプロセッサＡ、コプロセッサＢ、・・・、コプロセッサＧなどのプロセッサ名が記録され得る。コプロセッサＡ、コプロセッサＢ、・・・、コプロセッサＧは、例えば、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎの名前である。処理識別情報欄１３５２には、処理内容を識別する情報（すなわち、推論処理識別子に対応した情報）が記録されており、例えば、処理Ｊ、処理Ｋ、・・・などの処理名が記録され得る。処理Ｊ、処理Ｋ、・・・は、例えば、モデルファイル３０４−１，３０４−２，・・・の名前である。処理Ｊは、例えば、画像中の人物を検出する推論処理に対応していてもよい。処理Ｋは、例えば、画像中の人物の顔領域を検出する推論処理に対応していてもよい。計算式欄１３５３には、処理時間の計算に用いる計算式が記録されている。図４に示す判別パラメータ情報１３５を参照することで、コプロセッサ及び処理内容の各組み合わせに対応した計算式が特定され得る。
【００６３】
例えば、コプロセッサＡ及び処理Ｊ（人物検出処理）の組み合わせに対応した計算式は、次の数式１であると特定され得る。
ｔＡＪ＝ｋＡＪ１ｘ１＋ｋＡＪ２ｘ２＋・・・＋ｋＡＪＮｘＮ・・・数式１
【００６４】
数式１において、ｔＡＪは、処理ＪをコプロセッサＡで実行した場合に計算される処理時間（予測値）を示す。ｋＡＪ１，ｋＡＪ２，・・・，ｋＡＪＮは、それぞれ、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎに対応した判別パラメータであり、リソース情報の値を処理時間に変換する変換係数と、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎのリソース情報が処理時間（予測値）にどの程度影響を与えるかを示す寄与率とを含み得る。ｘ１，ｘ２，・・・，ｘＮは、それぞれ、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎのリソース情報の値が適用（代入）されるべき変数を示す。
【００６５】
あるいは、例えば、コプロセッサＡ及び処理Ｋ（顔検出処理）の組み合わせに対応した計算式は、次の数式２であると特定され得る。
ｔＡＫ＝ｋＡＫ１ｘ１＋ｋＡＫ２ｘ２＋・・・＋ｋＡＫＮｘＮ・・・数式２
【００６６】
数式２において、ｔＡＫは、処理ＫをコプロセッサＡで実行した場合に計算される処理時間（予測値）を示す。ｋＡＫ１，ｋＡＫ２，・・・，ｋＡＫＮは、それぞれ、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎに対応した判別パラメータであり、リソース情報の値を処理時間に変換する変換係数と、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎのリソース情報が処理時間（予測値）にどの程度影響を与えるかを示す寄与率とを含み得る。ｘ１，ｘ２，・・・，ｘＮは、それぞれ、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎのリソース情報の値が適用（代入）されるべき変数を示す。
【００６７】
あるいは、例えば、コプロセッサＢ（コプロセッサ３０２−２）及び処理Ｊ（人物検出処理）の組み合わせに対応した計算式は、次の数式３であると特定され得る。
ｔＢＪ＝ｋＢＪ１ｘ１＋ｋＢＪ２ｘ２＋・・・＋ｋＢＪＮｘＮ・・・数式３
【００６８】
数式３において、ｔＢＪは、処理ＪをコプロセッサＢで実行した場合に計算される処理時間（予測値）を示す。ｋＢＪ１，ｋＢＪ２，・・・，ｋＢＪＮは、それぞれ、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎに対応した判別パラメータであり、リソース情報の値を処理時間に変換する変換係数と、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎのリソース情報が処理時間（予測値）にどの程度影響を与えるかを示す寄与率とを含み得る。ｘ１，ｘ２，・・・，ｘＮは、それぞれ、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎのリソース情報の値が適用（代入）されるべき変数を示す。
【００６９】
図２に示す計算部１３１２ａは、推論処理識別子に対応する計算式を特定すると、各コプロセッサ３０２−１〜３０２−Ｎのリソース情報が供給されるまで待機する。
【００７０】
各コプロセッサ３０２−１〜３０２−Ｎは、所定の周期毎に（例えば、数分〜数時間毎に）、及び／又は、プロセッサ監視部１３４から並列分散制御部１３１及び送信部１３２経由で受けた要求に応じて、自身のリソース情報をＡＩクラスタ管理部１３０へ送信する。リソース情報は、例えば、プロセッサの使用率［％］を含む。
【００７１】
受信部１３３は、処理状況に関するリソース情報を各コプロセッサ３０２−１〜３０２−Ｎから受信すると、各コプロセッサ３０２−１〜３０２−Ｎのリソース情報をリソース情報収集部１３４１へ供給する。リソース情報収集部１３４１は、各コプロセッサ３０２−１〜３０２−Ｎのリソース情報を受けると、各コプロセッサ３０２−１〜３０２−Ｎのリソース情報を計算部１３１２ａへ供給する。
【００７２】
これに応じて、計算部１３１２ａは、各コプロセッサ３０２−１〜３０２−Ｎのリソース情報の値を計算式に適用して、各コプロセッサ３０２−１〜３０２−Ｎの処理時間を計算する。
【００７３】
コプロセッサの個数をＮ個とし、処理内容の個数をＭ個とするとき、計算部１３１２ａは、Ｎ個のプロセッサのリソース情報の値をＮ個の計算式のそれぞれに適用（代入）して、計算結果としてＮ個のプロセッサの処理時間（予測値）を得る。
【００７４】
計算部１３１２ａは、計算で得られた各コプロセッサ３０２−１〜３０２−Ｎの処理時間を選択部１３１２ｂへ供給する。
【００７５】
選択部１３１２ｂは、各コプロセッサ３０２−１〜３０２−Ｎの処理時間に基づいて、推論処理識別子で示される推論処理を実行すべきコプロセッサとして、複数のコプロセッサ３０２−１〜３０２−Ｎから１つのコプロセッサ３０２を選択する。選択部１３１２ｂは、複数のコプロセッサ３０２−１〜３０２−Ｎのうち、最も短い処理時間（予測値）に対応する１つのコプロセッサ３０２を選択してもよい。選択部１３１２ｂは、選択された１つのコプロセッサ３０２を送信先として指定する送信先情報と、共通フォーマットでの推論要求とを送信部１３２へ供給する。
【００７６】
送信部１３２は、共通フォーマットでの推論要求（ＡＩ推論処理の推論要求）を、送信先情報で指定されたコプロセッサ３０２（推論処理装置３００）へ送信する。これにより、複数のコプロセッサ３０２−１〜３０２−ＮにＡＩ推論処理が振り分ける並列分散制御を効率的に行われ得る。
【００７７】
ここで、複数のコプロセッサ３０２−１〜３０２−Ｎの処理性能は、そのファームウェアのバージョンアップ及び／又はハードウェアの置き換え等により変化し得る。その点を考慮し、判別パラメータ情報１３５は、所定の更新タイミングで更新され得る。
【００７８】
例えば、選択されたコプロセッサ３０２がＡＩ推論処理を実行した際に判別パラメータ情報１３５が更新される場合、測定部１３６は、そのコプロセッサ３０２に対して推論要求が送信されてからそのコプロセッサ３０２の処理完了通知が受信されるまでの時間を、リソース情報収集部１３４１で収集された各コプロセッサ３０２−１〜３０２−Ｎのリソース情報の値に対する処理時間として測定し、その測定された処理時間を蓄積できる。更新部１３７は、所定の更新タイミング（例えば、数週間ごとの更新タイミング）になると、蓄積された各コプロセッサの処理時間の測定結果を測定部１３６から取得し、蓄積された各コプロセッサの処理時間を用いて重回帰分析を行い、各コプロセッサの計算式を新たに求める。このとき、各コプロセッサの計算式における判別パラメータが更新される。更新部１３７は、判別パラメータ情報１３５にアクセスし、各コプロセッサの計算式を新たに求められた計算式に上書きで置き換える。これにより、更新部１３７は、判別パラメータ情報１３５を更新する。
【００７９】
例えば、数式１で求められた処理時間（予測値）に基づいてコプロセッサＡが選択され処理Ｊ（人物検出処理）を実行する場合を考える。この実行により、測定部１３６は、図５（ａ）の１行目に示された、リソース情報ｘ１＝９０［％］、ｘ２＝４５［％］、・・・、ｘＮ＝２０［％］に対する処理時間の測定値ｔＡＪｍ＝０．４［ｓ］を測定する。コプロセッサＡ及び処理Ｊの組み合わせに対応する数式１の計算式が、図５（ａ）の２行目以降の過去の測定結果に対する重回帰分析で得られた式であるとすると、新たに得られた１行目の測定結果を加えて重回帰分析することで計算式が変わる可能性がある。そのため、測定部１３６は、図５（ａ）の２行目以降の過去の測定結果に１行目の測定結果を加えた測定結果を更新部１３７へ供給する。更新部１３７は、処理時間の測定値ｔＡＪｍを目的変数とし、リソース情報ｘ１〜ｘＮを説明変数として、重回帰分析を行い、次の数式４を新たに求める。
ｔＡＪ＝ｋＡＪ１’ｘ１＋ｋＡＪ２’ｘ２＋・・・＋ｋＡＪＮ’ｘＮ・・・数式４
【００８０】
数式４において、ｋＡＪ１’，ｋＡＪ２’，・・・，ｋＡＪＮ’は、それぞれ、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎに対応した更新後の判別パラメータである。数式１及び数式４を比較すると、計算式において、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎに対応した判別パラメータが更新されており、他の部分は同様であることが分かる。更新部１３７は、新たに求められた数式４の計算式を保持し得る。
【００８１】
更新部１３７は、所定の更新タイミングになると、判別パラメータ情報１３５にアクセスし、図５（ｂ）に示すように、コプロセッサＡ及び処理Ｊの組み合わせに対応する計算式を新たに求められた数式４の計算式に上書きで置き換える。これにより、更新部１３７は、判別パラメータ情報１３５を更新する。なお、図５は、判別パラメータ情報１３５の更新処理（コプロセッサＡ、処理Ｊの場合）を示す図である。
【００８２】
あるいは、例えば、数式２で求められた処理時間（予測値）に基づいてコプロセッサＡが選択され処理Ｋ（顔検出処理）を実行する場合を考える。この実行により、測定部１３６は、図６（ａ）の１行目に示された、リソース情報ｘ１＝９０［％］、ｘ２＝４５［％］、・・・、ｘＮ＝２０［％］に対する処理時間の測定値ｔＡＫｍ＝０．３［ｓ］を測定する。コプロセッサＡ及び処理Ｋの組み合わせに対応する数式２の計算式が、図６（ａ）の２行目以降の過去のデータに対する重回帰分析で得られた式であるとすると、新たに得られた１行目の測定結果を加えて重回帰分析することで計算式が変わる可能性がある。そのため、測定部１３６は、図６（ａ）の２行目以降の過去のデータに１行目のデータを加えた測定結果を更新部１３７へ供給する。更新部１３７は、処理時間の測定値ｔＡＪｍを目的変数とし、リソース情報ｘ１〜ｘＮを説明変数として、重回帰分析を行い、次の数式５を新たに求める。
ｔＡＫ＝ｋＡＫ１’ｘ１＋ｋＡＫ２’ｘ２＋・・・＋ｋＡＫＮ’ｘＮ・・・数式５
【００８３】
数式５において、ｋＡＫ１’，ｋＡＫ２’，・・・，ｋＡＫＮ’は、それぞれ、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎに対応した更新後の判別パラメータである。数式２及び数式５を比較すると、計算式において、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎに対応した判別パラメータが更新されており、他の部分は同様であることが分かる。更新部１３７は、新たに求められた数式５の計算式を保持し得る。
【００８４】
更新部１３７は、所定の更新タイミングになると、判別パラメータ情報１３５にアクセスし、図６（ｂ）に示すように、コプロセッサＡ及び処理Ｋの組み合わせに対応する計算式を新たに求められた数式５の計算式に上書きで置き換える。これにより、更新部１３７は、判別パラメータ情報１３５を更新する。なお、図６は、判別パラメータ情報１３５の更新処理（コプロセッサＡ、処理Ｋの場合）を示す図である。
【００８５】
あるいは、例えば、数式３で求められた処理時間（予測値）に基づいてコプロセッサＢが選択され処理Ｊ（人物検出処理）を実行する場合を考える。この実行により、測定部１３６は、図７（ａ）の１行目に示された、リソース情報ｘ１＝９０［％］、ｘ２＝４５［％］、・・・、ｘＮ＝２０［％］に対する処理時間の測定値ｔＢＪｍ＝０．３［ｓ］を測定する。コプロセッサＢ及び処理Ｊの組み合わせに対応する数式３の計算式が、図７（ａ）の２行目以降の過去のデータに対する重回帰分析で得られた式であるとすると、新たに得られた１行目の測定結果を加えて重回帰分析することで計算式が変わる可能性がある。そのため、測定部１３６は、図７（ａ）の２行目以降の過去のデータに１行目のデータを加えた測定結果を更新部１３７へ供給する。更新部１３７は、処理時間の測定値ｔＢＪｍを目的変数とし、リソース情報ｘ１〜ｘＮを説明変数として、重回帰分析を行い、次の数式６を新たに求める。
ｔＢＪ＝ｋＢＪ１’ｘ１＋ｋＢＪ２’ｘ２＋・・・＋ｋＢＪＮ’ｘＮ・・・数式６
【００８６】
数式６において、ｋＢＪ１’，ｋＢＪ２’，・・・，ｋＢＪＮ’は、それぞれ、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎに対応した更新後の判別パラメータである。数式３及び数式６を比較すると、計算式において、コプロセッサ３０２−１、コプロセッサ３０２−２、・・・、コプロセッサ３０２−Ｎに対応した判別パラメータが更新されており、他の部分は同様であることが分かる。更新部１３７は、新たに求められた数式６の計算式を保持し得る。
【００８７】
更新部１３７は、所定の更新タイミングになると、判別パラメータ情報１３５にアクセスし、図７（ｂ）に示すように、コプロセッサＢ及び処理Ｊの組み合わせに対応する計算式を新たに求められた数式６の計算式に上書きで置き換える。これにより、更新部１３７は、判別パラメータ情報１３５を更新する。なお、図７は、判別パラメータ情報１３５の更新処理（コプロセッサＢ、処理Ｊの場合）を示す図である。
【００８８】
これにより、並列分散制御部１３１は、複数のコプロセッサ３０２−１〜３０２−Ｎの処理性能の変更に対応して、その並列分散制御を高精度化できる。
【００８９】
次に、推論処理装置３００のモデルファイル３０４を用いた動作について図８を用いて説明する。図８は、推論処理装置３００のモデルファイル３０４を用いた動作を示す図である。
【００９０】
図８に示す推論処理装置３００において、推論アプリケーション３０３は、仮想環境技術によって、情報処理装置１００のＳＳＤ１０７及び／又はＨＤＤ１０８に格納された複数のミドルウェア及び複数のモデルファイルのうち推論アプリケーション３０３が利用するミドルウェア３０５及びモデルファイル３０４−１〜３０４−Ｍをロードする。推論アプリケーション３０３は、推論処理装置３００の起動時に、ミドルウェア３０５及びモデルファイル３０４−１〜３０４−Ｍの初期化を行う。
【００９１】
推論処理装置３００がＡＩクラスタ管理部１３０により送信先として選択される場合、推論アプリケーション３０３は、推論要求を上位アプリケーション１１０からＡＰＩ１２０及びＡＩクラスタ管理部１３０経由で受信する。推論要求は、推論処理識別子、推論処理の対象となる入力データ（画像、音声、テキストなど）、推論処理の実行条件を設定するパラメータを含む。推論要求は、ＡＰＩ１２０で共通フォーマットに変換されており、推論アプリケーション３０３は、共通フォーマットでの推論要求を受信する。推論アプリケーション３０３は、推論要求に含まれた推論処理識別子に対応するモデルファイル３０４を特定し、推論要求に含まれた共通フォーマットの入力データをその特定されたモデルファイル３０４のフォーマットへ変換する。
【００９２】
ここで、Ｍ個のモデルファイル３０４−１〜３０４−Ｍのフォーマットは、互いに異なり得る。すなわち、推論アプリケーション３０３は、モデルファイル３０４−１〜３０４−Ｍ間のフォーマットの違いを吸収して上位アプリケーション１１０−１〜１１０−ｎ側との間で（すなわち、ＡＰＩ１２０との間で）共通フォーマットによる情報の送受信を行うことを可能にする。
【００９３】
例えば、推論処理識別子がモデルファイル３０４−１に対応している場合、図８に示すように、推論アプリケーション３０３は、推論要求に含まれた推論処理識別子から、実行すべきモデルファイルがモデルファイル３０４−１であると特定しミドルウェア３０５へ通知する。また、推論アプリケーション３０３は、共通フォーマットの入力データをモデルファイル３０４−１のフォーマットの入力データに変換してミドルウェア３０５へ供給する。ミドルウェア３０５は、モデルファイル３０４−１の入力層へフォーマット変換後の入力データを入力し、モデルファイル３０４−１で推論処理を実行させる。推論処理の実行結果としての出力データ（モデルファイル３０４−１のフォーマットの出力データ）がモデルファイル３０４−１からミドルウェア３０５へ供給されると、ミドルウェア３０５は、モデルファイル３０４−１の出力データを推論アプリケーション３０３へ供給する。推論アプリケーション３０３は、モデルファイル３０４−１のフォーマットの出力データを共通フォーマットの出力データに変換する。推論アプリケーション３０３は、フォーマット変換後の出力データをＡＩクラスタ管理部１３０及びＡＰＩ１２０経由で上位アプリケーション１１０へ送信する。
【００９４】
上位アプリケーション１１０側から推論アプリケーション３０３で受信される推論要求のフォーマットは、ＡＰＩ１２０で共通フォーマットに変換されており、例えば、図９（ａ）に示すようなフォーマットになっている。
【００９５】
図９（ａ）に示す共通フォーマットは、モデルファイルの種類にかかわらず画像の物体判定で共通になっている。推論要求では、推論処理識別子として、ａｉ＿ｎａｍｅ［文字列］が指定され得る。推論処理の実行条件を設定するパラメータとして、画像の幅：ｗｉｄｔｈ［整数］、画像の高さ：ｈｅｉｇｈｔ［整数］、色深度パラメータ：ｃｏｌｏｒ＿ｄｅｐｔｈ［整数］、信頼度しきい値：ｃｏｎｆｉｄｅｎｃｅ＿ｔｈｒｅｓｈｏｌｄ［浮動小数点数］、最大返却数：［整数］が指定され得る。推論処理の対象となるデータ（画像）として、ｉｍａｇｅ＿ｄａｔａ［バイト配列］（「ｗｉｄｔｈ×ｈｅｉｇｈｔ×３×ｃｏｌｏｒ＿ｄｅｐｔｈ」のバイト配列（３＝ＲＧＢの３層））が指定され得る。
【００９６】
モデルファイル３０４−１が数字認識モデルである場合、数字認識モデル（モデルファイル３０４−１）は、画像に０−９の数字が入っているかどうかを判定する。入力画像は２８×２８のモノクロ画像のみで、画像全体を判定する。
【００９７】
この場合、推論アプリケーション３０３は、図９（ａ）に示す共通フォーマットの入力データを、２８×２８にリサイズ、モノクロ化した入力データに変換し、図９（ｂ）に示すモデルファイル３０４−１のフォーマットの入力データとする。
【００９８】
図９（ｂ）に示すモデルファイル３０４−１のフォーマットは、文字認識モデル（モデルファイル３０４−１）の入力データのフォーマットであり、推論処理の実行条件を設定するパラメータとして、指定がない（最大個数、しきい値などの指定がない）。推論処理の対象となるデータ（画像）として、２８×２８×１のｆｌｏａｔ型（浮動小数点数型）の３２ｂｉｔの配列が指定され得る。
【００９９】
例えば、パラメータとして信頼度のしきい値が０．５とされ、共通フォーマットの入力データとして、１００×１００×３×８ｂｉｔのカラーの画像を受けた場合、推論アプリケーション３０３は、２８×２８×３２ｂｉｔのモノクロ画像に変換してモデルファイル３０４−１の入力データとし得る。
【０１００】
なお、図９は、共通フォーマットからモデルファイル３０４−１の入力層のフォーマットへの変換処理を示す図である。
【０１０１】
また、モデルファイル３０４−１での推論処理の実行結果としての出力データは、図１０（ａ）に示すようなモデルファイル３０４−１のフォーマットの出力データになっている。
【０１０２】
図１０（ａ）に示すモデルファイル３０４−１のフォーマットは、文字認識モデル（モデルファイル３０４−１）の出力データのフォーマットであり、推論処理の実行結果として、１０個のｆｌｏａｔ型（浮動小数点数型）の３２ｂｉｔの配列（それぞれの要素が０−９の数字である確率を示す。例えば、０番目の要素…“０”である確率〜９番目の要素…“９”である確率を示す。）が指定され得る。
【０１０３】
この場合、推論アプリケーション３０３は、図１０（ａ）に示すモデルファイル３０４−１のフォーマットの出力データに対して、１０個の配列のうち、しきい値以上の要素を選択し、その要素番号を物体の種類、信頼度をその数字の確率として返却するとともに、位置は画像全体を指定し、図１０（ｂ）、図１０（ｃ）に示す共通フォーマットの出力データとする。
【０１０４】
図１０（ｂ）に示す共通フォーマットは、上位アプリケーション１１０側へ出力データのフォーマットであり、モデルファイルの種類にかかわらず画像の物体判定で共通になっている。共通フォーマットの出力データでは、推論処理識別子として、［文字列］が指定され、推論処理の実行結果として、推論処理の成否：ｒｅｓｕｌｔ＿ｃｏｄｅ［整数］（０：正常、０以外：異常）、推論処理の結果数：ｎｕｍｂｅｒ＿ｒｅｓｕｌｔ［整数］が指定される。また、ｎｕｍｂｅｒ＿ｒｅｓｕｌｔ［整数］（又は、ｎｕｍｂｅｒ＿ｒｅｓｕｌｔ個数）では、物体の種類として、ｏｂｊｅｃｔ＿ｃｌａｓｓ［整数］（物体の種類を示すコード、モデルごとに違う）が指定され得る。画像上の物体の位置として、左：ｌｅｆｔ［整数］、上：ｔｏｐ［整数］、幅：ｗｉｄｔｈ［整数］、高さ：ｈｅｉｇｈｔ［整数］、信頼度：ｃｏｎｆｉｄｅｎｃｅ［浮動小数点数］が指定され得る。なお、図１０は、モデルファイル３０４−１の出力層のフォーマットから共通フォーマットへの変換処理を示す図である。
【０１０５】
例えば、配列
０．０，  ０．０，  ０．０，  ０．３，  ０．７，  ０．０，  ０．８，  ０．６，  ０．０，  ０．０
がモデルファイル３０４−１から出力データとして出力されると、推論アプリケーション３０３は、その出力データを
推論処理の成否：０              ※成功
推論処理の結果数：３          ※１０のうち３つが０．５以上の数値
｛
［
物体の種類：６            ※６番目の要素（０始まり）
画像上の物体の位置：０，０，１００，１００    ※画像全体
信頼度：０．８  
］，  
［
物体の種類：４            ※４番目の要素（０始まり）
画像上の物体の位置：０，０，１００，１００    ※画像全体
信頼度：０．７            ※４番目の数値が信頼度
］，
［
物体の種類：７            ※７番目の要素（０始まり）
画像上の物体の位置：０，０，１００，１００    ※画像全体
信頼度：０．６            ※７番目の数値が信頼度
］
｝
に変換して、共通フォーマットの出力データとし得る。
【０１０６】
あるいは、例えば、推論処理識別子がモデルファイル３０４−２に対応している場合、図８に示すように、推論アプリケーション３０３は、推論要求に含まれた推論処理識別子から、実行すべきモデルファイルがモデルファイル３０４−２であると特定しミドルウェア３０５へ通知する。また、推論アプリケーション３０３は、共通フォーマットの入力データをモデルファイル３０４−２のフォーマットの入力データに変換してミドルウェア３０５へ供給する。ミドルウェア３０５は、モデルファイル３０４−２の入力層へフォーマット変換後の入力データを入力し、モデルファイル３０４−２で推論処理を実行させる。推論処理の実行結果としての出力データ（モデルファイル３０４−２のフォーマットの出力データ）がモデルファイル３０４−２からミドルウェア３０５へ供給されると、ミドルウェア３０５は、モデルファイル３０４−２の出力データを推論アプリケーション３０３へ供給する。推論アプリケーション３０３は、モデルファイル３０４−２のフォーマットの出力データを共通フォーマットの出力データに変換する。推論アプリケーション３０３は、フォーマット変換後の出力データをＡＩクラスタ管理部１３０及びＡＰＩ１２０経由で上位アプリケーション１１０へ送信する。
【０１０７】
上位アプリケーション１１０側から推論アプリケーション３０３で受信される推論要求のフォーマットは、ＡＰＩ１２０で共通フォーマットに変換されており、例えば、図１２（ａ）に示すようなフォーマットになっている。図１２（ａ）に示す共通フォーマットは、図９（ａ）に示す共通フォーマットと同様である。
【０１０８】
モデルファイル３０４−２が物体認識モデルである場合、物体認識モデル（モデルファイル３０４−２）は、画像に識別可能な物体（人物、車、猫など）が含まれているかどうかを判定する。入力画像は任意サイズの画像で、画像全体を判定し、物体を検出するとその物体の種類（数字）と位置、信頼度を出力する。
【０１０９】
この場合、推論アプリケーション３０３は、図１２（ａ）に示す共通フォーマットの入力データ（入力画像データ）に１次元（深さ）を追加した入力データに変換し、図１２（ｂ）に示すモデルファイル３０４−２のフォーマットの入力データとする。
【０１１０】
図１２（ｂ）に示すモデルファイル３０４−２のフォーマットは、物体認識モデル（モデルファイル３０４−２）の入力データのフォーマットであり、推論処理の実行条件を設定するパラメータとして、最大個数、判定したい物体の種類、信頼度のしきい値、推論処理の対象となるデータ（画像）：高さ×幅×深さ×３のｕｎｉｔ３２の配列（深さは３次元計算用で通常不要）が指定され得る。
【０１１１】
例えば、パラメータとして信頼度のしきい値が０．５とされ、最大個数が５とされ、共通フォーマットの入力データとして、１００×１００×３×８ｂｉｔのカラーの画像を受けた場合、推論アプリケーション３０３は、１００×１００×１×３×３２ｂｉｔの画像に変換してモデルファイル３０４−２の入力データとし、信頼度のしきい値として０．５、最大個数として５を推論処理の実行結果を絞り込むためのパラメータとし得る。
【０１１２】
なお、図１２は、共通フォーマットからモデルファイル３０４−２の入力層のフォーマットへの変換処理を示す図である。
【０１１３】
また、モデルファイル３０４−２での推論処理の実行結果としての出力データは、図１３（ａ）に示すようなモデルファイル３０４−２のフォーマットの出力データになっている。
【０１１４】
図１３（ａ）に示すモデルファイル３０４−２のフォーマットは、物体認識モデル（モデルファイル３０４−２）の出力データのフォーマットであり、推論処理の実行結果として、判定した物体の個数：［整数］、物体の種類：最大個数分の配列、物体の位置：最大個数分の配列（位置は縦横を１とした比率で返却）、物体の信頼度：最大個数分の配列が指定され得る。
【０１１５】
この場合、推論アプリケーション３０３は、図１３（ａ）に示すモデルファイル３０４−２のフォーマットの出力データに対して、種類、位置、信頼度、判定した物体の個数の配列から、信頼度がしきい値以上の要素のみ出力し、図１３（ｂ）、図１３（ｃ）に示す共通フォーマットの出力データとする。
【０１１６】
図１３（ｂ）、図１３（ｃ）に示す共通フォーマットは、図１０（ｂ）、図１０（ｃ）に示す共通フォーマットと同様である。
【０１１７】
例えば、
判定した物体の個数  ２
物体の種類の配列  ［  １，  ４，  ０，  ０，  ０  ］  （最大個数分）
物体の位置の配列  ［  ［０．２，０．１５，０．３，０．２］，  ［０．７，０．８，０．２，０．１］，  ０，  ０，  ０  ］（最大個数分）
物体の信頼度の配列［  ０．８，  ０．３，  ０，  ０，  ０  ］（最大個数分）
がモデルファイル３０４−１から出力データとして出力されると、推論アプリケーション３０３は、その出力データを
推論処理の成否：０              ※成功
推論処理の結果数：１          ※５のうち１つだけ信頼度が０．５以上
｛
［
物体の種類：１            ※物体の種類を示すコード（モデルごとに定義）
画像上の物体の位置：２０，１５，３０，２０  ※位置を比率から座標値に変換
信頼度：０．８  
］
｝
に変換して、共通フォーマットの出力データとし得る。
【０１１８】
以上のように、実施形態では、情報処理システム１において、Ｎ個のコプロセッサ３０２−１〜３０２−Ｎから収集されたリソース情報を計算式に適用してＮ個のコプロセッサの処理時間をそれぞれ計算し、Ｎ個のコプロセッサの処理時間に基づいて、推論処理を割り振るコプロセッサを選択して推論要求を送信する。例えば、情報処理システム１は、処理時間が最も短いコプロセッサ３０２を選択して推論要求を送信することができる。これにより、現在のリソースの空き状況を考慮できるので、並列分散制御をリアルタイム的に効率化できる。
【０１１９】
また、実施形態では、情報処理装置１００において、測定部１３６が、推論要求に応じて推論処理を行うプロセッサ３０２による処理時間を測定する。更新部１３７は、受信されたＮ個のコプロセッサ３０２−１〜３０２−Ｎのリソース情報と測定された処理時間とに基づいて重回帰分析を行い、計算式を更新する。これにより、Ｎ個のコプロセッサ３０２−１〜３０２−Ｎの処理性能の変更に対応でき、並列分散制御を高精度化できる。
【０１２０】
また、実施形態では、情報処理装置１００において、計算式は、Ｎ個のコプロセッサコプロセッサ３０２−１〜３０２−Ｎに対応したＮ個の判別パラメータを含み、更新部１３７は、計算式におけるＮ個の判別パラメータを更新する。これにより、Ｎ個のコプロセッサ３０２−１〜３０２−Ｎの処理性能の変更に対応して計算式を更新できる。
【０１２１】
また、実施形態では、情報処理装置１００において、推論要求は、推論処理の内容を識別する推論処理識別子を含む。計算１３１２ａ部は、Ｎ個のコプロセッサ３０２−１〜３０２−Ｎのリソース情報を、異なるＮ個のコプロセッサ３０２−１〜３０２−Ｎと異なるＭ個の推論処理内容との組み合わせに対応付けられたＮ×Ｍ個の計算式のうち推論処理識別子で識別される推論処理内容に対応したＮ個の計算式に適用する。これにより、並列分散システム内に特定の処理に対して高速であるようなコプロセッサが混在している場合に、性能差として演算処理能力に加えて処理内容も考慮できるので、並列分散制御を高精度化できる。
【０１２２】
また、実施形態の情報処理装置１００は、推論処理の内容を識別する推論処理識別子を含む推論要求を生成して推論処理装置３００に送信する。これにより、推論処理装置３００は、推論処理識別子によってモデルファイルを特定し、不要なモデルファイルの展開を抑制して、推論処理に必要なモデルファイルのみをメモリに展開して、推論処理を実行することができる。このため、推論処理装置３００は、１つのモデルファイルを展開して推論処理を実行できる程度の性能のメモリ等を含むハードウェアを備えていればよい。この結果、情報処理システム１は、ハードウェア性能の低い推論処理装置３００であっても、効率的に推論処理を実行して、上位アプリケーションの要求に応えることができる。
【０１２３】
また、実施形態では、情報処理装置１００において、並列分散制御の制御対象となるＮ個のコプロセッサコプロセッサ３０２−１〜３０２−Ｎが、推論要求に応じた推論処理を行う。これにより、同じ処理を繰り返し実行するような処理がコプロセッサ３０２で実行されるので、複数のコプロセッサ３０２−１〜３０２−Ｎのリソース状況からおおよその処理時間を容易に推定できる。
【０１２４】
また、実施形態では、推論処理装置３００において、Ｍ個のモデルファイル３０４−１〜３０４−Ｍが、互いに異なる推論処理に対応している。ミドルウェア３０５は、Ｍ個のモデルファイル３０４−１〜３０４−Ｍをそれぞれ実行可能である。推論アプリケーション３０３は、推論処理識別子と入力データとを含む推論要求を情報処理装置１００から受信し、Ｍ個のモデルファイル３０４−１〜３０４−Ｍのうち推論処理識別子に対応するモデルファイルを特定する。ミドルウェア３０５は、特定されたモデルファイルを読み込み、推論処理を実行する。これにより、様々な推論処理に対して同じ学習済みモデルが用いられる場合に比較して、推論処理毎に機械学習で効率化されたモデルファイル３０４を用いることができるので、推論処理装置３００における推論処理を効率化できる。
【０１２５】
また、実施形態では、推論処理装置３００において、推論アプリケーション３０３が、推論処理識別子と共通フォーマットの入力データとを含む推論要求を情報処理装置１００から受信する。推論アプリケーション３０３は、共通フォーマットの入力データを、Ｍ個のモデルファイル３０４−１〜３０４−Ｍのうち推論処理識別子に対応するモデルファイル３０４で実行可能であるフォーマットの入力データへ変換する。ミドルウェア３０５は、そのフォーマットの入力データを用いて、特定されたモデルファイル３０４を実行する。これにより、情報処理装置１００側から受けた入力データを用いてモデルファイル３０４で推論処理を実行させることができる。
【０１２６】
また、実施形態では、推論処理装置３００において、推論アプリケーション３０３が、特定されたモデルファイル３０４の実行で得られたモデルファイル３０４用のフォーマットの出力データを共通フォーマットの出力データへ変換して情報処理装置１００へ送信する。これにより、モデルファイル３０４の推論処理の実行結果を情報処理装置１００側へ提供することができる。
【０１２７】
また、実施形態では、推論処理装置３００において、他のモデルファイル３０４に対応した推論処理識別子と共通フォーマットの入力データとを含む推論要求を情報処理装置１００から受信する。推論アプリケーション３０３は、共通フォーマットの入力データを、Ｍ個のモデルファイル３０４−１〜３０４−Ｍのうち推論処理識別子に対応する他のモデルファイル３０４で実行可能であるフォーマットの入力データへ変換する。ミドルウェア３０５は、そのフォーマットの入力データを用いて、特定された他のモデルファイル３０４を実行する。これにより、情報処理装置１００側から受けた入力データを用いて他のモデルファイル３０４で推論処理を実行させることができる。
【０１２８】
また、実施形態では、推論処理装置３００において、推論アプリケーション３０３が、特定された他のモデルファイル３０４の実行で得られた他のモデルファイル３０４用のフォーマットの出力データを共通フォーマットの出力データへ変換して情報処理装置１００へ送信する。これにより、他のモデルファイル３０４の推論処理の実行結果を情報処理装置１００側へ提供することができる。
【０１２９】
なお、各推論処理装置３００−１〜３００−Ｎは、図１４に示すように、複数のミドルウェア３０５ｉ−１，３０５ｉ−２を有していてもよい。図１４は、実施形態の変形例における推論処理装置３００の機能構成を示す図である。
【０１３０】
この場合、複数のミドルウェア３０５ｉ−１，３０５ｉ−２のそれぞれは、Ｍ個のモデルファイル３０４−１〜３０４−Ｍにおける１以上のモデルファイルが対応している。例えば、図１４の場合、ミドルウェア３０５ｉ−１は、１個のモデルファイル３０４−１に対応しており、ミドルウェア３０５ｉ−２は、（Ｍ−１）個のモデルファイル３０４−２〜３０４−Ｍに対応している。
【０１３１】
推論アプリケーション３０３は、それぞれがミドルウェア３０５ｉとミドルウェアに対応するモデルファイル３０４とを含む複数の組のうち推論処理識別子に対応する組を特定する。特定された組に含まれたミドルウェア３０５ｉは、特定された組に含まれたモデルファイル３０４を実行する。
【０１３２】
例えば、図１４の場合、Ｍ個の組として、（ミドルウェア３０５ｉ−１，モデルファイル３０４−１）、（ミドルウェア３０５ｉ−２，モデルファイル３０４−２）、（ミドルウェア３０５ｉ−２，モデルファイル３０４−３）、・・・、（ミドルウェア３０５ｉ−２，モデルファイル３０４−Ｍ）が存在する。
【０１３３】
推論処理識別子がモデルファイル３０４−１に対応している場合、推論アプリケーション３０３は、（ミドルウェア３０５ｉ−１，モデルファイル３０４−１）を推論処理識別子に対応する組として特定する。この場合、ミドルウェア３０５ｉ−１がモデルファイル３０４−１を実行する。
【０１３４】
推論処理識別子がモデルファイル３０４−２に対応している場合、推論アプリケーション３０３は、（ミドルウェア３０５ｉ−２，モデルファイル３０４−２）を推論処理識別子に対応する組として特定する。この場合、ミドルウェア３０５ｉ−２がモデルファイル３０４−２を実行する。
【０１３５】
このように、各推論処理装置３００−１〜３００−Ｎが複数のミドルウェア３０５ｉ−１，３０５ｉ−２を有する場合も、推論処理毎に機械学習で効率化されたモデルファイル３０４を用いることができるので、推論処理装置３００における推論処理を効率化できる。
【０１３６】
あるいは、ブリッジコントローラ２０２は、図１５〜図２１に示すようなＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）規格に対応したＰＣＩｅブリッジコントローラ３であってもよい。図１５は、実施形態の他の変形例における情報処理システムのハードウェア構成を示す図である。図１６は、実施形態の他の変形例における情報処理システムのソフトウェア構成を示す図である。図１７は、実施形態の他の変形例におけるＰＣＩｅブリッジコントローラのハードウェア構成を示す図である。図１８は、実施形態の他の変形例におけるＰＣＩｅのレイヤ構成を示す図である。図１９は、実施形態の他の変形例におけるコプロセッサＧからの他のプロセッサの見え方を示す図である。図２０は、実施形態の他の変形例におけるコプロセッサＤからの他のプロセッサの見え方を示す図である。図２１は、実施形態の他の変形例におけるＰＣＩｅブリッジコントローラを介したプロセッサ間のデータ転送処理を示す図である。
【０１３７】
図１５に例示する情報処理システム１においては、ＰＣＩｅブリッジコントローラ３および複数（図４に示す例では８つ）のプラットフォーム２−１〜２−８を備える。各プラットフォーム２−１〜２−８は、それぞれＰＣＩｅブリッジコントローラ３に接続されている。
【０１３８】
なお、以下、プラットフォームを示す符号としては、複数のプラットフォームのうち１つを特定する必要があるときには符号２−１〜２−８を用いるが、任意のプラットフォームを指すときには符号２を用いる。プラットフォーム２はＰＣプラットフォーム２といってもよい。
【０１３９】
プラットフォーム２−１はメインプロセッサ２１−１を備える。メインプロセッサ２１−１は、実施形態のメインプロセッサ１０２に対応している。プラットフォーム２−２〜２−８はコプロセッサ２１−２〜２１−８をそれぞれ備える。コプロセッサ２１−２〜２１−８は、それぞれ、実施形態のコプロセッサ３０２−１〜３０２−Ｎに対応している。
【０１４０】
メインプロセッサ２１−１及びコプロセッサ２１−２〜２１−８は、それぞれ違うメーカ（ベンダ）から提供されてもよい。例えば、メインプロセッサ２１−１，コプロセッサ２１−２，コプロセッサ２１−３，コプロセッサ２１−４，コプロセッサ２１−５，コプロセッサ２１−６，コプロセッサ２１−７，コプロセッサ２１−８は、それぞれ、Ａ社，Ｂ社，Ｃ社，Ｄ社，Ｅ社，Ｆ社，Ｇ社，Ｈ社が提供するものであるとする。
【０１４１】
また、以下、コプロセッサ２１−２，コプロセッサ２１−３，コプロセッサ２１−４，コプロセッサ２１−５，コプロセッサ２１−６，コプロセッサ２１−７，コプロセッサ２１−８を、それぞれコプロセッサＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇという場合がある。また、ＰＣＩｅブリッジコントローラに搭載されているＥＰに対して、それぞれ異なるプラットフォームを接続しても良い。さらに、２つ以上の複数のＥＰを１つのプラットフォームに接続し、プラットフォーム側が複数のＲＣを用いてＰＣＩｅブリッジコントローラと通信しても良い。
【０１４２】
なお、以下、プロセッサを示す符号としては、複数のプロセッサのうち１つを特定する必要があるときには符号２１−１〜２１−８もしくは符号Ａ〜Ｇ等を用いるが、任意のプロセッサを指すときには符号２１を用いる。
【０１４３】
プラットフォーム２−１〜２−８は、ＡＩ推論処理や画像処理等の演算処理を行なうコンピュータ環境であり、プロセッサ２１や図２１に示すストレージ２３およびメモリ（物理メモリ）２２を備える。
【０１４４】
プラットフォーム２においては、プロセッサ２１がメモリ２２やストレージ２３に格納されたプログラムを実行することで各種機能を実現する。
【０１４５】
ストレージ２３は、ハードディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ：ＨＤＤ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ストレージクラスメモリ（Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｍｅｍｏｒｙ：ＳＣＭ）等の記憶装置であって、種々のデータを格納するものである。
【０１４６】
メモリ２２はＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）およびＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含む記憶メモリである。メモリ２２のＲＯＭには、各種ソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ２２上のソフトウェアプログラムは、プロセッサ２１に適宜読み込まれて実行される。また、メモリ２２のＲＡＭは、一次記憶メモリあるいはワーキングメモリとして利用される。
【０１４７】
プロセッサ２１（メインプロセッサ２１−１又はコプロセッサ２１−２〜２１−８）は、プラットフォーム２全体を制御する。プロセッサ２１は、マルチプロセッサであってもよい。プロセッサ２１は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ），ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ），ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ），ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ），ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ），ＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ），ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）のいずれか一つであってもよい。また、プロセッサ２１は、ＣＰＵ，ＧＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。例えば、コプロセッサ２１−２〜２１−８は、ＣＰＵ及びＧＰＵの組み合わせであってもよい。
【０１４８】
図１６に例示する情報処理システム１において、プラットフォーム２−１はＷｉｎｄｏｗｓをＯＳとし、このＯＳ上において店舗管理プログラムが実行される。店舗管理プログラムは、実施形態の上位アプリケーション１１０が対応する。プラットフォーム２−２，２−３はそれぞれＬｉｎｕｘ（登録商標）をＯＳとし、このＯＳ上において分散処理プログラム（分散処理Ａ，Ｂ）が実行される。分散処理プログラム（分散処理Ａ，Ｂ）は、実施形態の推論処理アプリケーション３０３に対応する。
【０１４９】
各プラットフォーム２には、ブリッジドライバ２０が備えられており、プラットフォーム２は、このブリッジドライバ２０を介してＰＣＩｅブリッジコントローラ３および他のプラットフォーム２との間で通信を行なう。なお、ブリッジドライバ２０による通信方法については後述する。
【０１５０】
各プラットフォーム２においては、プロセッサ２１およびメモリ（物理メモリ）２２を備え、プロセッサ２１がメモリ２２に格納されたＯＳや各種プログラム，ドライバ等を実行することでそれぞれの機能を実現する。
【０１５１】
各プラットフォーム２に備えられるプロセッサ２１（メインプロセッサ２１−１又はコプロセッサ２１−２〜２１−８）は、互いに違うベンダによって提供されるものであってもよい。図１１に示す例においては、少なくとも一部のプラットフォーム２（例えば、プラットフォーム２−１）に複数のＲＣを有するプラットフォーム（例えば、Ｉｎｔｅｌ社のｘ８６プロセッサ）が用いられてもよい。
【０１５２】
また、各プラットフォーム２は、それぞれ他のドライバ構成に影響を与えないように独立動作可能に構成されている。
【０１５３】
プラットフォーム２において、メモリ２２の記憶領域の一部は、図２１を用いて後述する如く、プラットフォーム２間（プロセッサ２１間）において転送されるデータが一時的に格納される通信バッファ２２１として用いられる。
【０１５４】
ＰＣＩｅブリッジコントローラ３は、複数のプラットフォーム２−１〜２−８間におけるデータ等の通信を実現する。
【０１５５】
図１７に示すＰＣＩｅブリッジコントローラ３は、例えば、８チャネルのＥＰを１チップ内に有する中継装置である。このＰＣＩｅブリッジコントローラ３は、図１７に示すように、ＣＰＵ３１，メモリ３２，インターコネクトバス３３および複数（図１７に示す例では８つ）のスロット３４−１〜３４−８を備える。
【０１５６】
スロット３４−１〜３４−８にはそれぞれＰＣＩｅの規格を満たすよう構成されたデバイスが接続される。例えば、情報処理システム１においては、スロット３４−１〜３４−８のそれぞれにプラットフォーム２が接続される。
【０１５７】
なお、以下、スロットを示す符号としては、複数のスロットのうち１つを特定する必要があるときには符号３４−１〜３４−８を用いるが、任意のスロットを指すときには符号３４を用いる。
【０１５８】
なお、図１５中のプラットフォーム２−２〜２−８のように、一つのスロット３４に対して一つのプロセッサ２が接続されてもよく、図１５中のプラットフォーム２−１のように、複数（図４の例では２つ）のスロット３４に対して一つのプラットフォーム２が接続されてもよく、種々変形して実施することができる。
【０１５９】
図１５中のプラットフォーム２−１のように、一つのプラットフォーム２に対して複数のスロット３４をアサインすることで、このプラットフォーム２−７に広い通信帯域を用いた通信を行なわせることができる。
【０１６０】
各スロット３４は内部バス（Ｉｎｔｅｒｎａｌ  Ｂｕｓ）を介してインターコネクト３３にそれぞれ接続されている。また、インターコネクト３３にはＣＰＵ３１およびメモリ３２が接続されている。これにより、各スロット３４とＣＰＵ３１およびメモリ３２はインターコネクト３３を介して相互に通信可能に接続されている。
【０１６１】
メモリ３２は、例えば、ＲＯＭおよびＲＡＭを含む記憶メモリ（物理メモリ）である。メモリ３２のＲＯＭには、データ通信制御に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ３２上のソフトウェアプログラムは、ＣＰＵ３１に適宜読み込まれて実行される。また、メモリ３２のＲＡＭは、一次記憶メモリあるいはワーキングメモリとして利用される。
【０１６２】
さらに、各プラットフォーム２には、各スロットに対応させてメモリ領域３５（図２１参照）が備えられ、メモリ領域３５には、スロットの数だけ分割された複数の記憶領域が設定され、各記憶領域はいずれかのスロット３０５に対応付けられている。すなわち、メモリ２２のメモリ領域３５には、スロット＃０〜＃７のそれぞれに対応する記憶領域が設けられている。
【０１６３】
ＰＣＩｅブリッジコントローラ３は、後述の如く、スロット毎に対応付けられたメモリ領域３５の記憶領域を用いてプラットフォーム２間のデータ転送を行なう。
【０１６４】
ＣＰＵ３１は、ＰＣＩｅブリッジコントローラ３全体を制御する。ＣＰＵ３１は、マルチプロセッサであってもよい。なお、ＣＰＵ３１に代えてＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのいずれか一つが用いられてもよい。また、ＣＰＵ３１は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【０１６５】
そして、ＣＰＵ３１がメモリ３２に格納されたソフトウェアプログラムを実行することで、ＰＣＩｅブリッジコントローラ３におけるプラットフォーム２間（プロセッサ２１間）のデータ転送を実現する。
【０１６６】
ＰＣＩｅブリッジコントローラ３は、プラットフォーム２間のデータ転送を高速化するためにＰＣＩｅを用い、図１５に示すように、各プラットフォーム２に備えられるプロセッサをそれぞれＲＣとして動作させ、デバイスとして動作するＥＰ間でデータ転送を実現する。
【０１６７】
具体的には、情報処理システム１においては、各プラットフォーム２のプロセッサを、データ転送インタフェースとしてＰＣＩｅのＲＣとして動作させる。また、各プラットフォーム２（プロセッサ２１）に対して、ＰＣＩｅブリッジコントローラ３を、すなわち、各プラットフォーム２が接続されているスロット３４をＥＰとして動作させる。
【０１６８】
ＰＣＩｅブリッジコントローラ３をプロセッサ２１に対してＥＰとして接続する手法としては、既知の種々の手法を用いて実現することができる。
【０１６９】
例えば、ＰＣＩｅブリッジコントローラ３は、プラットフォーム２との接続時に、ＥＰとして機能することを示す信号を当該プロセッサ２１に通知することで、ＥＰとしてプロセッサ２１と接続する。
【０１７０】
ＰＣＩｅブリッジコントローラ３においては  ＥＰｔｏＥＰ（Ｅｎｄ  Ｐｏｉｎｔ  ｔｏ  Ｅｎｄ  Ｐｏｉｎｔ）でデータをトンネリングさせて、複数のＲＣにデータを転送する。プロセッサ間の通信は、ＰＣＩｅのトランザクションが発生したときに論理的に接続され、１つのプロセッサにデータ転送が集中しないときは、それぞれのプロセッサ間で並行してデータ転送できる。
【０１７１】
図１８においては、プラットフォーム２−２のコプロセッサＡとプラットフォーム２−３のコプロセッサＢとの間で通信を行なう例を示す。
【０１７２】
送信元のプラットフォーム２−２においては、ＲＣであるコプロセッサＡにおいて生成されたデータが、ソフトウェア，トランザクション層，データリンク層および物理層（ＰＨＹ）を、順次、転送され、物理層においてＰＣＩｅブリッジコントローラ３の物理層に転送される。
【０１７３】
ＰＣＩｅブリッジコントローラ３においては、物理層，データリンク層，トランザクション層およびソフトウェアを順次、転送され、送信先のプラットフォーム２のＲＣに対応するＥＰにトンネリングによりデータが転送される。
【０１７４】
すなわち、ＰＣＩｅブリッジコントローラ３においては、ＥＰ間でデータをトンネリングさせることで、一のＲＣ（コプロセッサ２１−２）から他のＲＣ（コプロセッサ２１−３）にデータが転送される。
【０１７５】
送信先のプラットフォーム２−３においては、ＰＣＩｅブリッジコントローラ３から転送されたデータが、物理層（ＰＨＹ），データリンク層，トランザクション層およびソフトウェアを、順次、転送され、送信先のプラットフォーム２−３のコプロセッサＢに転送される。
【０１７６】
情報処理システム１において、プロセッサ２１間（プラットフォーム２間）の通信は、ＰＣＩｅのトランザクションが発生したときに論理的に接続される。
【０１７７】
ＰＣＩｅブリッジコントローラ３が有する８スロットのうちの一つに接続された特定のプロセッサ２１に対して複数の他のプロセッサ２１からのデータ転送が集中しないときは、異なる任意の複数組のそれぞれのプロセッサ２１間で並行してデータ転送してもよい。
【０１７８】
例えば、プラットフォーム２−１のメインプロセッサに対して、プラットフォーム２−２のコプロセッサＡおよびプラットフォーム２−３のコプロセッサＢのそれぞれが通信しようとする場合には、ＰＣＩｅブリッジコントローラ３は、コプロセッサＡ、コプロセッサＢの通信をシリアルに処理する。
【０１７９】
ただし、メインプロセッサ−コプロセッサＡ，コプロセッサＢ−コプロセッサＣ，コプロセッサＤ−コプロセッサＥのように、それぞれが異なるプロセッサ同士で通信し、特定のプロセッサに通信が集中しない場合には、ＰＣＩｅブリッジコントローラ３は、各プロセッサ２１間通信を並行して処理する。
【０１８０】
図１９は実施形態の一例としての情報処理システム１におけるプロセッサ２１−８（プロセッサＧ）からの他のプロセッサ２１の見え方を例示する図であり、図２０はプロセッサ２１−５（プロセッサＤ）からの他のプロセッサ２１の見え方を例示する図である。
【０１８１】
各プロセッサ２１間で通信が行なわれている状態においても、各プロセッサ２１上のＯＳ（例えばＷｉｎｄｏｗｓのデバイスマネージャ）からは、ＰＣＩｅブリッジコントローラ３しか見えず、接続先の他のプロセッサ２１を直接管理する必要がない。すなわち、ＰＣＩｅブリッジコントローラ３のデバイスドライバでＰＣＩｅブリッジコントローラ３の先に接続されたプロセッサ２１を管理すれば良い。
【０１８２】
そのため、送信元、受信先それぞれのプロセッサ２１を動作させるためのデバイスドライバを準備する必要がなく、ＰＣＩｅブリッジコントローラ３のドライバでＰＣＩｅブリッジコントローラ３に対して通信処理を行なうだけでプロセッサ２１間の通信を行なうことができる。
【０１８３】
上述の如く構成された実施形態の一例としての情報処理システム１におけるＰＣＩｅブリッジコントローラ３を介したプロセッサ２１間のデータ転送方法を、図２１を用いて説明する。
【０１８４】
この図２１に示す例においては、スロット＃０に接続されたプラットフォーム２−１からスロット＃４に接続されたプラットフォーム２−５にデータを転送する場合について説明する。
【０１８５】
データ送信元のプラットフォーム２−１は、ソフトウェア等によって送信されるデータ（以下、送信データという場合がある）を、プラットフォーム２−１に備えられるストレージ２３等からプラットフォーム２−１のメモリ領域３５に格納する（符号Ｐ１参照）。メモリ領域３５は、通信バッファ２２１の一部であってもよい。メモリ領域３５は、プロットフォーム２のそれぞれにメモリ２２等に同じ大きさで設けられた領域である。メモリ領域３５は、スロット数に応じて分割されている。メモリ領域３５の分割された記憶領域は、いずれかのスロットに対応付けられている。例えば、メモリ領域３５内にＳｌｏｔ＃０で示す記憶領域は、Ｓｌｏｔ＃０に接続されたプラットフォーム２−１に対応付けられ、メモリ領域３５内にＳｌｏｔ＃４で示す記憶領域は、Ｓｌｏｔ＃０に接続されたプラットフォーム２−５に対応付けられている。プラットフォーム２−１は、メモリ領域３５のうち、送信先のスロットに割り当てられた領域（ここでは、Ｓｌｏｔ＃４）に送信データを格納する。
【０１８６】
ブリッジドライバ２０は、プラットフォーム２のメモリ領域３５の記憶領域に基づいて、送信先のスロットを示すスロット情報と、送信先のメモリ領域３５における分割領域内におけるアドレスを示すアドレス情報とを取得または生成する（符号Ｐ２参照）。
【０１８７】
送信元ＥＰにおいて、ブリッジドライバ２０は、スロット情報と、アドレス情報と、送信データとを含む転送データを中継装置３に渡す（符号Ｐ３）。これにより、ＰＣＩｅブリッジコントローラ３は、スロット情報に基づいてＥＰｔｏＥＰにより送信元のスロットと送信先のスロットとを接続することにより、転送データを送信先のプラットフォーム２−４転送する（符号Ｐ４参照）。送信先のブリッジドライバ２０は、スロット情報及びアドレス情報に基づいて、送信先のプラットフォーム２のメモリ領域３５のスロット＃４に対応する記憶領域内のアドレス情報が示すアドレスの領域に送信データ（または転送データ）を格納する（符号Ｐ５参照）。
【０１８８】
送信先プラットフォーム２において、例えば、プログラムが、メモリ領域３５に格納された送信データを読み出して、メモリ（ローカルメモリ）２２やストレージ２３に移動させる（符号Ｐ６，Ｐ７参照）。
【０１８９】
以上のようにして、転送元のプラットフォーム２−１から転送先のプラットフォーム２−５にデータ（転送データ）が転送される。
【０１９０】
このように、情報処理システム１においては、ＰＣＩｅブリッジコントローラ３において、当該ＰＣＩｅブリッジコントローラ３内のＥＰ間でデータ転送を媒介する。これにより、ＰＣＩｅブリッジコントローラ３に接続された複数のＲＣ（プロセッサ２１）間でのデータ転送を実現することができる。
【０１９１】
すなわち、各プロセッサ２１をＰＣＩｅのＲＣとして独立動作させ、ＰＣＩｅブリッジコントローラ３において、それぞれのプロセッサ２１に接続するデバイスをＥＰとして接続し、Ｅ間でデータ転送を行なう。これにより、デバイスドライバに起因する問題を回避し、高速データ転送を１つのシステムとして動作させることができる。
【０１９２】
また、ＰＣＩｅの規格に適合したデータ通信機能を有してさえいれば異なるプロセッサ２１間でのデータ転送が可能となるため、デバイスドライバの有無や、サポートＯＳ等を気にすることなく使用するプロセッサ２１の選択肢を広げることが可能となる。
【０１９３】
各プロセッサ２１はＥＰとなるＰＣＩｅブリッジコントローラ３を介して接続されるため、ＥＰの先のＲＣのデバイスドライバを追加する必要がない。従って、デバイスドライバの開発が不要であるとともに、デバイスドライバを追加することに起因する不具合が発生することもない。
【０１９４】
情報処理システム１においては、ＡＲＭプロセッサやＦＰＧＡ等の一般的なプロセッサはＲＣとして動作することが求められるため、情報処理システム１のプロセッサ２１として容易に追加することができる。
【０１９５】
ＰＣＩｅブリッジコントローラ３においては、ＰＣＩｅでの接続（通信）がされるので、イーサネットでは実現できない高速転送を実現することができる。また、４Ｋ，８Ｋ等の高精細映像のプロセッサ間送受信、大規模なビッグデータの並列計算等も行なうことができる。
【０１９６】
また、画像処理やデータ検索等の各機能に特化した専用プロセッサを接続することもできるので、安価に機能追加、性能向上を行なうことができる。
【０１９７】
さらに、情報処理システム１においては、システムの仮想化等を行なう必要もなく、システムの仮想化を行なうことで生じるシステム性能の低下が生じることもない。従って、情報処理システム１を、ＡＩ推論や画像処理といった高負荷な演算を用途とするシステムに適用することもできる。
【０１９８】
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１９９】
例えば、図１７に示す構成においては、ＰＣＩｅブリッジコントローラ３は８つのスロット３４−１〜３４−８を有しているが、これに限定されるものではなく種々変形して実施することができる。すなわち、ＰＣＩｅブリッジコントローラ３は７つ以下もしくは９つ以上のスロット３４をそなえてもよい。
【０２００】
上述の実施形態では、各部のＩ／ＯインタフェースとしてＰＣＩｅを例に挙げて説明したが、Ｉ／ＯインタフェースはＰＣＩｅに限定されない。例えば、各部のＩ／Ｏインタフェースは、データ転送バスによって、デバイス（周辺制御コントローラ）とプロセッサとの間でデータ転送を行える技術であればよい。データ転送バスは、１個の筐体等に設けられたローカルな環境（例えば、１つのシステムまたは１つの装置）で高速にデータを転送できる汎用のバスであってよい。Ｉ／Ｏインタフェースは、パラレルインタフェース及びシリアルインタフェースのいずれであってもよい。
【０２０１】
Ｉ／Ｏインタフェースは、ポイント・ツー・ポイント接続ができ、データをパケットベースでシリアル転送可能な構成でよい。尚、Ｉ／Ｏインタフェースは、シリアル転送の場合、複数のレーンを有してよい。Ｉ／Ｏインタフェースのレイヤ構造は、パケットの生成及び復号を行うトランザクション層と、エラー検出等を行うデータリンク層と、シリアルとパラレルとを変換する物理層とを有してよい。また、Ｉ／Ｏインタフェースは、階層の最上位であり１または複数のポートを有するルート・コンプレックス、Ｉ／Ｏデバイスであるエンド・ポイント、ポートを増やすためのスイッチ、及び、プロトコルを変換するブリッジ等を含んでよい。Ｉ／Ｏインタフェースは、送信するデータとクロック信号とをマルチプレクサによって多重化して送信してもよい。この場合、受信側は、デマルチプレクサでデータとクロック信号を分離してよい。
【符号の説明】
【０２０２】
１  情報処理システム
１００  情報処理装置
１３２  送信部
１３３  受信部
１３６  測定部
１３７  更新部
３００  推論処理装置
３０２  コプロセッサ
３０３  推論アプリケーション
３０４  モデルファイル
３０５，３０５ｉ  ミドルウェア
１３１２ａ  計算部
１３１２ｂ  選択部
【図１】
2020109551.tif 000003
【図２】
2020109551.tif 000004
【図３】
2020109551.tif 000005
【図４】
2020109551.tif 000006
【図５】
2020109551.tif 000007
【図６】
2020109551.tif 000008
【図７】
2020109551.tif 000009
【図８】
2020109551.tif 000010
【図９】
2020109551.tif 000011
【図１０】
2020109551.tif 000012
【図１１】
2020109551.tif 000013
【図１２】
2020109551.tif 000014
【図１３】
2020109551.tif 000015
【図１４】
2020109551.tif 000016
【図１５】
2020109551.tif 000017
【図１６】
2020109551.tif 000018
【図１７】
2020109551.tif 000019
【図１８】
2020109551.tif 000020
【図１９】
2020109551.tif 000021
【図２０】
2020109551.tif 000022
【図２１】
2020109551.tif 000023
【手続補正書】
【提出日】令和1年9月20日(2019.9.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
Ｎを２以上の整数とするとき、処理状況に関するリソース情報をＮ個のプロセッサのそれぞれから受信する受信部と、
前記受信されたＮ個のプロセッサのリソース情報を、自プロセッサのリソース情報の値を処理時間に変換する変換パラメータへ自プロセッサのリソース情報の値を示す変数が乗算された１個の積と他プロセッサのリソース情報の値からの自プロセッサでの処理時間への影響度合いを示す寄与率パラメータへ他プロセッサのリソース情報の値を示す変数が（Ｎ−１）個の他プロセッサのそれぞれについて乗算された（Ｎ−１）個の積とが互いに足し合わせされた計算式に適用して、アプリケーションによる処理要求に対する処理時間を前記Ｎ個のプロセッサのそれぞれについて計算する計算部と、
前記Ｎ個のプロセッサの処理時間に基づいて、前記Ｎ個のプロセッサから１つのプロセッサを選択する選択部と、
前記処理要求を前記１つのプロセッサへ送信する送信部と、
を備えた情報処理装置。
【請求項２】
前記処理要求に対する前記１つのプロセッサによる処理時間を測定する測定部と、
前記受信されたＮ個のプロセッサのリソース情報と前記測定された処理時間とに基づいて重回帰分析を行い、前記計算式を更新する更新部と、
をさらに備えた
請求項１に記載の情報処理装置。
【請求項３】
前記更新部は、前記計算式における１個の変換パラメータと（Ｎ−１）個の寄与率パラメータとをそれぞれ更新する
請求項２に記載の情報処理装置。
【請求項４】
前記処理要求は、処理内容を識別する処理識別子を含み、
前記計算部は、前記Ｎ個のプロセッサのリソース情報を、異なるＮ個のプロセッサと異なるＭ個の処理内容との組み合わせに対応付けられたＮ×Ｍ個の前記計算式のうち前記処理識別子で識別される処理内容に対応したＮ個の前記計算式に適用し、
Ｎ個の計算式のそれぞれは、自プロセッサのリソース情報の値を前記識別される処理内容の処理時間に変換する変換パラメータへ自プロセッサのリソース情報の値を示す変数が乗算された１個の積と、他プロセッサのリソース情報の値からの自プロセッサでの前記識別される処理内容の処理時間への影響度合いを示す寄与率パラメータへ他プロセッサのリソース情報の値を示す変数が（Ｎ−１）個の他プロセッサのそれぞれについて乗算された（Ｎ−１）個の積とが、互いに足し合わせされた式である
請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記Ｎ個のプロセッサのそれぞれは、前記処理要求に応じた推論処理を行う推論処理装置である
請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
請求項１から５のいずれか１項に記載の情報処理装置と、
Ｎを２以上の整数とするとき、それぞれが前記情報処理装置と通信可能に接続されたＮ個のプロセッサと、
を備えた情報処理システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
本願の開示する情報処理装置は、一つの態様において、Ｎを２以上の整数とするとき、処理状況に関するリソース情報をＮ個のプロセッサのそれぞれから受信する受信部と、前記受信されたＮ個のプロセッサのリソース情報を、自プロセッサのリソース情報の値を処理時間に変換する変換パラメータへ自プロセッサのリソース情報の値を示す変数が乗算された１個の積と他プロセッサのリソース情報の値からの自プロセッサでの処理時間への影響度合いを示す寄与率パラメータへ他プロセッサのリソース情報の値を示す変数が（Ｎ−１）個の他プロセッサのそれぞれについて乗算された（Ｎ−１）個の積とが互いに足し合わせされた計算式に適用して、アプリケーションによる処理要求に対する処理時間を前記Ｎ個のプロセッサのそれぞれについて計算する計算部と、前記Ｎ個のプロセッサの処理時間に基づいて、前記Ｎ個のプロセッサから１つのプロセッサを選択する選択部と、前記処理要求を前記１つのプロセッサへ送信する送信部とを有する。