(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-08
(45)【発行日】2024-02-19
(54)【発明の名称】深層学習モデルの分散トレーニング方法、装置、電子機器、記憶媒体およびコンピュータプログラム
(51)【国際特許分類】
G06N 3/098 20230101AFI20240209BHJP
G06N 20/00 20190101ALI20240209BHJP
G06F 9/50 20060101ALI20240209BHJP
【FI】
G06N3/098
G06N20/00
G06F9/50
【外国語出願】
(21)【出願番号】P 2022111838
(22)【出願日】2022-07-12
【審査請求日】2022-07-13
(31)【優先権主張番号】202111264469.2
(32)【優先日】2021-10-28
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100163511
【氏名又は名称】辻 啓太
(72)【発明者】
【氏名】ウー ジフア
(72)【発明者】
【氏名】ユ ディアンハイ
(72)【発明者】
【氏名】アオ ユロン
(72)【発明者】
【氏名】ゴン ウェイバオ
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】中国特許出願公開第113128702(CN,A)
【文献】特表2020-518065(JP,A)
【文献】特開2015-167041(JP,A)
【文献】特開2008-123205(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 9/46- 9/54
(57)【特許請求の範囲】
【請求項1】
深層学習モデルの分散トレーニング装置により実行される分散トレーニング方法であって、
トレーニングすべき深層学習モデルのデータ情報に基づいて分散コンピューティングビューを生成することと、
前記トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースの属性情報に基づいてクラスターリソースビューを生成することと、
前記分散コンピューティングビューと前記クラスターリソースビューとに基づいて、分散トレーニングタスクの目標分割ポリシーを確定することと、
前記目標分割ポリシーに基づいて前記トレーニングすべき深層学習モデルに対して分散トレーニングを行うことと、
を含
む分散トレーニング方法。
【請求項2】
トレーニングすべき深層学習モデルのデータ情報に基づいて分散コンピューティングビューを生成することは、
前記トレーニングすべき深層学習モデルの演算子とテンソルを取得することと、
前記演算子と前記テンソルに基づいて分散コンピューティングビューを生成することと、を含む請求項1に記載の分散トレーニング方法。
【請求項3】
トレーニングすべき深層学習モデルのデータ情報に基づいて分散コンピューティングビューを生成することは、
前記演算子の分散属性と前記テンソルの分散属性を取得することをさらに含み、
前記演算子と前記テンソルに基づいて分散コンピューティングビューを生成することは、
前記演算子と、前記演算子の分散属性と、前記テンソルと、前記テンソルの分散属性とに基づいて、分散コンピューティングビューを生成することを含む請求項2に記載の分散トレーニング方法。
【請求項4】
前記分散コンピューティングビューにおける入力テンソルと出力テンソルの定義と、その入力テンソルと出力テンソルを使用する演算子の定義とが一致しないことを検出したことに応答して、再構成変換演算子を挿入することと、
前記分散コンピューティングビューにおける入力テンソルと出力テンソルに対応するデバイスと、その入力テンソルと出力テンソルを使用する演算子に対応するデバイスとが一致しないことを検出したことに応答して、通信演算子を挿入することと、
をさらに含む請求項2または請求項3に記載の分散トレーニング方法。
【請求項5】
前記トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースの属性情報に基づいてクラスターリソースビューを生成することは、
前記トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースにおける各デバイス間のトポロジー情報と、前記クラスターハードウェアリソースにおける各デバイスの処理能力情報とを取得することであって、前記処理能力情報は、プロセッサ情報、帯域幅情報、グラフィックスメモリ情報の少なくとも1つを含むことと、
前記トポロジー情報と前記処理能力情報とに基づいてクラスターリソースビューを生成することと、
を含む請求項1に記載の分散トレーニング方法。
【請求項6】
前記分散コンピューティングビューと前記クラスターリソースビューとに基づいて、分散トレーニングタスクの目標分割ポリシーを確定することは、
前記分散コンピューティングビューと前記クラスターリソースビューとに基づいて、前記深層学習モデルの分割方式と前記クラスターハードウェアリソースのリソース構成方式を含む異なる分割ポリシーを生成することと、
各分割ポリシーに対応するオーバーヘッドに基づいて、分散トレーニングタスクの目標分割ポリシーを確定することと、
を含む請求項1に記載の分散トレーニング方法。
【請求項7】
各分割ポリシーに対応するオーバーヘッドに基づいて、分散トレーニングタスクの目標分割ポリシーを確定することは、
各分割ポリシーに対応するオーバーヘッドを計算することであって、前記オーバーヘッドはランタイムオーバーヘッドとメモリ空間占有オーバーヘッドを含み、前記ランタイムオーバーヘッドは演算子オーバーヘッドと通信オーバーヘッドを含むことと、
オーバーヘッドが最小となる分割ポリシーを、分散トレーニングタスクの目標分割ポリシーとして確定することと、
を含む請求項6に記載の分散トレーニング方法。
【請求項8】
前記目標分割ポリシーに基づいて前記トレーニングすべき深層学習モデルに対して分散トレーニングを行うことは、
前記目標分割ポリシーに基づいて、非同期式パイプライン処理機構を用いて前記トレーニングすべき深層学習モデルに対して分散トレーニングを行うことを含む請求項1に記載の分散トレーニング方法。
【請求項9】
前記分散トレーニン
グにおいて、前記クラスターハードウェアリソースの環境が変化したことに応答して、前記目標分割ポリシーを再確定するために柔軟なリソース管理機構をトリガすることをさらに含む請求項8に記載の分散トレーニング方法。
【請求項10】
トレーニングすべき深層学習モデルのデータ情報に基づいて分散コンピューティングビューを生成するように構成される第1の生成モジュールと、
前記トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースの属性情報に基づいてクラスターリソースビューを生成するように構成される第2の生成モジュールと、
前記分散コンピューティングビューと前記クラスターリソースビューとに基づいて、分散トレーニングタスクの目標分割ポリシーを確定するように構成される確定モジュールと、
前記目標分割ポリシーに基づいて前記トレーニングすべき深層学習モデルに対して分散トレーニングを行うように構成されるトレーニングモジュールと、
を備える深層学習モデルの分散トレーニング装置。
【請求項11】
前記第1の生成モジュールは、
前記トレーニングすべき深層学習モデルの演算子とテンソルを取得するように構成される第1の取得サブモジュールと、
前記演算子と前記テンソルに基づいて分散コンピューティングビューを生成するように構成される第1の生成サブモジュールと、
を備える請求項10の分散トレーニング装置。
【請求項12】
前記第1の生成モジュールは、
前記演算子の分散属性と前記テンソルの分散属性を取得するように構成される第2の取得サブモジュールをさらに備え、
前記第1の生成サブモジュールは、
前記演算子と、前記演算子の分散属性と、前記テンソルと、前記テンソルの分散属性とに基づいて、分散コンピューティングビューを生成するように構成される生成ユニットを備える請求項11に記載の分散トレーニング装置。
【請求項13】
前記分散コンピューティングビューにおける入力テンソルと出力テンソルの定義と、その入力テンソルと出力テンソルを使用する演算子の定義とが一致しないことを検出したことに応答して、再構成変換演算子を挿入するように構成される第1の挿入モジュールと、
前記分散コンピューティングビューにおける入力テンソルと出力テンソルに対応するデバイスと、その入力テンソルと出力テンソルを使用する演算子に対応するデバイスとが一致しないことを検出したことに応答して、通信演算子を挿入するように構成される第2の挿入モジュールと、をさらに備える請求項11または請求項12に記載の分散トレーニング装置。
【請求項14】
前記第2の生成モジュールは、
前記トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースにおける各デバイス間のトポロジー情報と、前記クラスターハードウェアリソースにおける各デバイスの処理能力情報とを取得するように構成される第3の取得サブモジュールであって、前記処理能力情報は、プロセッサ情報、帯域幅情報、グラフィックスメモリ情報の少なくとも1つを含む第3の取得サブモジュールと、
前記トポロジー情報と前記処理能力情報とに基づいてクラスターリソースビューを生成するように構成される第2の生成サブモジュールと、
を備える請求項10に記載の分散トレーニング装置。
【請求項15】
前記確定モジュールは、
前記分散コンピューティングビューと前記クラスターリソースビューとに基づいて、前記深層学習モデルの分割方式と前記クラスターハードウェアリソースのリソース構成方式を含む異なる分割ポリシーを生成するように構成される第3の生成サブモジュールと、
各分割ポリシーに対応するオーバーヘッドに基づいて、分散トレーニングタスクの目標分割ポリシーを確定するように構成される確定サブモジュールと、を備える請求項10に記載の分散トレーニング装置。
【請求項16】
前記確定サブモジュールは、
各分割ポリシーに対応するオーバーヘッドを計算するように構成される計算ユニットであって、前記オーバーヘッドはランタイムオーバーヘッドとメモリ空間占有オーバーヘッドを含み、前記ランタイムオーバーヘッドは演算子オーバーヘッドと通信オーバーヘッドを含む、計算ユニットと、
オーバーヘッドが最小となる分割ポリシーを、分散トレーニングタスクの目標分割ポリシーとして確定するように構成される確定ユニットと、
を備える請求項15に記載の分散トレーニング装置。
【請求項17】
前記トレーニングモジュールは、
前記目標分割ポリシーに基づいて、非同期式パイプライン処理機構を用いて前記トレーニングすべき深層学習モデルに対して分散トレーニングを行うように構成されるトレーニングサブモジュールを備える請求項10に記載の分散トレーニング装置。
【請求項18】
前記分散トレーニン
グにおいて、前記クラスターハードウェアリソースの環境が変化したことに応答して、前記目標分割ポリシーを再確定するために柔軟なリソース管理機構をトリガするように構成されるトリガモジュールをさらに備える、請求項17に記載の分散トレーニング装置。
【請求項19】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサと通信接続されたメモリとを備える電子機器であって、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な指令が格納され、前記指令が前記少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに請求項1~3、5~9のいずれか1項に記載の分散トレーニング方法を実行させる、電子機器。
【請求項20】
コンピュータ指令が格納されている非一時的コンピュータ可読記憶媒体であって、
前記コンピュータ指令は、コンピュータに請求項1~3、5~9のいずれか1項に記載の分散トレーニング方法を実行させるために用いられる非一時的コンピュータ可読記憶媒体。
【請求項21】
プロセッサによって実行されると、請求項1~3、5~9のいずれか1項に記載の分散トレーニング方法が実現されるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、人工知能技術分野に関し、具体的に深層学習、およびクラウドコンピューティング技術分野に関し、特に深層学習モデルの分散トレーニング方法、装置、電子機器、記憶媒体およびコンピュータプログラムに関する。
【背景技術】
【0002】
近年、コンピュータビジョン、自然言語処理、個性化推薦などの分野のモデルは、より良い効果を追求するために、モデルトレーニング時に、通常、より大規模なモデルパラメータあるいはより大規模なトレーニングデータを用い、例えば20億パラメータを持つVIT-G/14視覚モデル、千億パラメータ規模のGPT3言語モデル、兆パラメータ規模の億レベルのデータを持つクリック率推定モデルが挙げられる。そのため、分散トレーニングは超大規模なモデルの効率的なトレーニングに必要な手段として、ますます広く用いられている。現在の分散トレーニングでは、開発の難しさが大きく、使いやすさが低く、ロバスト性が低く、拡張性が低く、リソースの利用率が低いなどの問題がある。
【発明の概要】
【0003】
本出願は深層学習モデルの分散トレーニング方法、装置、電子機器、記憶媒体およびコンピュータプログラムを提供する。
【0004】
本出願の第1の態様によれば、トレーニングすべき深層学習モデルのデータ情報に基づいて分散コンピューティングビューを生成することと、トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースの属性情報に基づいてクラスターリソースビューを生成することと、分散コンピューティングビューとクラスターリソースビューとに基づいて、分散トレーニングタスクの目標分割ポリシーを確定することと、目標分割ポリシーに基づいてトレーニングすべき深層学習モデルに対して分散トレーニングを行うことと、を含む深層学習モデルの分散トレーニング方法を提供する。
【0005】
本出願の第2の態様によれば、トレーニングすべき深層学習モデルのデータ情報に基づいて分散コンピューティングビューを生成するように構成される第1の生成モジュールと、トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースの属性情報に基づいてクラスターリソースビューを生成するように構成される第2の生成モジュールと、分散コンピューティングビューとクラスターリソースビューとに基づいて、分散トレーニングタスクの目標分割ポリシーを確定するように構成される確定モジュールと、目標分割ポリシーに基づいてトレーニングすべき深層学習モデルに対して分散トレーニングを行うように構成されるトレーニングモジュールと、を備える深層学習モデルの分散トレーニング装置を提供する。
【0006】
本出願の第3の態様によれば、少なくとも1つのプロセッサと、少なくとも1つのプロセッサと通信可能に接続されたメモリとを備える電子機器であって、メモリには、少なくとも1つのプロセッサによって実行可能な指令が格納され、指令が少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに第1の態様のいずれかの実施形態に記載の分散トレーニング方法が実行される、電子機器を提供する。
【0007】
本出願の第4の態様によれば、コンピュータ指令が格納されている非一時的コンピュータ可読記憶媒体であって、コンピュータ指令は第1の態様のいずれかの実施形態の分散トレーニング方法をコンピュータに実行させるために用いられる非一時的コンピュータ可読記憶媒体を提供する。
【0008】
本出願の第5の態様によれば、プロセッサによって実行されると、第1の態様のいずれかの実施形態に記載の分散トレーニング方法が実現されるコンピュータプログラムを提供する。
【0009】
なお、発明の概要に記載された内容は、本出願の実施形態のかなめとなる特徴または重要な特徴を限定することを意図するものではなく、本出願の範囲を限定するものでもない。本出願の他の特徴は、以下の説明によって容易に理解される。
【図面の簡単な説明】
【0010】
図面は本出願をよりよく理解するために用いられ、本出願に対する限定ではない。
【
図1】本出願の適用可能な例示的なシステムアーキテクチャを示す図である。
【
図2】本出願に係る深層学習モデルの分散トレーニング方法の一実施形態のフローチャートである。
【
図3】本出願に係る深層学習モデルの分散トレーニング方法のもう一つの実施形態のフローチャートである。
【
図4】本出願に係る深層学習モデルの分散トレーニング方法の他の1つの実施形態のフローチャートである。
【
図5】本出願に係る深層学習モデルの分散トレーニング装置の一実施形態の構造概略図である。
【
図6】本出願に係る実施形態の深層学習モデルの分散トレーニング方法を実現するための電子機器のブロック図である。
【発明を実施するための形態】
【0011】
以下は、図面を参照して本出願の例示的な実施形態を説明し、ここでは理解を助けるために、本出願の実施形態の様々な詳細が記載されるが、これらは単なる例示的なものに過ぎない。従って、本出願の範囲および要旨を逸脱しない限り、当業者が本明細書の実施形態に対して様々な変更および修正を行うことができることを理解すべきである。なお、以下の説明では、明確化および簡略化のため、公知の機能および構成については説明を省略する。
【0012】
なお、本出願の実施形態および実施形態における特徴は、矛盾を生じない限り、相互に組み合わせることができる。以下、図面および実施形態を参照しながら本出願を詳細に説明する。
【0013】
図1は、本出願に係る深層学習モデルの分散トレーニング方法または深層学習モデルの分散トレーニング装置の実施形態が適用可能な例示的なシステムアーキテクチャ100を示している。
【0014】
図1に示すように、システムアーキテクチャ100は、端末装置101、102、103、ネットワーク104、およびサーバ105を含んでもよい。ネットワーク104は、端末装置101、102、103とサーバ105との間で通信リンクを提供するための媒体として使用される。ネットワーク104は、有線、無線通信リンクまたは光ファイバケーブルなどの様々なタイプの接続を含んでもよい。
【0015】
ユーザは、情報を送受信するために、端末装置101、102、103を使用してネットワーク104を介してサーバ105と情報のやり取りをしてもよい。端末装置101、102、103には、様々なクライアントアプリケーションをインストールすることができる。
【0016】
端末装置101、102、103は、ハードウェアであってもよいし、ソフトウェアであってもよい。端末装置101、102、103がハードウェアである場合、様々な電子機器であってもよく、スマートフォン、タブレットコンピュータ、ラップトップコンピュータおよびデスクトップコンピュータなどを含むが、これらに限定されない。端末装置101、102、103がソフトウェアである場合、上記電子機器にインストールされてもよい。それは、複数のソフトウェア若しくはソフトウェアモジュールとして実現されてもよく、または単一のソフトウェア若しくはソフトウェアモジュールとして実現されてもよい。ここでは特に限定しない。
【0017】
サーバ105は、様々なサービスを提供できる。例えば、サーバ105は、端末装置101、102、および103から取得されたトレーニングすべき深層学習モデルのデータ情報と、クラスターハードウェアリソースの属性情報を解析および処理し、処理結果(例えば、目標分割ポリシー)を生成することができる。
【0018】
なお、サーバ105は、ハードウェアであってもよいし、ソフトウェアであってもよい。サーバ105がハードウェアである場合、複数のサーバから構成される分散サーバクラスターとしても、単一のサーバとしても実装可能である。サーバ105がソフトウェアである場合、複数のソフトウェア若しくはソフトウェアモジュール(例えば、分散サービスを提供するためのもの)として実装されてもよく、または単一のソフトウェア若しくはソフトウェアモジュールとして実装されてもよい。ここでは特に限定しない。
【0019】
なお、本出願の実施形態に係る深層学習モデルの分散トレーニング方法は、通常、サーバ105によって実行され、これに応じて、深層学習モデルの分散トレーニング装置は、通常、サーバ105に設けられている。
【0020】
図1における端末装置、ネットワークおよびサーバの数は例示的なものに過ぎないことを理解すべきである。実現のニーズに応じて、端末装置、ネットワークおよびサーバの数を任意に加減してもよい。
【0021】
次に、本出願に係る深層学習モデルの分散トレーニング方法の一つの実施形態のフロー200を示す
図2を参照する。当該深層学習モデルの分散トレーニング方法は、以下のステップを含む。
【0022】
ステップ201では、トレーニングすべき深層学習モデルのデータ情報に基づいて分散コンピューティングビューを生成する。
【0023】
本実施形態では、深層学習モデルの分散トレーニング方法の実行主体(例えば、
図1に示すサーバ105)が、トレーニングすべき深層学習モデルのデータ情報に基づいて分散コンピューティングビューを生成することができる。本実施形態では、トレーニングすべき深層学習モデルは、分散トレーニングが必要とされる深層学習モデルであり、上記実行主体は、トレーニングすべき深層学習モデルのデータ情報を取得し、そのデータ情報に基づいて分散コンピューティングビューを生成することができる。
【0024】
深層学習モデル(ニューラルネットワーク)のトレーニングプロセスを、データフロー図(Data Flow Diagram)を計算するプロセスとして記述することができるため、データフロー図またはコンピューティンググラフ(Computational Graph)はノードとエッジから構成され、ノードでの計算は演算子と呼ばれ、各エッジはノード間で伝送されるテンソルを表す。そこで、いくつかの実施形態では、上記実行主体は、トレーニングすべき深層学習モデルの演算子およびテンソルを取得した後に、取得した演算子およびテンソルに基づいて分散コンピューティングビューを生成する。
【0025】
あるいは、各演算子とテンソルはいずれもそれぞれの分散属性を持つことができ、上記実行主体は、演算子とテンソルの分散属性を取得することができ、ここで、分散属性は、論理プロセストポロジー情報、テンソルの次元ごとの分割マッピング情報、テンソルの次元ごとのスライスサイズ情報およびスライスの物理装置配置情報を含むが、これらに限定されない。なお、テンソルの分散属性は、そのテンソルを使用する演算子に対応する分散属性とは異なっていてもよく、それによって保存と演算の分離に役立つ。
【0026】
ステップ202では、トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースの属性情報に基づいて、クラスターリソースビューを生成する。
【0027】
本実施形態では、上記実行主体は、トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースの属性情報に基づいて、クラスターリソースビューを生成することができる。深層学習モデルは、分散トレーニングを行う際に複数のハードウェアデバイスを使用することが可能であり、ハードウェアデバイスごとに複数のGPU(グラフィックス プロセッシング ユニット,Graphics Processing Unit)を設けることができ、深層学習モデルは各デバイス中のGPUで並列してトレーニングされる。異なるハードウェアデバイスの構造の差異が比較的大きいため、例えば計算力、グラフィックスメモリ(Video Memory)、接続方式および帯域幅などの面で大きな差異がある。そこで、本実施形態では、上記実行主体は、トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソース(プロセッサ、スイッチなど)を抽象的に表現してクラスターリソースビューを生成する。
【0028】
例えば、上記実行主体は、各デバイス間のトポロジー関係、すなわち、各デバイス間の接続関係を取得し、さらに、各デバイスのプロセッサ、グラフィックスメモリ、帯域幅などの各デバイスの処理能力情報を取得し、各デバイス間のトポロジー関係と各デバイスそれぞれの処理能力情報とに基づいてクラスターリソースビューを生成することにより、クラスターハードウェアリソースを抽象的に表現し、クラスター間、クラスター内の各デバイス間、各デバイス内の具体的な接続形態および差異をマスクすることにより、様々な異種ハードウェアデバイスおよびクラスター環境をサポートすることができ、開発の難しさを低減し、当該方法の汎用性を高めることができる。
【0029】
ステップ203では、分散コンピューティングビューとクラスターリソースビューとに基づいて、分散トレーニングタスクの目標分割ポリシーを確定する。
【0030】
本実施形態では、上記実行主体は、ステップ201で生成された分散コンピューティングビューと、ステップ202で生成されたクラスターリソースビューとに基づいて、分散トレーニングタスクの目標分割ポリシーを確定することができる。分割ポリシーには、深層学習モデルの分割方式とクラスターハードウェアリソースのリソース配置方式が含まれており、異なる分割ポリシーの対応するオーバーヘッドが異なるため、本実施形態では、分散コンピューティングビューとクラスターリソースビューとに基づいて、分散トレーニングタスクの最適分割ポリシー、すなわち目標分割ポリシーを確定することにより、異種ハードウェアの性能を十分に発揮するように、分散トレーニングタスクを適切な異種ハードウェアリソーストポロジーに分割する。
【0031】
例えば、コストモデルをモデリングすることによって、分割ポリシー(モデル分割とクラスターリソース構成を含む)下でのコンピューティンググラフ全体のトレーニングコスト(オーバーヘッド)を評価することができる。この場合、トレーニングコストにはランタイム、メモリ空間占有などが含まれ、これにより、各分割ポリシーに対応するトレーニングコストに基づいて最適分割ポリシーが確定され、トレーニング効率とリソース利用率の向上の目的が達成される。また上記実行主体は、グラフレベルのコスト推定の難点、たとえば通信の同期操作、並行による隠蔽時間遅延、異種ハードウェアによる性能の違いなどに対して、動的情報と静的情報を結合した還元アルゴリズム(reduction algorithm)を用いてグラフ全体のコスト(オーバーヘッド)を計算し、オーバーヘッド計算の正確性を確保する。
【0032】
ステップ204では、目標分割ポリシーに基づいて、トレーニングすべき深層学習モデルに対して分散トレーニングを行う。
【0033】
本実施形態では、上記実行主体は、ステップ203で確定された目標分割ポリシーに基づいて、トレーニングすべき深層学習モデルに対して分散トレーニングを行うことができる。例えば、上記実行主体は、目標分割ポリシーに基づいて、非同期式パイプライン処理機構を用いて、トレーニングすべき深層学習モデルを分散トレーニングすることにより、通信と計算の同時性(concurrence)を最大化し、分散トレーニングのトレーニング効率を向上させることができる。また、分散トレーニングの各サブタスクをデカップリングすることにより、1つのタスクを複数の種類のデバイス上で動作させることができ、複数の実行粒度をサポートすることができ、異種のハードウェアの計算力に対して異なる実行粒度を設定することができるだけでなく、より複雑な条件、ループなどの制御フローロジックを処理することができ、実行効率と負荷分散(Load Balancing)能力を向上させることができる。
【0034】
あるいは、分散トレーニングの実行プロセスに、上記実行主体が、例えばクラスター内のトレーニングデバイスの故障またはデバイスの動的な追加/削減が発生した場合など、クラスターハードウェアリソースの環境が変化したことを検出した場合、柔軟なリソース管理機構をトリガし、フォールトトレランスまたはリソースのオートスケーリングを行い、自己適応的に応答して現在のクラスターハードウェア環境における目標分割ポリシーを再確定し、新たに確定された目標分割ポリシーに基づいて分散トレーニングを実行するようにしてもよい。例えば、上記実行主体がノードの故障を検出した場合、フォルトトレランス機構をトリガし、トレーニングをほとんど中断しない状況下で故障ノードを交換することにより、リソースの再スケジューリングの時間を節約し、リソースの無駄使いを削減することができ、また、上記実行主体がクラスターリソースのアイドル状態またはリソース不足を検出した場合、リソースのオートスケーリングを行い、ノード数の動的な計算と調整を行い、必要に応じた再分割を行うことにより、クラスター全体のリソースの利用率を向上させることができる。
【0035】
本出願の実施形態に係る深層学習モデルの分散トレーニング方法は、まず、トレーニングすべき深層学習モデルのデータ情報に基づいて分散コンピューティングビューを生成し、次に、トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースの属性情報に基づいてクラスターリソースビューを生成し、分散コンピューティングビューとクラスターリソースビューとに基づいて、分散トレーニングタスクの目標分割ポリシーを確定し、最後に、目標分割ポリシーに基づいてトレーニングすべき深層学習モデルに対して分散トレーニングを行う。本実施形態における深層学習モデルの分散トレーニング方法は、分散コンピューティングビューとクラスターリソースビューを生成することにより、異種のハードウェアとの互換性を持たせ、異なるハードウェア間の差異をマスクすることができ、さらに、目標分割ポリシーを確定することにより、分散トレーニングタスクを適切な異種ハードウェアリソースに分割し、異種ハードウェアの性能を十分に発揮させることができ、深層学習モデルに基づいて、その目標分割ポリシーに従って分散トレーニングを行うトレーニング効率を向上させる。
【0036】
本出願の技術方案では、関連するユーザ個人情報の収集、記憶、使用、加工、伝送、提供および公開などの処理は、いずれも関連法律法規の規定に準拠し、且つ公序良俗に反しない。
【0037】
次に、本出願に係る深層学習モデルの分散トレーニング方法のもう一つの実施形態のフロー300を示す
図3を参照する。当該深層学習モデルの分散トレーニング方法は、以下のステップを含む。
【0038】
ステップ301では、トレーニングすべき深層学習モデルの演算子とテンソルを取得する。
本実施形態では、深層学習モデルの分散トレーニング方法の実行主体(例えば、
図1に示すサーバ105)は、トレーニングすべき深層学習モデルの演算子とテンソルを取得することができる。コンピューティングデータフローグラフにおけるノードでの計算を演算子と呼び、各エッジはノード間で伝送されるテンソルを表し、各演算子とテンソルを並列して表現すれば、ニューラルネットワーク全体を並列化し、順次実行されるコンピューティンググラフから分散コンピューティンググラフに変換することができる。したがって、上記実行主体は、まず、トレーニングすべき深層学習モデルの演算子とテンソルを取得する。
【0039】
本実施形態のいくつかのオプション的な実施形態では、ステップ301の後に、上記深層学習モデルの分散トレーニング方法は、演算子の分散属性およびテンソルの分散属性を取得するステップをさらに含む。各演算子とテンソルはそれぞれの分散属性を持つことができるので、上記実行主体は、演算子の分散属性とテンソルの分散属性を取得する。ここで、分散属性は、論理プロセストポロジー情報、テンソルの次元ごとの分割マッピング情報、テンソルの次元ごとのスライスサイズ情報およびスライスの物理装置配置情報を含むが、これらに限定されない。なお、テンソルの分散属性は、そのテンソルを使用する演算子に対応する分散属性とは異なっていてもよく、それによって保存と演算の分離に役立つ。
【0040】
ステップ302では、演算子とテンソルに基づいて分散コンピューティングビューを生成する。
【0041】
本実施形態では、上記実行主体は、演算子とテンソルとに基づいて分散コンピューティングビューを生成することができる。生成された分散コンピューティングビューは、分散演算子と分散テンソルとをデカップリングすることによって、異なる並列ポリシーにさらによく拡張できる。
【0042】
本実施形態のいくつかのオプション的な実施形態では、ステップ302において、演算子と、演算子の分散属性と、テンソルと、テンソルの分散属性とに基づいて分散コンピューティングビューを生成することを含む。上記実行主体が演算子の分散属性およびテンソルの分散属性を取得した後、演算子と、演算子の分散属性と、テンソルと、テンソルの分散属性とに基づいて分散コンピューティングビューを生成することができる。これにより、分散コンピューティングビューの全面性および正確性が確保される。
【0043】
本実施形態のいくつかのオプション的な実施形態では、上記深層学習モデルの分散トレーニング方法は、分散コンピューティングビューにおける入力テンソルおよび出力テンソルの定義と、当該入力テンソルおよび出力テンソルを使用する演算子の定義とが一致しないことを検出したことに応答して、再構成変換演算子を挿入することと、分散コンピューティングビューにおける入力テンソルおよび出力テンソルに対応するデバイスと、当該入力テンソルおよび出力テンソルを使用する演算子に対応するデバイスとが一致しないことを検出したことに応答して、通信演算子を挿入することとをさらに含む。
【0044】
本実施態様では、入力テンソルおよび出力テンソルの定義と演算子の定義とが一致しない場合に、再構成変換演算子を自動的に挿入することができ、計算の正確性が確保される。入力テンソルおよび出力テンソルのデバイスと演算子のデバイスとが一致しない場合、通信演算子を自動的に挿入することができ、デバイス間での分割の正確性が確保される。
【0045】
ステップ303では、トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースにおける各デバイス間のトポロジー情報と、クラスターハードウェアリソースにおける各デバイスの処理能力情報とを取得する。
【0046】
本実施形態では、トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースに複数のデバイスが含まれることが可能であるので、上記実行主体は、クラスターハードウェアリソースにおける各デバイス間のトポロジー情報、すなわち各デバイス間の接続態様情報を取得することができ、さらに、クラスターハードウェアリソースにおける各デバイスの処理能力情報を取得することができ、ここで、処理能力情報には、デバイス内のプロセッサ情報、帯域幅情報、グラフィックスメモリ情報が含まれるが、これらに限定されない。
【0047】
ステップ304では、トポロジー情報と処理能力情報とに基づいてクラスターリソースビューを生成する。
【0048】
本実施形態では、上記実行主体は、ステップ303で取得した各デバイス間のトポロジー情報と各デバイスの処理能力情報とに基づいてクラスターリソースビューを生成することができ、クラスターリソースビューは、クラスターハードウェアリソースを抽象的に表現し、クラスター間、クラスター内部の各デバイス間、各デバイス内部の具体的な接続方法および差異をマスクすることを実現し、それによって様々な異種ハードウェアデバイスおよびクラスター環境をサポートすることができ、開発の難しさが低減され、この方法の汎用性が向上される。
【0049】
ステップ305では、分散コンピューティングビューとクラスターリソースビューとに基づいて、分散トレーニングタスクの目標分割ポリシーを確定する。
【0050】
ステップ306では、目標分割ポリシーに基づいて、トレーニングすべき深層学習モデルに対して分散トレーニングを行う。
【0051】
ステップ305~306は上記実施形態のステップ203~204とほぼ一致し、具体的な実現方式は前記ステップ203~204の説明を参照することができ、ここではその説明を省略する。
【0052】
図3から分かるように、
図2に対応する実施形態と比較して、本実施形態における深層学習モデルの分散トレーニング方法は、分散コンピューティングビューの生成およびクラスターリソースビューの生成のプロセスを強調しており、演算子とテンソルをデカップリングし、ハードウェアデバイスの処理能力とトポロジー関係を抽象的に表現することにより、論理分割とハードウェアリソースをデカップリングし、異種ハードウェアの互換性を実現し、当該分散トレーニング方法の拡張性と保守性を向上した。
【0053】
次に、本出願に係る深層学習モデルの分散トレーニング方法のもう一つの実施形態のフロー400を示す
図4を参照する。当該深層学習モデルの分散トレーニング方法は、以下のステップを含む。
【0054】
ステップ401では、トレーニングすべき深層学習モデルの演算子とテンソルを取得する。
【0055】
ステップ402では、演算子とテンソルとに基づいて分散コンピューティングビューを生成する。
【0056】
ステップ403では、トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースにおける各デバイス間のトポロジー情報と、クラスターハードウェアリソースにおける各デバイスの処理能力情報とを取得する。
【0057】
ステップ404では、トポロジー情報と処理能力情報とに基づいてクラスターリソースビューを生成する。
【0058】
ステップ401~404は上記実施形態のステップ301~304とほぼ一致し、具体的な実現方式は前記ステップ301~304の説明を参照することができ、ここではその説明を省略する。
【0059】
ステップ405では、分散コンピューティングビューとクラスターリソースビューとに基づいて、異なる分割ポリシーを生成する。
【0060】
本実施形態では、深層学習モデルの分散トレーニング方法の実行主体(例えば、
図1に示すサーバ105)は、分散コンピューティングビューとクラスターリソースビューとに基づいて、深層学習モデルの分割方式とクラスターハードウェアリソースのリソース構成方式を含む異なる分割ポリシーを生成することができる。すなわち、上記実行主体は、異なるモデル分割方式および異なるリソース配置方式を確定し、各モデル分割方式と各リソース配置方式とを組み合わせることによって、異なる分割ポリシーを得ることができる。
【0061】
ステップ406では、各分割ポリシーに対応するオーバーヘッドに基づいて、分散トレーニングタスクの目標分割ポリシーを確定する。
【0062】
本実施形態では、上記実行主体は、各分割ポリシーに対応するオーバーヘッドに基づいて、分散トレーニングタスクの目標分割ポリシー、すなわち最適分割ポリシーを確定することができる。例えば、上記実行主体は、各分割ポリシーに対応するオーバーヘッドをそれぞれ計算し、そのオーバーヘッドが最小となる分割ポリシーを最適分割ポリシー、すなわち目標分割ポリシーとして確定することができる。これにより、目標分割ポリシーに基づいてトレーニングを行う場合のトレーニング効率が向上される。
【0063】
本実施形態のいくつかのオプション的な実施形態では、ステップ406は、各分割ポリシーに対応するオーバーヘッドを計算することであって、オーバーヘッドは、ランタイムオーバーヘッドおよびメモリ空間占有オーバーヘッドを含み、ランタイムオーバーヘッドは、演算子オーバーヘッドおよび通信オーバーヘッドを含むことと、オーバーヘッドが最小である分割ポリシーを、分散トレーニングタスクの目標分割ポリシーとして確定することと、を含む。
【0064】
本実施態様では、上記実行主体は、様々な分割ポリシーのランタイムオーバーヘッドとメモリ空間占有オーバーヘッドをそれぞれ計算し、様々な分割ポリシーに対応するオーバーヘッド値を得ることができ、ここで、ランタイムオーバーヘッドは、演算子オーバーヘッドおよび通信オーバーヘッドをさらに含み、そして、オーバーヘッド値が最小となる分割ポリシーを、分散トレーニングタスクの最適分割ポリシー、すなわち目標分割ポリシーとして確定する。これにより、分散トレーニングタスクを適切な異種ハードウェアリソースに分割して、異種ハードウェアの性能を十分に発揮させ、当該分散トレーニング方法の使いやすさとトレーニング効率を向上した。
【0065】
ステップ407では、目標分割ポリシーに基づいて、非同期式パイプライン処理機構を用いてトレーニングすべき深層学習モデルに対して分散トレーニングを行う。
【0066】
本実施形態では、上記実行主体は、ステップ406で確定された目標分割ポリシーに基づいて、非同期式パイプライン処理機構を用いて、トレーニングすべき深層学習モデルに対して分散トレーニングを行うことにより、通信と計算の同時性を最大化し、分散トレーニングのトレーニング効率を向上させることができる。また、非同期でデバッグが困難な問題に対しては、上記実行主体は、シリアルコンピューティンググラフと分散コンピューティンググラフの精度を揃えて順次実行することで解決することもでき、実行時には、上記実行主体は、ハードウェアトポロジー情報に基づいて最適な通信アルゴリズムを選択することにより、通信効率を向上させることができる。
【0067】
本実施形態のいくつかのオプション的な実施形態では、上記深層学習モデルの分散トレーニング方法は、分散トレーニングプロセス中に、クラスターハードウェアリソースの環境が変化したことに応答して、目標分割ポリシーを再確定するために柔軟なリソース管理機構をトリガすることをさらに含む。
【0068】
本実施形態では、クラスター内のトレーニングデバイスの故障、またはデバイスの動的な追加/削減が発生した場合、上記実行主体は、柔軟なリソース管理機構をトリガし、フォールトトレランスまたはリソースのオートスケーリングを行い、自己適応的に応答して現在のクラスターハードウェア環境における目標分割ポリシーを再確定し、新たに確定された目標分割ポリシーに基づいて分散トレーニングを実行することができる。例えば、上記実行主体がノードの故障を検出した場合、フォルトトレランス機構をトリガし、トレーニングをほとんど中断しない状況下で故障ノードを交換することにより、リソースの再スケジューリングの時間を節約し、リソースの無駄使いを削減することができ、また、上記実行主体がクラスターリソースのアイドル状態またはリソース不足を検出した場合、リソースのオートスケーリングを行い、ノード数の動的な計算と調整を行い、必要に応じた再分割を行うことにより、クラスター全体のリソースの利用率を向上させることができる。
【0069】
図4から分かるように、
図3に対応する実施形態と比較して、本実施形態における深層学習モデルの分散トレーニング方法は、目標分割ポリシーを確定するステップおよび分散トレーニングのステップを強調しており、分散トレーニングタスクを適切な異種ハードウェアリソースに分割し、異種ハードウェアの性能を十分に発揮し、当該分散トレーニング方法の使いやすさを向上させ、非同期式パイプライン処理機構を用いることによりトレーニング効率を向上させ、さらに、トレーニングプロセスにおいてトレーニングに用いるハードウェアリソースを自動的に柔軟に調整することをサポートし、トレーニング方法のロバスト性およびハードウェアリソースの利用率を向上させる。
【0070】
更に
図5を参照すると、上記の各図に示された方法の実施態様として、本出願は、深層学習モデルの分散トレーニング装置の一実施形態を提供し、当該装置の実施形態は、
図2に示された方法の実施形態に対応しており、当該装置は、具体的に様々な電子機器に適用することができる。
【0071】
図5に示すように、本実施形態の深層学習モデルの分散トレーニング装置500は、第1の生成モジュール501と、第2の生成モジュール502と、確定モジュール503と、トレーニングモジュール504とを備える。このうち、第1の生成モジュール501は、トレーニングすべき深層学習モデルのデータ情報に基づいて分散コンピューティングビューを生成するように構成される。第2の生成モジュール502は、トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースの属性情報に基づいてクラスターリソースビューを生成するように構成される。確定モジュール503は、分散コンピューティングビューとクラスターリソースビューとに基づいて、分散トレーニングタスクの目標分割ポリシーを確定するように構成される。トレーニングモジュール504は、目標分割ポリシーに基づいてトレーニングすべき深層学習モデルに対して分散トレーニングを行うように構成される。
【0072】
本実施形態において、深層学習モデルの分散トレーニング装置500において、第1の生成モジュール501と、第2の生成モジュール502と、確定モジュール503と、トレーニングモジュール504の具体的な処理およびそれらの技術効果は、それぞれ
図2の対応する実施形態におけるステップ201~204の関連する説明を参照することができ、ここでその説明を省略する。
【0073】
本実施形態のいくつかのオプション的な実施形態では、第1の生成モジュールは、トレーニングすべき深層学習モデルの演算子およびテンソルを取得するように構成される第1の取得サブモジュールと、演算子およびテンソルに基づいて分散コンピューティングビューを生成するように構成される第1の生成サブモジュールとを備える。
【0074】
本実施形態のいくつかのオプション的な実施形態では、第1の生成モジュールは、演算子の分散属性およびテンソルの分散属性を取得するように構成される第2の取得サブモジュールをさらに備え、第1の生成サブモジュールは、演算子、演算子の分散属性、テンソルおよびテンソルの分散属性に基づいて、分散コンピューティングビューを生成するように構成される生成ユニットを備える。
【0075】
本実施形態のいくつかのオプション的な実施形態では、上記深層学習モデルの分散トレーニング装置は、分散コンピューティングビューにおける入力テンソルおよび出力テンソルの定義と、当該入力テンソルおよび出力テンソルを使用する演算子の定義とが一致しないことを検出したことに応答して、再構成変換演算子を挿入するように構成される第1の挿入モジュールと、分散コンピューティングビューにおける入力テンソルおよび出力テンソルに対応するデバイスと、当該入力テンソルおよび出力テンソルを使用する演算子に対応するデバイスとが一致しないことを検出したことに応答して、通信演算子を挿入するように構成される第2の挿入モジュールと、をさらに備える。
【0076】
本実施形態のいくつかのオプション的な実施形態では、第2の生成モジュールは、トレーニングすべき深層学習モデルに対応するクラスターハードウェアリソースにおける各デバイス間のトポロジー情報と、クラスターハードウェアリソースにおける各デバイスの処理能力情報とを取得するように構成される第3の取得サブモジュールであって、処理能力情報は、プロセッサ情報、帯域幅情報、グラフィックスメモリ情報の少なくとも1つを含む第3の取得サブモジュールと、トポロジー情報と処理能力情報とに基づいてクラスターリソースビューを生成するように構成される第2の生成サブモジュールと、を備える。
【0077】
本実施形態のいくつかのオプション的な実施形態では、確定モジュールは、分散コンピューティングビューとクラスターリソースビューとに基づいて、深層学習モデルの分割方式とクラスターハードウェアリソースのリソース構成方式を含む異なる分割ポリシーを生成するように構成される第3の生成サブモジュールと、各分割ポリシーに対応するオーバーヘッドに基づいて、分散トレーニングタスクの目標分割ポリシーを確定するように構成される確定サブモジュールと、を備える。
【0078】
本実施形態のいくつかのオプション的な実施形態では、確定サブモジュールは、各分割ポリシーに対応するオーバーヘッドを計算するように構成される計算ユニットであって、オーバーヘッドはランタイムオーバーヘッドとメモリ空間占有オーバーヘッドを含み、ランタイムオーバーヘッドは演算子オーバーヘッドと通信オーバーヘッドを含む計算ユニットと、オーバーヘッドが最小となる分割ポリシーを、分散トレーニングタスクの目標分割ポリシーとして確定するように構成される確定ユニットと、を備える。
【0079】
本実施形態のいくつかのオプション的な実施形態では、トレーニングモジュールは、目標分割ポリシーに基づいて、非同期式パイプライン処理機構を用いてトレーニングすべき深層学習モデルに対して分散トレーニングを行うように構成されるトレーニングサブモジュールを備える。
【0080】
本実施形態のいくつかのオプション的な実施形態では、上記深層学習モデルの分散トレーニング装置は、分散トレーニングプロセスにおいて、クラスターハードウェアリソースの環境が変化したことに応答して、目標分割ポリシーを再確定するために柔軟なリソース管理機構をトリガするように構成されるトリガモジュールをさらに備える。
【0081】
本出願の実施形態によれば、本出願はさらに電子機器、読み取り可能な記憶媒体およびコンピュータプログラム製品を提供する。
【0082】
図6は、本出願の実施形態を実施するために使用できる例示的な電子機器600の概略ブロック図を示している。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレード型サーバ、メインフレームコンピュータおよびその他の適切なコンピュータ等の様々な形態のデジタルコンピュータを表す。また、電子機器は、個人デジタル処理、携帯電話、スマートフォン、ウェアラブル機器およびその他の類似するコンピューティングデバイス等の様々な形態のモバイルデバイスを表すことができる。なお、ここで示したコンポーネント、それらの接続関係、およびそれらの機能はあくまでも例示であり、ここで記述および/または要求した本出願の実施形態を限定することを意図するものではない。
【0083】
図6に示すように、電子機器600は、読み出し専用メモリ(ROM)602に記憶されているコンピュータプログラム又は記憶ユニット608からランダムアクセスメモリ(RAM)603にロードされたコンピュータプログラムによって様々な適当な動作および処理を実行することができる計算ユニット601を備える。RAM603には、機器600の動作に必要な様々なプログラムおよびデータがさらに格納されることが可能である。計算ユニット601、ROM602およびRAM603は、バス604を介して互いに接続されている。入/出力(I/O)インターフェース605もバス604に接続されている。
【0084】
電子機器600において、キーボード、マウスなどの入力ユニット606と、様々なタイプのディスプレイ、スピーカなどの出力ユニット607と、磁気ディスク、光ディスクなどの記憶ユニット608と、ネットワークプラグイン、モデム、無線通信送受信機などの通信ユニット609とを含む複数のコンポーネントは、I/Oインターフェース605に接続されている。通信ユニット609は、機器600がインターネットなどのコンピュータネットワークおよび/または様々な電気通信ネットワークを介して他の装置と情報またはデータのやりとりを可能にする。
【0085】
計算ユニット601は、処理および計算能力を有する様々な汎用および/又は専用処理コンポーネントであってもよい。計算ユニット601のいくつかの例示として、中央処理装置(CPU)、グラフィックスプロセシングユニット(GPU)、様々な専用人工知能(AI)計算チップ、機械学習モデルアルゴリズムを実行する様々な計算ユニット、デジタルシグナルプロセッサ(DSP)、および任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。計算ユニット601は、上述した深層学習モデルの分散トレーニング方法のような様々な方法および処理を実行する。例えば、いくつかの実施形態では、深層学習モデルの分散トレーニング方法は、記憶ユニット608などの機械可読媒体に有形に含まれるコンピュータソフトウェアプログラムとして実現されてもよい。いくつかの実施形態では、コンピュータプログラムの一部または全部は、ROM602および/または通信ユニット609を介して機器600にロードおよび/またはインストールされてもよい。コンピュータプログラムがRAM603にロードされ、計算ユニット601によって実行されると、上述した深層学習モデルの分散トレーニング方法の1つまたは複数のステップを実行可能である。あるいは、他の実施形態では、計算ユニット601は、他の任意の適切な形態によって(例えば、ファームウェアを介して)深層学習モデルの分散トレーニング方法を実行するように構成されていてもよい。
【0086】
ここで説明するシステムおよび技術の様々な実施形態はデジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)、コンプレックスプログラマブルロジックデバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/又はそれらの組み合わせにおいて実現することができる。これらの各実施形態は、1つまたは複数のコンピュータプログラムに実装され、該1つまたは複数のコンピュータプログラムは少なくとも一つのプログラマブルプロセッサを含むプログラマブルシステムにおいて実行および/または解釈することができ、該プログラマブルプロセッサは専用または汎用プログラマブルプロセッサであってもよく、記憶システム、少なくとも一つの入力装置および少なくとも一つの出力装置からデータおよび指令を受信することができ、且つデータおよび指令を該記憶システム、該少なくとも一つの入力装置および該少なくとも一つの出力装置に伝送することを含み得る。
【0087】
本出願の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語のあらゆる組み合わせで作成されてもよい。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、または他のプログラミング可能なデータ処理装置のプロセッサまたはコントローラに提供されることができ、これらのプログラムコードがプロセッサまたはコントローラによって実行されると、フローチャートおよび/またはブロック図に規定された機能または動作が実施される。プログラムコードは、完全にデバイス上で実行されることも、部分的にデバイス上で実行されることも、スタンドアロンソフトウェアパッケージとして部分的にデバイス上で実行されながら部分的にリモートデバイス上で実行されることも、または完全にリモートデバイスもしくはサーバ上で実行されることも可能である。
【0088】
本出願のコンテキストでは、機械可読媒体は、有形の媒体であってもよく、指令実行システム、装置または機器が使用するため、または指令実行システム、装置または機器と組み合わせて使用するためのプログラムを含むか、または格納することができる。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であり得る。機械可読媒体は、電子的、磁気的、光学的、電磁的、赤外線の、または半導体のシステム、装置または機器、またはこれらのあらゆる適切な組み合わせを含むことができるが、これらに限定されない。機械可読記憶媒体のより具体的な例には、1本または複数本のケーブルに基づく電気的接続、携帯型コンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、コンパクトディスク読み取り専用メモリ(CD-ROM)、光学記憶装置、磁気記憶装置、またはこれらのあらゆる適切な組み合わせが含まれ得る。
【0089】
ユーザとのインタラクションを提供するために、ここで説明するシステムと技術は、ユーザに情報を表示するための表示装置(例えば、陰極線管(CathodeRayTube,CRT)またはLCD(液晶ディスプレイ)モニタ)と、キーボードおよびポインティングデバイス(例えば、マウスまたはトラックボール)とを備えるコンピュータ上で実装することができ、ユーザが該キーボードおよび該ポインティングデバイスを介してコンピュータに入力を提供できる。他の種類の装置もユーザとのやりとりを行うことに用いることができる。例えば、ユーザに提供されるフィードバックは、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックであるいかなる形態のセンシングフィードバックであってもよく、且つ音入力、音声入力若しくは触覚入力を含むいかなる形態でユーザからの入力を受信してもよい。
【0090】
ここで説明したシステムおよび技術は、バックグラウンドコンポーネントを含むコンピューティングシステム(例えば、データサーバ)に実施されてもよく、又はミドルウェアコンポーネントを含むコンピューティングシステム(例えば、アプリケーションサーバ)に実施されてもよく、又はフロントエンドコンポーネントを含むコンピューティングシステム(例えば、グラフィカルユーザインターフェース又はウェブブラウザを有するユーザコンピュータ)に実施されてもよく、ユーザは該グラフィカルユーザインターフェース又はウェブブラウザを介してここで説明したシステムおよび技術の実施形態とインタラクションしてもよく、又はこのようなバックグラウンドコンポーネント、ミドルウェアコンポーネント又はフロントエンドコンポーネントのいずれかの組み合わせを含むコンピューティングシステムに実施されてもよい。また、システムの各コンポーネントの間は、通信ネットワーク等の任意の形態または媒体を介してデジタルデータ通信により接続されていてもよい。通信ネットワークとしては、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)およびインターネットなどを含む。
【0091】
コンピュータシステムは、クライアントとサーバとを含んでもよい。クライアントとサーバは、通常、互いに離れており、通信ネットワークを介してやりとりを行う。クライアントとサーバとの関係は、互いにクライアント-サーバの関係を有するコンピュータプログラムをそれぞれのコンピュータ上で動作することによって生成される。サーバはクラウドサーバであってもよく、分散システムのサーバ、あるいはブロックチェーンを結合したサーバであってもよい。
【0092】
なお、上述した様々な形態のフローを用いて、ステップを並び替え、追加または削除を行うことができることを理解すべきである。例えば、本出願に記載された各ステップは、本出願に開示された技術的解決方案の所望の結果が達成できる限り、並行して実行されてもよく、順番に実行されてもよく、異なる順番で実行されてもよい。本明細書はここで制限しない。
【0093】
上記具体的な実施形態は、本出願の保護範囲を限定するものではない。当業者であれば、設計要件および他の要因に応答して、様々な修正、組み合わせ、副次的な組み合わせ、および置換を行うことができることを理解すべきである。本出願の趣旨および原理を逸脱せずに行われたあらゆる修正、均等な置換および改善などは、いずれも本出願の保護範囲内に含まれるべきである。