(57)【要約】ニューラルネットワークをトレーニングする方法は、ローカルコンピューティングノードにおいて、１つ以上のリモートコンピューティングノードのセットからリモートパラメータを受信することと、ローカルコンピューティングノードのローカルニューラルネットワークにおいて、フォワードパスの実行を開始して、リモートパラメータに基づいて最終出力を決定することと、ローカルニューラルネットワークにおいてバックワードパスの実行を開始して、ローカルニューラルネットワークの更新済パラメータを決定することと、バックワードパスが完了する前に、更新済パラメータのサブセットをリモートコンピューティングノードのセットに送信することと、を含む。【選択図】図５
2021514084.tif 000002
【特許請求の範囲】
【請求項１】
ローカルコンピューティングノードにおいて、１つ以上のリモートコンピューティングノードのセットからリモートパラメータを受信することと、
前記ローカルコンピューティングノード内のローカルニューラルネットワークにおいてフォワードパスの実行を開始して、前記リモートパラメータに基づいて最終出力を決定することと、
前記ローカルニューラルネットワークにおいてバックワードパスの実行を開始して、前記ローカルニューラルネットワークの更新済パラメータを決定することと、
前記バックワードパスが完了する前に、前記更新済パラメータのサブセットを前記リモートコンピューティングノードのセットに送信することと、を含む、
方法。
【請求項２】
前記バックワードパスの実行は、前記ローカルニューラルネットワーク内の第１層について前記更新済パラメータのサブセットを計算することを含み、
前記更新済パラメータのサブセットを送信することは、前記第１層についての前記更新済パラメータのサブセットが、前記第１層についての対応する前のパラメータのセットと異なると決定したことに応じて行われる、
請求項１の方法。
【請求項３】
前記バックワードパスの実行は、前記ローカルニューラルネットワーク内の第１層について前記更新済パラメータのサブセットを計算することを含み、
前記更新済パラメータのサブセットを送信することは、前記ローカルニューラルネットワーク内の１つ以上の後続の層について前記バックワードパスを実行することと同時に行われる、
請求項１の方法。
【請求項４】
前記更新済パラメータのサブセットは、前記バックワードパスの実行においてｎ番目の層毎の完了に応じて送信される前記更新済パラメータの複数のサブセットのうち何れかのサブセットであり、前記方法は、前記バックワードパスの実行中にｎの値を動的に調整することをさらに含む、
請求項１の方法。
【請求項５】
前記フォワードパスの実行を開始することは、前記リモートパラメータを受信する前に行われ、
前記方法は、
前記リモートパラメータを用いて前記ローカルニューラルネットワークを更新することと、
前記フォワードパスの実行を完了して、前記リモートパラメータに基づいて前記最終出力を計算することと、をさらに含む、
請求項１の方法。
【請求項６】
前記リモートパラメータを受信したことに応じて、前記リモートパラメータを用いて前記ローカルニューラルネットワークを非同期に更新することをさらに含み、前記更新済パラメータのサブセットを送信することは、前記ニューラルネットワーク内の前記複数の層のうち何れかの層について前記更新済パラメータを決定したことに応じて、前記バックワードパスの実行中に非同期に行われる、
請求項１の方法。
【請求項７】
前記リモートパラメータを受信したことに応じて、前記ローカルコンピューティングノード内のローカルメモリに対して前記リモートパラメータの直接メモリ書き込みを行うことによって、前記リモートパラメータを用いて前記ローカルニューラルネットワークを更新することをさらに含む、
請求項１の方法。
【請求項８】
前記更新済パラメータは、前記ローカルニューラルネットワーク内のニューロンの第１サブセットについて決定され、
前記方法は、前記リモートパラメータを用いて前記ローカルニューラルネットワーク内のニューロンの第２サブセットを更新することを含み、前記ニューロンの第１サブセット及び前記ニューロンの第２サブセットは相互に排他的である、
請求項１の方法。
【請求項９】
前記リモートコンピューティングノードのセットのリモートコンピューティングノード毎に、
前記リモートコンピューティングノードにおいて、前記ローカルコンピューティングノードから前記更新済パラメータのサブセットを受信することと、
前記更新済パラメータに基づいて、前記リモートコンピューティングノードに記憶された前記ローカルニューラルネットワークのコピーにおいてリモートフォワードパスを実行することと、
前記ローカルニューラルネットワークのコピーにおけるリモートバックワードパスの実行中に前記リモートパラメータを決定することと、
前記リモートバックワードパスを完了する前に、前記リモートパラメータを前記リモートコンピューティングノードから前記ローカルコンピューティングノードに送信することと、をさらに含む、
請求項１の方法。
【請求項１０】
前記リモートコンピューティングノードのセットのうち少なくとも１つのリモートコンピューティングノードにおいて前記リモートバックワードパスを実行することと同時に、前記ローカルニューラルネットワークにおいて前記フォワードパスを実行することをさらに含む、
請求項９の方法。
【請求項１１】
前記ローカルニューラルネットワーク内の複数の層毎に、トレーニングインスタンスによって提供された入力のセットのうち少なくとも１つの入力に基づく前記層の中間出力と、前記ローカルニューラルネットワーク内の前の層の中間出力と、を計算することによって、前記フォワードパスを実行することをさらに含む、
請求項１の方法。
【請求項１２】
前記ローカルニューラルネットワーク内の前記複数の層毎に、前記フォワードパスから決定された前記最終出力と前記トレーニングインスタンスに関する所望の出力との誤差に基づいて、前記層についての前記更新済パラメータのサブセットを計算することによって、前記バックワードパスを実行することをさらに含む、
請求項１１の方法。
【請求項１３】
１つ以上のリモートコンピューティングノードのセットからリモートパラメータを受信するように構成された通信ネットワークインターフェースと、
処理ユニットと、
パラメータサーバと、を備え、
前記処理ユニットは、
ニューラルネットワークにおいてフォワードパスを実行して、前記リモートパラメータに基づいて最終出力を計算することと、
前記ニューラルネットワークにおいてバックワードパスを実行して、前記ニューラルネットワークの更新済パラメータを決定することと、
を行うように構成されており、
前記パラメータサーバは、
前記処理ユニットに接続されており、
前記バックワードパスの完了前に、前記更新済パラメータのサブセットを前記リモートコンピューティングノードのセットに送信するように構成されている、
コンピューティングノード。
【請求項１４】
前記処理ユニットは、前記ニューラルネットワーク内の層についての前記更新済パラメータのサブセットを計算することによって、前記バックワードパスを実行するように構成されており、
前記パラメータサーバは、前記更新済パラメータのサブセットが前記層についての対応する前のパラメータのセットと異なると決定したことに応じて、前記更新済パラメータのサブセットを送信するように構成されている、
請求項１３のコンピューティングノード。
【請求項１５】
前記パラメータサーバは、前記バックワードパスの実行においてｎ番目の層毎の完了に応じて、前記更新済パラメータの複数のサブセットのうち１つ以上のサブセットを送信するように構成されており、
前記処理ユニットは、前記バックワードパスの実行中にｎの値を動的に調整するように構成されている、
請求項１３のコンピューティングノード。
【請求項１６】
前記通信ネットワークインターフェースに接続されたメモリをさらに備え、
前記通信ネットワークインターフェースは、直接メモリ書き込みによって前記リモートパラメータを前記メモリに記憶することによって、前記ニューラルネットワークを更新するように構成されており、
前記処理ユニットは、
前記リモートパラメータを受信する前に、前記フォワードパスの実行を開始することと、
前記リモートパラメータを用いて前記ニューラルネットワークを更新した後に、前記フォワードパスの実行を完了して、前記リモートパラメータに基づいて前記最終出力を計算することと、
を行うように構成されている、
請求項１３のコンピューティングノード。
【請求項１７】
前記通信ネットワークインターフェースは、前記リモートパラメータを受信したことに応じて、前記リモートパラメータを用いて前記ニューラルネットワークを非同期に更新するように構成されており、
前記パラメータサーバは、前記ニューラルネットワーク内の複数の層のうち何れかの層についての前記更新済パラメータを決定したことに応じて、前記バックワードパスの実行中に前記更新済パラメータのサブセットを非同期に送信するように構成されている、
請求項１３のコンピューティングノード。
【請求項１８】
前記処理ユニットは、
前記ローカルニューラルネットワーク内の複数の層毎に、トレーニングインスタンスによって提供された入力のセットのうち少なくとも１つの入力に基づく前記層の中間出力と、前記ローカルニューラルネットワーク内の前の層の中間出力と、を計算することによって、前記フォワードパスを実行することと、
前記ローカルニューラルネットワーク内の前記複数の層毎に、前記フォワードパスから決定された前記最終出力と、前記トレーニングインスタンスに関する所望の出力との誤差に基づいて、前記層についての前記更新済パラメータのサブセットを計算することによって、前記バックワードパスを実行することと、
を行うように構成されている、
請求項１３のコンピューティングノード。
【請求項１９】
コンピューティングシステムであって、
通信ネットワークと、
前記通信ネットワークに接続された複数のコンピューティングノードと、を備え、
前記複数のコンピューティングノードの各コンピューティングノードは、
前記複数のコンピューティングノードの他のコンピューティングノードからリモートパラメータを受信するように構成された通信ネットワークインターフェースと、
処理ユニットと、
パラメータサーバと、を備え、
前記処理ユニットは、
ニューラルネットワークにおいてフォワードパスを実行して、前記リモートパラメータに基づいて最終出力を計算することと、
前記ニューラルネットワークにおいてバックワードパスを実行して、前記ニューラルネットワークの更新済パラメータを決定することと、
を行うように構成されており、
前記パラメータサーバは、
前記処理ユニットに接続されており、
前記バックワードパスの完了前に、前記更新済パラメータのサブセットを前記他のコンピューティングノードに送信するように構成されている、
コンピューティングシステム。
【請求項２０】
前記複数のコンピューティングノードのうち第１コンピューティングノードに関する前記フォワードパスは、前記複数のコンピューティングノードのうち第２コンピューティングノードに関する前記バックワードパスの実行と同時に実行される、
請求項１９のコンピューティングシステム。
【請求項２１】
前記複数のコンピューティングノードの各コンピューティングノードは、前記ニューラルネットワーク内のニューロンの異なるサブセットについての前記更新済パラメータを決定するように構成されている、
請求項１９のコンピューティングシステム。
【請求項２２】
前記複数のコンピューティングノード毎の前記通信ネットワークインターフェースは、前記フォワードパスの開始後であって前記フォワードパスの完了前に、前記リモートパラメータを用いて前記ニューラルネットワークを更新するように構成されている、
請求項１９のコンピューティングシステム。
【請求項２３】
前記複数のコンピューティングノード毎に、
前記コンピューティングノードの前記通信ネットワークインターフェースは、前記リモートパラメータを受信したことに応じて、前記ローカルコンピューティングノードのローカルメモリに対して前記リモートパラメータの直接メモリ書き込みを行うことによって、前記リモートパラメータを用いて前記ニューラルネットワークを非同期的に更新するように構成されており、
前記コンピューティングノードの前記パラメータサーバは、前記バックワードパスの実行中に、前記処理ユニットが前記ニューラルネットワーク内の前記複数の層のうち何れかの層についての前記更新済パラメータを決定したことに応じて、前記更新済パラメータのサブセットを非同期に送信するように構成されている、
請求項１９のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（政府の権利）
本発明は、ローレンス・リバモア・ナショナル・セキュリティ（米国エネルギー省（ＤＯＥ）から授与された、主要契約番号：ＤＥ−ＡＣ５２−０７ＮＡ２７３４４、サブ契約番号：Ｂ６２０７１７）によるパスフォワード・プロジェクトの下、政府の支援を受けてなされたものである。米国政府は、本発明において一定の権利を有する。
【背景技術】
【０００２】
近年、ディープニューラルネットワーク等の学習アーキテクチャにより、コンピュータビジョン、音声認識、自然言語処理、翻訳等の分野が進歩しており、多くの場合、コンピュータが、これらのタスクを実行する際に、人間と同じ程度、又は、場合によっては人間の能力を超えて実行することを可能にしている。ニューラルネットワークの基本的なビルディングブロックはニューロンであり、単一のニューラルネットワークは、層に接続された任意の数（例えば、数千又は数百万）のニューロンを含むことができる。各層のニューロンは、前の層から入力を受信し、出力を後続の層に提供する。各ニューロンは、入力に対して関数（例えば、合計）を実行することに基づいて出力を生成し、調整可能な重みが入力に適用される。出力に追加されるバイアス値も調整することができる。
【０００３】
バックプロパゲーションは、ニューラルネットワークにおいて機械学習を実行するための１つの手法であり、各ニューロンの誤差寄与は、ニューラルネットワークの最終出力と特定の入力の所望の出力との比較に基づいて計算される。次に、誤差に寄与する個々のニューロンの重み及びバイアスは、ニューラルネットワークが所望の出力を達成するように調整される。誤差は出力で計算され、重み調整はニューラルネットワークの最終層から初期層に向かって後方に伝播される。
【０００４】
本開示は、添付の図面において、限定としてではなく例として示される。
【図面の簡単な説明】
【０００５】
【図１】ニューラルネットワークをトレーニングするための集中型パラメータサーバを含むコンピューティングノードクラスタの実施形態を示す図である。
【図２】一実施形態による、ニューラルネットワークをトレーニングするためのコンピューティングノードクラスタを含むコンピューティングシステムを示す図である。
【図３】一実施形態による、ニューラルネットワークをトレーニングするためのコンピューティングノードクラスタを示す図である。
【図４】一実施形態による、パラメータサーバを含むコンピューティングノードのコンポーネントを示す図である。
【図５】一実施形態による、コンピューティングノードクラスタにおける分散パラメータサーバを示す図である。
【図６】一実施形態による、ニューラルネットワークをトレーニングするためのプロセスを示すフロー図である。
【発明を実施するための形態】
【０００６】
以下の説明では、実施形態の十分な理解を提供するために、特定のシステム、コンポーネント、方法等の例等の多くの特定の詳細を説明する。しかしながら、当業者には明らかなように、少なくともいくつかの実施形態は、これらの特定の詳細を用いないで実施されてもよい。他の場合、実施形態を不必要に分かり難くすることを避けるために、周知のコンポーネント又は方法は、詳細に説明されないか、単純なブロック図形式で示される。したがって、記載された特定の詳細は単なる例示である。特定の実施態様は、これらの例示的な詳細から変更することができ、依然として、実施形態の範囲内にあることが想到される。
【０００７】
ニューラルネットワークにおいて複数のインスタンスの学習を行う場合にバックプロパゲーション技術を使用することができる。ニューラルネットワークのパラメータは、トレーニングセットの複数のインスタンスでのニューラルネットワークの動作に基づいて調整される。各インスタンスは、ニューラルネットワークによって生成された実際の出力が比較される入力及び所望の出力のセットを表す。より小さなニューラルネットワークに対してこれらの方法に従って動作するトレーニングフレームワークは、単一のコンピューティングノードの限定されたリソースで実装されてもよい。しかしながら、かなり大きなニューラルネットワークに適応するようにトレーニングフレームワークをスケーリングすることは、各々がニューラルネットワークの対応する部分（すなわち、ニューロンのサブセット）でバックプロパゲーションプロセスを実行する、及び／又は、トレーニングセットの対応する部分を使用する、複数のコンピューティングノード（例えば、複数のグラフィックス処理ユニット（ＧＰＵ）ノード）に計算を分散することを含むことができる。
【０００８】
ニューラルネットワークのトレーニングフレームワークを複数のコンピューティングノードにスケーリングする１つの方法は、集中型パラメータサーバを使用して、非同期確率的勾配降下法（ＳＧＤ）プロセスを実施する。図１は、コンピューティングノードクラスタ１００の実施形態のブロック図を示し、係る集中型パラメータサーバ１０１は、層パラメータＬ１〜ＬＮを含むニューラルネットワークをトレーニングするために使用され、ＬＸは、ニューラルネットワークの層Ｘのローカルパラメータを表す。トレーニングプロセス中、集中型パラメータサーバ１０１は、これらの層Ｌ１〜ＬＮにおける層パラメータ（例えば、重み及びバイアス）の更新及び計算と、コンピューティングノード１０２〜１０４へのパラメータの通信と、を担当する。
【０００９】
バックプロパゲーションプロセスによるニューラルネットワークのトレーニングは、フォワードパスとバックワードパスとを含む。フォワードパス中、ニューラルネットワークを使用して、１つのトレーニングインスタンスに関する最終出力（すなわち、最終層からの出力）を計算する。バックワードパス中、フォワードパスによって計算された出力と所望の出力との誤差が決定され、誤差は、ニューラルネットワークの各層を介して後方に伝搬され、ネットワーク内のニューロンの調整済重みを計算する。図１では、バックワードパス１１２がコンピューティングノード１０２で実行され、フォワードパス１１３，１１４がそれぞれコンピューティングノード１０３，１０４において実行される。
【００１０】
完全なバックワードパスは、ニューラルネットワークの一部又は全てのニューロンの更新された重み及び／又はバイアス値を含む、ニューラルネットワークの全ての層の更新済パラメータのバッチを生成する。バックワードパス１１２の終わりに、バックワードパス１１２から計算された更新済パラメータのバッチは、ポイントツーポイント通信を使用して、集中型パラメータサーバ１０１に送信される。集中型パラメータサーバ１０１は、更新済パラメータをコンピューティングノード１０３〜１０４に送信することによって、他のコンピューティングノード１０３〜１０４のパラメータを更新する。コンピューティングノード１０２〜１０４は、並行して動作し、所定の時間にトレーニングループの異なる反復を行うことができる。しかしながら、この実施態様では、パラメータは、バックワードパスの完了に関連して、パラメータサーバ１０１に送信され、パラメータサーバ１０１から送信される。
【００１１】
集中型パラメータサーバ１０１は、複数のコンピューティングノード１０２〜１０４間の更新済パラメータの通信を容易にし、したがって、ニューラルネットワークのトレーニングフレームワークを単一のノードに制約するのではなく、コンピューティングノード１０２〜１０４に亘ってスケーリングすることを可能にする。しかしながら、集中型パラメータサーバ１０１の帯域幅及び計算上の制限によって、さらなるスケーラビリティが制限される可能性がある。コンピューティングノード１０２〜１０４は、後続のパラメータのバッチを計算するためにフォワードパスの計算を開始する前に、これらのパラメータを更新し、バックワードパスの終わりに、新たなパラメータを集中型パラメータサーバ１０１に書き込む。したがって、コンピューティングノード１０２〜１０４と集中型パラメータサーバ１０１との間の更新済パラメータの通信は、バッチ粒度で行われ（すなわち、バックワードパスは、更新済パラメータが送信される前に全ての層に対して完了する）、トレーニングプロセスのクリティカルパスにある。ノード１０２〜１０４とパラメータサーバ１０１との間の通信はポイントツーポイントで行われ、ひいては、反復毎に２つのクリティカルパス通信を含み、これは、パフォーマンスに悪影響を及ぼす可能性がある。さらに、パラメータサーバ１０１の集中型の性質を使用すると、ネットワーク競合を増加させる傾向がある。また、パラメータサーバが実装されているコンピューティングノードは、ニューラルネットワークをトレーニングするために使用されないので、コンピューティングノードに集中型パラメータサーバ１０１を実装すると、計算リソースの非効率的な使用をもたらす可能性がある。
【００１２】
さらに、集中型パラメータサーバ１０１を使用するトレーニングフレームワークでは、コンピューティングノード１０２〜１０４は、古いパラメータデータを使用して動作する場合がある。例えば、コンピューティングノード１０２は、層ＬＮ〜Ｌ２の更新済パラメータを既に計算している場合がある。しかしながら、ノード１０３は、バックワードパス１１２が完了するまで、ＬＮ〜Ｌ２の更新済パラメータを受信しない。その間、フォワードパス１１３は、ＬＮ〜Ｌ２の以前の古い値を引き続き使用して、その出力を計算する。この更新待ち時間により、複数のコンピューティングノード間でトレーニングの相違が生じる可能性がある。
【００１３】
ニューラルネットワークのトレーニングフレームワークの一実施形態では、各コンピューティングノードが自身のパラメータサーバを実装し、パラメータサーバは、（ポイントツーポイントではなく）一方向の集合通信セマンティクスを使用して、他のコンピューティングノードに非同期パラメータ更新を提供し、これにより、更新済パラメータは、クラスタ内の他の全てのコンピューティングノードにブロードキャストされる。一実施形態では、コンピューティングノードのローカルパラメータサーバは、コンピューティングノードのバックワードパスによって層又は層のサブセットに関する更新済パラメータの計算が完了したことに応じて、更新済パラメータを他のノードに非同期に送信する。その結果、特定の層について更新済パラメータの通信と、１つ以上の後続の層について更新済パラメータの計算と、を同時に行うことができる。このアプローチは、ノード間の更新の通信が単一の集中型パラメータサーバの計算及び通信スループットによって制限されないので、トレーニングフレームワークのスケーラビリティを向上させ、また、古いデータの使用から生じる相違を低減する。
【００１４】
図２は、上述したように、ニューラルネットワークのトレーニングフレームワークのために複数のコンピューティングノードに亘って分散されたパラメータサーバを実装するコンピューティングシステム２００の実施形態を示す図である。概して、コンピューティングシステム２００は、限定されないが、ラップトップ又はデスクトップコンピュータ、携帯電話、サーバ等を含むいくつかの異なるタイプのデバイスのうち何れかとして具体化されてもよい。コンピューティングシステム２００は、バス２０１を介して互いに通信するいくつかのコンポーネント２０２〜２０８を含む。コンピューティングシステム２００では、コンポーネント２０２〜２０８の各々は、バス２０１を介して、又は、他のコンポーネント２０２〜２０８のうち１つ以上を介して、他のコンポーネント２０２〜２０８の何れかと通信することができる。コンピューティングシステム２００のコンポーネント２０１〜２０８は、ラップトップ若しくはデスクトップシャーシ又は携帯電話ケーシング等の単一の物理的ケーシング内に含まれる。代替の実施形態では、コンピューティングシステム２００のコンポーネントのいくつかは、コンピューティングシステム２００の全体が単一の物理的ケーシング内に存在しないように、周辺デバイスとして具体化される。
【００１５】
また、コンピューティングシステム２００は、ユーザから情報を受信するか、ユーザに情報を提供するためのユーザインターフェースデバイスを含む。具体的には、コンピューティングシステム２００は、キーボード、マウス、タッチスクリーン、又は、ユーザから情報を受信するための他のデバイス等の入力デバイス２０２を含む。コンピューティングシステム２００は、モニタ、発光ダイオード（ＬＥＤ）ディスプレイ、液晶ディスプレイ、又は、他の出力デバイス等のディスプレイ２０５を介して、情報をユーザに表示する。
【００１６】
さらに、コンピューティングシステム２００は、有線ネットワーク又は無線ネットワークを介してデータを送信及び受信するためのネットワークアダプタ２０７を含む。また、コンピューティングシステム２００は、１つ以上の周辺デバイス２０８を含む。周辺デバイス２０８は、大容量記憶デバイス、位置検出デバイス、センサ、入力デバイス、又は、コンピューティングシステム２００によって使用される他のタイプのデバイスを含むことができる。
【００１７】
コンピューティングシステム２００は、メモリサブシステム２０６に記憶されている命令２０６ａを受信して及び実行するように構成されたプロセッサ２０４を含む。メモリサブシステム２０６は、ランダムアクセスメモリ（ＲＡＭ）モジュール、読み取り専用メモリ（ＲＯＭ）モジュール、ハードディスク、及び、他の非一時的なコンピュータ可読媒体等のように、コンピューティングシステム２００によって使用されるメモリデバイスを含む。一実施形態では、メモリサブシステム２０６は、メモリサブシステム２０６のメモリ領域にそれぞれ対応する１つ以上のメモリ保持コントローラを実装するロジックを含む。
【００１８】
コンピューティングシステム２００のいくつかの実施形態は、図２に示す実施形態よりも少ない又は多いコンポーネントを含むことができる。例えば、特定の実施形態は、ディスプレイ２０５又は入力デバイス２０２無しに実装される。他の実施形態は、２つ以上の特定のコンポーネントを有する。例えば、コンピューティングシステム２００の実施形態は、複数のプロセッサ２０４、ネットワークアダプタ２０７等を有することができる。
【００１９】
また、コンピューティングシステム２００は、ニューラルネットワークのトレーニングフレームワークが実装されるコンピューティングノードのセットを含むコンピューティングノードクラスタ２０９を含む。一実施形態では、コンピューティングノードクラスタ２０９で行われる計算は、命令２０６ａによって定義されるプログラムに従って動作するプロセッサ２０４によって指示される。
【００２０】
図３は、コンピューティングノードクラスタ２０９の実施形態を示す図である。コンピューティングノードクラスタ２０９は、通信ネットワーク３１０を介して互いに接続された複数のコンピューティングノード３０１〜３０４を含む。通信ネットワーク３１０は、コンピューティングノード３０１〜３０４の各々と他のコンピューティングノード３０１〜３０４の何れかとの間の通信を可能にする。一実施形態では、通信ネットワーク３１０は、コンピューティングノード３０１〜３０４の各々が接続される単一のコンピュータシステムシャーシ又はケーシング内の内部バスである。或いは、コンピューティングノード３０１〜３０４が同じシャーシ又はケーシング内に配置されていない実施形態では、通信ネットワーク３１０〜３０４は、ローカルエリアネットワーク（ＬＡＮ）又はワイドエリアネットワーク（ＷＡＮ）等のように、より大きなネットワークとして実装される。通信ネットワークは、本明細書で説明するように、コンピューティングノード３０１〜３０４間の通信を可能にする様々な通信プロトコル及びトポロジーの任意の組み合わせを使用して実装することができる。
【００２１】
一実施形態では、コンピューティングノードクラスタ２０９は、任意の数のコンピューティングノード３０１〜３０４を含むことができる。クラスタ２０９内のコンピューティングノード３０１〜３０４の各々は、ニューラルネットワーク自身のコピーを維持し、ニューラルネットワーク内のニューロンの異なるサブセットに関する更新済パラメータを決定する。一実施形態では、トレーニングインスタンスの大きなセットもコンピューティングノード３０１〜３０４間で分割され、これにより、コンピューティングノード３０１〜３０４の各々は、ニューラルネットワークのローカルコピー又はそのローカルコピー内のニューロンのサブセットをトレーニングするために、トレーニングインスタンスの異なるサブセットを使用する。
【００２２】
図４は、コンピューティングノードクラスタ２０９のコンピューティングノード３０１の実施形態を示す図である。一実施形態では、コンピューティングノード３０１は、単一のコンピュータケース又はシャーシ内の同様のコンピューティングノード（例えば、ノード３０２〜３０４）と共に設置されるキャリアボード又はメインボードに搭載されたＣＰＵ又はＧＰＵ等の処理ユニット４０２を含む。代替の実施形態では、コンピューティングノード３０１は、それ自体のケース又はシャーシに含まれ、ＬＡＮ又はＷＡＮを介して同様のコンピューティングノード（例えば、ノード３０２〜３０４）に接続される。一実施形態では、コンピューティングノード３０１内の処理ユニット４０２及び他のコンポーネント４０１，４０３〜４０５は、バス４０６を介して互いに通信する。
【００２３】
また、コンピューティングノード３０１は、データを記憶するメモリ４０３を含む。メモリ４０３は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、フラッシュメモリ等のように、様々なメモリ技術のうち何れかを使用して実装された揮発性メモリ及び／又は不揮発性メモリを含むことができる。一実施形態では、ニューラルネットワーク４０４を定義するために使用されるデータ（例えば、変数及びデータ構造）は、メモリ４０３に記憶される。メモリ４０３内のこのデータは、ニューラルネットワーク４０４に対して、ニューロン、ニューロン間の接続、ニューロンの重み及びバイアス等を定義する。
【００２４】
また、コンピューティングノード３０１は、コンピューティングノード３０１が通信ネットワーク３１０を介してメッセージを送信及び受信することを可能にする通信ネットワークインターフェース４０１を含む。特に、通信ネットワークインターフェース４０１は、ローカルニューラルネットワーク４０４を更新するために、１つ以上のリモートコンピューティングノード３０２〜３０４からリモートパラメータを受信する。一実施形態では、リモートダイレクトメモリアクセス（ＲＤＭＡ）又は同様のセマンティクスを有するプロトコルを使用して、リモートノード３０２〜３０４が、更新済パラメータを、コンピューティングノード３０１のメモリ４０３のローカルニューラルネットワークモデル４０４に直接書き込むことを可能にする。通信ネットワークインターフェース４０１は、リモートコンピューティングノードから更新済パラメータを受信すると、コンピューティングノード３０１又はそのプロセッサ４０２のオペレーティングシステムに関わらずに、受信したパラメータをメモリ４０３のニューラルネットワーク４０４に直接書き込む。コンピューティングノード３０１から他のコンピューティングノード３０２〜３０４への更新済パラメータの送信も、リモートダイレクトメモリアクセス又は同様のメカニズムを介して、オペレーティングシステム及びプロセッサ４０２に関わらずに達成される。
【００２５】
ニューラルネットワークトレーニングプロセス中に、パラメータサーバ４０５は、ニューラルネットワーク４０４の更新済パラメータをリモートコンピューティングノード（例えば、３０２〜３０４）に送信するかどうかを決定し、必要に応じて、通信ネットワークインターフェース４０１を介して更新済パラメータを送信する。パラメータサーバ４０５は、コンピューティングノード３０１〜３０４の各々で複製され、各インスタンスで同様に機能する。一実施形態では、パラメータサーバ４０５は、ハードウェア回路モジュールとして実装される。代替の実施形態では、パラメータサーバ４０５は、ファームウェア、ソフトウェア（例えば、処理ユニット４０２によって実行されるメモリ４０３内の命令によって定義される）、又は、ハードウェア、ソフトウェア及び／若しくはファームウェアの組み合わせで実装される。一実施形態では、パラメータサーバ４０５は、リソース利用率を最小にするように調整された、コンピューティングノード３０１〜３０４の各々で動作するカーネルとして実装される。
【００２６】
図５は、一実施形態による、クラスタ内の一方のコンピューティングノードから他のコンピューティングノードへの、ニューラルネットワークに関する更新済パラメータの一方向の集合的な非同期送信を示すブロック図である。コンピューティングノード３０１〜３０４は、フォワードパス計算及びバックワードパス計算を含むバックプロパゲーション技術を使用してニューラルネットワークをトレーニングする。コンピューティングノード３０１では、処理ユニット４０２は、ニューラルネットワーク４０４においてフォワードパスを実行して、トレーニングインスタンスによって提供された入力のセットと、ニューラルネットワーク４０４のニューロンに関して予め設定されたパラメータ（例えば、重み及びバイアス）とに基づいて、ニューラルネットワークの最終出力を計算する。予め設定立されたパラメータは、パラメータの初期セット、又は、他のコンピューティングノードから受信されたリモートパラメータであってもよい。処理ユニット４０２は、ニューラルネットワーク内のニューロンの第１層の初期パラメータ又はリモートパラメータを使用して、トレーニングインスタンスによって提供された入力のセットに基づいて、第１層の中間出力を計算する。処理ユニット４０２は、ローカルニューラルネットワーク内のニューロンの後続の層毎に、ローカルニューラルネットワーク内の少なくとも１つの前の層の中間出力に基づいて、当該層の中間出力を計算する。各層の出力は、１つ以上の出力信号を含む。最終層の出力は、ニューラルネットワークの最終出力である。
【００２７】
一実施形態では、コンピューティングノード３０１は、クラスタ２０９内の別のコンピューティングノードから更新済リモートパラメータを受信したことに応じて、ニューラルネットワーク４０４のパラメータを非同期に更新する。したがって、フォワードパスの実行中にパラメータが更新される。言い換えると、処理ユニット４０２は、リモートパラメータを受信する前にフォワードパスの実行を開始し、ニューラルネットワークがリモートパラメータを用いて更新された後に、フォワードパスの実行を完了して、新たに更新されたリモートパラメータに基づいて出力を計算する。
【００２８】
リモートパラメータは、コンピューティングノード３０１内の通信ネットワークインターフェース４０１において、クラスタ２０９内の他のコンピューティングノード３０２〜３０４から受信される。通信ネットワークインターフェース４０１は、リモートパラメータを受信したことに応じて、リモートパラメータを用いてニューラルネットワークを非同期的に更新する。すなわち、パラメータ更新のタイミングは、受信ノードがフォワードパスを終了したかどうか、１つ以上の送信ノードが各々のバックワードパスを完了したかどうかとは無関係である。一実施形態では、リモートパラメータを受信することは、ニューラルネットワークの更新を発生させるのに十分である。
【００２９】
一実施形態では、クラスタ内の他のコンピューティングノード３０２〜３０４の各々は、同様の方法で、ニューラルネットワークの各々のインスタンスのパラメータを更新する。したがって、コンピューティングノード３０２〜３０４の各々において、コンピューティングノードの通信ネットワークインターフェースは、フォワードパスの実行中（すなわち、フォワードパスの開始後及びフォワードパスの完了前）に、受信したリモートパラメータでニューラルネットワークを更新し、フォワードパスの出力が最新のパラメータを使用して計算されるようにする。
【００３０】
一実施形態では、コンピューティングノード３０１の通信ネットワークインターフェース４０１は、直接メモリ書き込みメカニズムをサポートし、直接メモリ書き込みメカニズムは、処理ユニット４０２、及び、コンピューティングノード３０１のオペレーティングシステムの関与がなくても、リモートデバイスが、通信ネットワークインターフェース４０１を介してローカルメモリ４０３に直接書き込むことを可能にする。したがって、通信ネットワークインターフェース４０１は、ニューラルネットワーク４０４のローカルコピーを、リモートパラメータを用いて非同期的に更新することによって、リモートコンピューティングノードから更新済パラメータを受信したことに応答する。これは、直接メモリ書き込みを実行して、ニューラルネットワーク４０４のパラメータが記憶されるローカルメモリ４０３内の位置にリモートパラメータを記憶することを伴う。
【００３１】
コンピューティングノード３０１におけるフォワードパスの計算後、処理ユニット４０２は、ローカルニューラルネットワーク４０４においてバックワードパスを実行して、ニューラルネットワークの更新済パラメータ５０１を決定する。処理ユニット４０２は、ローカルニューラルネットワーク４０４の層毎に、フォワードパスから決定された最終出力と、フォワードパスによって最終出力を生成するのに使用されたトレーニングインスタンスに関する所望の出力との誤差に基づいて、層についての更新済パラメータのセットを計算することによって、バックワードパスを実行する。バックワードパスの実行中、コンピューティングノード３０１は、更新済パラメータを、中間デバイス（例えば、集中型パラメータサーバ）を介して送信するのではなく、更新済パラメータ５０１を他のコンピューティングノード３０２〜３０４に対して直接、細粒度（fine-grained）通信する。
【００３２】
一実施形態では、更新済パラメータ５０１は、全てのバックワードパスが完了する前に、各層のパラメータがバックワードパスによって計算されるとして、パラメータサーバ４０５によって他のコンピューティングノード３０２〜３０４内のパラメータサーバ４１５〜４２５に送信される。例えば、更新済パラメータ５０１の送信は、バックワードパスにおける層又は層のサブセットの完了に応じて、バックワードパスの実行中に行われてもよい。全てのバックワードパスが完了する前に更新済パラメータ５０１が送信されるので、パラメータ５０１は、全てのバックワードパスによって計算されたパラメータ（例えば、１つの層のニューロン又は複数の層のサブセットのニューロンに関するパラメータ）のサブセットを表す。
【００３３】
処理ユニット４０２は、ニューラルネットワーク４０４内の層（層ＬＮ’−Ｌ２’を含む）のサブセットの計算を含むバックワードパスのセグメント５０２を実行することによって、更新済パラメータ５０１のサブセットを生成する。一実施形態では、図５に示すように、セグメント５０２は、ニューラルネットワーク４０４の複数の層を含む。代替の実施形態では、セグメント５０２は、単一の層のみを含む。したがって、更新済パラメータ５０１は、複数の層又は単一の層におけるニューロンのパラメータを含むことができる。
【００３４】
一実施形態では、パラメータサーバ４０５は、バックワードパスの実行において、ｎ番目の層毎の完了に応じて、更新済パラメータのサブセットを送信する。例えば、バックワードパスのセグメント５０２はｎ個の層を含み、更新済パラメータ５０１のサブセットは、セグメント５０２の完了後に伝送され、ｎ個の層のニューロンのパラメータを含む。また、パラメータサーバ４０５は、ネットワーク状態、コンピューティングリソース利用又は他の要因に応じて、バックワードパスの実行中にｎを調整することができる。一実施形態では、パラメータサーバ４０５は、更新済パラメータ５０１が層の対応する以前のパラメータ（すなわち、バックワードパスの以前の反復から計算されたもの）と異なるかどうかを決定し、パラメータが変化していない場合、更新済パラメータ５０１を送信しない。
【００３５】
更新済パラメータの送信は、処理ユニット４０２がニューラルネットワークにおけるｎ個の層のニューロンに関する更新済パラメータを決定したことに応じて、バックワードパスの実行中にパラメータサーバ４０５によって非同期に行われる。言い換えると、送信のタイミングは、コンピューティングノード３０１において特定のバックワードパス又はフォワードパスが開始されたか又は完了されたか否かとは無関係である。また、このパラメータ更新メカニズムは、前のセグメント５０２から計算された更新済パラメータ５０１が送信されている間、処理ユニット４０２がバックワードパスの次のセグメント５０５を実行し続けることを可能にする。
【００３６】
さらに、更新済パラメータ５０１を受信するコンピューティングノード３０２〜３０４は、更新済パラメータ５０１を受信した後に、実施可能な限り速やかに、ニューラルネットワークの各々のコピーの活発な（eager）更新を行う。一実施形態では、これは、更新済パラメータ５０１をノード３０２〜３０４のメモリに直接メモリ書き込みすることによって達成される。コンピューティングノード３０２，３０４の各々で実行されているフォワードパスセグメント５０３，５０４は、全てのバックワードパスがノード３０１で完了することを待つことなく、バックワードパスセグメント５０２によって計算された最新のパラメータ（例えば、ニューロンの重み及びバイアス）に基づいて出力を計算することが可能である。例えば、バックワードパスセグメント５０２によって決定される層Ｌ２の更新された重みは、ノード３０１におけるバックワードパスが完了する前であっても、フォワードパスセグメント５０３，５０４によって使用される。
【００３７】
非同期パラメータ更新によって、異なるコンピューティングノードが異なるトレーニングインスタンスを同時に処理することを可能にする。例えば、コンピューティングノード３０１〜３０４を使用して、各ノード内のトレーニングインスタンスの同じセットを使用してニューラルネットワークをトレーニングする場合、ノード３０１〜３０４の各々は、所定の時間において、同じ又は異なるトレーニングインスタンスに対してフォワードパス又はバックワードパスを実行することができる。図５に示すように、コンピューティングノード３０１はバックワードパス（セグメント５０２を含む）を実行し、コンピューティングノード３０２，３０４は、フォワードパス（それぞれセグメント５０３，５０４を含む）を実行する。また、コンピューティングノード３０１におけるフォワードパスは、１つ以上のコンピューティングノード３０２〜３０４に対するバックワードパスの実行と同時に実行することができる。
【００３８】
図６は、一実施形態による、ニューラルネットワークをトレーニングするためのプロセス６００を示すフロー図である。トレーニングプロセス６００は、コンピューティングノードクラスタ２０９内のコンピューティングノード３０１〜３０４の各々において同様に行われる。図６では、プロセスを実行するコンピューティングノード（例えば、コンピューティングノード３０１）は、ローカルコンピューティングノードと呼ばれ、クラスタ２０９内の他のノード（例えば、コンピューティングノード３０２〜３０４）は、リモートコンピューティングノードと呼ばれる。ローカルコンピューティングノード及びリモートコンピューティングノードの各々は、プロセス６００の特定部分を同時に又は異なる時間に実行することができる。
【００３９】
プロセス６００は、ブロック６０１で開始する。ブロック６０１において、処理ロジック４０２は、コンピューティングノード３０１のローカルニューラルネットワーク４０４に関するのフォワードパスの実行を開始する。フォワードパスは、トレーニングインスタンスによって提供される入力を受け入れ、ニューラルネットワーク４０４を使用して、提供された入力に基づいて出力を生成する。
【００４０】
ブロック６０３において、コンピューティングノード３０１は、１つ以上のリモートコンピューティングノード３０２〜３０４からリモートパラメータを受信したかどうかを決定する。リモートパラメータは、リモートコンピューティングノードにおけるバックワードパスの実行から生成された更新済パラメータであり、通信ネットワーク３１０を介してローカルコンピューティングノード３０１に送信される。リモートパラメータは、通信ネットワークインターフェース４０１にてローカルコンピューティングノード３０１によって受信される。ブロック６０３においてリモートパラメータが受信されていない場合、プロセス６００はブロック６０７に進み、処理ユニット４０２は、ニューラルネットワークの既存のパラメータを使用してフォワードパスを実行し続ける。ブロック６０３においてリモートパラメータが受信された場合、プロセス６００はブロック６０５に進む。
【００４１】
ブロック６０５において、コンピューティングノード３０１は、リモートパラメータを受信したことに応じて、リモートパラメータを用いてニューラルネットワークのコピーを更新する。一実施形態では、通信ネットワークインターフェース４０１は、ニューラルネットワーク４０４のパラメータが記憶されたローカルメモリ４０３に対するリモートパラメータの直接メモリ書き込みを行うための論理回路を含む。したがって、通信ネットワークインターフェース４０１は、受信したリモートパラメータを、対応するニューラルネットワークパラメータが記憶されたメモリ４０３内のメモリ位置に直接書き込むことによって、ローカルニューラルネットワーク４０４を更新する。一実施形態では、ニューラルネットワーク４０４は、リモートパラメータを受信したことに応じて、受信したリモートパラメータを用いて非同期的に更新され、進行中のフォワードパスは、更新済パラメータを使用する。したがって、コンピューティングノード３０１は、他のコンピューティングノード３０２〜３０４からリモートパラメータを受信し、フォワードパスの実行中の任意の時点で、ローカルニューラルネットワーク４０４のパラメータを適宜更新する。
【００４２】
ブロック６０７において、処理ユニット４０２は、リモートパラメータを用いてニューラルネットワーク４０４を更新した後に、フォワードパスを実行し続け、リモートパラメータに基づいてトレーニングインスタンスの出力を計算する。例えば、リモートパラメータは、ニューラルネットワークのニューロンにおける重み及び／またはバイアスとして使用することができ、重み及び／又はバイアスは、フォワードパスから生成された出力に影響を及ぼす。
【００４３】
ブロック６０９において、フォワードパスが完了していない場合（すなわち、ニューラルネットワーク内の全ての層に対して計算が行われていない場合）、プロセス６００は、ブロック６０３に戻る。したがって、処理ユニット４０２は（ブロック６０７で提供される）フォワードパスを実行して、ブロック６０９においてフォワードパスが完了するまで、（ブロック６０３〜６０５で提供される）何れかの受信したリモートパラメータに従って、ニューラルネットワーク内のパラメータを更新する。フォワードパスが完了すると、プロセス６００はブロック６１１に進む。
【００４４】
ブロック６１１において、処理ユニット４０２は、コンピューティングノード３０１においてバックワードパスの実行を開始する。バックワードパス中、処理ユニット４０２は、トレーニングインスタンスの所望の出力と、フォワードパスによって生成された最終出力との差を決定し、バックワードシーケンスにおけるこの誤差をニューラルネットワークの層を介して伝播し、その誤差に対する各ニューロンの寄与を決定する。ニューロン毎のパラメータは、各々の寄与に基づいて誤差を低減するように調整される。したがって、バックワードパス計算は、ニューラルネットワークに関する更新済パラメータのセットを決定する。
【００４５】
ブロック６１３において、ニューラルネットワーク４０４内のニューロンの層のサブセットに対して、バックワードパスのセグメント５０２が実行される。したがって、更新済パラメータの対応するサブセットが決定される。一実施形態では、層のサブセットは、１つの層のみを含む。或いは、層のサブセットは、２つ以上の層と、（例えば、図５に示すように）ニューラルネットワーク４０４内の全ての層よりも少ない層と、を含む。
【００４６】
ブロック６１５において、パラメータサーバ４０５は、ブロック６１３から決定された更新済パラメータのサブセットをリモートコンピューティングノード３０２〜３０４に送信する。一実施形態では、パラメータサーバ４０５は、バックワードパスによって変更されないパラメータの送信を回避する。したがって、パラメータサーバ４０５は、１つ以上の層のサブセットに関する更新済パラメータのサブセットが、サブセットの対応する前のパラメータのセットと異なると決定したことに応じて、更新済パラメータ５０１を送信する。一実施形態では、パラメータサーバ４０５は、対応する前のパラメータに対して変化したパラメータのみを送信し、対応する前のパラメータは、進行中のバックワードパスの前の最新のフォワードパスの間に同じニューロンに対して使用された最新の使用済パラメータ値である。
【００４７】
更新済パラメータ５０１のサブセットの送信は、バックワードパスのセグメント５０２の層のサブセットに関する更新済パラメータ５０１を決定したことに応じて、バックワードパスの実行中に非同期に実行される。一実施形態では、セグメント５０２は、更新済パラメータ５０１が、セグメント５０２の最後の層の完了に応じて非同期に送信されるように、複数の層ＬＮ’〜Ｌ２’を含む。代替の実施形態では、バックワードパスのセグメント５０２は、単一層のみを含み、更新済パラメータ５０１のサブセットは、単一層の更新済パラメータ５０１を決定したことに応じて、バックワードパスの実行中に非同期的に送信される。
【００４８】
ブロック６１７において、バックワードパスが完了していない場合（すなわち、バックワードパスが、ニューラルネットワークの全ての層を未だ横断していない場合）、プロセス６００はブロック６１３に戻る。ブロック６１３において、処理ユニット４０２は、未だ処理されていない層に関するバックワードパスを実行し続ける。一実施形態では、ブロック６１５で提供されるように、更新済パラメータ５０１のサブセットを送信することは、ブロック６１３で提供されるように、ローカルニューラルネットワークにおける１つ以上の後続の層に関するバックワードパスを実行し続けることと同時に行われる。
【００４９】
したがって、ブロック６１３〜６１７は、バックワードパスが完了するまで繰り返される。一実施形態では、バックワードパスは、ニューラルネットワーク内の層の異なるサブセットをそれぞれ横断する複数のセグメントを含む。したがって、更新済パラメータ５０１のサブセットは、バックワードパスの実行における各セグメントの完了に応じて送信されるパラメータのいくつかのサブセットのうち１つである。一実施形態では、各セグメントはｎ個の層を横断し、更新済パラメータの各サブセットはｎ個の層のパラメータを含む。いくつかの実施形態では、ｎの値は、ネットワーク状態、コンピューティングリソース利用又は他の要因に応じて、バックワードパスの実行中に動的に調整される。ブロック６１７において、バックワードパスが完了すると、プロセス６００はブロック６０１に戻り、次の後続のフォワードパスを開始する。
【００５０】
一実施形態では、バックワードパスの実行中に他のノード３０２〜３０４から受信したリモートパラメータ更新は、フォワードパスが開始するまでキューに入れられる。したがって、ブロック６０１においてフォワードパスを開始する前に、ニューラルネットワーク４０４は、キューされたリモートパラメータで更新される。或いは、バックワードパスの実行中に受信したリモートパラメータを使用して、バックワードパスの実行中に（すなわち、バックワードパスが完了する前に）ニューラルネットワークを更新することができる。一実施形態では、ニューラルネットワーク４０４は、ブロック６０３，６０５で提供されるプロセスと同様のプロセスによって、ローカルメモリ４０３への直接メモリ書き込みを介して任意のリモートパラメータが受信された場合に、（ブロック６１１〜６１７で）バックワードパスの実行中に受信された当該リモートパラメータを用いて更新される。
【００５１】
他のコンピューティングノード３０２〜３０４の各々は、コンピューティングノード３０１と同様のコンポーネントを含む。したがって、これらのノードの各々は、プロセス６００と同様のプロセスも行う。一実施形態では、コンピューティングノード３０１〜３０４の各々は、フォワードパス及びバックワードパスを含む同様のバックプロパゲーションプロセスを行い、同じニューラルネットワークの異なる部分のパラメータを計算する。特に、コンピューティングノード３０１〜３０４の各々は、ニューラルネットワーク自身のコピーを記憶し、ニューラルネットワーク内のニューロンの異なるサブセットに関するパラメータを計算する。一実施形態では、ニューラルネットワークの各ニューロンは、これらのニューロンのサブセットのうち１つのみに含まれる。例えば、ノード３０１は、ニューロンの第１サブセットのパラメータを計算し、ノード３０２は、ニューロンの第２サブセットのパラメータを計算し、第１サブセット及び第２サブセットは、相互に排他的なセットである。代替の実施形態では、ニューラルネットワークの各ニューロンは、ニューロンの複数のサブセットに含まれる。コンピューティングノード３０１〜３０４の各々は、それ自身の計算、及び、他のコンピューティングノードから受信した更新済パラメータに基づいて、ニューラルネットワーク自身のコピー内のパラメータを更新する。
【００５２】
コンピューティングノード３０１をローカルコンピューティングノードと考えると、リモートコンピューティングノード３０２〜３０４の各々は、ニューロンの異なるサブセットのパラメータを計算するプロセス６００も実行する。バックワードパス及びフォワードパスがノード３０１〜３０４の何れかで実行される時間は、他のノードにおけるバックワードパス及びフォワードパスの実行時間とは無関係である。
【００５３】
したがって、ローカルコンピューティングノード３０１におけるバックワードパスは、リモートコンピューティングノード３０２〜３０４のうち１つ以上におけるフォワードパスと同時に実行することができ、これにより、ローカルバックワードパス中にローカルコンピューティングノード３０１によって送信された更新済パラメータは、各々のフォワードパス中にリモートコンピューティングノード３０２〜３０４におけるニューラルネットワークのリモートコピーを更新するために使用される。リモートコンピューティングノード３０２〜３０４の各々は、ブロック６０３の各々のバージョンを実行して、更新済パラメータ５０１のサブセットをローカルコンピューティングノード３０１から受信したことに応じて、ブロック６０５で同様に提供されるように、受信されたパラメータ５０１を用いてニューラルネットワークのコピーを更新する。一実施形態では、各リモートコンピューティングノードで受信されたパラメータ５０１は、パラメータがリモートコンピューティングノードにおいて計算されるニューロンのセットと相互に排他的なニューロンのサブセットに関する。リモートコンピューティングノード３０２〜３０４の各々は、リモートコンピューティングノードに記憶されるニューラルネットワークの各々のコピーにおいて更新された更新済パラメータ５０１に基づいて、それ自身のリモートフォワードパスを完了する。
【００５４】
１つ以上のリモートコンピューティングノード３０２〜３０４におけるバックワードパス（ブロック６１１〜６１７と同様）は、ローカルコンピューティングノード３０１のローカルニューラルネットワーク４０４におけるフォワードパスの実行と同時に実行することができる。この場合、リモートバックワードパスから決定された更新済パラメータは、ローカルコンピューティングノード３０１に送信され、ローカルフォワードパスの実行中にローカルニューラルネットワーク４０４を更新するために使用される。リモートコンピューティングノード３０２〜３０４の各々は、ニューラルネットワーク自身のコピーにおいてリモートバックワードパスを実行して、ニューロンの割り当てられたサブセットに対する更新済パラメータを決定する。
【００５５】
コンピューティングノード３０１〜３０４の各々におけるトレーニングプロセス６００の動作によって、各コンピューティングノードは、更新済パラメータが決定されたときに更新済パラメータが細かい粒度で非同期に送信されるバックワードパスを行い、ニューラルネットワークのパラメータが受信された場合に、フォワードパスの実行中にこれらのパラメータが非同期に更新されるフォワードパスを行う。このアプローチを使用して、一方のコンピューティングノードにおける更新済パラメータの決定と、別のコンピューティングノードにおけるパラメータの更新との間の遅延が最小になる。更新の粒度が細かくなり、結果として更新メッセージのサイズが小さくなると、ネットワーク負荷が時間の経過とともにより均等に分散されるため、ネットワーク輻輳の可能性を低減する。さらに、メッセージ及び更新の非同期性により、更新メッセージの正常な送受信は、トレーニングプロセスのクリティカルパスにない。全体として、これは、利用可能なネットワーク及びコンピューティングリソースをより効率的に利用しながら、トレーニングプロセスにおけるより迅速な収束をもたらす。
【００５６】
ニューラルネットワーク４０４をトレーニングする方法６００は、ローカルコンピューティングノード３０１において、１つ以上のリモートコンピューティングノード３０２〜３０４のセットからリモートパラメータを受信することと、ローカルコンピューティングノード３０１のローカルニューラルネットワーク４０４においてフォワードパスの実行を開始して、リモートパラメータに基づいて出力を決定することと、ローカルニューラルネットワーク４０４においてバックワードパスの実行を開始して、ローカルニューラルネットワーク４０４の更新済パラメータ５０１を決定することと、バックワードパスの完了前に、更新済パラメータ５０１のサブセットをリモートコンピューティングノード３０２〜３０４のセットに送信することと、を含む。
【００５７】
方法６００では、バックワードパスの実行は、ローカルニューラルネットワーク４０４の第１層の更新済パラメータ５０１のサブセットを計算することを含み、更新済パラメータ５０１のサブセットを送信することは、当該層の更新済パラメータ５０１のサブセットが、当該層の対応する前のパラメータのセットと異なると決定したことに応じて行われる。
【００５８】
方法６００では、バックワードパスの実行は、ローカルニューラルネットワーク４０４の第１層に関する更新済パラメータ５０１のサブセットを計算することを含み、更新済パラメータ５０１のサブセットを送信することは、ローカルニューラルネットワーク４０４の１つ以上の後続の層に関するバックワードパスを実行することと同時に行われる。
【００５９】
方法６００では、更新済パラメータ５０１のサブセットは、バックワードパスの実行におけるｎ番目の層毎の完了に応じて送信される更新済パラメータ５０１の複数のサブセットのうち１つのサブセットであり、方法６００は、さらに、バックワードパスの実行中にｎの値を動的に調整することを含む。
【００６０】
方法６００では、フォワードパスの実行を開始することは、リモートパラメータの受信前に行われ、方法６００は、リモートパラメータを用いてローカルニューラルネットワーク４０４を更新することと、フォワードパスの実行を完了して、リモートパラメータに基づいて出力を計算することと、を含む。
【００６１】
方法６００は、リモートパラメータを受信したことに応じて、ローカルニューラルネットワーク４０４を、リモートパラメータを用いて非同期に更新することを含み、更新済パラメータ５０１のサブセットを送信することは、ニューラルネットワーク４０４内の複数の層のうち１つの層に関する更新済パラメータ５０１を決定したことに応じて、バックワードパスの実行中に非同期に行われる。
【００６２】
方法６００は、リモートパラメータを受信したことに応じて、ローカルコンピューティングノード３０１のローカルメモリ４０３へのリモートパラメータの直接メモリ書き込みを行うことによって、ローカルニューラルネットワーク４０４を、リモートパラメータを用いて更新することを含む。
【００６３】
方法６００では、更新済パラメータ５０１は、ローカルニューラルネットワーク４０４内のニューロンの第１サブセットについて決定され、方法６００は、ローカルニューラルネットワーク４０４内のニューロンの第２サブセットを、リモートパラメータを用いて更新することを含み、ニューロンの第１サブセット及びニューロンの第２サブセットは、相互に排他的である。
【００６４】
方法６００は、リモートコンピューティングノード３０２〜３０４のセットのリモートコンピューティングノード毎に、リモートコンピューティングノードにおいて、更新済パラメータ５０１に基づいて、ローカルコンピューティングノード３０１から更新済パラメータ５０１のサブセットを受信することと、リモートコンピューティングノードに記憶されたローカルニューラルネットワーク４０４のコピーにおいてリモートフォワードパスを実行することと、ローカルニューラルネットワーク４０４のコピーにおいてリモートバックワードパスの実行中にリモートパラメータを決定することと、リモートバックワードパスを完了する前に、リモートコンピューティングノードからローカルコンピューティングノード３０１にリモートパラメータを送信することと、を含む。
【００６５】
方法６００は、リモートコンピューティングノードのセット３０２〜３０４のうち少なくとも１つにおいてリモートバックワードパスを実行することと同時に、ローカルニューラルネットワーク４０４においてフォワードパスを実行することをさらに含む。
【００６６】
コンピューティングノード３０１は、１つ以上のリモートコンピューティングノード３０２〜３０４のセットからリモートパラメータを受信するように構成された通信ネットワークインターフェース４０１と、ニューラルネットワーク４０４においてフォワードパスを実行して、リモートパラメータに基づいて出力を計算し、ニューラルネットワーク４０４においてバックワードパスを実行して、ニューラルネットワーク４０４の更新済パラメータ５０１を決定するように構成された処理ユニット４０２と、処理ユニット４０２に接続され、バックワードパスの完了前に、更新済パラメータ５０１のサブセットをリモートコンピューティングノード３０２〜３０４のセットに送信するように構成されたパラメータサーバ４０５と、を含む。
【００６７】
コンピューティングノード３０１において、処理ユニット４０２は、ニューラルネットワーク４０４内の層の更新済パラメータ５０１のサブセットを計算することによってバックワードパスを実行するように構成されており、パラメータサーバ４０５は、更新済パラメータ５０１のサブセットが当該層の対応する前のパラメータのセットと異なると決定したことに応じて、更新済パラメータ５０１のサブセットを送信するように構成されている。
【００６８】
コンピューティングノード３０１において、パラメータサーバ４０５は、バックワードパスの実行におけるｎ番目の層毎の完了に応じて、更新済パラメータ５０１の複数のサブセットのうち１つ以上を送信するように構成されており、処理ユニット４０２は、バックワードパスの実行中にｎの値を動的に調整するように構成されている。
【００６９】
コンピューティングノード３０１は、通信ネットワークインターフェース４０１と接続されたメモリ４０３を含み、通信ネットワークインターフェース４０１は、直接メモリ書き込みを介してリモートパラメータをメモリ４０３に記憶することによって、ニューラルネットワーク４０４を更新するように構成されており、処理ユニット４０２は、リモートパラメータを受信する前にフォワードパスの実行を開始し、リモートパラメータを用いてニューラルネットワーク４０４を更新した後に、フォワードパスの実行を完了して、リモートパラメータに基づいて出力を計算するように構成されている。
【００７０】
コンピューティングノード３０１において、通信ネットワークインターフェース４０１は、リモートパラメータを受信したことに応じて、リモートパラメータを用いてニューラルネットワーク４０４を非同期に更新するように構成されており、パラメータサーバ４０５は、ニューラルネットワーク４０４内の複数の層のうち１つの層に関する更新済パラメータ５０１を決定したことに応じて、バックワードパスの実行中に、更新済パラメータ５０１のサブセットを非同期に送信するように構成されている。
【００７１】
コンピューティングシステム２００は、通信ネットワーク３１０と、通信ネットワーク３１０に接続された複数のコンピューティングノード３０１〜３０４と、を含み、複数のコンピューティングノード３０１〜３０４の各コンピューティングノードは、複数のコンピューティングノード３０１〜３０４の他のコンピューティングノードからリモートパラメータを受信するように構成された通信ネットワークインターフェース４０１と、ニューラルネットワーク４０４においてフォワードパスを実行して、リモートパラメータに基づいて出力を計算し、ニューラルネットワーク４０４においてバックワードパスを実行して、ニューラルネットワーク４０４の更新済パラメータ５０１を決定するように構成された処理ユニット４０２と、処理ユニット４０２に接続され、バックワードパスの完了前に、更新済パラメータ５０１のサブセットを他のコンピューティングノードに送信するように構成されたパラメータサーバ４０５と、を含む。
【００７２】
コンピューティングシステム２００において、複数のコンピューティングノード３０１〜３０４のうち第１コンピューティングノードに関するフォワードパスは、複数のコンピューティングノード３０１〜３０４のうち第２コンピューティングノードに関するバックワードパスの実行と同時に実行される。
【００７３】
コンピューティングシステム２００において、複数のコンピューティングノード３０１〜３０４の各コンピューティングノードは、ニューラルネットワーク４０４内のニューロンの異なるサブセットに関する更新済パラメータ５０１を決定するように構成されている。
【００７４】
コンピューティングシステム２００において、複数のコンピューティングノード３０１〜３０４毎に、コンピューティングノードの通信ネットワークインターフェース４０１は、フォワードパスの開始後であってフォワードパスの完了前に、リモートパラメータを用いてニューラルネットワーク４０４を更新するように構成されている。
【００７５】
コンピューティングシステム２００において、複数のコンピューティングノード３０１〜３０４毎に、コンピューティングノードの通信ネットワークインターフェース４０１は、リモートパラメータを受信したことに応じて、ローカルコンピューティングノード３０１のローカルメモリ４０３へのリモートパラメータの直接メモリ書き込みを行うことによって、リモートパラメータを用いてニューラルネットワーク４０４を非同期的に更新するように構成されており、コンピューティングノードのパラメータサーバ４０５は、バックワードパスの実行中に、処理ユニット４０２がニューラルネットワーク４０４内の複数の層のうち１つの層に関する更新済パラメータ５０１を決定したことに応じて、更新済パラメータ５０１のサブセットを非同期的に送信するように構成されている。
【００７６】
本明細書に使用される「に接続される」という用語は、直接的に、又は、１つ以上の介在するコンポーネントを介して間接的に接続されることを意味することができる。本明細書に説明される様々なバスを介して提供される信号は、他の信号と時間多重化され、１つ以上の共通バスを介して提供されてもよい。さらに、回路コンポーネント間又はブロック間の相互接続は、バス又は単一の信号線として示されてもよい。或いは、各バスは、１つ以上の単一の信号線であってもよく、単一の信号線の各々は、バスであってもよい。
【００７７】
特定の実施形態は、非一時的なコンピュータ可読媒体に記憶された命令を含むことができるコンピュータプログラム製品として実装することができる。これらの命令を使用して汎用プロセッサ又は専用プロセッサをプログラムして、説明した動作を行うことができる。コンピュータ可読媒体は、機械（例えば、コンピュータ）によって読み取り可能な形式（例えば、ソフトウェア、処理アプリケーション）で情報を記憶又は送信するための任意のメカニズムを含む。非一時的なコンピュータ可読記憶媒体は、磁気記憶媒体（例えば、フロッピー（登録商標）ディスク）、光学記憶媒体（ＣＤ−ＲＯＭ等）、光磁気記憶媒体、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラム可能メモリ（例えば、ＥＰＲＯＭ及びＥＥＰＲＯＭ）、フラッシュメモリ、又は、電子命令を記憶するのに適した別のタイプの媒体を含むことができるが、これらに限定されない。
【００７８】
さらに、いくつかの実施形態は、コンピュータ可読媒体が複数のコンピュータシステムに記憶され、及び／又は、複数のコンピュータシステムによって実行される分散コンピューティング環境において実施されてもよい。また、コンピュータシステム間で転送される情報は、コンピュータシステムを接続する伝送媒体を介してプル又はプッシュすることができる。
【００７９】
概して、コンピュータ可読記憶媒体に搭載されたコンピューティングシステム２００及び／又はその一部を表すデータ構造は、プログラムによって読み取られ、コンピューティングシステム２００を含むハードウェアを製造するために直接的又は間接的に使用することの可能なデータベース又は他のデータ構造であってもよい。例えば、データ構造は、Ｖｅｒｉｌｏｇ又はＶＨＤＬ等の高水準設計言語（ＨＤＬ）によるハードウェア機能の動作レベルの記述又はレジスタ転送レベル（ＲＴＬ）の記述とすることができる。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために当該記述を合成することができる合成ツールによって読み取られてもよい。ネットリストは、コンピューティングシステム２００を含むハードウェアの機能を表すゲートのセットを含む。次に、ネットリストは、配置され、ルーティングされて、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次に、マスクは、コンピューティングシステム２００に対応する１つ以上の半導体回路を製造するために、様々な半導体製造ステップにおいて使用することができる。或いは、コンピュータ可読記憶媒体のデータベースは、必要に応じてネットリスト（合成ライブラリの有無に関わらない）若しくはデータセット、又は、グラフィックデータシステム（ＧＤＳ）ＩＩデータであってもよい。
【００８０】
本明細書に記載されている１つ以上の方法の動作は、特定の順序で示され、説明されているが、各方法の動作の順序は、特定の動作が逆順で実行されるように、又は、特定の動作が少なくとも部分的に他の動作と同時に実行されるように、変更されてもよい。別の実施形態では、異なる動作の命令又はサブ動作は、断続的及び／又は交互的な方法であってもよい。
【００８１】
上述した明細書において、実施形態は、その特定の例示的な実施形態を参照して説明されている。しかしながら、添付の特許請求の範囲に記載された実施形態のより広い範囲から逸脱することなく、様々な修正及び変更を行うことができることは明らかであろう。したがって、明細書及び図面は、限定的な意味ではなく、例示的な意味でみなされるべきである。
【図１】
2021514084.tif 000003
【図２】
2021514084.tif 000004
【図３】
2021514084.tif 000005
【図４】
2021514084.tif 000006
【図５】
2021514084.tif 000007
【図６】
2021514084.tif 000008
【国際調査報告】
2021514084.tif 000009
2021514084.tif 000010
2021514084.tif 000011