(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023181372
(43)【公開日】2023-12-21
(54)【発明の名称】情報処理装置、情報処理方法、プログラムおよび情報処理システム
(51)【国際特許分類】
G06N 3/04 20230101AFI20231214BHJP
【FI】
G06N3/04
【審査請求】未請求
【請求項の数】1
【出願形態】OL
(21)【出願番号】P 2023185975
(22)【出願日】2023-10-30
(62)【分割の表示】P 2023527948の分割
【原出願日】2022-06-10
(31)【優先権主張番号】63/209,420
(32)【優先日】2021-06-11
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(71)【出願人】
【識別番号】000004444
【氏名又は名称】ENEOS株式会社
(74)【代理人】
【識別番号】100126099
【弁理士】
【氏名又は名称】反町 洋
(74)【代理人】
【識別番号】100152423
【弁理士】
【氏名又は名称】小島 一真
(74)【代理人】
【識別番号】100202429
【弁理士】
【氏名又は名称】石原 信人
(72)【発明者】
【氏名】中郷 孝祐
(72)【発明者】
【氏名】谷脇 大輔
(72)【発明者】
【氏名】阿部 幹
(72)【発明者】
【氏名】オン マーク アラン
(72)【発明者】
【氏名】高本 聡
(72)【発明者】
【氏名】工藤 孝夫
(72)【発明者】
【氏名】浅野 裕介
(57)【要約】
【課題】本開示は、モデルを用いた処理に要する時間を短縮する。
【解決手段】本開示の一実施形態である情報処理システムは、第1情報処理装置および第2情報処理装置によって実現される。前記第2情報処理装置は、原子情報を前記第1情報処理装置に送信すること、を実行可能に構成されている。前記第1情報処理装置は、前記原子情報を前記第2情報処理装置から受信することと、ニューラルネットワークに前記原子情報を入力することで、前記原子情報に対するエネルギーに関する情報を算出することと、前記エネルギーに関する情報を、前記第2情報処理装置に送信することと、を実行可能に構成されている。さらに、前記第1情報処理装置は、前記ニューラルネットワークを用いた前記エネルギーに関する情報の算出を、前記第2情報処理装置より高速に実行可能である。
【選択図】
図1
【特許請求の範囲】
【請求項1】
少なくとも第1情報処理装置および第2情報処理装置によって実現される情報処理システムであって、
前記第2情報処理装置は、原子情報を前記第1情報処理装置に送信し、
前記第1情報処理装置は、
前記原子情報を複数の前記第2情報処理装置それぞれから受信し、
ニューラルネットワークに前記原子情報を入力することで、前記原子情報に対する処理結果を算出し、
前記処理結果を、対応する前記第2情報処理装置に送信し、
前記ニューラルネットワークは、NNP(Neural Network Potential)モデルであり、
前記原子情報は、原子の種類及び位置に関する情報を含み、
前記処理結果は、少なくとも前記ニューラルネットワークのBackward処理によって取得した力に関する情報を含み、
前記第1情報処理装置は、前記NNPモデルを用いた前記処理結果の算出を、前記第2情報処理装置より高速に実行可能である、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、情報処理方法、プログラムおよび情報処理システムに関する。
【背景技術】
【0002】
近年の深層学習の発展に伴い、学習済みのニューラルネットワークに基づくモデルを用いた情報提供が行われるようになってきている。例えば、ニューラルネットワークモデルを訓練して、原子間ポテンシャルであるNNP(Neural Network Potential)を取得し、構造最適化、分子動力学法(Molecular Dynamics)などを行う方法がある。これらの方法では、指定された原子の情報からニューラルネットワークモデルを用いてエネルギーを算出する高負荷な処理を、各種条件に基づいて複数回実行する場合があり、処理結果を得るまでの時間が長くなるという課題がある。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】n2p2に関するホームページ、[online]、[令和3年5月24日検索]、インターネット<URL:https://compphysvienna.github.io/n2p2/>
【非特許文献2】ANI-1に関するホームページ、[online]、[令和3年5月24日検索]、インターネット<URL:https://github.com/isayev/ASE_ANI>
【非特許文献3】oc202に関するホームページ、[online]、[令和3年5月24日検索]、インターネット<URL: https://github.com/Open-Catalyst-Project/ocp>
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、モデルを用いた処理に要する時間を短縮する。
【課題を解決するための手段】
【0005】
本開示の一実施形態である情報処理システムは、第1情報処理装置および第2情報処理装置によって実現される。前記第2情報処理装置は、原子情報を前記第1情報処理装置に送信すること、を実行可能に構成されている。前記第1情報処理装置は、前記原子情報を前記第2情報処理装置から受信することと、ニューラルネットワークに前記原子情報を入力することで、前記原子情報に対するエネルギーに関する情報を算出することと、前記エネルギーに関する情報を、前記第2情報処理装置に送信することと、を実行可能に構成されている。さらに、前記第1情報処理装置は、前記ニューラルネットワークを用いた前記エネルギーに関する情報の算出を、前記第2情報処理装置より高速に実行可能である。
【図面の簡単な説明】
【0006】
【
図1】一実施形態における情報処理システムを示すブロック図。
【
図2】一実施形態における全体処理の概略シーケンス図。
【
図3】一実施形態におけるハードウェア構成の一例を示すブロック図。
【発明を実施するための形態】
【0007】
以下、図面を参照しながら、本発明の実施形態について説明する。図面及び実施形態の説明は一例として示すものであり、本発明を限定するものではない。
【0008】
(本発明の一実施形態)
図1は、本実施形態に係る情報処理システムの一例を示すブロック図である。本実施形態に関する情報処理システムは、サーバ1(第1情報処理装置の一例)と、クライアント2(第2情報処理装置の一例)と、を備える。サーバ1は、処理部11と、メモリ12と、通信部13と、を備える。クライアント2は、処理部21と、メモリ22と、通信部23と、を備える。なお、サーバの処理部によって行われる処理と、クライアントの処理部によって行われる処理は異なる。
【0009】
サーバ1およびクライアント2は、両者間で通信を行いつつ、所定の処理を進める。特に限られるわけではないが、例えば、サーバ1がソフトウェアを実行し、クライアント2が当該ソフトウェアの実行結果をネットワーク経由で取得するSaaS(Software as a Service)のシステムは、本実施形態に係る情報処理システムに該当する。
【0010】
SaaSでは、処理負荷の高いソフトウェアを、GPU(Graphics Processing Unit)などを備えたスペックの高いサーバ1が行い、処理結果をクライアント2に提供することが可能である。SaaSを利用することにより、スペックが低いクライアント2でも、高負荷なソフトウェアの実行結果を気軽に手に入れることができる。
【0011】
なお、当然のことながら、サーバ1とクライアント2の台数については限られるものではない。情報処理システムが複数のサーバ1を備え、各サーバ1が1台以上のクライアント2によって利用されてもよい。また、サーバ1とのクライアント2との間で情報を送受信する場合において、プロキシサーバなどといった通信を中継する装置が1又は複数台存在していてもよい。
【0012】
SaaSでは、通常、クライアント2はサーバ1のソフトウェアの実行に用いられる情報をサーバ1に送信し、サーバ1はソフトウェアの実行結果を示す情報をクライアント2に送信する。サーバ1とクライアント2間とでのやり取りされる情報量が大きい場合、通信に要する時間(言い換えれば通信の所要時間)が長くなり、クライアント2のユーザがSaaSの利用指示を出してからSaaSの結果を取得するまでの時間が長くなるという問題がある。そこで、本実施形態では、情報の送信方法を工夫し、サーバ1およびクライアント2の処理および通信に要する時間を短縮する。
【0013】
ディープニューラルネットワークモデル(モデルの一例)を用いた処理のなかには、高負荷となるものもある。例えば、ニューラルネットワークモデルを訓練して、原子間ポテンシャルであるNNP(Neural Network Potential)を取得し、構造最適化、分子動力学法(Molecular Dynamics)などを行う方法がある。これらの方法では、指定された各原子の種類および座標からNNP用のニューラルネットワークモデル(以下、NNPモデルと呼ぶ)を用いてエネルギーや力を算出するという処理を実行する。本実施形態では、エネルギーや力の計算などの高負荷な処理を、GPUを備えた高スペックなサーバ1で実行する。処理に必要なデータ、例えば、使用する原子の種類、各原子の位置(座標)などは、考慮する原子の数に応じて、そのサイズが大きくなる。また、付随する計算を繰り返す必要もある。例えば、BFGS法(Broyden-Fletcher-Goldfarb-Shanno algorithm)などを用いて構造最適化を行う場合や、温度および圧力などの特定条件に基づいて分子動力学法シミュレーションを行う場合など、原子の位置を繰り返し更新してNNPモデルを用いた計算を実行する場合もある。また、サーバ1からクライアント2へ送信されるデータ、例えば、原子ごとの力なども、考慮する原子の数に応じて大きくなる。
【0014】
ゆえに、本実施形態のようにNNPの機能をSaaSとして提供する場合、サーバ1とクライアント2との間において、通信量が大きい通信が複数回行われることになる。そのため、通信1回あたりの通信量をなるべく小さくすることが好ましい。
【0015】
そこで、本実施形態の情報処理システムでは、クライアント2がサーバ1の処理に用いられる情報を当該処理において利用可能なbyte(バイト)列でサーバ1に送信し、サーバ1が当該処理時において当該byte列を利用する。例えば、機械学習のモジュールを用いて計算を行う場合に、クライアント2は、プログラミング言語固有のデータ型への変換、送信方式によるシリアライズといったデータ形式の変換を行わずに、当該モジュールのbyte列をサーバ1に送信する。これにより、クライアント2によるデータ変換やシリアライズは不要となり、クライアント2における処理時間を短縮することができる。さらに、一般的には、これらの変換ではデータサイズが増加するため、byte列を変換せずに送るほうが、通信時間を短縮することができる。また、サーバ2も、受信したbyte列をデータ形式の変換を行わずに参照することにより、サーバ1における処理時間を短縮することができる。さらに、サーバ2は、サーバ2の処理に基づく情報のbyte(バイト)列を、プログラミング言語固有のデータ型への変換、送信方式によるシリアライズといったデータ形式の変換を行わずにクライアント2に送信する。クライアント2は、当該byte列をデータ形式の変換を行わずに参照する。
以降では、クライアント2が送信する、サーバ1の処理に用いられる情報を入力情報と記載する。サーバ1の処理に基づく情報は、出力情報とも記載する。出力情報は、処理の結果を示すものでもよいし、処理の途中の計算結果を示すものでもよい。
【0016】
なお、本実施形態では、サーバ1およびクライアント2の両方が情報をbyte列で送信する場合を説明するが、サーバ1およびクライアント2のいずれか一方のみが情報をbyte列で送信するとしてもよい。また、サーバ1およびクライアント2が送信する情報のうち、一部をbyte列で送信するようにしてもよい。
【0017】
また、通信帯域、通信品質、通信を行う時間帯、各装置の処理負荷などに応じて、byte列で送信する場合と、byte列ではないデータで送信する場合と、を切り替えてもよい。また、byte列以外が送信されてもよい。例えば、配列のサイズを整数の列で送信し、配列の型はメタデータとして配列のサイズとは別に送信する、といったことも可能である。
【0018】
サーバ1およびクライアント2の各構成要素を、全体処理の流れとともに説明する。
図2は、本実施形態における全体処理の概略シーケンス図である。
【0019】
クライアント2の処理部21は、指定の処理を実行する。当該処理は、サーバ1による処理に用いられる情報を生成するといった事前処理や、サーバ1による処理の結果などをユーザに出力するといった事後処理が考えられる。まず、クライアント2の処理部21は、サーバ1に処理させる入力情報を生成する(S101)。入力情報の生成は、所定の生成方法に従ってもよいし、ユーザの指示に基づいてもよい。例えば、NNPを利用する場合は、入力情報として原子に関する情報(以下、原子情報)が生成される。原子情報は、NNPに用いられる原子に関する情報を含んでいればよく、例えば、各原子の種類および位置に関する情報を含む。原子の位置に関する情報としては、原子の位置を座標によって直接的に示す情報や、原子間の相対位置を直接的に又は間接的に示す情報などが挙げられる。また、原子の位置に関する情報は、原子間の距離、角度、二面角等によって原子間の位置関係を表現する情報であってもよい。原子情報は、原子の種類および位置の情報の他に、電荷に関する情報、原子の結合に関する情報、周期境界条件、Cellのサイズなどの情報を含んでもよい。また、入力情報は、原子情報の他に、NNPに用いるモデルを指定する情報、クライアントやリクエストのIDなどを含むメタデータ、などを含んでもよい。原子情報を2次元以上の配列構造(array)で送る場合、処理を高速化するために、プログラム言語Python(登録商標)の機械学習用の拡張モジュールであるNumpyのarrayを用いることが考えられる。クライアント2の処理部21は、このNumpyのarrayの形式で情報を生成してもよい。
【0020】
一般的に、情報処理装置による処理に基づく情報は、情報処理装置のメモリに、byte列で記憶される。そのため、クライアント2の処理部21によって生成された入力情報は、クライアント2のメモリ22にbyte列で記憶されている。
【0021】
クライアント2の通信部23は、サーバ1との通信を司る。クライアント2の通信部23は、入力情報(一例として原子情報)に係るbyte列をメモリ22から参照する(S102)。byte列の参照は、情報処理装置に設けられた様々な機能を用いてよい。例えば、前述のNumpyのarrayの形式で情報が生成された場合、「np.tobytes」といった所定のコマンドを実行することにより、メモリからbyte列を参照することができる。そして、クライアント2の通信部23は、参照されたbyte列をシリアライズせずに通信パケットに含めて、サーバ1に送信する(S103)。
【0022】
なお、クライアント2とサーバ1との間でのbyte情報をやり取りするための通信プロトコルは、適宜に定めてよい。例えば、通信プロトコルとして、トランスポートプロトコルHTTP/2において使用可能な、RPC(Remote Procedure Call)の一種であるgRPCを用いてもよい。また、gRPCにおいて使用可能なProtocol bufferなどの記述言語も用いてもよい。なお、前述の通り、クライアント2とサーバ1との間でやり取りされる情報には、byte列で送信されない情報が含まれていてもよい。
【0023】
サーバ1の通信部13は、サーバ1との通信を司る。サーバ1の通信部13は、入力情報に係るbyte列を含む通信パケットをクライアント2から受信する(S104)。受信された通信パケットに含まれる入力情報は、サーバ1のメモリ12に格納されるが、入力情報に係るbyte列に対してはデシリアライズを行う必要がないため、デシリアライズに要していた処理時間をなくすことができる。
【0024】
サーバ1の処理部11は、SaaSなどの指定の処理を実行するために、入力情報に係るbyte列をメモリ12から参照する(S105)。byte列の参照は、情報処理装置に設けられた様々な機能を用いてよい。例えば、Numpyのarrayの形式の情報に対応するbyte列は、「np.frombuffer」というコマンドで、サーバ1の処理部11が取り扱うことできるデータとして参照することができる。
【0025】
サーバ1の処理部11は、参照された入力情報などに基づいてSaaSなどの指定の処理を実行する(S106)。当該処理は、所定の方法に従ってよい。例えば、NNPの機能を提供する場合は、サーバ1は、原子の種類及び位置などに関する原子情報を学習済みのNNPモデルに入力し、当該NNPモデルから、入力された原子情報に対するエネルギーといった処理結果を得てもよい。なお、NNPモデルの学習は、正解データに基づいた教師あり学習を行えばよい。これら、サーバ1の処理部11の処理結果も、メモリ12に記憶される。
【0026】
サーバ1の通信部13は、クライアント2の通信部23同様、サーバ1の処理部11の処理に基づく情報(出力情報)に対応するbyte列をメモリ12から参照する(S107)。そして、サーバ1の通信部13は、参照されたbyte列をシリアライズせずに通信パケットに含めて、クライアント2に送信する(S108)。なお、サーバ1の処理部11の処理に基づく情報は、処理結果(一例として、エネルギー)だけでなく、途中の計算結果でもよい。例えば、学習済みニューラルネットワークモデルの出力層からの出力ではなく、中間層からの出力でもよい。また、サーバ1の処理部11の処理に基づく情報も、Numpyのarrayなどの2次元以上の配列構造によって表されていてもよい。なお、サーバ1は、処理部11の処理に基づく情報以外にも、クライアントやリクエストのIDなどを含むメタデータなどといった様々な情報をクライアント2へ送信してもよい。なお、前述の通り、サーバ1からクライアント2に送信される情報の一部はbyte列で送信されなくともよい。
【0027】
例えば、サーバ1は、NNPモデルのForward処理の結果であるエネルギー以外の情報、例えば、Backward処理の結果である力、Stressといった情報をクライアント2に送信することにより、ユーザの利便性を向上させてもよい。
【0028】
本実施形態においてNNPの機能をSaaSとして提供する場合、サーバ1は、クライアント2から受信した原子情報に対する処理結果(出力情報の一例)を算出し、クライアント2に送信する。本実施形態における処理結果は、原子情報とNNPモデルに基づいて算出される情報であって、少なくとも、エネルギー、エネルギーに基づいて計算される情報、NNPモデルを用いて計算される情報、又は、NNPモデルの出力を用いた解析結果に関する情報、のいずれか1つを含んでもよい。エネルギーに基づいて計算される情報は、一例として、原子毎の力、応力(系全体のStress)、原子毎のVirial、又は、系全体のVirialのいずれか1つに関する情報を含んでもよい。また、NNPモデルを用いて計算される情報は、一例として、原子毎のChargeであってもよい。NNPモデルの出力を用いた解析結果に関する情報は、NNPモデルを用いて計算される情報に対して、サーバ1によって追加の解析を行った後の情報を含んでもよい。一例として、動力学計算の結果(原子の位置や原子の速度など)や物性値の計算結果等であってもよい。NNPモデルを用いて計算される情報は、NNPモデルを複数回用いて算出した処理結果であってもよい。
【0029】
クライアント2の通信部23が、サーバ1からの通信パケットを受信する(S109)。受信された通信パケットに含まれる出力情報は、クライアント2のメモリ22に格納されるが、出力情報に係るbyte列に対してはデシリアライズを行う必要がないため、デシリアライズに要していた処理時間をなくすことができる。
【0030】
クライアント2の処理部21は、出力情報に係るbyte列をメモリ22から参照する(S110)。byte列の参照は、サーバ1の処理部11と同様に行えばよい。そして、クライアント2の処理部21が参照されたbyte列などに基づいて処理を実行する(S111)。例えば、参照されたbyte列が入力情報に基づく処理結果であり、クライアント2の処理部21は、当該処理結果を、ユーザに認識させるために、モニタなどに表示してもよい。
【0031】
当該処理結果を認識したユーザは、前回の入力情報を編集し、編集された入力情報に基づいて再度SaaSを利用することも考えられる。その場合でも、入力情報が新たに生成されて、
図2の各処理が繰り返されることになる。
【0032】
以上のように、本実施形態では、ニューラルネットワークモデルを用いた高負荷な処理を、クライアント2より高速に処理することが可能なサーバ1で実行している。特に、本実施形態では、原子情報に基づくエネルギーの計算等の高負荷な処理をサーバ1で実行することにより、システム全体として高速な処理を実現している。その際、クライアント2とサーバ1の間の通信をより高速化するために、情報をbyte列でやり取りしている。これにより、例えば、ニューラルネットワークモデルに入力される情報およびニューラルネットワークモデルから出力される情報の少なくともいずれかの容量が大きく、通常のファイル通信では、情報のアップデートおよびダウンロードの少なくともいずれかが所望閾値を超えてしまう場合などにおいて、通信時間を所望閾値内に収めることもできる。
【0033】
なお、クライアント2がサーバ1と同程度のGPUを有している場合は、クライアント2がニューラルネットワークモデルを用いて計算を実行したほうが、本実施形態よりも最終的な処理結果を得るまでの時間は短くなる。しかし、一般的には、クライアント2の数は、サーバ1の数よりも多いと考えられる。そのため、ニューラルネットワークモデルを用いた計算を行いたい全てのクライアント2に高価なGPUを搭載させるよりも、本実施形態のほうがコストを抑えることができる。
本実施形態では、サーバ1に複数台のクライアント2が接続されてもよい。このとき、複数台のクライアント2のうち、ニューラルネットワークを用いた原子情報に対するエネルギーの算出等の処理を、サーバ1より高速に実行できないクライアントが少なくとも1台含まれていればよい。複数台のサーバ1に複数台のクライアント2が接続される場合も同様である。
本実施形態では、複数のクライアントプロセスを、複数のGPUを搭載したサーバ1に集約して処理することにより、サーバ1におけるGPUリソースの利用効率を高めることができる。また、これにより各クライアント2における処理負荷を下げることができる。
【0034】
本実施形態のように、byte列を読み出して読み出されたbyte列をサーバに送信することにより、シリアライズした場合と比較して通信時間を短縮することができる。また、サービス定義ファイル等においてbyte列を送信することを定義することにより、シリアライズを行わずにbyte列を送信することが可能である。また、ファイル変換のOverheadがかからないため、サーバおよびクライアントにおける処理時間も短縮することができる。
なお、本実施形態のNNPモデルを用いた処理においては、クライアント2からサーバ1に対して送信する原子情報(原子の種類、原子の位置など)やサーバ1からクライアント2に送信する処理結果(力、原子毎のCharge、原子毎のVirialなど)は、それぞれ原子数分の情報が含まれるため容量が大きい。例えば、原子情報の一例である原子の座標は、x、y、zの3方向の値を原子数分保有してもよい。また、処理結果の一例である力は、x、y、zの3つの成分の値を原子数分保有してもよい。したがって、本実施形態のbyte列を用いた情報のやり取りを、NNPモデルを用いた処理に適用することで、処理時間を短縮することができる。
本実施形態においては、主にNNPモデルを用いた処理結果の算出について説明したが、本実施形態と同様な構成を、原子情報とニューラルネットワークを用いた他の原子シミュレーションに適用してもよい。また、本実施形態においては、ニューラルネットワークを用いた処理結果の算出について説明したが、ニューラルネットワーク以外のモデルを用いて処理結果を算出してもよい。
【0035】
前述した実施形態におけるサーバおよびクライアントの各装置の一部又は全部は、ハードウェアで構成されていてもよいし、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)等の回路に実装されることにより、情報処理がハードウェアにより実行されてもよい。
【0036】
ソフトウェアを収納する記憶媒体の種類は限定されるものではない。記憶媒体は、磁気ディスク、又は光ディスク等の着脱可能なものに限定されず、ハードディスク、又はメモリ等の固定型の記憶媒体であってもよい。また、記憶媒体は、コンピュータ内部に備えられてもよいし、コンピュータ外部に備えられてもよい。
【0037】
図3は、前述した実施形態における各装置のハードウェア構成の一例を示すブロック図である。各装置は、一例として、プロセッサ71と、主記憶装置72(メモリ)と、補助記憶装置73(メモリ)と、ネットワークインタフェース74と、デバイスインタフェース75と、を備え、これらがバス76を介して接続されたコンピュータ7として実現されてもよい。
【0038】
図3のコンピュータ7は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、
図3では、1台のコンピュータ7が示されているが、ソフトウェアが複数台のコンピュータにインストールされて、当該複数台のコンピュータそれぞれがソフトウェアの同一の又は異なる一部の処理を実行してもよい。この場合、コンピュータそれぞれがネットワークインタフェース74等を介して通信して処理を実行する分散コンピューティングの形態であってもよい。つまり、前述した実施形態における各装置は、1又は複数の記憶装置に記憶された命令を1台又は複数台のコンピュータが実行することで機能を実現するシステムとして構成されてもよい。また、端末から送信された情報をクラウド上に設けられた1台又は複数台のコンピュータで処理し、この処理結果を端末に送信するような構成であってもよい。
【0039】
前述した実施形態における各装置の各種演算は、1又は複数のプロセッサを用いて、又は、ネットワークを介した複数台のコンピュータを用いて、並列処理で実行されてもよい。また、各種演算が、プロセッサ内に複数ある演算コアに振り分けられて、並列処理で実行されてもよい。また、本開示の処理、手段等の一部又は全部は、ネットワークを介してコンピュータ7と通信可能なクラウド上に設けられたプロセッサ及び記憶装置の少なくとも一方により実行されてもよい。このように、前述した実施形態における各装置は、1台又は複数台のコンピュータによる並列コンピューティングの形態であってもよい。
【0040】
プロセッサ71は、コンピュータの制御装置及び演算装置を含む電子回路(処理回路、Processing circuit、Processing circuitry、CPU、GPU、FPGA、又はASIC等)であってもよい。また、プロセッサ71は、専用の処理回路を含む半導体装置等であってもよい。プロセッサ71は、電子論理素子を用いた電子回路に限定されるものではなく、光論理素子を用いた光回路により実現されてもよい。また、プロセッサ71は、量子コンピューティングに基づく演算機能を含むものであってもよい。
【0041】
プロセッサ71は、コンピュータ7の内部構成の各装置等から入力されたデータやソフトウェア(プログラム)に基づいて演算処理を行い、演算結果や制御信号を各装置等に出力することができる。プロセッサ71は、コンピュータ7のOS(Operating System)や、アプリケーション等を実行することにより、コンピュータ7を構成する各構成要素を制御してもよい。
【0042】
前述した実施形態における各装置は、1又は複数のプロセッサ71により実現されてもよい。ここで、プロセッサ71は、1チップ上に配置された1又は複数の電子回路を指してもよいし、2つ以上のチップあるいは2つ以上のデバイス上に配置された1又は複数の電子回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線又は無線により通信してもよい。
【0043】
主記憶装置72は、プロセッサ71が実行する命令及び各種データ等を記憶する記憶装置であり、主記憶装置72に記憶された情報がプロセッサ71により読み出される。補助記憶装置73は、主記憶装置72以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、半導体のメモリでもよい。半導体のメモリは、揮発性メモリ、不揮発性メモリのいずれでもよい。前述した実施形態における各装置において各種データを保存するための記憶装置は、主記憶装置72又は補助記憶装置73により実現されてもよく、プロセッサ71に内蔵される内蔵メモリにより実現されてもよい。例えば、前述した実施形態におけるサーバ1のメモリ12およびクライアント2のメモリ22は、主記憶装置72又は補助記憶装置73により実現されてもよい。
【0044】
記憶装置(メモリ)1つに対して、複数のプロセッサが接続(結合)されてもよいし、単数のプロセッサが接続されてもよい。プロセッサ1つに対して、複数の記憶装置(メモリ)が接続(結合)されてもよい。前述した実施形態における各装置が、少なくとも1つの記憶装置(メモリ)とこの少なくとも1つの記憶装置(メモリ)に接続(結合)される複数のプロセッサで構成される場合、複数のプロセッサのうち少なくとも1つのプロセッサが、少なくとも1つの記憶装置(メモリ)に接続(結合)される構成を含んでもよい。また、複数台のコンピュータに含まれる記憶装置(メモリ)とプロセッサによって、この構成が実現されてもよい。さらに、記憶装置(メモリ)がプロセッサと一体になっている構成(例えば、L1キャッシュ、L2キャッシュを含むキャッシュメモリ)を含んでもよい。
【0045】
ネットワークインタフェース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)等がある。
【0046】
デバイスインタフェース75は、外部装置9Bと直接接続するUSB等のインタフェースである。
【0047】
外部装置9Aはコンピュータ7とネットワークを介して接続されている装置である。外部装置9Bはコンピュータ7と直接接続されている装置である。
【0048】
外部装置9A又は外部装置9Bは、一例として、入力装置であってもよい。入力装置は、例えば、カメラ、マイクロフォン、モーションキャプチャ、各種センサ、キーボード、マウス、又はタッチパネル等のデバイスであり、取得した情報をコンピュータ7に与える。また、パーソナルコンピュータ、タブレット端末、又はスマートフォン等の入力部とメモリとプロセッサを備えるデバイスであってもよい。
【0049】
また、外部装置9A又は外部装置Bは、一例として、出力装置でもよい。出力装置は、例えば、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、PDP(Plasma Display Panel)、又は有機EL(Electro Luminescence)パネル等の表示装置であってもよいし、音声等を出力するスピーカ等であってもよい。また、パーソナルコンピュータ、タブレット端末、又はスマートフォン等の出力部とメモリとプロセッサを備えるデバイスであってもよい。
【0050】
また、外部装置9Aまた外部装置9Bは、記憶装置(メモリ)であってもよい。例えば、外部装置9Aはネットワークストレージ等であってもよく、外部装置9BはHDD等のストレージであってもよい。
【0051】
また、外部装置9A又は外部装置9Bは、前述した実施形態における各装置の構成要素の一部の機能を有する装置でもよい。つまり、コンピュータ7は、外部装置9A又は外部装置9Bの処理結果の一部又は全部を送信又は受信してもよい。
【0052】
本明細書(請求項を含む)において、「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)以外の他の要素を加えることも含む。
【0053】
本明細書(請求項を含む)において、「データを入力として/データに基づいて/に従って/に応じて」等の表現(同様な表現を含む)が用いられる場合は、特に断りがない場合、各種データそのものを入力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を入力として用いる場合を含む。また「データに基づいて/に従って/に応じて」何らかの結果が得られる旨が記載されている場合、当該データのみに基づいて当該結果が得られる場合を含むとともに、当該データ以外の他のデータ、要因、条件、及び/又は状態等にも影響を受けて当該結果が得られる場合をも含み得る。また、「データを出力する」旨が記載されている場合、特に断りがない場合、各種データそのものを出力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を出力とする場合も含む。
【0054】
本明細書(請求項を含む)において、「接続される(connected)」及び「結合される(coupled)」との用語が用いられる場合は、直接的な接続/結合、間接的な接続/結合、電気的(electrically)な接続/結合、通信的(communicatively)な接続/結合、機能的(operatively)な接続/結合、物理的(physically)な接続/結合等のいずれをも含む非限定的な用語として意図される。当該用語は、当該用語が用いられた文脈に応じて適宜解釈されるべきであるが、意図的に或いは当然に排除されるのではない接続/結合形態は、当該用語に含まれるものして非限定的に解釈されるべきである。
【0055】
本明細書(請求項を含む)において、「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)されていればよい。
【0056】
本明細書(請求項を含む)において、含有又は所有を意味する用語(例えば、「含む(comprising/including)」及び有する「(having)等)」が用いられる場合は、当該用語の目的語により示される対象物以外の物を含有又は所有する場合を含む、open-endedな用語として意図される。これらの含有又は所有を意味する用語の目的語が数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)である場合は、当該表現は特定の数に限定されないものとして解釈されるべきである。
【0057】
本明細書(請求項を含む)において、ある箇所において「1つ又は複数(one or more)」又は「少なくとも1つ(at least one)」等の表現が用いられ、他の箇所において数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)が用いられているとしても、後者の表現が「1つ」を意味することを意図しない。一般に、数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)は、必ずしも特定の数に限定されないものとして解釈されるべきである。
【0058】
本明細書において、ある実施例の有する特定の構成について特定の効果(advantage/result)が得られる旨が記載されている場合、別段の理由がない限り、当該構成を有する他の1つ又は複数の実施例についても当該効果が得られると理解されるべきである。但し当該効果の有無は、一般に種々の要因、条件、及び/又は状態等に依存し、当該構成により必ず当該効果が得られるものではないと理解されるべきである。当該効果は、種々の要因、条件、及び/又は状態等が満たされたときに実施例に記載の当該構成により得られるものに過ぎず、当該構成又は類似の構成を規定したクレームに係る発明において、当該効果が必ずしも得られるものではない。
【0059】
本明細書(請求項を含む)において、「最大化(maximize)」等の用語が用いられる場合は、グローバルな最大値を求めること、グローバルな最大値の近似値を求めること、ローカルな最大値を求めること、及びローカルな最大値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最大値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最小化(minimize)」等の用語が用いられる場合は、グローバルな最小値を求めること、グローバルな最小値の近似値を求めること、ローカルな最小値を求めること、及びローカルな最小値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最小値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最適化(optimize)」等の用語が用いられる場合は、グローバルな最適値を求めること、グローバルな最適値の近似値を求めること、ローカルな最適値を求めること、及びローカルな最適値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最適値の近似値を確率的又はヒューリスティックに求めることを含む。
【0060】
本明細書(請求項を含む)において、複数のハードウェアが所定の処理を行う場合、各ハードウェアが協働して所定の処理を行ってもよいし、一部のハードウェアが所定の処理の全てを行ってもよい。また、一部のハードウェアが所定の処理の一部を行い、別のハードウェアが所定の処理の残りを行ってもよい。本明細書(請求項を含む)において、「1又は複数のハードウェアが第1の処理を行い、前記1又は複数のハードウェアが第2の処理を行う」等の表現が用いられている場合、第1の処理を行うハードウェアと第2の処理を行うハードウェアは同じものであってもよいし、異なるものであってもよい。つまり、第1の処理を行うハードウェア及び第2の処理を行うハードウェアが、前記1又は複数のハードウェアに含まれていればよい。なお、ハードウェアは、電子回路、又は電子回路を含む装置等を含んでよい。
【0061】
本明細書(請求項を含む)において、複数の記憶装置(メモリ)がデータの記憶を行う場合、複数の記憶装置(メモリ)のうち個々の記憶装置(メモリ)は、データの一部のみを記憶してもよいし、データの全体を記憶してもよい。
【0062】
以上、本開示の実施形態について詳述したが、本開示は上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更、置き換え及び部分的削除等が可能である。例えば、前述した全ての実施形態において、数値又は数式を説明に用いている場合は、一例として示したものであり、これらに限られるものではない。また、実施形態における各動作の順序は、一例として示したものであり、これらに限られるものではない。
【符号の説明】
【0063】
1 サーバ(第1情報処理装置)
11 サーバの処理部
12 サーバのメモリ
13 サーバの通信部
2 クライアント(第2情報処理装置)
21 クライアントの処理部
22 クライアントのメモリ
23 クライアントの通信部
7 コンピュータ
71 プロセッサ
72 主記憶装置
73 補助記憶装置
74 ネットワークインタフェース
75 デバイスインタフェース
76 バス
8 通信ネットワーク
9Aおよび9B 外部装置