(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-13
(45)【発行日】2024-03-22
(54)【発明の名称】分散型モデルトレーニング装置および方法、電子機器、記憶媒体、ならびに、コンピュータプログラム
(51)【国際特許分類】
G06N 20/00 20190101AFI20240314BHJP
【FI】
G06N20/00
【外国語出願】
(21)【出願番号】P 2021107863
(22)【出願日】2021-06-29
【審査請求日】2022-02-10
(31)【優先権主張番号】202011502120.3
(32)【優先日】2020-12-18
(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)【代理人】
【識別番号】110000914
【氏名又は名称】弁理士法人WisePlus
(72)【発明者】
【氏名】ウー, ジーファ
(72)【発明者】
【氏名】ユー, ディェンハイ
(72)【発明者】
【氏名】イャオ, シュェフォン
(72)【発明者】
【氏名】タン, ウェイ
(72)【発明者】
【氏名】ウー, シンシュエン
(72)【発明者】
【氏名】チォン, ムォ
(72)【発明者】
【氏名】マー, リン
(72)【発明者】
【氏名】マー, イェンジュン
(72)【発明者】
【氏名】ウー, ティエン
(72)【発明者】
【氏名】ワン, ハイフォン
【審査官】渡辺 順哉
(56)【参考文献】
【文献】米国特許出願公開第2019/0325302(US,A1)
【文献】米国特許出願公開第2018/0331897(US,A1)
【文献】米国特許出願公開第2015/0324690(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
それぞれ分散型機能モジュールとして互いに独立した、分散型リーダと、分散型トレーナと、分散型パラメータサーバと
、分散型コミュニケータとを含み
、
前記分散型リーダのうちのリーダは、トレーニングサンプルを取得し、取得したトレーニングサンプルを前記分散型トレーナのうちの対応するトレーナにロードするように構成されており、
前記分散型トレーナのうちのトレーナは、ロードされたトレーニングサンプルに基づいてモデルをトレーニングし、勾配情報を取得するように構成されており、
前記分散型パラメータサーバのうちのパラメータサーバは、前記分散型トレーナの勾配情報に基づいて初期モデルのパラメータを更新し、トレーニング済みターゲットモデルを取得するように構成され、
前記分散型コミュニケータ
のうちのコミュニケータは
、前記分散型トレーナと前記分散型パラメータサーバとの間に通信可能に接続され、前記分散型トレーナと前記分散型パラメータサーバとの間のパラメータと勾配のデータやりとり
、並びに前記トレーナの間のトレーニングサンプルに対するglobal shuffleの方式でのランダム化処理を行うように構成される、
分散型モデルトレーニング装置。
【請求項2】
前記分散型コミュニケータ
は、分散型トレーニングに必要な機能のリクエストインターフェースとするようにさらに構成される請求項1に記載の分散型モデルトレーニング装置。
【請求項3】
前記分散型トレーナのパラメータと勾配の送受信および集約を実行するように構成される分散型パラメータプロセッサをさらに含む、請求項1に記載の分散型モデルトレーニング装置。
【請求項4】
前記分散型リーダのうちのリーダと前記分散型トレーナのうちの対応するトレーナは、マルチスレッド完全非同期方式でデータやりとりを実行する、
請求項1に記載の分散型モデルトレーニング装置。
【請求項5】
前記分散型リーダのうちのリーダの各読み出しスレッドは、トレーニングサンプルをそれぞれ取得し、取得したトレーニングサンプルを各読み出しスレッドに1対1対応する情報キューにロードして、このリーダに対応するトレーナの各トレーニングスレッドが対応する情報キューからトレーニングサンプルを取得できるようにする、
請求項4に記載の分散型モデルトレーニング装置。
【請求項6】
前記初期モデルのパラメータは、所定の方式で目標数量部に分けられ、前記目標数量部は、前記分散型パラメータサーバのうちのパラメータサーバの数を表し、
前記分散型パラメータサーバのうちの各パラメータサーバは、前記目標数量部のパラメータを1数量部ずつ順次格納する、
請求項1に記載の分散型モデルトレーニング装置。
【請求項7】
前記分散型トレーナのうちのトレーナは、パラメータ識別子に基づいて、このトレーナとのデータやりとりを実行する前記分散型パラメータサーバのうちのターゲットパラメータサーバを確定するようにさらに構成されており、
前記分散型コミュニケータのうちのコミュニケータは、前記分散型トレーナのうちのトレーナとこのトレーナに対応するターゲットパラメータサーバとのデータやりとりを実行するようにさらに構成される、
請求項6に記載の分散型モデルトレーニング装置。
【請求項8】
ユーザとデータやりとりするためのインターフェースを提供するように構成されるリークインターフェースモジュールをさらに含む、
請求項3に記載の分散型モデルトレーニング装置。
【請求項9】
分散型モデルトレーニング装置によって実行される分散型モデルトレーニング方法であって、前記分散型モデルトレーニング装置は、それぞれ分散型機能モジュールとして互いに独立した、分散型リーダと、分散型トレーナと、分散型パラメータサーバと
、分散型コミュニケータとを含み、前記分散型コミュニケータのうちのコミュニケータは、前記分散型トレーナと前記分散型パラメータサーバとの間に
通信可能に接続され、
前記分散型モデルトレーニング方法は、
前記分散型リーダのうちのリーダは、トレーニングサンプルを取得し、取得したトレーニングサンプルを前記分散型トレーナのうちの対応するトレーナにロードすることと、
前記分散型トレーナのうちのトレーナは、ロードされたトレーニングサンプルに基づいてモデルをトレーニングし、
勾配情報を取得することと、
前記分散型パラメータサーバのうちのパラメータサーバは、前記分散型トレーナ
の勾配情報に基づいて初期モデルのパラメータを更新し、トレーニング済みターゲットモデルを取得することと、を含
み、
前記分散型コミュニケータのうちのコミュニケータによって、前記分散型トレーナと前記分散型パラメータサーバとの間のパラメータと勾配のデータやりとり、並びに前記トレーナの間のトレーニングサンプルに対するglobal shuffleの方式でのランダム化処理を行う、
分散型モデルトレーニング方法。
【請求項10】
前記分散型トレーナのうちのトレーナのモデルトレーニングプロセス中
に分散型トレーニングに必要な機能のリクエストインターフェースを提供すること、をさらに含む、
請求項9に記載の分散型モデルトレーニング方法。
【請求項11】
前記複数の分散型機能モジュールは分散型パラメータプロセッ
サをさらに含み、
前記分散型モデルトレーニング方法は、
前記分散型トレーナのうちのトレーナのモデルトレーニングプロセス中に、分散型パラメータプロセッサのうちのパラメータプロセッサを介して、前記分散型トレーナのパラメータと勾配の送受信および集約を実行するこ
と、をさらに含む、
請求項9に記載の分散型モデルトレーニング方法。
【請求項12】
前記分散型リーダのうちのリーダと前記分散型トレーナのうちの対応するトレーナは、マルチスレッド完全非同期方式でデータやりとりを実行する、
請求項9に記載の分散型モデルトレーニング方法。
【請求項13】
前記分散型リーダのうちのリーダは、トレーニングサンプルを取得し、取得したトレーニングサンプルを前記分散型トレーナのうちの対応するトレーナにロードすることは、
前記分散型リーダのうちの各リーダについて、このリーダのうちの各読み出しスレッドが、トレーニングサンプルをそれぞれ取得し、取得したトレーニングサンプルを各読み出しスレッドに1対1対応する情報キューにロードして、このリーダに対応するトレーナの各トレーニングスレッドが対応する情報キューからトレーニングサンプルを取得できるようにすることを含む、
請求項12に記載の分散型モデルトレーニング方法。
【請求項14】
前記初期モデルのパラメータを所定の方式で、前記分散型パラメータサーバのうちのパラメータサーバの数を表す目標数量部に分けることと、
前記分散型パラメータサーバのうちの各パラメータサーバを介して、前記目標数量部のパラメータを1数量部ずつ順次格納することと、をさらに含む、
請求項9に記載の分散型モデルトレーニング方法。
【請求項15】
前記分散型パラメータサーバのうちのパラメータサーバは、前記分散型トレーナ
の勾配情報に基づいて初期モデルのパラメータを更新し、トレーニング済みターゲットモデルを取得することは、
前記分散型トレーナのうちの各トレーナについて、パラメータ識別子に基づいて、このトレーナとのデータやりとりを実行する前記分散型パラメータサーバのうちのターゲットパラメータサーバを確定することと、
このトレーナとこのトレーナに対応するターゲットパラメータサーバとの間のデータやりとりによって、トレーニング済みターゲットモデルを取得することと、を含む、
請求項14に記載の分散型モデルトレーニング方法。
【請求項16】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信可能に接続されたメモリと、を含み、
前記メモリには前記少なくとも1つのプロセッサによって実行可能な指令が記憶されており、前記指令が前記少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに請求項9~15のいずれか一項に記載の分散型モデルトレーニング方法を実行させるようにすることを特徴とする電子機器。
【請求項17】
コンピュータ指令が記憶されている非一時的コンピュータ可読記憶媒体であって、
前記コンピュータ指令は請求項9~15のいずれか一項に記載の分散型モデルトレーニング方法をコンピュータに実行させるように構成されることを特徴とする、非一時的コンピュータ可読記憶媒体。
【請求項18】
プロセッサによって実行されると、請求項9~15のいずれか一項に記載の分散型モデルトレーニング方法を実行するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、コンピュータ技術の分野、具体的には深層学習技術の分野、特に分散型モデルトレーニング装置および方法、電子機器、コンピュータ可読記憶媒体、ならびに、コンピュータプログラムに関する。
【背景技術】
【0002】
ビッグデータの波の促進と深層学習技術の急速な発展に伴い、深層学習に関連するデータスケールとモデルスケールの両方は大幅に拡大している。ビッグデータ+大規模モデルの二重の挑戦がスタンドアロントレーニングにとって耐え難い負担であるため、サービスニーズを満たすには、データ並列分散型トレーニングモードを使用する必要がある。現在、非集中型の分散型トレーニングモードおよび集中型の分散型トレーニングモードが一般的に採用される。
【発明の概要】
【課題を解決するための手段】
【0003】
本出願の実施例は、分散型モデルトレーニング装置および方法、電子機器、コンピュータ可読記憶媒体、ならびに、コンピュータプログラムを提供する。
【0004】
第1様態によれば、本出願は、分散型モデルトレーニング装置を提供する。この装置は、互いに独立した、分散型リーダと、分散型トレーナと、分散型パラメータサーバとを含み、分散型リーダのうちのリーダは、トレーニングサンプルを取得し、取得したトレーニングサンプルを分散型トレーナのうちの対応するトレーナにロードするように構成されており、分散型トレーナのうちのトレーナは、ロードされたトレーニングサンプルに基づいてモデルをトレーニングし、勾配情報を取得するように構成されており、分散型パラメータサーバのうちのパラメータサーバは、分散型トレーナの勾配情報に基づいて初期モデルのパラメータを更新し、トレーニング済みターゲットモデルを取得するように構成される。
【0005】
第2様態によれば、本出願は、分散型モデルトレーニング方法を提供する。この方法は、互いに独立した、分散型リーダと、分散型トレーナと、分散型パラメータサーバとを含む複数の分散型機能モジュールに、初期モデルのトレーニングプロセスを割り当て、複数の分散型機能モジュール間の通信インターフェースを確定することと、分散型リーダのうちのリーダは、トレーニングサンプルを取得し、取得したトレーニングサンプルを分散型トレーナのうちの対応するトレーナにロードすることと、分散型トレーナのうちのトレーナは、ロードされたトレーニングサンプルに基づいてモデルをトレーニングし、分散型トレーナと分散型パラメータサーバとの間のデータやりとりによって、トレーニング済みターゲットモデルを取得することと、を含む。
【0006】
第3様態によれば、本出願は、電子機器を提供する。この電子機器は、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに通信可能に接続されたメモリと、を含み、メモリには少なくとも1つのプロセッサによって実行可能な指令が記憶されており、指令が少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに上記第2様態に係る分散型モデルトレーニング方法を実行させるようにする。
【0007】
第4様態によれば、本出願は、コンピュータ指令が記憶されている非一時的コンピュータ可読記憶媒体であって、コンピュータ指令は上記第2様態に係る分散型モデルトレーニング方法をコンピュータに実行させるように構成される非一時的コンピュータ可読記憶媒体を提供する。
【0008】
第5様態によれば、本出願は、プロセッサによって実行されると、上記第2様態に係る分散型モデルトレーニング方法を実行するコンピュータプログラムを提供する。
【0009】
本出願の実施例によって提供される分散型モデルトレーニング装置、方法、電子機器、コンピュータ可読記憶媒体、およびコンピュータプログラム製品については、この装置は、互いに独立した分散型リーダ、分散型トレーナ、および分散型パラメータサーバを含み、分散型リーダのうちのリーダは、トレーニングサンプルを取得し、取得したトレーニングサンプルを分散型トレーナのうちの対応するトレーナにロードするように構成されており、分散型トレーナのうちのトレーナは、ロードされたトレーニングサンプルに基づいてモデルをトレーニングし、勾配情報を取得するように構成されており、分散型パラメータサーバのうちのパラメータサーバは、分散型トレーナの勾配情報に基づいて初期モデルのパラメータを更新し、トレーニング済みターゲットモデルを取得するように構成される。
【0010】
本出願は、分散型モデルトレーニング装置を提供する。モデルトレーニングプロセス中に、各モジュールは互いに独立して、協調して動作することで、モデルトレーニングの速度が向上される。
【0011】
このセクションで説明される内容は、本出願の実施例の主要または重要な特徴を特定することを意図するものではなく、また、本出願の範囲を限定することを意図するものでもないことを理解されたい。本出願の他の特徴は、以下の説明から容易に理解されるであろう。
【0012】
本出願の他の特徴、目的および利点は、以下の図面で行われる非限定的な実施例についての詳細な説明からより明らかになるであろう。
【図面の簡単な説明】
【0013】
【
図1】本出願の一実施例が適用され得る例示的なシステムアーキテクチャ図である。
【
図2】本出願に係る分散型モデルトレーニング方法の一実施例のフローチャートである。
【
図3】本出願に係る分散型モデルトレーニング方法の適用シナリオの概略図である。
【
図4】本出願に係る分散型モデルトレーニング方法の別の実施例のフローチャートである。
【
図5】本出願に係る分散型モデルトレーニング装置の協調動作の一実施例のフローチャートである。
【
図6】本出願の実施例に係る電子機器/端末装置またはサーバを実装するのに適したコンピュータシステムの構造概略図である。
【発明を実施するための形態】
【0014】
本出願の例示的な実施例は、理解を容易にするための本出願の実施例の様々な詳細を含む図面と併せて以下に説明され、単なる例示と見なされるべきである。従って、本出願の範囲および精神から逸脱することなく、本明細書に記載の実施例に対して様々な変更および修正を行うことができることは、当業者にとって理解されるであろう。同様に、明瞭性と簡潔性の観点から、公知の機能と構造に関する説明は、以下の説明において省略される。なお、本出願の実施例および実施例の特徴は、矛盾しない限り、互いに組み合わせることができる。
【0015】
図1は、本出願が適用され得る分散型モデルトレーニング方法および装置の例示的なシステムアーキテクチャ100を示している。
【0016】
図1に示すように、システムアーキテクチャ100は、端末装置101、102、103、ネットワーク104、およびサーバ105を含み得る。ネットワーク104は、端末装置101、102、103とサーバ105との間の通信リンクを提供するための媒体である。ネットワーク104は、有線、無線通信リンク、または光ファイバケーブルなどの様々な接続タイプを含み得る。
【0017】
端末装置101、102、103は、情報やりとりおよびデータ処理のためのネットワーク接続をサポートするハードウェアデバイスまたはソフトウェアであり得る。端末装置101、102、103がハードウェアである場合、それらは、スマートフォン、タブレットコンピュータ、車載コンピュータ、ラップトップポータブルコンピュータ、デスクトップコンピュータなどを含むがこれらに限定されない、ネットワーク接続、情報やりとり、表示、処理などの機能をサポートする様々な電子機器であり得る。端末装置101、102、103がソフトウェアである場合、それらは、上記に挙げた電子機器にインストールされ得る。それらは、例えば、分散型サービスを提供するための複数のソフトウェアまたはソフトウェアモジュールとして実装され得るか、または単一のソフトウェアまたはソフトウェアモジュールとして実装され得る。ここでは特に限定しない。
【0018】
サーバ105は、様々なサービスを提供するサーバ、例えば、端末装置101、102、103によって計算された勾配情報を取得し、モデルパラメータを更新するバックグラウンド処理サーバであり得る。一例として、サーバ105は、クラウドサーバであり得る。
【0019】
なお、サーバは、ハードウェアであり得るか、またはソフトウェアであり得る。サーバがハードウェアである場合、それは、複数のサーバからなる分散型サーバクラスタとして実装され得るか、または単一のサーバとして実装され得る。サーバがソフトウェアである場合、それは、複数のソフトウェアまたはソフトウェアモジュール(例えば、分散型サービスを提供するためのソフトウェアまたはソフトウェアモジュール)として実装され得るか、または単一のソフトウェアまたはソフトウェアモジュールとして実装され得る。ここでは特に限定しない。
【0020】
なお、本出願の実施例によって提供される分散型モデルトレーニング方法は、サーバによって実行されてもよく、端末装置によって実行されてもよく、また、サーバおよび端末装置によって互いに協調して実行されてもよい。従って、分散型モデルトレーニング装置に含まれる各部分(例えば、各ユニットおよび各モジュール)は、すべてサーバに設置されてもよく、すべて端末装置に設置されてもよく、また、それぞれサーバおよび端末装置に設置されてもよい。
【0021】
図1中の端末装置、ネットワーク、およびサーバの数は、単なる例示であることを理解されたい。実際のニーズに応じて、端末装置、ネットワーク、およびサーバの数が任意に設定され得る。分散型モデルトレーニング方法が実行される電子機器が他の電子機器とデータを送信する必要がない場合、このシステムアーキテクチャは、分散型モデルトレーニング方法が実行される電子機器(例えば、サーバまたは端末装置)のみを含み得る。
【0022】
さらに
図2を参照すると、
図2は、分散型モデルトレーニング方法の一実施例のプロセス200を示している。このプロセスは、以下のステップを含む。
【0023】
ステップ201では、初期モデルのトレーニングプロセスを複数の分散型機能モジュールに割り当て、複数の分散型機能モジュール間の通信インターフェースを確定する。
【0024】
本実施例では、分散型モデルトレーニング方法の実行主体(例えば、
図1中のサーバ)は、初期モデルのトレーニングプロセスに関連する各機能に基づいて、初期モデルのトレーニングプロセスを複数の分散型機能モジュールに割り当て、複数の分散型機能モジュール間の通信インターフェースを確定することができる。
【0025】
一般に、初期モデルのトレーニングプロセスは、データ取得機能、トレーニング機能、およびパラメータ更新機能に関連する。データ取得機能は、トレーニングサンプルを取得することを表す。トレーニング機能は、取得されたトレーニングサンプルに基づいてモデルをトレーニングし、順伝播計算プロセスおよび逆伝播計算プロセスを通じて対応する勾配情報を取得することを表す。パラメータ更新機能は、勾配情報に基づいて初期モデルのパラメータを更新するように構成される。上記各機能に基づいて、上記実行主体は、初期モデルのトレーニングプロセスを分散型リーダ、分散型トレーナ、および分散型パラメータサーバに割り当てる。
【0026】
分散型リーダ、分散型トレーナ、および分散型パラメータサーバは互いに独立しており、統合された通信インターフェースを介してデータやりとりを実行する。例えば、分散型リーダと分散型トレーナとの間には、トレーニングサンプルを送信する機能を備えたデータ通信インターフェースが設置されており、分散型トレーナと分散型パラメータサーバとの間には、勾配情報およびパラメータ情報を送信する機能を備えたデータ通信インターフェースが設置される。分散型リーダは複数のリーダを含み得、分散型トレーナは複数のトレーナを含み得、分散型パラメータサーバは複数のパラメータサーバを含み得ることを理解されたい。
【0027】
本実施例のいくつかのオプション的な実施形態では、上記実行主体は、分散型トレーナのうちの各トレーナのパラメータ処理機能を分散型パラメータプロセッサに分離し、分散型トレーナと分散型パラメータサーバとの間のパラメータと勾配のデータやりとり機能を分散型コミュニケータに分離する。即ち、複数の分散型機能モジュールは、分散型パラメータプロセッサと、分散型コミュニケータとをさらに含む。分散型パラメータプロセッサのうちの各パラメータプロセッサは、分散型トレーナのパラメータと勾配の送受信および集約を実行するように構成される。一例として、分散型トレーナのうちの各トレーナは、対応するトレーナのパラメータと勾配の送受信および集約を実行するための分散型パラメータプロセッサのうちのパラメータプロセッサに対応する。別の例として、パラメータプロセッサは、ユーザの操作指令に従って、所定数のバッチのトレーニングサンプルをトレーニングするたびに勾配集約を1回実行するように構成されてもよい。所定数および各バッチのトレーニングサンプルの数は、実際の状況に応じて具体的に設定され得る。例えば、所定数は1であり得、各バッチのトレーニングサンプルの数は32であり得る。
【0028】
分散型コミュニケータのうちの各コミュニケータは、分散型トレーナと分散型パラメータサーバとの間のパラメータと勾配のデータやりとりを実行するように構成される。一例として、各トレーナは、コミュニケータを介して、対応するパラメータサーバとのデータやりとりを実行することができる。分散型コミュニケータは、例えば、fleetWrapperによって実装され得る。
【0029】
分散型コミュニケータは、分散型トレーナのトレーニングサンプルのglobal shuffle(グローバルシャッフル)を実行することもできる。fleetWrapperにおいて、トレーナ間で通信する機能が定義され、global shuffleを実現することができる。また、分散型コミュニケータは、スパースパラメータの参入、廃棄、減衰、保存など、大規模な分散型トレーニングに必要な機能のリクエストインターフェースを提供することができる。
【0030】
本実施例のいくつかのオプション的な実施形態では、複数の分散型機能モジュールは、リークインターフェースモジュールをさらに含む。リークインターフェースモジュールは、ユーザとデータやりとりするためのインターフェースを提供するように構成される。本実施形態では、リークインターフェースモジュールは、FleetAPIによって実装され得る。
【0031】
ステップ202では、分散型リーダのうちの各リーダは、トレーニングサンプルを取得し、取得したトレーニングサンプルを分散型トレーナのうちの対応するトレーナにロードする。
【0032】
本実施例では、上記実行主体は、分散型リーダのうちの各リーダを介して、トレーニングサンプルを取得し、取得したトレーニングサンプルを分散型トレーナのうちの対応するトレーナにロードすることができる。
【0033】
一例として、分散型リーダのうちの複数のリーダは、分散型トレーナのうちの複数のトレーナに1対1対応する。分散型リーダのうちの各リーダについて、取得したトレーニングサンプルをこのリーダに対応するトレーナにロードする。高速動作モデルのトレーニングニーズを満たすために、分散型リーダには、高性能のデータ入出力動作を実行するためのDataSet API(Application Programming Interface、アプリケーションプログラミングインターフェース)を組み込むことで、モデルトレーニングプロセス中のトレーニングサンプルの取得速度を向上させるようにしてもよい。
【0034】
本実施例のいくつかのオプション的な実施形態では、分散型リーダのうちのリーダと分散型トレーナのうちの対応するトレーナは、マルチスレッド完全非同期方式(multi-threaded fully asynchronous approach)でデータやりとりを実行する。マルチスレッド完全非同期方式により、リーダとトレーナとの間のトレーニングサンプルの伝送速度を向上させることができるため、初期モデルのトレーニング速度を向上させることができることを理解されたい。
【0035】
本実施例のいくつかのオプション的な実施形態では、分散型リーダのうちの各リーダは、複数の読み出しスレッドを備えており、各読み出しスレッドは、トレーニングサンプルを取得するように構成される。分散型リーダのうちの各リーダについて、このリーダのうちの各読み出しスレッドが、トレーニングサンプルをそれぞれ取得し、取得したトレーニングサンプルを各読み出しスレッドに1対1対応する情報キューにロードして、このリーダに対応するトレーナの各トレーニングスレッドが対応する情報キューからトレーニングサンプルを取得できるようにする。各情報キューは、トレーナに設置され得る。本実施形態は、情報キューを介して初期モデルのトレーニング速度をさらに向上させることができる特定のマルチスレッド完全非同期データやりとり方式を提供する。
【0036】
ステップ203では、分散型トレーナのうちの各トレーナは、ロードされたトレーニングサンプルに基づいてモデルをトレーニングし、分散型トレーナと分散型パラメータサーバとの間のパラメータやりとりによって、トレーニング済みターゲットモデルを取得する。
【0037】
本実施例では、上記実行主体は、分散型トレーナのうちの各トレーナを介して、ロードされたトレーニングサンプルに基づいてモデルをトレーニングし、分散型トレーナと分散型パラメータサーバとの間のパラメータやりとりによって、トレーニング済みターゲットモデルを取得することができる。
【0038】
具体的には、分散型トレーナのうちのトレーナのモデルトレーニングプロセス中に、分散型パラメータプロセッサのうちのパラメータプロセッサを介して、分散型トレーナのパラメータと勾配の送受信および集約を実行し、分散型コミュニケータのうちのコミュニケータを介して、分散型トレーナと分散型パラメータサーバとの間のパラメータと勾配のデータやりとりを実行し、データやりとりによって、トレーニング済みターゲットモデルを取得する。
【0039】
一例として、分散型パラメータプロセッサのうちのパラメータプロセッサは、集約された勾配情報を取得するたびに、分散型コミュニケータを介して勾配情報を分散型パラメータサーバに送信する。分散型パラメータサーバは、勾配情報を取得した後、初期モデルのパラメータを更新する。パラメータ更新が複数回実行された後、所定の終了条件に達した場合、トレーニング済みターゲットモデルを取得する。所定の終了条件は、初期モデルのトレーニング完了を表す。一例として、所定の終了条件は、トレーニング回数が所定の時間閾値に達し、トレーニング時間が所定の時間閾値に達し、損失が最小値に収束することであり得る。所定の終了条件に達するまで、上記実行主体は、トレーニングサンプルに基づいて初期モデルをトレーニングし続ける。
【0040】
本実施例では、初期モデルのトレーニングが完了した場合、トレーニング済みターゲットモデルを取得する。事前にトレーニングされたターゲットモデルに入力データを入力して、対応する出力データを取得することができる。一例として、トレーニング済みターゲットモデルが顔認識モデルである場合、顔オブジェクトを含む画像を事前にトレーニングされたターゲットモデルに入力して、対応する顔認識結果を取得する。トレーニング済みターゲットモデルが画像分類モデルである場合、入力画像を事前にトレーニングされたターゲットモデルに入力して、対応する画像分類結果を取得する。トレーニング済みターゲットモデルが音声認識モデルである場合、音声データを事前にトレーニングされたターゲットモデルに入力して、対応する音声認識結果を取得する。
【0041】
さらに
図3を参照すると、
図3は、本実施例に係るモデルトレーニング方法の適用シナリオの概略図である。
図3の適用シナリオでは、初期モデルは、画像分類のための深層学習モデルである。初期モデルをトレーニングする前に、まず初期モデルのトレーニングプロセスに関連する各機能に基づいて、初期モデルのトレーニングプロセスを複数の分散型機能モジュールに割り当て、複数の分散型機能モジュール間の通信インターフェースを確定する。複数の分散型機能モジュールは互いに独立しており、分散型リーダ301、分散型トレーナ302、および分散型パラメータサーバ303を含む。具体的には、分散型リーダ301はリーダ3011、3012、3013を含み、分散型トレーナ302はトレーナ3021、3022、3023を含み、分散型パラメータサーバ303はパラメータサーバ3031、3032を含む。分散型リーダのうちのリーダ3011、3012、3013を介してトレーニングサンプルを取得し、取得されたトレーニングサンプルを分散型トレーナのうちの対応するトレーナ3021、3022、3023にロードし、分散型トレーナのうちの各トレーナを介して、ロードされたトレーニングサンプルに基づいてモデルをトレーニングし、分散型トレーナと分散型パラメータサーバのうちのパラメータサーバ3031、3032との間のパラメータやりとりによって、トレーニング済みターゲットモデルを取得する。
【0042】
本実施例は、分散型モデルトレーニング方法を提供する。モデルトレーニングプロセス中に、各モジュールは互いに独立して、協調して動作することで、モデルトレーニングの速度が向上された。
【0043】
本実施例のいくつかのオプション的な実施形態では、大きなパラメータスケールを有する初期モデルについて、上記実行主体は、初期モデルのパラメータを所定の方式で、目標数量部に分けることができる。目標数量部は、分散型パラメータサーバのうちのパラメータサーバの数を表す。分散型パラメータサーバのうちの各パラメータサーバは、目標数量部のパラメータを1数量部ずつ順次格納する。
【0044】
一例として、各パラメータは、数字で表すパラメータ識別子に対応する。目標数量部で表す数値に基づいてパラメータ識別子のモジュロ演算を実行することにより、初期モデルのパラメータを目標数量部に分けることができる。本実施形態では、分散型パラメータサーバのうちの各パラメータサーバが上記数量部のパラメータを対応して格納することにより、本出願が大きなモデルパラメータスケールのシナリオに適し、本出願の適用範囲が拡大される。
【0045】
本実施例のいくつかのオプション的な実施形態では、分散型トレーナのうちの各トレーナについて、パラメータ識別子に基づいて、このトレーナとのパラメータやりとりを実行する分散型パラメータサーバのうちのターゲットパラメータサーバを確定し、このトレーナとこのトレーナに対応するターゲットパラメータサーバとの間のパラメータやりとりによって、トレーニング済みターゲットモデルを取得する。
【0046】
本実施形態では、分散型トレーナのうちのトレーナは、分散型パラメータサーバのうちのパラメータサーバに対応し、分散型トレーナのうちのトレーナは、対応するパラメータサーバのうちのパラメータのトレーニングと更新を担当するため、モデルトレーニングの速度がいっそう向上された。
【0047】
本実施例のいくつかのオプション的な実施形態では、上記実行主体は、モデルトレーニングプロセス中に、負荷分散戦略に基づいて各トレーナ間の計算能力を調整して、各トレーナの計算能力とマッチングさせる。
【0048】
計算能力とマッチングさせることは、各トレーナ間の負荷状態のマッチングを表す。このようにして、各トレーナが全負荷状態になり、各トレーナ間の最適な実行状態に到達するようにし、各トレーナのうち、アイドル状態のトレーナが存在することを回避し、モデルトレーニングの速度およびトレーナ利用率が向上された。
【0049】
さらに
図4を参照すると、
図4は、本出願に係るモデルトレーニング方法の別の実施例の概略的なプロセス400を示している。このプロセスは、以下のステップを含む。
【0050】
ステップ401では、初期モデルのトレーニングプロセスを複数の分散型機能モジュールに割り当て、複数の分散型機能モジュール間の通信インターフェースを確定する。
【0051】
複数の分散型機能モジュールは互いに独立しており、分散型リーダ、分散型トレーナ、および分散型パラメータサーバを含む。
【0052】
ステップ402では、所定の方式で、初期モデルのパラメータを目標数量部に分ける。
【0053】
目標数量部は、分散型パラメータサーバのうちのパラメータサーバの数を表す。
【0054】
ステップ403では、分散型パラメータサーバのうちの各パラメータサーバを介して、目標数量部のパラメータを1数量部ずつ対応して格納する。
【0055】
ステップ404では、分散型リーダのうちのリーダがトレーニングサンプルを取得し、取得したトレーニングサンプルを分散型トレーナのうちの対応するトレーナにロードする。
【0056】
ステップ405では、分散型トレーナのうちのトレーナが、ロードされたトレーニングサンプルに基づいてモデルをトレーニングする。
【0057】
ステップ406では、分散型トレーナのうちの各トレーナについて、パラメータ識別子に基づいて、このトレーナとのデータやりとりを実行する分散型パラメータサーバのうちのターゲットパラメータサーバを確定する。
【0058】
ステップ407では、このトレーナとこのトレーナに対応するターゲットパラメータサーバとの間のデータやりとりによって、トレーニング済みターゲットモデルを取得する。
【0059】
本実施例では、
図4から、
図2に対応する実施例と比べて、本実施例におけるモデルトレーニング方法のプロセス400は、分散型パラメータサーバのうちのパラメータサーバが、初期モデルのパラメータの一部を対応して記憶し、分散型トレーナのうちのトレーナとのデータやりとりを実行することにより、初期モデルのトレーニングを完了させることを強調していることが分かる。このようにして、本実施例はさらに、モデルトレーニング速度を向上させて本出願の適用範囲を拡大する。
【0060】
さらに
図5を参照すると、上記
図2に示す方法の実施例として、本出願は、モデルトレーニング装置の一実施例を提供する。この装置の実施例は、
図2に示す方法の実施例に対応する。以下に説明する特徴に加えて、この装置の実施例は、
図2に示す方法の実施例と同じまたは対応する特徴、および
図2に示す方法の実施例と同じまたは対応する効果をさらに含み得る。この装置は、様々な電子機器に特に適用できる。
【0061】
図5に示すように、本実施例の分散型モデルトレーニング装置は、互いに独立した、分散型リーダ501、分散型トレーナ502、および分散型パラメータサーバ503を含む。分散型リーダ501は複数のリーダを含み、分散型トレーナ502は複数のトレーナを含み、分散型パラメータサーバ503は複数のパラメータサーバを含む。具体的には、分散型リーダ501のうちのリーダは、トレーニングサンプルを取得し、取得したトレーニングサンプルを分散型トレーナ502のうちの対応するトレーナにロードするように構成されており、分散型トレーナ502のうちのトレーナは、ロードされたトレーニングサンプルに基づいてモデルをトレーニングし、勾配情報を取得するように構成されており、分散型パラメータサーバ503のうちのパラメータサーバは、分散型トレーナ502の勾配情報に基づいて初期モデルのパラメータを更新し、トレーニング済みターゲットモデルを取得するように構成される。
【0062】
本実施例のいくつかのオプション的な実施形態では、上記装置は、分散型パラメータプロセッサ(図示せず)と、分散型コミュニケータ(図示せず)とをさらに含む。分散型パラメータプロセッサのうちのパラメータプロセッサは、分散型トレーナのパラメータと勾配の送受信および集約を実行するように構成されており、分散型コミュニケータのうちのコミュニケータは、分散型トレーナと分散型パラメータサーバとの間のパラメータと勾配のデータやりとりに使用される。
【0063】
本実施例のいくつかのオプション的な実施形態では、分散型リーダ501のうちのリーダと分散型トレーナ502のうちの対応するトレーナは、マルチスレッド完全非同期方式でデータやりとりを実行する。
【0064】
本実施例のいくつかのオプション的な実施形態では、分散型リーダ501のうちのリーダの各読み出しスレッドは、トレーニングサンプルをそれぞれ取得し、取得したトレーニングサンプルを各読み出しスレッドに1対1対応する情報キューにロードして、このリーダに対応するトレーナの各トレーニングスレッドが対応する情報キューからトレーニングサンプルを取得できるようにする。
【0065】
本実施例のいくつかのオプション的な実施形態では、初期モデルのパラメータは、所定の方式で目標数量部に分けられ、目標数量部は、分散型パラメータサーバ503のうちのパラメータサーバの数を表し、分散型パラメータサーバのうちの各パラメータサーバは、目標数量部のパラメータを1数量部ずつ順次格納する。
【0066】
本実施例のいくつかのオプション的な実施形態では、分散型トレーナ502のうちのトレーナは、パラメータ識別子に基づいて、このトレーナとのデータやりとりを実行する分散型パラメータサーバ503のうちのターゲットパラメータサーバを確定するようにさらに構成されており、分散型コミュニケータのうちのコミュニケータは、分散型トレーナのうちのトレーナとこのトレーナに対応するターゲットパラメータサーバとの間のデータやりとりを実行するようにさらに構成される。
【0067】
本実施例のいくつかのオプション的な実施形態では、上記装置は、リークインターフェースモジュール(図示せず)をさらに含む。リークインターフェースモジュールは、ユーザとデータやりとりするためのインターフェースを提供するように構成される。
【0068】
本実施例は、分散型モデルトレーニング装置を提供する。モデルトレーニングプロセス中に、各モジュール同士は互いに独立しており、協調して動作することで、モデルトレーニングの速度が向上された。
【0069】
本出願の実施例によれば、本出願は、電子機器、可読記憶媒体、およびコンピュータプログラムをさらに提供する。
【0070】
図6は、本出願の実施例を実施するように構成され得る例示的な電子機器600の概略ブロック図を示している。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、およびその他の適切なコンピュータなど、様々な形態のデジタルコンピュータを表すことを意図する。電子機器は、パーソナルデジタルアシスタント、携帯電話、スマートフォン、ウェアラブルデバイス、および他の同様のコンピューティングデバイスなど、様々な形態のモバイルデバイスを表すこともできる。本明細書に示されるコンポーネント、それらの接続と関係、およびそれらの機能は単なる例示であり、本明細書に説明および/または請求される本出願の実施形態を限定することを意図したものではない。
【0071】
図6に示すように、機器600は、リードオンリメモリ(ROM)602に記憶されたコンピュータプログラム、または記憶ユニット608からランダムアクセスメモリ(RAM)603にロードされたコンピュータプログラムに従って、各種の適切な動作および処理を実行することができる計算ユニット601を含む。RAM603には、機器600の動作に必要な各種のプログラムおよびデータも記憶され得る。計算ユニット601、ROM602、およびRAM603は、バス604を介して互いに接続されている。入/出力(I/O)インターフェース605もバス604に接続されている。
【0072】
機器600のうちの複数のコンポーネントは、I/Oインターフェース605に接続されており、キーボード、マウスなどの入力ユニット606と、各種のディスプレイ、スピーカなどの出力ユニット607と、磁気ディスク、光ディスクなどの記憶ユニット608と、ネットワークカード、モデム、無線通信トランシーバなどの通信ユニット609と、を含む。通信ユニット609は、機器600が、インターネットなどのコンピュータネットワーク、および/または様々な通信ネットワークを介して、他の装置との間で情報/データをやりとりすることを可能にする。
【0073】
計算ユニット601は、処理能力および計算能力を備えた様々な汎用および/または専用の処理コンポーネントであり得る。計算ユニット601のいくつかの例は、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、様々な専用の人工知能(AI)計算チップ、機械学習モデルアルゴリズムを実行する様々な計算ユニット、デジタル信号プロセッサ(DSP)、任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。計算ユニット601は、上述した様々な方法および処理、例えば、分散型モデルトレーニング方法を実行する。例えば、いくつかの実施例では、分散型モデルトレーニング方法は、記憶ユニット608などの機械可読媒体に具体的に含まれるコンピュータソフトウェアプログラムとして実装され得る。いくつかの実施例では、コンピュータプログラムの一部または全部は、ROM602および/または通信ユニット609を介して、機器600にロードおよび/またはインストールされ得る。コンピュータプログラムがRAM603にロードされ、計算ユニット601によって実行されると、上述した分散型モデルトレーニング方法の1つまたは複数のステップが実行され得る。あるいは、他の実施例では、計算ユニット601は、他の任意の適切な手段(例えば、ファームウェア)を介して、分散型モデルトレーニング方法を実行するように構成され得る。
【0074】
本明細書に記載のシステムおよび技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途用標準品(ASSP)、システムオンチップ(SOC)、ロードプログラマブルロジックデバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実装され得る。これらの様々な実施形態は、記憶システム、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータおよび指令を受信したり、この記憶システム、この少なくとも1つの入力装置、およびこの少なくとも1つの出力装置にデータおよび指令を送信したりすることができる専用または汎用のプログラマブルプロセッサであり得る少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムで実行および/または解釈され得る1つまたは複数のコンピュータプログラムに実装されることを含み得る。
【0075】
本出願の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語の任意の組み合わせで書かれ得る。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサまたはコントローラに提供され得るので、プログラムコードがプロセッサまたはコントローラによって実行されると、フローチャートおよび/またはブロック図で指定された機能/動作が実行される。プログラムコードは、完全にマシン上で実行され得るか、または部分的にマシン上で実行され得るか、または独立したソフトウェアパッケージとして、部分的にマシン上で、部分的にリモートマシン上で実行され得るか、または完全にリモートマシンまたはサーバ上で実行され得る。
【0076】
本出願の文脈において、機械可読媒体は、指令実行システム、装置、またはデバイスによって、またはそれらと組み合わせて使用するためのプログラムを含むかまたは記憶することができる有形媒体であり得る。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であり得る。機械可読媒体は、電気的、磁気的、光学的、電磁気的、赤外線の、または半導体のシステム、装置またはデバイス、または上記の任意の適切な組み合わせを含み得るが、これらに限定されない。機械可読記憶媒体のより具体的な例は、1本または複数本の導線を備えた電気コネクタ、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能なプログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブル・コンパクト・ディスク・リードオンリメモリ(CD-ROM)、光学メモリ、磁気メモリ、または上記の任意の適切な組み合わせを含む。
【0077】
ユーザとのデータやりとりを提供するために、本明細書に記載のシステムおよび技術は、情報をユーザに表示するための表示装置(例えば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)と、ユーザが入力をコンピュータに提供することを可能にするキーボードとポインティングデバイス(例えば、マウスまたはトラックボール)とを備えたコンピュータに実装され得る。他のタイプの装置は、ユーザとの対話を提供するためにも使用されており、例えば、任意の形態の感覚フィードバック(例えば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバック)をユーザに提供したり、任意の形態(音響入力、音声入力、および触覚入力を含む形態)を使用してユーザからの入力を受信したりするように構成され得る。
【0078】
本明細書に記載のシステムおよび技術は、バックエンドコンポーネント(例えば、データサーバ)を含むコンピュータシステム、ミドルウェアコンポーネント(例えば、アプリケーションサーバ)を含むコンピュータシステム、フロントエンドコンポーネント(例えば、ユーザが本明細書に記載のシステムおよび技術の実施形態とデータやりとりすることを可能にするグラフィカルユーザインターフェースまたはウェブブラウザを備えたユーザコンピュータ)を含むコンピュータシステム、または、これらバックエンドコンポーネント、ミドルウェアコンポーネントまたはフロントエンドコンポーネントの任意の組み合わせを含むコンピュータシステムに実装され得る。システムのコンポーネントは、デジタルデータ通信の任意の形態または媒体(例えば、通信ネットワーク)を介して互いに接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、およびインターネットを含む。
【0079】
コンピュータシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは通常、互いに遠く離れており、通信ネットワークを介してデータをやりとりする。クライアントとサーバとの関係は、対応するコンピュータで実行され、クライアント-サーバの関係を有するコンピュータプログラムによって生成される。サーバは、クラウドコンピューティングサーバまたはクラウドホストとも呼ばれるクラウドサーバであってもよく、クラウドコンピューティングサービスシステムのホスト製品として、従来の物理ホストおよび仮想プライベートサーバ(VPS、Virtual Private Server)のサービスにおける、管理が難しく、サービスの拡張性が低いという欠点を解決する。
【0080】
本出願の実施例の技術的解決手段によれば、分散型モデルトレーニング方法が提供される。モデルトレーニングプロセス中に、各モジュールは互いに独立しており、協調して動作することで、モデルトレーニングの速度が向上された。
【0081】
なお、上述した様々な形態のフローを用いて、ステップを改めて並び替え、追加または削除を行うことができる。例えば、本出願に記載された各ステップは、本出願に開示された技術案の所望の結果が達成できる限り、並行して実行されてもよいし、順番で実行されてもよいし、異なる順番で実行されてもよい。本明細書はここで制限しない。
【0082】
上記具体的な実施形態は、本出願の保護範囲を限定するものではない。設計要件および他の要因に従って、様々な修正、組み合わせ、副次的な組み合わせ、および置換を行うことができることを当業者は理解すべきである。本出願の趣旨および原理を逸脱せずに行われたあらゆる修正、均等な置換および改善などは、いずれも本出願の保護範囲内に含まれるべきである。