(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-13
(45)【発行日】2023-09-22
(54)【発明の名称】情報処理装置、情報処理システム及び情報処理方法
(51)【国際特許分類】
G06N 3/04 20230101AFI20230914BHJP
【FI】
G06N3/04 100
(21)【出願番号】P 2023527951
(86)(22)【出願日】2022-06-10
(86)【国際出願番号】 JP2022023519
(87)【国際公開番号】W WO2022260176
(87)【国際公開日】2022-12-15
【審査請求日】2023-06-20
(32)【優先日】2021-06-11
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(74)【代理人】
【識別番号】100120031
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100118876
【氏名又は名称】鈴木 順生
(74)【代理人】
【識別番号】100202429
【氏名又は名称】石原 信人
(72)【発明者】
【氏名】谷脇 大輔
【審査官】北川 純次
(56)【参考文献】
【文献】特開2018-45369(JP,A)
【文献】中国特許出願公開第112259246(CN,A)
【文献】BALOG, Matej et al.,Fast Training of Sparse Graph Neural Networks on Dense Hardware,arXiv.org [online],2019年06月27日,pp. 1-15,[検索日 2023.08.07], インターネット:<URL:https://arxiv.org/pdf/1906.11786v1.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02-3/10
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
1又は複数のメモリと、
1又は複数のプロセッサと、を備え、
前記1又は複数のプロセッサは、
1又は複数の第2情報処理装置から複数のグラフの情報を受信し、
前記複数のグラフのうち、グラフニューラルネットワークモデルを用いて同時に処理可能な複数のグラフを選択し、
前記同時に処理可能な複数のグラフの情報を、前記グラフニューラルネットワークモデルに入力して同時に処理することで、前記同時に処理可能な複数のグラフのそれぞれに対する処理結果を取得し、
前記処理結果を、対応するグラフの情報を送信した第2情報処理装置に送信する、
情報処理装置。
【請求項2】
前記1又は複数のプロセッサは、
自装置のリソースに基づいて、前記同時に処理可能な複数のグラフを選択する、
請求項1に記載の情報処理装置。
【請求項3】
前記1又は複数のプロセッサは、
前記複数のグラフに含まれる各グラフのノード数又はエッジ数の少なくとも1つに基づいて、前記同時に処理可能な複数のグラフを選択する、
請求項1に記載の情報処理装置。
【請求項4】
前記1又は複数のプロセッサは、
優先度に基づいて、前記同時に処理可能な複数のグラフを選択し、
前記優先度は、少なくとも、前記1又は複数の第2情報処理装置に設定された優先度、自装置により設定された優先度又は前記1又は複数の第2情報処理装置により設定された優先度のいずれかを含む、
請求項1に記載の情報処理装置。
【請求項5】
前記1又は複数のプロセッサは、
第1ノード数を有する第1グラフの情報と第2ノード数を有する第2グラフの情報とを受信し、
少なくとも、前記第1ノード数と前記第2ノード数の和が所定ノード数以下である場合に、前記第1グラフと前記第2グラフとを前記同時に処理可能な複数のグラフとして選択する、
請求項3に記載の情報処理装置。
【請求項6】
前記1又は複数のプロセッサは、
第3ノード数を有する第3グラフの情報を更に受信し、
少なくとも、前記第1ノード数と前記第2ノード数と前記第3ノード数との和が前記所定ノード数を超え、かつ、前記第1ノード数と前記第2ノード数の和が前記所定ノード数以下である場合に、前記第1グラフと前記第2グラフとを前記同時に処理可能な複数のグラフとして選択し、
前記第3グラフの情報を、前記同時に処理可能な複数のグラフとは別のタイミングで前記グラフニューラルネットワークモデルに入力する、
請求項5に記載の情報処理装置。
【請求項7】
前記グラフニューラルネットワークモデルは、NNP(Neural Network Potential)モデルである、
請求項1乃至請求項6のいずれか1項に記載の情報処理装置。
【請求項8】
前記複数のグラフに含まれる各グラフのノード数は原子数に基づく値である、
請求項7に記載の情報処理装置。
【請求項9】
前記処理結果は、少なくともエネルギー又は力のいずれかの情報を含む、
請求項7に記載の情報処理装置。
【請求項10】
前記1又は複数のプロセッサは、
1又は複数の他の情報処理装置を介して、前記1又は複数の第2情報処理装置から前記複数のグラフの情報を受信し、
前記1又は複数の他の情報処理装置を介して、前記処理結果を、対応するグラフの情報を送信した第2情報処理装置に送信する、
請求項1乃至請求項6のいずれか1項に記載の情報処理装置。
【請求項11】
前記グラフニューラルネットワークモデルは、NNP(Neural Network Potential)モデルである、
請求項10に記載の情報処理装置。
【請求項12】
請求項1乃至請求項6のいずれか1項に記載の情報処理装置と、
前記1又は複数の第2情報処理装置と、
を備える情報処理システム。
【請求項13】
前記グラフニューラルネットワークモデルは、NNP(Neural Network Potential)モデルである、
請求項12に記載の情報処理システム。
【請求項14】
1又は複数のメモリと、
1又は複数のプロセッサと、を備え、
前記1又は複数のプロセッサは、
複数のグラフの情報を、第3情報処理装置から受信し、
グラフニューラルネットワークモデルを用いて前記複数のグラフに関する演算を実行する第1情報処理装置を、複数の第1情報処理装置から選択し、
選択された前記第1情報処理装置に、前記複数のグラフの情報を送信し、
選択された前記第1情報処理装置から、前記複数のグラフの情報のそれぞれに対する処理結果を受信し、
前記処理結果を、前記第3情報処理装置に送信し、
前記複数のグラフの情報は、1又は複数の第2情報処理装置から送信された複数のグラフの情報のうち、前記グラフニューラルネットワークモデルを用いて同時に処理可能な複数のグラフの情報である、
情報処理装置。
【請求項15】
前記グラフニューラルネットワークモデルは、NNP(Neural Network Potential)モデルである、
請求項14に記載の情報処理装置。
【請求項16】
前記第1情報処理装置と、
前記1又は複数の第2情報処理装置と、
前記第3情報処理装置と、
請求項14又は請求項15に記載の情報処理装置と、
を備える情報システム。
【請求項17】
1又は複数のプロセッサにより、
1又は複数の情報処理装置から複数のグラフの情報を受信し、
前記複数のグラフのうち、グラフニューラルネットワークモデルを用いて同時に処理可能な複数のグラフを選択し、
前記同時に処理可能な複数のグラフの情報を、前記グラフニューラルネットワークモデルに入力して同時に処理することで、前記同時に処理可能な複数のグラフのそれぞれに対する処理結果を取得し、
前記処理結果を、対応するグラフの情報を送信した情報処理装置に送信する、
情報処理方法。
【請求項18】
1又は複数のプロセッサにより、
複数のグラフの情報を、第3情報処理装置から受信し、
グラフニューラルネットワークモデルを用いて前記複数のグラフに関する演算を実行する第1情報処理装置を、複数の第1情報処理装置から選択し、
選択された前記第1情報処理装置に、前記複数のグラフの情報を送信し、
選択された前記第1情報処理装置から、前記複数のグラフの情報のそれぞれに対する処理結果を受信し、
前記処理結果を、前記第3情報処理装置に送信し、
前記複数のグラフの情報は、1又は複数の第2情報処理装置から送信された複数のグラフの情報のうち、前記グラフニューラルネットワークモデルを用いて同時に処理可能な複数のグラフの情報である、
情報処理方法。
【請求項19】
1又は複数のプロセッサに、
1又は複数の情報処理装置から複数のグラフの情報を受信し、
前記複数のグラフのうち、グラフニューラルネットワークモデルを用いて同時に処理可能な複数のグラフを選択し、
前記同時に処理可能な複数のグラフの情報を、前記グラフニューラルネットワークモデルに入力して同時に処理することで、前記同時に処理可能な複数のグラフのそれぞれに対する処理結果を取得し、
前記処理結果を、対応するグラフの情報を送信した情報処理装置に送信する、
情報処理を実行させるプログラム。
【請求項20】
1又は複数のプロセッサに、
複数のグラフの情報を、第3情報処理装置から受信し、
グラフニューラルネットワークモデルを用いて前記複数のグラフに関する演算を実行する第1情報処理装置を、複数の第1情報処理装置から選択し、
選択された前記第1情報処理装置に、前記複数のグラフの情報を送信し、
選択された前記第1情報処理装置から、前記複数のグラフの情報のそれぞれに対する処理結果を受信し、
前記処理結果を、前記第3情報処理装置に送信し、
前記複数のグラフの情報は、1又は複数の第2情報処理装置から送信された複数のグラフの情報のうち、前記グラフニューラルネットワークモデルを用いて同時に処理可能な複数のグラフの情報である、
情報処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、情報処理システム及び情報処理方法に関する。
【背景技術】
【0002】
今日、ユーザが用いるクライアントから演算したい内容をサーバへと送信し、サーバにて演算を実行してユーザがこの演算結果を受信するシステムが広く用いられている。例えば、ユーザがインターネットの回線を介してプロバイダにデータを送信し、適切な処理をした後にプロバイダから処理結果を受信するシステムがある。
【0003】
データ量の多い演算を実行する場合、GPU(Graphics Processing Unit)等のプロセッサのクラスタをサーバとして用いることが多い。このようなGPUコアをクラスタとして用いる場合、複数のクライアントから送信される複数の演算は、例えば、タスク、キューの優先度により順番を前後したり、サーバを割り当てたりする。ニューラルネットワークのようなモデルを利用するサービスにおいては、個々のタスクに要する計算コストが大きく、計算に要する時間も長くなる場合があることから、複数のクライアントから送信されるタスクに応じて、計算機のリソースを有効活用することが要求される。
【先行技術文献】
【非特許文献】
【0004】
【文献】H. Yabuuchi, et. al., “Low-latency job scheduling with preemption for the development of deep learning,” 2019年2月5日, arXiv: 1902.01613, https://arxiv.org/abs/1902.01613v1
【文献】https://www.slideshare.net/pfi/20190930-pfn-internship-2019-extension-of-chainerchemistry-for-large-amp-sparse-graphkenshin-abe, the entire contents of which are incorporated herein by reference.
【発明の概要】
【発明が解決しようとする課題】
【0005】
本開示では、計算機のリソースを有効に活用するモデル利用方法を提供する。
【課題を解決するための手段】
【0006】
一実施形態によれば、情報処理装置は、1又は複数のメモリと、1又は複数のプロセッサと、を備える。前記1又は複数のプロセッサは、1又は複数の第2情報処理装置から複数のグラフの情報を受信することと、前記複数のグラフのうち、グラフニューラルネットワークモデルを用いて同時に処理可能な複数のグラフの情報を、前記グラフニューラルネットワークモデルに入力して同時に処理することで、前記同時に処理可能な複数のグラフのそれぞれに対する処理結果を取得することと、前記処理結果を、対応するグラフの情報を送信した第2情報処理装置に送信することと、を実行可能に構成される。
【図面の簡単な説明】
【0007】
【
図1】一実施形態に係る情報処理システムを模式的に示す図。
【
図2】一実施形態に係る同じタイミングにおけるグラフの処理について説明するため図。
【
図3】一実施形態に係る同じタイミングにおけるグラフの処理のタイミングについて説明するため図。
【
図4】一実施形態に係る情報処理システムを模式的に示す図。
【
図5】一実施形態に係る同じタイミングにおけるグラフの処理のタイミングについて説明するための図。
【
図6】一実施形態に係る情報処理システムを模式的に示す図。
【
図7】一実施形態に係る情報処理システムを模式的に示す図。
【
図8】一実施形態に係る情報処理システムの各構成要素の実装例を示す図。
【発明を実施するための形態】
【0008】
以下、図面を参照して本発明の実施形態について説明する。図面及び実施形態の説明は一例として示すものであり、本発明を限定するものではない。
【0009】
(第1実施形態)
図1は、一実施形態に係る情報処理システムの構成を模式的に示す図である。情報処理システム1は、サーバ10(第1情報処理装置の一例)を備え、クライアント20(第2情報処理装置の一例)からの要求に基づいてサーバ10で処理を実行するシステムである。サーバ10とクライアント20は、インターネット回線といった有線又は無線の回線により接続される。
【0010】
また、後述の実施形態において説明するロードバランサ等、他の構成が存在するものを排除するものではなく、例えば、本実施形態においてもクライアント20からサーバ10へと直接データが送信されるのではなく、プロキシサーバ等の中間サーバがさらに備えられていてもよい。
【0011】
また、データは、直接的にクライアント20からサーバ10へと送信するものには限られず、他の装置を介して送信されるものであってもよい。例えば、クライアント20がファイルサーバ等にデータを格納し、この格納先をサーバ10に通知することでサーバ10がそれぞれのクライアント20の要求に対するデータを当該ファイルサーバ等から読み出す構成としてもよい。サーバ10が演算した結果も同様であり、サーバ10が直接的にクライアント20に送信してもよいし、他の装置を介して送信してもよい。例えば、ファイルサーバ等を介してクライアント20が演算結果を取得してもよい。
【0012】
サーバ10は、一例として、同一のタイミングにおいて、同一の処理を複数の演算コアを用いて処理するアクセラレータを備えて構成される演算サーバである。アクセラレータは、例えば、GPUを有し、GPGPU(General-Purpose computing on GPU)の技術を用いて同じ演算に基づく処理を複数の演算コアにより同じタイミングで実行する。
【0013】
すなわち、サーバ10は、GPUのホストにおいて1つのプログラムを起動し、このプログラムにしたがって同じクロックに基づく同じ処理が複数の演算コアにおいて複数のデータに対して実行されるSIMD(Single Instruction, Multiple Data)の構成を有していてもよい。もちろん、サーバ10は、GPU以外の構成においてSIMD演算を実現できる構成を有していてもよい。
【0014】
一実施形態として、このサーバ10は、複数のクライアント20からそれぞれ異なるデータを受信(実線)し、並列処理で演算を実行し、演算結果をそれぞれのクライアント20へと送信(点線)する。
【0015】
本実施形態では、サーバ10の処理として、訓練済みモデルにおける処理を実行する例を説明する。サーバ10は、限定されない一例として、グラフの情報が入力可能なニューラルネットワークモデル(例えば、GNN: Graph Neural Network)を訓練済みモデルとして用いる。
【0016】
サーバ10において、プロセッサは、一例として、原子のグラフ情報を入力するとエネルギーに関する情報を出力するように訓練されたニューラルネットワークモデルであるNNP(Neural Network Potential)モデルを展開し、このNNPモデルを用いて、原子に関する複数のグラフ情報を並列に処理する。グラフ情報は、複数の原子の情報を含む。
【0017】
原子の情報は、例えば、物質を構成する原子の種類と当該原子の座標(原子の位置)に関する情報を含んでもよい。この原子の情報をノードとし、原子の接続をエッジとするグラフが形成され、このグラフをNNPモデルに入力することで、サーバ10は、それぞれのクライアント20から送信される物質(グラフ)の状態における物性情報(例えば、エネルギー、力など)を推論して、クライアント20へと送信する。なお、サーバ10は、NNPモデルから出力される情報を処理又は解析した情報をクライアント20へ送信するようにしてもよい。
【0018】
例えば、NNPモデルでは、物質の原子配置を示すグラフの情報が入力される。サーバ10は、あるクライアント20から受信したグラフの情報と、異なるクライアント20から受信したグラフの情報と、を区別して訓練済みモデルに入力する。訓練済みモデルは、グラフの情報ごとに他のグラフの演算に影響を与えないように演算を実行する。
【0019】
一例として、クライアント20Aから、第1原子数の第1物質を示す、第1ノード数n1( = 第1原子数)を有する第1グラフG1を受信し、クライアント20Bから、第2原子数の第2物質を示す、第2ノード数n2( = 第2原子数)を有する第2グラフG2をサーバ10が受信する場合について説明する。
【0020】
サーバ10のアクセラレータでは、一例として、あらかじめそのリソースにより、同じタイミングで処理することが可能なノード数(所定ノード数N)が設定される。サーバ10は、そのリソース、例えば、メモリ量、コア量又は他の演算能力、代表的にはメモリ量から、一度にまとめて処理できるデータ量に上限があるため、まとめて処理をするノード数を設定することができる。また、ノード数以外にもエッジ数によってもメモリ容量に起因してバッチ処理を実行できない可能性がある。
【0021】
なお、以下においては、一例としてノード数を用いて説明するが、これは、「ノード数」、「エッジ数」、「ノード数に基づく数」、「エッジ数に基づく数」又は、「ノード数及びエッジ数の双方に基づく数」のいずれかに読み替えてもよいし、グラフ演算における他の量と読み替えてもよい。例えば、第1グラフG1のノード数n1 + 第2グラフG2のノード数n2 <= 所定ノード数Nとして判断する箇所があるが、これは、第1グラフG1のエッジ数e1 + 第2ノードG2のエッジ数e2 <= 所定エッジ数Eと読み替えることもできるし、第1グラフG1のノード数及びエッジ数に基づく数x1 + 第2グラフG2のノード数及びエッジ数に基づく数x2 <= ノード数及びエッジ数に基づく所定しきい値Xと読み替えてもよい。
【0022】
Nは、ノード数から想定される必要な演算リソース(例えば、メモリ量、コア数)により決定されてもよい。Eは、エッジ数から想定される必要な演算リソースにより決定されてもよい。Xは、ノード数とエッジ数の総和、ノード数とエッジ数の重み付け加算、又は、エッジ数とノード数から想定される必要な演算リソースにより決定されてもよい。
【0023】
いずれの場合においても、ノード数等を用いた単純な和ではなく、適切な変換を用いた後に和を求めてもよい。例えば、第1グラフG1のノード数n1を引数とする関数f(n1) + 第2グラフG2のノード数n2を引数とする関数f(n2) <= ノード数に関するリソースの所定しきい値F等としてもよい。fは、例えば、ノード数においてグラフの演算に必要なリソースを取得するための関数であり、線形又は非線形の関数である。もちろん、エッジ数を用いる場合、並びに、ノード数及びエッジ数の双方を用いる場合においても同様に定義することができる。
【0024】
第1ノード数n1と第2ノード数n2の和が所定ノード数N以下である場合には、同じタイミングにおいて第1グラフG1と第2グラフG2の処理を実行し、第1物質と第2物質に関する解析又は推論処理を実行する。
【0025】
図2は、サーバ10におけるグラフの処理の一例を説明するための図である。サーバ10は、例えば、それぞれのクライアント20から取得したグラフに関する情報を行列に展開する。この展開方法は、適切に訓練済みモデルにおいてグラフの演算ができる形式であれば任意の方式であればよい。
【0026】
サーバ10は、例えば、
図2に示すように、第1グラフG1の隣接行列を含む行列と第2グラフG2の隣接行列を含む行列とを連結したスパース行列(モデルへの入力情報の一例)を生成する。なお、実際にスパース行列を生成するのではなく、メモリのリソース及び演算時間に鑑みて適切に変換された表現において生成し、この表現に対して適切に演算できる形態であってもよい。例えば、スパース行列の”0”を適切に削除し、要素の位置と要素の内容とを紐付けて記述する表現に変換してもよい。この
図2においては、n1 + n2 <= Nであるとする。
【0027】
NNPに利用する訓練済みモデルは、例えば、行列において0でない値である行及び列の成分同士を演算して結果を取得するものである。このようなモデルであれば、
図2のように行列を生成することにより、第1クライアント20Aから取得した第1グラフG1の情報と、第2クライアント20Bから取得した第2グラフG2の情報とがお互いに影響を及ぼさないように演算を実行することが可能である。
【0028】
グラフごとに互いに影響を及ぼさずに演算を実行するので、例えば、サーバ10又はクライアント20が、最終的に、それぞれのグラフに属するノードのエネルギー値を加算することにより、個々のグラフのエネルギーを取得することができる。
【0029】
例えば、サーバ10は、それぞれのグラフのノードである原子ごとの演算を、演算コアに割り当てることにより原子ごとの情報について、同期して処理を実行することが可能である。訓練済みモデルは、一般的にノード数により演算する中間層の数が変化するものではない。このため、ノードごとに演算コアを割り当てることにより、n1、n2の数値によらず、同じタイミングで物性情報を取得することが可能となる。
【0030】
なお、演算コアにおける計算の割り当ては、ノードごとである必要は無く、サーバ10は、適切にバッチ処理が実行できるように演算を割り当てることができる形態であればよい。このため、全てのノードが同じタイミングで演算される必要は無く、適切な処理単位において同じタイミングで演算が可能であればよい。バッチ処理により、このような全体としてのスループットを向上することができる。
【0031】
上記の演算単位は、例えば、サーバ10により適切に決定されてもよいし、サーバ10に備えられるアクセラレータで適切に決定されてもよい。また、プログラムの記述によりユーザが決定してもよいし、コンパイラにより実行ファイル又は中間ファイルにおいて決定されてもよい。これらの決定方法に基づいて、上記の所定ノード数Nが定義されてもよい。
【0032】
このように、サーバ10は、第1ノード数n1と、第2ノード数n2の和が所定ノード数N以下である場合に、第1グラフと第2グラフとに関する情報を同じタイミングで訓練済みモデルに入力し、相互に干渉しないように演算を実行することが可能となる。このように処理することで、情報処理システム1は、別々のクライアント20から受信したグラフ情報を、リソースを無駄にすることなく処理をし、第1物質及び第2物質の物性情報を取得することが可能となる。
【0033】
例えば、
図2の行列は、原子の種類(1つ)、座標(3つ)、隣接行列(1つ)の4つの行列を備えて構成されてもよい。なお、上述したグラフのバッチ処理は一例であり、他の方法を用いて複数のグラフをまとめて処理してもよい。一例として、下記に記載の手法を用いてもよい。https://www.slideshare.net/pfi/20190930-pfn-internship-2019-extension-of-chainerchemistry-for-large-amp-sparse-graphkenshin-abe
【0034】
図3は、より具体的な一例を示す図である。上記に加え、第3クライアント20Cから第3原子数の第3物質に関する第3ノード数n3を有する第3グラフG3についての処理を並行して行うものである。ここでは、簡単のため、n1 =30、n2 = 80、n3 = 40、N = 100とする。また、図中、黒い点は、データの送信元を示し、矢印の先がデータの送信先を示す。
【0035】
時刻t0において、複数のクライアント20のそれぞれからグラフに関するデータをサーバ10に送信する(S100)。なお、この時刻は、一致してもよいしずれてもよい。また、時刻t0は、サーバ10がクライアント20からの受信を確認する時刻であってもよい。
【0036】
サーバ10側では、これらのグラフのノード数に基づいて、クライアント20から受信されたグラフのうち、複数のグラフの情報をまとめて処理できるか否かを判断し、同じタイミングで処理できる組み合わせがある場合には、当該組み合わせを記憶する(S102)。例えば、n1 + n2 = 30 + 80 = 110 > 100 = Nであるので、第1グラフG1と第2グラフG2を同じタイミングで演算することができない。一方で、n1 + n3 = 30 + 40 = 70 < 100 = Nであるので、第1グラフG1と第3グラフG3は、同じタイミングで処理することが可能である。このため、サーバ10は、第1グラフG1と第3グラフG3の組み合わせをメモリ等の記憶部に格納する。n2 + n3 > Nであるので、第2グラフG2と第3グラフG3も同じタイミングで演算できないと判断し、第2グラフG2は、単一のグラフで処理をすると判断する。
【0037】
まとめて処理できる場合には、まとめて処理可能なグラフをまとめて訓練済みモデルに入力し、まとめて処理ができない場合には、1つのクライアント20から取得したグラフ情報を訓練済みモデルに入力する(S104)。上記の場合においては、第1グラフG1と第3グラフG3が同じタイミングで処理が実行できるので、この2つのグラフをまとめて処理を実行する。
【0038】
サーバ10は、第1グラフG1と第3グラフG3に関する演算が終了すると、それぞれに対応する処理結果(物性情報など)を適切にクライアント20へと送信する(S106)。例えば、第1グラフG1の処理結果(物性情報など)を第1クライアント20Aに送信し、第3グラフG3の処理結果(物性情報など)を第3クライアント20Cに送信する。
【0039】
サーバ10は、第1グラフG1と第3グラフG3の処理が終了すると、第2グラフG2の処理を開始する(S108)。
【0040】
処理結果をサーバ10から受信したクライアント20では、次のグラフに関する情報をサーバ10へと送信してもよい(S110)。サーバ10は、受信した情報をキューに入れて待ち状態としてもよい。
【0041】
第2グラフG2の処理が終了すると、同様に、サーバ10は、第2クライアント20Bに第2グラフG2に関する処理結果を送信する(S112)。
【0042】
この後は、サーバ10が第1グラフG1及び第3グラフG3の処理を開始し(S114)、第2クライアント20Bが次の第2グラフG2の情報を送信し(S116)、サーバ10が処理結果を送信する(S118)、といった処理が必要なだけ繰り返される。
【0043】
クライアント20において同じノード数を有するグラフの情報が送信されるものとしたが、これには限られない。例えば、第1クライアント20Aは、1回目に送信する第1グラフG1のノード数と、2回目に送信する第1’グラフG1’のノード数を異なるものとしてもよい。この場合、適切なタイミングで同じタイミングで処理するグラフの組み合わせが変わることもある。また、同一のクライアントが、複数のグラフに関する情報を送信してもよい。
【0044】
また、上記においては、第1グラフG1と第3グラフG3の組み合わせから演算を開始したが、これには限られない。例えば、サーバ10は、第2グラフG2の演算から開始してもよい。このタイミングは、例えば、サーバ10が組み合わせを判断するタイミングにおいて、最先に受信したグラフ情報を含む組み合わせを優先してもよい。別の例としては、サーバ10又はクライアント20により設定された優先度に基づいて、当該優先度が最も高いグラフを含む組み合わせ、又は、優先度の和が最も高い組み合わせ、等から演算を開始してもよい。
【0045】
以上のように、本実施形態によれば、クライアント20から送信されたグラフ情報に基づき、サーバ10のリソースの無駄を抑制したグラフの処理を実行することが可能となる。このグラフの処理は、例えば、グラフニューラルネットワークモデルの演算を含む処理であってもよい。また、このニューラルネットワークモデルは、NNPに関するものでもよい。複数のグラフの情報のそれぞれに対する処理結果は、ニューラルネットワークモデルを用いて計算された情報に対して、サーバ10によって追加の処理を行った後の情報であってもよい。また、処理結果は、グラフニューラルネットワークモデルを複数回用いて取得した情報であってもよい。また、グラフの処理は、NNP以外の原子シミュレーションに関する処理であってもよい。
【0046】
本実施形態では、クライアントから受信した複数のグラフ情報から、グラフニューラルネットワークモデルを用いて同時に処理が可能な複数のグラフを選択する。ここで、「同時に処理」とは、少なくとも、複数のグラフに関する処理の一部又は全部を、1つのグラフニューラルネットワークを用いて同じタイミングで実行すること(その一部又は全部の処理を纏めて実行すること)、又は、複数のグラフから生成した1つの入力情報(例えば、複数のグラフをまとめた1つのグラフ)を1つのグラフニューラルネットワークに入力すること、のいずれかを含んでもよい。このとき、本実施形態では、サーバのリソース(一例として、演算能力、記憶容量など)に基づいて前記複数のグラフを選択してもよい。
【0047】
NNPモデルを用いた演算は、多数の原子の情報を対象にするため演算量が多くなる。したがって、本実施形態のように、演算リソースに基づいて処理対象となるグラフを選択することより、サーバのリソースを有効活用できる。
【0048】
また、サーバは、複数のクライアントからノード数が40のグラフの情報と、ノード数が60のグラフ情報を受信した場合には、この2つのグラフの処理を上述のように並行して実行する。一方で、サーバは、ノード数が40のグラフの情報と、ノード数が70のグラフ情報を受信した場合には、所定ノード数を超えるため、まずノード数が40のグラフを処理し、その後にノード数が70のグラフを処理するといった、グラフを選択することなく、シーケンシャルに処理を実行してもよい。
【0049】
(第2実施形態)
前述の実施形態においては、演算を実行するサーバ10においてグラフの順番を入れ替えることについて説明したが、複数のクライアント20と、サーバ10との間に、クライアント20から送信されるグラフに基づいてサーバ10に演算させるキュー又はタスク処理を実行し、サーバ10においてグラフ処理の順番及び複数のグラフの組み合わせを選択する中間サーバが備えられていてもよい。
【0050】
図4は、一実施形態に係る情報処理システム1の概略を示す図である。情報処理システム1は、第1中間サーバとして、プロキシサーバ30(第3情報処理装置の一例)を備える。
【0051】
プロキシサーバ30は、クライアント20と、サーバ10との間に接続される。すなわち、サーバ10は、プロキシサーバ30を介して複数のクライアント20からグラフを処理する順番、組み合わせに関する情報、及び、演算処理をするグラフの情報を取得する。
【0052】
サーバ10は、FIFO(First-In First-Out)処理を実行するキューを備えてもよい。サーバ10は、適切なタイミングでエンキューし、デキューする。また、別の例として、サーバ10は、プロキシサーバ30のリクエストによりエンキューし、デキューしてもよい。
【0053】
クライアント20は、プロキシサーバ30に対してサーバ10に演算を実行させたいグラフの演算要求及びグラフの情報を送信する。プロキシサーバ30は、クライアント20から受信したグラフの情報に基づいて、同じタイミングで同じアクセラレータにおいて処理するグラフの組み合わせを判定、検出し、サーバ10に当該組み合わせを送信する。このタイミングにおいて、グラフの情報をともに送信してもよい。サーバ10は、このリクエストに基づいてエンキューする。そして、サーバ10は、適切なタイミングにおいてデキューすることで、演算処理を実行する。
【0054】
別の例として、プロキシサーバ30は、サーバ10に適切な順番及び組み合わせのグラフに関するタスクについてエンキューリクエストを送信してもよい。そして、プロキシサーバ30が、デキューリクエストをサーバ10に送信することでサーバ10が演算を実行してもよい。例えば、このプロキシサーバ30からのデキューリクエストは、サーバ10に対するflushリクエストであってもよい。
【0055】
図5は、本実施形態に係る処理のタイミングの限定されない一例を示す図である。基本的な構成は、
図3の場合と同様にしている。
【0056】
まず、それぞれのクライアント20からグラフの情報及び演算要求がプロキシサーバ30に送信される(S200)。
【0057】
プロキシサーバ30は、それぞれのグラフのノード数を確認し、このノード数に基づいて、演算タスクをサーバ10へと送信し、サーバ10では、受信したタスクをエンキューする(S202)。
【0058】
また、別の例として、プロキシサーバ30がエンキューリクエストをサーバ10へ送信し、このリクエストに基づいてサーバ10がエンキューしてもよい(S202)。そして、プロキシサーバ30が、デキューリクエストをサーバ10に送信することにより、サーバ10においてタスクがデキューされ、グラフの演算処理が実行されてもよい(S204)。
【0059】
サーバ10は、前述の実施形態において説明した同じタイミングで処理するグラフを1つのキューとして管理する。
図5の例であれば、第1グラフG1と第3グラフG3の演算要求を1つのキューとしてエンキューし、続いて、第2グラフG2の演算要求を1つのキューとしてエンキューする。順番については、上述と同様に、任意の適切な方法に基づいて決定される。
【0060】
サーバ10(演算サーバ)は、エンキューしたキューにしたがって処理を実行する(S206)。サーバ10が適切なタイミングでデキューすることでFIFO処理を実行してもよいし、プロキシサーバ30がデキューリクエストを送信してサーバ10がデキューして演算処理を開始してもよい。
【0061】
クライアント20からサーバ10、又は、プロキシサーバ30からサーバ10へのグラフに関するデータの送信は、適切なタイミングで実行されればよい。別の例として、グラフの情報自体は、クライアント20又はプロキシサーバ30からストレージ等に送信され、サーバ10は、デキューされたタスクに基づいて、このグラフの情報を取得して演算を開始する構成としてもよい。また、この場合、サーバ10では、エンキューした情報に基づいて、データをプリフェッチしておいてもよい。
【0062】
演算処理が終了すると、サーバ10は、プロキシサーバ30に処理結果を送信するとともに、演算が終了したことを通知する(S206)。なお、処理結果は、図示しないファイルサーバ等に送信されてもよいし、サーバ10から直接的にそれぞれのクライアント20へと送信する態様であってもよい。
【0063】
演算の終了通知を受信したプロキシサーバ30は、演算結果を適切なクライアント20へと送信するとともに、キューにしたがった次の処理を実行する(S208)。例えば、上記の状態においては、第2グラフG2の処理キューがあるため、このタイミングにおいてプロキシサーバ30からサーバ10へ、次のデキューリクエストを送信してもよい。
【0064】
サーバ10は、第2グラフG2に関するタスクをデキューし、処理を実行する(S210)。前段落にあるように、サーバ10は、プロキシサーバ30からのリクエストに応じてデキューしてもよいし、S206の処理結果の送信が完了した後に適切なタイミングでデキューしてもよい。プロキシサーバ30がデキューリクエストをする場合には、処理結果の送信とデキューリクエストと、の順番は任意であり、前後してもよいし、同時であってもよい。
【0065】
図3の場合と同様に、必要に応じて第1クライアント20A及び第3クライアント20Cは、次の処理要求をプロキシサーバ30へと送信する(S212)。なお、処理要求はこのタイミングではなく、前の処理(S206)の実行中及び実行前後のタイミングでされていてもよい。この場合、プロキシサーバ30は、適切にグラフのノード数に基づいて組み合わせを決定し、サーバ10は、プロキシサーバ30から受信するグラフの情報に基づいて逐次エンキューする。
【0066】
第2グラフG2の処理が終了すると、サーバ10は、プロキシサーバ30へと処理の終了を通知し(S214)、プロキシサーバ30は、第2クライアント20Bへ演算結果を送信する。このタイミングでプロキシサーバ30は、デキューリクエストをサーバ10へ送信してもよい。もちろん、プロキシサーバ30からリクエストを送信することなく、サーバ10において適切にデキューして処理を実行してもよい。
【0067】
この後、サーバ10の処理(S218)、第2クライアント20Bからの処理要求(S220)、サーバ10からの処理結果の送信等(S222)、プロキシサーバ30からクライアント20又はサーバ10への各種データの送信等(S224)が適切に繰り返される。
【0068】
上記したように、この
図5においては、クライアント20が逐次的に処理をする場合を説明したが、これには限られない。例えば、時刻t0において、複数のクライアント20は、それぞれが複数のグラフ情報に関する演算要求をプロキシサーバ30へと送信してもよい。プロキシサーバ30では、適切にグラフの組み合わせと処理の順番を決定し、サーバ10は、この処理の順番に基づいてエンキューする。これは、前述の実施形態においても同様であり、時刻t0において、複数のクライアント20は、複数のグラフの情報をサーバ10に送信してもよい。
【0069】
プロキシサーバ30は、例えば、同じクライアント20からの処理がなるべく連続しないようにグラフの演算処理の順序を決定してもよいし、優先度の高いクライアント20からの処理がなるべく早期に終了するとともに、サーバ10におけるリソースの無駄を抑制するようにグラフの演算処理の順序を決定してもよい。
【0070】
以上のように、本実施形態によれば、プロキシサーバ30を介してキューを用いることにより、サーバ10に適切な順番、及び、適切なグラフの組み合わせにおいて演算処理を実行させることが可能となる。
【0071】
図6は、本実施形態の別の例を示す図である。この
図6に示すように、情報処理システム1は、複数のサーバ10を備えていてもよい。この場合、プロキシサーバ30は、サーバ10においてタスクがデキューされた順番に処理を振り分けてもよい。別の例としては、プロキシサーバ30は、それぞれのサーバ10の性能等に基づいて複数のクライアント20から受信したグラフの情報を適切に結合、分配して、サーバ10ごとにタスクを振り分け、それぞれのサーバ10が、振り分けられたタスクをエンキューしてもよい。
【0072】
例えば、性能の高いアクセラレータを有するサーバにおいては、計算する原子数(ノード数)が多いリクエストが割り振られてもよい。一方で、このサーバよりは性能の低いアクセラレータを有するサーバにおいては、計算する原子数(ノード数)が少ないリクエストが割り振られてもよい。このように割り振ることで、アクセラレータのリソースを有効に活用することが可能となる。ここで、性能が高いとは、例えば、演算コア数が多い、演算クロック数が高い、等により決定されてもよい。
【0073】
また、同様の仕組みで割り振ることにより、原子数の少ないリクエストを可能な限り同じサーバに集約させてバッチで計算できる可能性を高めることができる
【0074】
これらの性能による振り分けは、下記の実施形態についても同様である。
【0075】
(第3実施形態)
前述の第2実施形態の実装に加え、性能が同等であるサーバ10をサーバ群としてまとめ、サーバ群に属するいずれのサーバ10に演算を実行させるかを振り分けるロードバランサが備えられていてもよい。
【0076】
図7は、一実施形態に係る情報処理システム1の概略を示す図である。情報処理システム1は、複数のサーバ10を備え、プロキシサーバ30とこれら複数のサーバ10との間に、第2中間サーバとしてロードバランサ40(第4情報処理装置の一例)を備える。
【0077】
複数のサーバ10は、性能ごとに複数のサーバ群50に区別される。サーバ群50は、例えば、サーバ10において同じタイミングで処理ができるグラフのノード数により分類される。また、サーバ群50は、サーバ10の処理速度で分類されてもよい。
【0078】
複数のサーバ10のサーバ群50への振り分けは、上記には限られない。例えば、性能が同等のサーバ10であっても、プロキシサーバ30が処理を振り分けたい条件に基づいて、サーバ10をグループ化することもできる。具体的には、できるだけ一度に実行されるグラフの数が増えるように、ノード数が少ないリクエストの処理を担当するサーバ群50と、ノード数が多いリクエストの処理を担当するサーバ群50と、に振り分けるといったように同等の性能を有するサーバ10を振り分けてもよい。
【0079】
ロードバランサ40は、サーバ群50のそれぞれに対して備えられてもよい。プロキシサーバ30は、クライアント20から受信したグラフの処理要求を、サーバ群50を構成するサーバ10の性能に基づいて振り分ける。上述した例では、プロキシサーバ30は、サーバ10において同じタイミングで処理可能なノード数に基づいてそれぞれのサーバ群50に振り分けてもよいし、サーバ10の処理速度に基づいて振り分けてもよい。
【0080】
プロキシサーバ30は、それぞれのロードバランサ40ごとにタスクを振り分けてもよい。この場合、プロキシサーバ30は、それぞれのロードバランサ40に対してして適切なグラフに関する情報を選択して処理要求(タスク)を送信する。ロードバランサ40は、自らが担当するサーバ群50に属するサーバ10にこのタスクを振り分けることにより、サーバ10に演算処理を実行させる。
【0081】
ロードバランサ40は、プロキシサーバ30から受信したグラフの情報により、サーバ群50から処理に適切なサーバ10を割り当て、割り当てられたサーバ10に対して当該グラフに関する情報を送信する。サーバ10では、グラフの情報を受信すると、当該グラフのデータを適切に取得して、処理を実行する。サーバ10は、上記と同様にキューを備えていてもよく、ロードバランサ40に振り分けられたグラフの処理に関するタスクをエンキューしてもよい。そして、サーバ10は、このキューにしたがって、タスクを順番にグラフの処理を実行してもよい。処理後には、処理が終了したことをロードバランサ40に通知してもよい。次の演算タスクがある場合には、サーバ10は、次の演算の実行に移行する。
【0082】
本実施形態に係る情報処理システム1は、上記に説明したように、まず、クライアント20から受信したグラフの情報を、第1中間サーバであるプロキシサーバ30において適切に振り分ける。プロキシサーバ30は、振り分けられた情報に基づいて、それぞれのロードバランサ40に振り分けてもよい。
【0083】
そして、ロードバランサ40は、複数のサーバ10の負荷を分散するべく、処理命令をそれぞれのサーバ10に割り当て、適切なサーバ10に処理命令を通知する。サーバ10では、この処理要求に基づいて、適切にグラフに関する処理を実行し、処理後に処理が終了した旨をロードバランサ40へと通知する。必要に応じて、サーバ10においては、処理要求に基づいてキューにエンキューし、処理が終了した後に、キューにタスクがある場合には、デキューして次の処理を実行する。ロードバランサ40がサーバ10のそれぞれを監視し、処理が終了したことを検知してもよく、サーバ10の処理具合に応じてそれぞれのサーバにグラフ処理タスクを振り分けてもよい。
【0084】
ロードバランサ40は、例えば、待機中のサーバ10がない場合には、最先に処理要求を通知したサーバ10に次のグラフ処理に関するタスクを割り当ててもよい。サーバ10では、必要に応じてタスクをエンキューし、現在のタスクが終了した後にデキューすることで逐次的に処理を実行してもよい。また、このような場合にはロードバランサ40が、バッファを保持し、このバッファにキューを備えていてもよく、処理が終了したサーバ10に対して、デキューすることでタスクを割り当ててもよい。また、サーバ群50内においても性能差がある場合には、適切なサーバ10に対してロードバランサ40がタスクを割り当ててもよい。
【0085】
キューには、命令、要求のみがエンキュー、デキューされてもよいし、グラフの情報ごとエンキュー、デキューされてもよい。演算要求のみがキューに入力される場合には、前述の実施形態と同様に、サーバ10がデキューしたグラフに関する情報を図示しない記憶部から演算に必要なグラフに関する情報を取得して、処理を実行してもよい。
【0086】
以上のように、本実施形態によれば、ロードバランサ40を備えることにより、負荷を分散させ、負荷的、時間的により適切にサーバ10において処理を実行させることが可能となる。
【0087】
第1実施形態と同様に、第2実施形態及び第3実施形態も、サーバ10においては、グラフを入力とするニューラルネットワークモデルを用いた演算を実行してもよい。特に、独立した複数のグラフが入力される場合に、他の独立グラフに影響を及ぼさないニューラルネットワークモデルとして構成されていることが望ましい。
【0088】
このニューラルネットワークモデルは、NNPに用いるものであってもよく、グラフの情報は、物質の情報であり、ノードは、当該物質の原子構造に対応するものであってもよい。ノード数は、例えば、原子数に該当し、この原子数により演算を実行するサーバ10が割り当てられる。この場合、サーバ10においては、NNPに用いるニューラルネットワークモデルを展開しておき、入力されたグラフに関する情報をこのニューラルネットワークモデルの入力層に逐次的に入力することで処理を継続して実行することが可能となる。このように用いる訓練済みモデルを固定しておくことで、モデルを形成する時間の無駄を回避することが可能となる。
【0089】
第2実施形態及び第3実施形態のように中間サーバを用いることで、NNPを提供する場合に、プロバイダとしては全体としての負荷、コストを下げることができるし、ユーザとしては経済コスト、時間コストを削減することができる。例えば、時間課金制、又は、演算量の課金制のサーバを用いる場合には、まとめられるグラフをまとめて演算することができるため、金銭的及び時間的の双方の面でコストを抑えることが可能となる。
【0090】
前述の各実施形態においては、グラフのデータを送受信していた。これは限定されない一例であり、他の必要なデータがメタデータとして併せて送信されてもよい。代表的には、物質を構成する原子数(演算に用いるグラフのノード数)がメタデータとして付与され、各種サーバにおいて、このメタデータ内のノード数を読み出すことにより、各処理が実行されてもよい。また、メタデータは、原子の種類に関する情報が含まれていてもよい。このメタデータは、前述の同じタイミングで同じアクセラレータにおいて処理するグラフの振り分け条件や、サーバが複数ある場合には当該グラフについての処理を実行するサーバの振り分け条件に用いてもよい。
【0091】
なお、前述の各実施形態においては、サーバ10、プロキシサーバ30、ロードバランサ40が備えられる構成を説明したが、これらの機能の一部又は全部をまとめたサーバ(情報処理装置の一例)を構成してもよい。すなわち、サーバ内に、プロキシサーバ30と、演算サーバ(サーバ10)が備えられてもよいし、それに加えてロードバランサ40が備えられてもよい。また、サーバ内に、ロードバランサ40と、演算サーバ(サーバ10)が備えられてもよい。また、プロキシサーバ30とロードバランサ40の機能が1つの情報処理装置で実現されてもよい。また、これらのサーバは、インターネット回線等により接続され、1つのサーバとしてまとめられるものであってもよい。これらの構成は、特に限定されるものではなく、同様の機能を実装できる形態であればよい。
【0092】
なお、上記においては、プロキシサーバからロードバランサを介してサーバに処理を割り振ったが、この形態に限られるものではない。例えば、処理数が増加してきた場合には、複数のプロキシサーバを備え、これらのプロキシサーバとクライアントとの間に1又は複数のロードバランサを備える構成としてもよい。このロードバランサを備えることにより、プロキシサーバの負荷を分散させることが可能である。この場合、複数のプロキシサーバにおいて同じ状態を持たせるために、KVS(Key-Value Store)により、データを管理してもよい。
【0093】
上記の全ての訓練済モデルは、例えば、説明したように訓練した上で、さらに、一般的な手法により蒸留されたモデルを含む概念であってもよい。
【0094】
前述した実施形態における各装置(情報処理システム1における各装置)の一部又は全部は、ハードウェアで構成されていてもよいし、CPU(Central Processing Unit)、又はGPU(Graphics Processing Unit)等が実行するソフトウェア(プログラム)の情報処理で構成されてもよい。ソフトウェアの情報処理で構成される場合には、前述した実施形態における各装置の少なくとも一部の機能を実現するソフトウェアを、フレキシブルディスク、CD-ROM(Compact Disc-Read Only Memory)又はUSB(Universal Serial Bus)メモリ等の非一時的な記憶媒体(非一時的なコンピュータ可読媒体)に収納し、コンピュータに読み込ませることにより、ソフトウェアの情報処理を実行してもよい。また、通信ネットワークを介して当該ソフトウェアがダウンロードされてもよい。さらに、ソフトウェアがASIC(Application Specific Integrated Circuit)又はFPGA(Field Programmable Gate Array)等の回路に実装されることにより、情報処理がハードウェアにより実行されてもよい。
【0095】
ソフトウェアを収納する記憶媒体の種類は限定されるものではない。記憶媒体は、磁気ディスク、又は光ディスク等の着脱可能なものに限定されず、ハードディスク、又はメモリ等の固定型の記憶媒体であってもよい。また、記憶媒体は、コンピュータ内部に備えられてもよいし、コンピュータ外部に備えられてもよい。
【0096】
図8は、前述した実施形態における各装置(情報処理システム1における各装置)のハードウェア構成の一例を示すブロック図である。各装置は、一例として、プロセッサ71と、主記憶装置72(メモリ)と、補助記憶装置73(メモリ)と、ネットワークインタフェース74と、デバイスインタフェース75と、を備え、これらがバス76を介して接続されたコンピュータ7として実現されてもよい。
【0097】
図8のコンピュータ7は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、
図8では、1台のコンピュータ7が示されているが、ソフトウェアが複数台のコンピュータにインストールされて、当該複数台のコンピュータそれぞれがソフトウェアの同一の又は異なる一部の処理を実行してもよい。この場合、コンピュータそれぞれがネットワークインタフェース74等を介して通信して処理を実行する分散コンピューティングの形態であってもよい。つまり、前述した実施形態における各装置(情報処理システム1における各装置)は、1又は複数の記憶装置に記憶された命令を1台又は複数台のコンピュータが実行することで機能を実現するシステムとして構成されてもよい。また、端末から送信された情報をクラウド上に設けられた1台又は複数台のコンピュータで処理し、この処理結果を端末に送信するような構成であってもよい。
【0098】
前述した実施形態における各装置(情報処理システム1における各装置)の各種演算は、1又は複数のプロセッサを用いて、又は、ネットワークを介した複数台のコンピュータを用いて、並列処理で実行されてもよい。また、各種演算が、プロセッサ内に複数ある演算コアに振り分けられて、並列処理で実行されてもよい。また、本開示の処理、手段等の一部又は全部は、ネットワークを介してコンピュータ7と通信可能なクラウド上に設けられたプロセッサ及び記憶装置の少なくとも一方により実行されてもよい。このように、前述した実施形態における各装置は、1台又は複数台のコンピュータによる並列コンピューティングの形態であってもよい。
【0099】
プロセッサ71は、コンピュータの制御装置及び演算装置を含む電子回路(処理回路、Processing circuit、Processing circuitry、CPU、GPU、FPGA又はASIC等)であってもよい。また、プロセッサ71は、専用の処理回路を含む半導体装置等であってもよい。プロセッサ71は、電子論理素子を用いた電子回路に限定されるものではなく、光論理素子を用いた光回路により実現されてもよい。また、プロセッサ71は、量子コンピューティングに基づく演算機能を含むものであってもよい。
【0100】
プロセッサ71は、コンピュータ7の内部構成の各装置等から入力されたデータやソフトウェア(プログラム)に基づいて演算処理を行い、演算結果や制御信号を各装置等に出力することができる。プロセッサ71は、コンピュータ7のOS(Operating System)や、アプリケーション等を実行することにより、コンピュータ7を構成する各構成要素を制御してもよい。
【0101】
前述した実施形態における各装置(情報処理システム1における各装置)は、1又は複数のプロセッサ71により実現されてもよい。ここで、プロセッサ71は、1チップ上に配置された1又は複数の電子回路を指してもよいし、2つ以上のチップあるいは2つ以上のデバイス上に配置された1又は複数の電子回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線又は無線により通信してもよい。
【0102】
主記憶装置72は、プロセッサ71が実行する命令及び各種データ等を記憶する記憶装置であり、主記憶装置72に記憶された情報がプロセッサ71により読み出される。補助記憶装置73は、主記憶装置72以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、半導体のメモリでもよい。半導体のメモリは、揮発性メモリ、不揮発性メモリのいずれでもよい。前述した実施形態における各装置(情報処理システム1における各装置)において各種データを保存するための記憶装置は、主記憶装置73又は補助記憶装置73により実現されてもよく、プロセッサ71に内蔵される内蔵メモリにより実現されてもよい。例えば、前述した実施形態における記憶部は、主記憶装置72又は補助記憶装置73により実現されてもよい。
【0103】
記憶装置(メモリ)1つに対して、複数のプロセッサが接続(結合)されてもよいし、単数のプロセッサが接続されてもよい。プロセッサ1つに対して、複数の記憶装置(メモリ)が接続(結合)されてもよい。前述した実施形態における各装置(情報処理システム1における各装置)が、少なくとも1つの記憶装置(メモリ)とこの少なくとも1つの記憶装置(メモリ)に接続(結合)される複数のプロセッサで構成される場合、複数のプロセッサのうち少なくとも1つのプロセッサが、少なくとも1つの記憶装置(メモリ)に接続(結合)される構成を含んでもよい。また、複数台のコンピュータに含まれる記憶装置(メモリ))とプロセッサによって、この構成が実現されてもよい。さらに、記憶装置(メモリ)がプロセッサと一体になっている構成(例えば、L1キャッシュ、L2キャッシュを含むキャッシュメモリ)を含んでもよい。
【0104】
ネットワークインタフェース74は、無線又は有線により、通信ネットワーク8に接続するためのインタフェースである。ネットワークインタフェース74は、既存の通信規格に適合したもの等、適切なインタフェースを用いればよい。ネットワークインタフェース74により、通信ネットワーク8を介して接続された外部装置9Aと情報のやり取りが行われてもよい。なお、通信ネットワーク8は、WAN(Wide Area Network)、LAN(Local Area Network)、PAN(Personal Area Network)等のいずれか、又は、それらの組み合わせであってよく、コンピュータ7と外部装置9Aとの間で情報のやりとりが行われるものであればよい。WANの一例としてインターネット等があり、LANの一例としてIEEE802.11やイーサネット(登録商標)等があり、PANの一例としてBluetooth(登録商標)やNFC(Near Field Communication)等がある。
【0105】
デバイスインタフェース75は、外部装置9Bと直接接続するUSB等のインタフェースである。
【0106】
外部装置9Aは、コンピュータ7とネットワークを介して接続されている装置である。外部装置9Bは、コンピュータ7と直接接続されている装置である。
【0107】
外部装置9A又は外部装置9Bは、一例として、入力装置であってもよい。入力装置は、例えば、カメラ、マイクロフォン、モーションキャプチャ、各種センサ等、キーボード、マウス、又は、タッチパネル等のデバイスであり、取得した情報をコンピュータ7に与える。また、パーソナルコンピュータ、タブレット端末、又は、スマートフォン等の入力部とメモリとプロセッサを備えるデバイスであってもよい。
【0108】
また、外部装置9A又は外部装置9Bは、一例として、出力装置でもよい。出力装置は、例えば、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、PDP(Plasma Display Panel)、又は、有機EL(Electro Luminescence)パネル等の表示装置であってもよいし、音声等を出力するスピーカ等であってもよい。また、パーソナルコンピュータ、タブレット端末、又は、スマートフォン等の出力部とメモリとプロセッサを備えるデバイスであってもよい。
【0109】
また、外部装置9A又は外部装置9Bは、記憶装置(メモリ)であってもよい。例えば、外部装置9Aは、ネットワークストレージ等であってもよく、外部装置9Bは、HDD等のストレージであってもよい。
【0110】
また、外部装置9A又は外部装置9Bは、前述した実施形態における各装置(情報処理システム1における各装置)の構成要素の一部の機能を有する装置でもよい。つまり、コンピュータ7は、外部装置9A又は外部装置9Bの処理結果の一部又は全部を送信又は受信してもよい。
【0111】
本明細書(請求項を含む)において、「a、b及びcの少なくとも1つ(一方)」又は「a、b又はcの少なくとも1つ(一方)」の表現(同様な表現を含む)が用いられる場合は、a、b、c、a-b、a-c、b-c、又は、a-b-cのいずれかを含む。また、a-a、a-b-b、a-a-b-b-c-c等のように、いずれかの要素について複数のインスタンスを含んでもよい。さらに、a-b-c-dのようにdを有する等、列挙された要素(a、b及びc)以外の他の要素を加えることも含む。
【0112】
本明細書(請求項を含む)において、「データを入力として/データに基づいて/に従って/に応じて」等の表現(同様な表現を含む)が用いられる場合は、特に断りがない場合、各種データそのものを入力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を入力として用いる場合を含む。また「データに基づいて/に従って/に応じて」何らかの結果が得られる旨が記載されている場合、当該データのみに基づいて当該結果が得られる場合を含むとともに、当該データ以外の他のデータ、要因、条件、及び/又は状態等にも影響を受けて当該結果が得られる場合をも含み得る。また、「データを出力する」旨が記載されている場合、特に断りがない場合、各種データそのものを出力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を出力とする場合も含む。
【0113】
本明細書(請求項を含む)において、「接続される(connected)」及び「結合される(coupled)」との用語が用いられる場合は、直接的な接続/結合、間接的な接続/結合、電気的(electrically)な接続/結合、通信的(communicatively)な接続/結合、機能的(operatively)な接続/結合、物理的(physically)な接続/結合等のいずれをも含む非限定的な用語として意図される。当該用語は、当該用語が用いられた文脈に応じて適宜解釈されるべきであるが、意図的に或いは当然に排除されるのではない接続/結合形態は、当該用語に含まれるものして非限定的に解釈されるべきである。
【0114】
本明細書(請求項を含む)において、「AがBするよう構成される(A configured to B)」との表現が用いられる場合は、要素Aの物理的構造が、動作Bを実行可能な構成を有するとともに、要素Aの恒常的(permanent)又は一時的(temporary)な設定(setting/configuration)が、動作Bを実際に実行するように設定(configured/set)されていることを含んでよい。例えば、要素Aが汎用プロセッサである場合、当該プロセッサが動作Bを実行可能なハードウェア構成を有するとともに、恒常的(permanent)又は一時的(temporary)なプログラム(命令)の設定により、動作Bを実際に実行するように設定(configured)されていればよい。また、要素Aが専用プロセッサ又は専用演算回路等である場合、制御用命令及びデータが実際に付属しているか否かとは無関係に、当該プロセッサの回路的構造が動作Bを実際に実行するように構築(implemented)されていればよい。
【0115】
本明細書(請求項を含む)において、含有又は所有を意味する用語(例えば、「含む(comprising/including)」及び有する「(having)等)」が用いられる場合は、当該用語の目的語により示される対象物以外の物を含有又は所有する場合を含む、open-endedな用語として意図される。これらの含有又は所有を意味する用語の目的語が数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)である場合は、当該表現は特定の数に限定されないものとして解釈されるべきである。
【0116】
本明細書(請求項を含む)において、ある箇所において「1つ又は複数(one or more)」又は「少なくとも1つ(at least one)」等の表現が用いられ、他の箇所において数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)が用いられているとしても、後者の表現が「1つ」を意味することを意図しない。一般に、数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)は、必ずしも特定の数に限定されないものとして解釈されるべきである。
【0117】
本明細書において、ある実施例の有する特定の構成について特定の効果(advantage/result)が得られる旨が記載されている場合、別段の理由がない限り、当該構成を有する他の1つ又は複数の実施例についても当該効果が得られると理解されるべきである。但し当該効果の有無は、一般に種々の要因、条件、及び/又は状態等に依存し、当該構成により必ず当該効果が得られるものではないと理解されるべきである。当該効果は、種々の要因、条件、及び/又は状態等が満たされたときに実施例に記載の当該構成により得られるものに過ぎず、当該構成又は類似の構成を規定したクレームに係る発明において、当該効果が必ずしも得られるものではない。
【0118】
本明細書(請求項を含む)において、「最大化(maximize)」等の用語が用いられる場合は、グローバルな最大値を求めること、グローバルな最大値の近似値を求めること、ローカルな最大値を求めること、及びローカルな最大値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最大値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最小化(minimize)」等の用語が用いられる場合は、グローバルな最小値を求めること、グローバルな最小値の近似値を求めること、ローカルな最小値を求めること、及びローカルな最小値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最小値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最適化(optimize)」等の用語が用いられる場合は、グローバルな最適値を求めること、グローバルな最適値の近似値を求めること、ローカルな最適値を求めること、及びローカルな最適値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最適値の近似値を確率的又はヒューリスティックに求めることを含む。
【0119】
本明細書(請求項を含む)において、複数のハードウェアが所定の処理を行う場合、各ハードウェアが協働して所定の処理を行ってもよいし、一部のハードウェアが所定の処理の全てを行ってもよい。また、一部のハードウェアが所定の処理の一部を行い、別のハードウェアが所定の処理の残りを行ってもよい。本明細書(請求項を含む)において、「1又は複数のハードウェアが第1の処理を行い、前記1又は複数のハードウェアが第2の処理を行う」等の表現が用いられている場合、第1の処理を行うハードウェアと第2の処理を行うハードウェアは同じものであってもよいし、異なるものであってもよい。つまり、第1の処理を行うハードウェア及び第2の処理を行うハードウェアが、前記1又は複数のハードウェアに含まれていればよい。なお、ハードウェアは、電子回路、又は、電子回路を含む装置等を含んでもよい。
【0120】
以上、本開示の実施形態について詳述したが、本開示は上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更、置き換え及び部分的削除等が可能である。例えば、前述した全ての実施形態において、数値又は数式を説明に用いている場合は、一例として示したものであり、これらに限られるものではない。また、実施形態における各動作の順序は、一例として示したものであり、これらに限られるものではない。
【符号の説明】
【0121】
1: 情報処理システム、
10: サーバ、
20: クライアント、
30: プロキシサーバ、
40: ロードバランサ、
50: サーバ群