(57)【要約】【課題】データパラレルによる手法とモデルパラレルによる手法とを適切に結合させ、学習モデルの訓練の効率を顕著に向上させるハイブリッドパラレル情報処理システムを実現する。【解決手段】ハイブリッドパラレル情報処理システムの一例である機械翻訳システム１０００では、例えば、学習モデルのパラメータ数が多く、データパラレル処理をした場合に、同期処理の占有割合が高くなる処理については、モデルパラレル処理により処理を行い、一方、例えば、学習モデルのパラメータ数が少なく、データパラレル処理をした場合に、同期処理の占有割合がそれ程高くならない処理については、データパラレル処理により処理を行う。【選択図】図１
2020140438.tif 000002
【特許請求の範囲】
【請求項１】
複数の訓練データを用いて１つの学習モデルを学習するためのデータパラレル処理と、１つの訓練データを用いて複数に分割された学習モデルを学習するためのモデルパラレル処理とを実行するためのハイブリッドパラレル情報処理システムであって、
ネットワークモデルの処理を分割して実行する第１から第Ｎ（Ｎ：２以上の自然数）のモデルパラレル処理部であって、学習処理時に分割された学習モデルの同期処理を要しない第１タスクを実行するための処理の一部または全部を実行する前記第１から第Ｎのモデルパラレル部と、
バッチデータを分割して取得した分割バッチデータを用いて、分割バッチデータ処理を実行する第１から第Ｍ（Ｍ：２以上の自然数）のデータパラレル処理部であって、前記学習モデルのパラメータ更新の同期を要する第２タスクを実行するための処理の一部または全部を実行する前記第１から第Ｍのデータパラレル部と、
１つのタスクを実行するために必要となる複数の処理のそれぞれの処理である分割タスク処理の割当処理、当該割当処理の実行タイミング、および、データ入出力タイミングの少なくとも１つを管理する管理部と、
を備えるハイブリッドパラレル情報処理システム。
【請求項２】
前記第１から第Ｎのモデルパラレル部により実行される処理の一部または全部は、パイプライン処理により実行される、
請求項１に記載のハイブリッドパラレル情報処理システム。
【請求項３】
Ｐ個（Ｐ：２以上の自然数）のプロセッサを備えるハイブリッドパラレル情報処理システムであって、
前記Ｐ個のプロセッサが、前記第１から第Ｎのモデルパラレル部により実行される処理と、前記第１から第Ｍのデータパラレル部により実行される処理とを分担して実行する、
請求項１または２に記載のハイブリッドパラレル情報処理システム。
【請求項４】
前記Ｐ個のプロセッサは、所定の時間において、前記プロセッサのそれぞれの処理負荷の差が所定の範囲内となるように、担当する処理が割り振られている、
請求項３に記載のハイブリッドパラレル情報処理システム。
【請求項５】
複数の訓練データを用いて１つの学習モデルを学習するためのデータパラレル処理と、１つの訓練データを用いて複数に分割された学習モデルを学習するためのモデルパラレル処理とを実行するためのハイブリッドパラレル情報処理方法であって、
ネットワークモデルの処理を分割して実行する第１から第Ｎ（Ｎ：２以上の自然数）のモデルパラレル処理ステップであって、学習処理時に分割された学習モデルの同期処理を要しない前記第１タスクを実行するための処理の一部または全部を実行する前記第１から第Ｎのモデルパラレル処理ステップと、
バッチデータを分割して取得した分割バッチデータを用いて、分割バッチデータ処理を実行する第１から第Ｍ（Ｍ：２以上の自然数）のデータパラレル処理ステップであって、学習モデルのパラメータ更新の同期を要する前記第２タスクを実行するための処理の一部または全部を実行する前記第１から第Ｍのデータパラレル処理ステップと、
１つのタスクを実行するために必要となる複数の処理のそれぞれの処理である分割タスク処理の割当処理、当該割当処理の実行タイミング、および、データ入出力タイミングの少なくとも１つを管理する管理ステップと、
を備えるハイブリッドパラレル情報処理方法。
【請求項６】
請求項５に記載のハイブリッドパラレル情報処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習の訓練方法を効率化するための技術に関する。
【背景技術】
【０００２】
近年、機械学習を用いた技術の１つとしてニューラル機械翻訳技術の開発が盛んに行われており、その翻訳精度が向上している。ニューラル機械翻訳モデルを構築するための訓練速度もまたハードウェアの進化により向上しているが、ニューラル機械翻訳モデルを構築するために必要となるネットワークモデルや訓練データも増加傾向にあり、訓練には多くの時間が必要である。このような多くの時間が必要となる訓練を効率良く実行するために、並列化手法を採用されることが多い。このような並列化手法として、（１）データを分割して訓練を効率化するデータパラレルによる手法（例えば、非特許文献１を参照）と、（２）ネットワークモデルを分割して訓練を効率化するモデルパラレルによる手法とがある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Myle Ott, Sergey Edunov, David Grangier, and Michael Auli. 2018b. Scaling Neural Machine Translation. In Proceedings of the Third Conference on Machine Translation: Research Papers.
【非特許文献２】Jeffrey Dean, Gregory S. Corrado, Rajat Monga, Kai Chen, Matthieu Devin, Quoc V. Le, Mark Z. Mao, Marc’Aurelio Ranzato, Andrew Senior, Paul Tucker, Ke Yang, and Andrew Y. Ng. 2012. Large Scale Distributed Deep Networks. In Proc. of NIPS.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データパラレルによる手法では、例えば、訓練に使用するバッチデータ（学習対象（訓練対象）とするひとまとまりのデータ）を分割し、分割したバッチデータ（これを「分割バッチデータ」という。以下同様。）によりモデルの学習（訓練）を行う。このため、データパラレルによる手法では、モデルに依存しないという利点があるが、それぞれの分割バッチデータを用いて処理を実行した結果（学習モデルを更新するためのパラメータ）を同期する必要があり、この同期処理の割合が大きいと非効率となるという欠点がある。
【０００５】
モデルパラレルによる手法では、モデルを分割し、各モデルを用いて処理が実行されるため、同期処理（パラメータ更新のための同期処理）を実行する必要はないが、モデルをどのように分割するかは各モデルに依存するため、モデルの分割手法についての一般化は困難である。
【０００６】
また、データパラレルによる手法と、モデルパラレルによる手法とを単純に組み合わせても、システムの規模が大きくなる割には、学習モデルの訓練（学習）の効率はあまり向上しない。
【０００７】
そこで、本発明は、上記課題に鑑み、データパラレルによる手法とモデルパラレルによる手法とを適切に結合させ、学習モデルの訓練（学習）の効率を顕著に向上させるハイブリッドパラレル情報処理システム、ハイブリッドパラレル情報処理方法、および、プログラムを実現することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するための第１の発明は、複数の訓練データを用いて１つの学習モデルを学習するためのデータパラレル処理と、１つの訓練データを用いて複数に分割された学習モデルを学習するためのモデルパラレル処理とを実行するためのハイブリッドパラレル情報処理システムである。ハイブリッドパラレル情報処理システムは、第１から第Ｎ（Ｎ：２以上の自然数）のモデルパラレル部と、第１から第Ｍ（Ｍ：２以上の自然数）のデータパラレル部と、管理部と、を備える。
【０００９】
第１から第Ｎのモデルパラレル部は、ネットワークモデルの処理を分割して実行する機能部であって、学習処理時に分割された学習モデルの同期処理を要しない第１タスクを実行するための処理の一部または全部を実行する。
【００１０】
第１から第Ｍのデータパラレル部は、バッチデータを分割して取得した分割バッチデータを用いて、分割バッチデータ処理を実行する機能部であって、学習モデルのパラメータ更新の同期を要する第２タスクを実行するための処理の一部または全部を実行する。
【００１１】
管理部は、１つのタスクを実行するために必要となる複数の処理のそれぞれの処理である分割タスク処理の割当処理、当該割当処理の実行タイミング、および、データ入出力タイミングの少なくとも１つを管理する。
【００１２】
このハイブリッドパラレル情報処理システムでは、（１）例えば、学習モデルのパラメータ数が多く、データパラレル処理をした場合に、同期処理の占有割合が高くなる処理については、モデルパラレル処理により処理（例えば、モデルの学習処理）を行い、（２）例えば、学習モデルのパラメータ数が少なく、データパラレル処理をした場合に、同期処理の占有割合がそれ程高くならない処理については、データパラレル処理により処理（例えば、モデルの学習処理）を行う。
【００１３】
したがって、このハイブリッドパラレル情報処理システムでは、データパラレルによる手法とモデルパラレルによる手法とを適切に結合させた、ハイブリッドパラレル情報処理を行うことができ、その結果、処理（例えば、学習モデルの訓練（学習））の効率を顕著に向上させることができる。
【００１４】
第２の発明は、第１の発明であって、第１から第Ｎのモデルパラレル部により実行される処理の一部または全部は、パイプライン処理により実行される。
【００１５】
これにより、このハイブリッドパラレル情報処理システムでは、第１から第Ｎのモデルパラレル部により実行される処理の一部または全部が並列して実行されるので、さらに、処理の高速化を実現できる。
【００１６】
第３の発明は、第１または第２の発明であって、Ｐ個（Ｐ：２以上の自然数）のプロセッサを備えるハイブリッドパラレル情報処理システムである。そして、Ｐ個のプロセッサが、第１から第Ｎのモデルパラレル部により実行される処理と、第１から第Ｍのデータパラレル部により実行される処理とを分担して実行する。
【００１７】
これにより、Ｐ個のプロセッサを用いて、ハイブリッドパラレル情報処理システムを実現でき、さらに、Ｐ個のプロセッサのそれぞれに、モデルパラレル処理、および、データパラレル処理を割り当てることができる。
【００１８】
第４の発明は、第３の発明であって、Ｐ個のプロセッサは、所定の時間において、プロセッサのそれぞれの処理負荷の差が所定の範囲内となるように、担当する処理が割り振られている。
【００１９】
これにより、所定のプロセッサの処理負荷が重くなり、処理負荷のバランスが崩れることを防止することができる。例えば、このハイブリッドパラレル情報処理システムでは、データパラレル処理において、他のプロセッサよりも負荷が大きい処理を分担している場合、モデルパラレル処理において、他のプロセッサよりも負荷が小さい処理を割り当てることで、処理負荷のバランスを保つことができる。
【００２０】
第５の発明は、複数の訓練データを用いて１つの学習モデルを学習するためのデータパラレル処理と、１つの訓練データを用いて複数に分割された学習モデルを学習するためのモデルパラレル処理とを実行するためのハイブリッドパラレル情報処理方法である。ハイブリッドパラレル情報処理方法は、第１から第Ｎ（Ｎ：２以上の自然数）のモデルパラレル処理ステップと、第１から第Ｍ（Ｍ：２以上の自然数）のデータパラレル処理ステップと、管理ステップと、を備える。
【００２１】
第１から第Ｎのモデルパラレル処理ステップは、ネットワークモデルの処理を分割して実行するステップであって、学習処理時に分割された学習モデルの同期処理を要しない第１タスクを実行するための処理の一部または全部を実行する。
【００２２】
第１から第Ｍのデータパラレル処理ステップは、バッチデータを分割して取得した分割バッチデータを用いて、分割バッチデータ処理を実行するステップであって、学習モデルのパラメータ更新の同期を要する第２タスクを実行するための処理の一部または全部を実行する。
【００２３】
管理ステップは、１つのタスクを実行するために必要となる複数の処理のそれぞれの処理である分割タスク処理の割当処理、当該割当処理の実行タイミング、および、データ入出力タイミングの少なくとも１つを管理する。
【００２４】
これにより、第１の発明と同様の効果を奏するハイブリッドパラレル情報処理方法を実現することができる。
【００２５】
第６の発明は、第５の発明であるハイブリッドパラレル情報処理方法をコンピュータに実行させるためのプログラムである。
【００２６】
これにより、第１の発明と同様の効果を奏するハイブリッドパラレル情報処理方法をコンピュータに実行させるためのプログラムを実現することができる。
【発明の効果】
【００２７】
本発明によれば、データパラレルによる手法とモデルパラレルによる手法とを適切に結合させ、学習モデルの訓練（学習）の効率を顕著に向上させるハイブリッドパラレル情報処理システム、ハイブリッドパラレル情報処理方法、および、プログラムを実現することができる。
【図面の簡単な説明】
【００２８】
【図１】第１実施形態に係る機械翻訳システム１０００の物理構成の概略構成図。
【図２】第１実施形態に係る機械翻訳システム１０００の論理構成（機能ブロックの構成）の概略構成図。
【図３】機械翻訳システム１０００における機械翻訳処理を模式的に示した遷移図。
【図４】機械翻訳システム１０００における機械翻訳処理を模式的に示した遷移図。
【図５】機械翻訳システム１０００における機械翻訳処理のシーケンス図。
【図６】機械翻訳システム１０００における機械翻訳処理のシーケンス図。
【図７】機械翻訳システム１０００における機械翻訳処理のシーケンス図。
【図８】機械翻訳システム１０００における機械翻訳処理のシーケンス図。
【図９】機械翻訳システム１０００における機械翻訳処理を実行するときの各ＧＰＵの状態、入出力データの関係を模式的に示した図。
【図１０】機械翻訳システム１０００における機械翻訳処理を実行するときの各ＧＰＵの状態、入出力データの関係を模式的に示した図。
【図１１】機械翻訳システム１０００における機械翻訳処理を実行するときの各ＧＰＵの状態、入出力データの関係を模式的に示した図。
【図１２】機械翻訳システム１０００における機械翻訳処理を実行するときの各ＧＰＵの状態、入出力データの関係を模式的に示した図。
【図１３】機械翻訳システム１０００における機械翻訳処理を実行するときの各ＧＰＵの状態、入出力データの関係を模式的に示した図。
【図１４】ＣＰＵバス構成を示す図。
【発明を実施するための形態】
【００２９】
［第１実施形態］
第１実施形態について、図面を参照しながら、以下説明する。
【００３０】
データパラレル処理とモデルパラレル処理とを実行するハイブリッドパラレル情報処理システムを機械翻訳システムとした場合（一例）について、以下説明する。また、説明便宜のため、機械翻訳システムを４つのＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）により実現する場合について、以下説明する。
【００３１】
＜１．１：機械翻訳システムの構成＞
図１は、第１実施形態に係る機械翻訳システム１０００の物理構成の概略構成図である。
【００３２】
図２は、第１実施形態に係る機械翻訳システム１０００の論理構成（機能ブロックの構成）の概略構成図である。
【００３３】
（１．１．１：機械翻訳システムの物理構成）
機械翻訳システムの物理構成について説明する。
【００３４】
機械翻訳システム１０００は、図１に示すように、４つのＧＰＵであるＧＰＵ０、ＧＰＵ１、ＧＰＵ２、およびＧＰＵ３を備えており、各ＧＰＵは、バスＢｕｓ１により接続されている。
【００３５】
ＧＰＵ０は、管理部Ｇ０ｃと、モデルパラレル処理部Ｇ０１と、データパラレル処理部Ｇ０２と、通信インターフェースＧ０３とを備える。なお、管理部は、ＧＰＵ０ではなく、別のＧＰＵ若しくは、図示しない別のＣＰＵに設けることも可能である。
【００３６】
管理部Ｇ０ｃは、１つのタスクを実行するために必要となる複数の処理のそれぞれの処理である分割タスク処理の割当処理、当該割当処理の実行タイミング、および、データ入出力タイミング等を管理する機能部である。管理部Ｇ０ｃは、外部のＧＰＵ（ＧＰＵ１、ＧＰＵ２、ＧＰＵ３）に対して、各ＧＰＵが担当する処理、タスク、分割タスク等を適切なタイミングで実行するように指示する信号（指示信号）を通信インターフェースＧ０３、バスＢｕｓ１を介して、該当するＧＰＵに送信する。また、管理部Ｇ０ｃは、ＧＰＵ０が担当する処理、タスク、分割タスク等を適切なタイミングで実行するように、モデルパラレル処理部Ｇ０１、データパラレル処理部Ｇ０２を制御する。
【００３７】
モデルパラレル処理部Ｇ０１は、ネットワークモデルの処理を分割して実行するための処理であるモデルパラレル処理を実行するための機能部である。
【００３８】
データパラレル処理部Ｇ０２は、バッチデータを分割して取得した分割バッチデータを用いて、分割バッチデータ処理を実行するためのデータパラレル処理を実行するための機能部である。
【００３９】
通信インターフェースＧ０３は、バスＢｕｓ１に接続されており、ＧＰＵ０と外部のＧＰＵ（ＧＰＵ１〜３）との間で、バスＢｕｓ１を介してデータ通信を行うためのインターフェースである。
【００４０】
ＧＰＵ１は、モデルパラレル処理部Ｇ１１と、データパラレル処理部Ｇ１２と、通信インターフェースＧ１３とを備える。
【００４１】
モデルパラレル処理部Ｇ１１は、ネットワークモデルの処理を分割して実行するための処理であるモデルパラレル処理を実行するための機能部である。
【００４２】
データパラレル処理部Ｇ１２は、バッチデータを分割して取得した分割バッチデータを用いて、分割バッチデータ処理を実行するためのデータパラレル処理を実行するための機能部である。
【００４３】
通信インターフェースＧ１３は、バスＢｕｓ１に接続されており、ＧＰＵ１と外部のＧＰＵ（ＧＰＵ０、ＧＰＵ２、ＧＰＵ３）との間で、バスＢｕｓ１を介してデータ通信を行うためのインターフェースである。
【００４４】
ＧＰＵ２は、モデルパラレル処理部Ｇ２１と、データパラレル処理部Ｇ２２と、通信インターフェースＧ２３とを備える。
【００４５】
モデルパラレル処理部Ｇ２１は、ネットワークモデルの処理を分割して実行するための処理であるモデルパラレル処理を実行するための機能部である。
【００４６】
データパラレル処理部Ｇ２２は、バッチデータを分割して取得した分割バッチデータを用いて、分割バッチデータ処理を実行するためのデータパラレル処理を実行するための機能部である。
【００４７】
通信インターフェースＧ２３は、バスＢｕｓ１に接続されており、ＧＰＵ２と外部のＧＰＵ（ＧＰＵ０、ＧＰＵ１、ＧＰＵ３）との間で、バスＢｕｓ１を介してデータ通信を行うためのインターフェースである。
【００４８】
ＧＰＵ３は、モデルパラレル処理部Ｇ３１と、データパラレル処理部Ｇ３２と、通信インターフェースＧ３３とを備える。
【００４９】
モデルパラレル処理部Ｇ３１は、ネットワークモデルの処理を分割して実行するための処理であるモデルパラレル処理を実行するための機能部である。
【００５０】
データパラレル処理部Ｇ３２は、バッチデータを分割して取得した分割バッチデータを用いて、分割バッチデータ処理を実行するためのデータパラレル処理を実行するための機能部である。
【００５１】
通信インターフェースＧ３３は、バスＢｕｓ１に接続されており、ＧＰＵ３と外部のＧＰＵ（ＧＰＵ０、ＧＰＵ１、ＧＰＵ２）との間で、バスＢｕｓ１を介してデータ通信を行うためのインターフェースである。
【００５２】
（１．１．２：機械翻訳システムの論理構成）
機械翻訳システムの論理構成（機能ブロックの構成）について説明する。
【００５３】
機械翻訳システム１０００は、図２に示すように、エンコーダＥｎｃ１と、デコーダＤｅｃ１と、アテンション部Ａｔｎ１と、出力処理部ＦＵ１とを備える。なお、エンコーダＥｎｃ１、デコーダＤｅｃ１、アテンション部Ａｔｎ１、および、出力処理部ＦＵ１は、ＧＰＵ０〜３によりその機能が実現される。
【００５４】
エンコーダＥｎｃ１は、図２に示すように、エンコーダ側埋込層Ｅｎ＿ｅｍｂと、エンコーダ側ＬＳＴＭ第１層Ｅｎ＿Ｌ１（ＬＳＴＭ：Ｌｏｎｇ  ｓｈｏｒｔ−ｔｅｒｍ  ｍｅｍｏｒｙ）と、エンコーダ側ＬＳＴＭ第２層Ｅｎ＿Ｌ２と、エンコーダ側ＬＳＴＭ第３層Ｅｎ＿Ｌ３と、エンコーダ側ＬＳＴＭ第４層Ｅｎ＿Ｌ４と、エンコーダ側データ一括出力部Ｅｎ＿ｏｕｔと、を備える。
【００５５】
エンコーダ側埋込層Ｅｎ＿ｅｍｂは、入力データ系列（例えば、文章（原文）のデータ）のうちの１つのシンボルｘｉ（例えば、単語データ）を入力し、入力されたデータｘｉに対して、埋め込み処理を行うための行列を用いて、行列変換することで、分散表現データを取得する。そして、エンコーダ側埋込層Ｅｎ＿ｅｍｂは、取得した分散表現データをエンコーダ側ＬＳＴＭ第１層Ｅｎ＿Ｌ１に出力する。
【００５６】
エンコーダ側ＬＳＴＭ第１層Ｅｎ＿Ｌ１は、エンコーダ側埋込層Ｅｎ＿ｅｍｂから出力される分散表現データと、エンコーダ側ＬＳＴＭ第１層Ｅｎ＿Ｌ１の１時間ステップ前に出力したデータとを入力し、入力されたデータを用いて、ＬＳＴＭ層の処理（ＬＳＴＭ層を用いたＲＮＮ処理（ＲＮＮ：Ｒｅｃｕｒｒｅｎｔ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ））を実行し、処理結果をエンコーダ側ＬＳＴＭ第２層Ｅｎ＿Ｌ２およびデコーダ側ＬＳＴＭ第１層Ｄｅ＿Ｌ１に出力する。
【００５７】
エンコーダ側ＬＳＴＭ第２層Ｅｎ＿Ｌ２は、エンコーダ側ＬＳＴＭ第１層Ｅｎ＿Ｌ１から出力されるデータと、エンコーダ側ＬＳＴＭ第２層Ｅｎ＿Ｌ２の１時間ステップ前に出力したデータとを入力し、入力されたデータを用いて、ＬＳＴＭ層の処理（ＬＳＴＭ層を用いたＲＮＮ処理）を実行し、処理結果をエンコーダ側ＬＳＴＭ第３層Ｅｎ＿Ｌ３およびデコーダ側ＬＳＴＭ第２層Ｄｅ＿Ｌ２に出力する。
【００５８】
エンコーダ側ＬＳＴＭ第３層Ｅｎ＿Ｌ３は、エンコーダ側ＬＳＴＭ第２層Ｅｎ＿Ｌ２から出力されるデータと、エンコーダ側ＬＳＴＭ第３層Ｅｎ＿Ｌ３の１時間ステップ前に出力したデータとを入力し、入力されたデータを用いて、ＬＳＴＭ層の処理（ＬＳＴＭ層を用いたＲＮＮ処理）を実行し、処理結果をエンコーダ側ＬＳＴＭ第４層Ｅｎ＿Ｌ４およびデコーダ側ＬＳＴＭ第３層Ｄｅ＿Ｌ３に出力する。
【００５９】
エンコーダ側ＬＳＴＭ第４層Ｅｎ＿Ｌ４は、エンコーダ側ＬＳＴＭ第３層Ｅｎ＿Ｌ３から出力されるデータと、エンコーダ側ＬＳＴＭ第４層Ｅｎ＿Ｌ４の１時間ステップ前に出力したデータとを入力し、入力されたデータを用いて、ＬＳＴＭ層の処理（ＬＳＴＭ層を用いたＲＮＮ処理）を実行し、処理結果をエンコーダ側データ一括出力部Ｅｎ＿ｏｕｔおよびデコーダ側ＬＳＴＭ第４層Ｄｅ＿Ｌ４に出力する。
【００６０】
エンコーダ側データ一括出力部Ｅｎ＿ｏｕｔは、エンコーダ側ＬＳＴＭ第４層Ｅｎ＿Ｌ４から出力されるデータを入力する。エンコーダ側データ一括出力部Ｅｎ＿ｏｕｔは、エンコーダ側ＬＳＴＭ第４層Ｅｎ＿Ｌ４から出力されるデータを複数個保持し、所定の個数のデータが揃ったら、一括して当該データをアテンション部Ａｔｎ１に出力する。
【００６１】
デコーダＤｅｃ１は、図２に示すように、デコーダ側埋込層Ｄｅ＿ｅｍｂと、デコーダ側ＬＳＴＭ第１層Ｄｅ＿Ｌ１と、デコーダ側ＬＳＴＭ第２層Ｄｅ＿Ｌ２と、デコーダ側ＬＳＴＭ第３層Ｄｅ＿Ｌ３と、デコーダ側ＬＳＴＭ第４層Ｄｅ＿Ｌ４と、デコーダ側データ一括出力部Ｄｅ＿ｏｕｔと、を備える。
【００６２】
デコーダ側埋込層Ｄｅ＿ｅｍｂは、出力処理部ＦＵ１から入力データｘｉ−１の機械翻訳結果出力データｙｉ−１を入力する。デコーダ側埋込層Ｄｅ＿ｅｍｂは、入力されたデータｙｉ−1に対して、埋め込み処理を行うための行列を用いて、行列変換することで、分散表現データを取得する。そして、デコーダ側埋込層Ｄｅ＿ｅｍｂは、取得した分散表現データをデコーダ側ＬＳＴＭ第１層Ｄｅ＿Ｌ１に出力する。
【００６３】
デコーダ側ＬＳＴＭ第１層Ｄｅ＿Ｌ１は、デコーダ側埋込層Ｄｅ＿ｅｍｂから出力される分散表現データと、デコーダ側ＬＳＴＭ第１層Ｄｅ＿Ｌ１の１時間ステップ前に出力したデータと、エンコード側ＬＳＴＭ第１層Ｅｎ＿Ｌ１を入力し、入力されたデータを用いて、ＬＳＴＭ層の処理（ＬＳＴＭ層を用いたＲＮＮ処理（ＲＮＮ：Ｒｅｃｕｒｒｅｎｔ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ））を実行し、処理結果をデコーダ側ＬＳＴＭ第２層Ｄｅ＿Ｌ２に出力する。
【００６４】
デコーダ側ＬＳＴＭ第２層Ｄｅ＿Ｌ２は、デコーダ側ＬＳＴＭ第１層Ｄｅ＿Ｌ１から出力されるデータと、デコーダ側ＬＳＴＭ第２層Ｄｅ＿Ｌ２の１時間ステップ前に出力したデータと、エンコード側ＬＳＴＭ第２層Ｅｎ＿Ｌ２を入力し、入力されたデータを用いて、ＬＳＴＭ層の処理（ＬＳＴＭ層を用いたＲＮＮ処理）を実行し、処理結果をデコーダ側ＬＳＴＭ第３層Ｄｅ＿Ｌ３に出力する。
【００６５】
デコーダ側ＬＳＴＭ第３層Ｄｅ＿Ｌ３は、デコーダ側ＬＳＴＭ第２層Ｄｅ＿Ｌ２から出力されるデータと、デコーダ側ＬＳＴＭ第３層Ｄｅ＿Ｌ３の１時間ステップ前に出力したデータと、エンコード側ＬＳＴＭ第３層Ｅｎ＿Ｌ３を入力し、入力されたデータを用いて、ＬＳＴＭ層の処理（ＬＳＴＭ層を用いたＲＮＮ処理）を実行し、処理結果をデコーダ側ＬＳＴＭ第４層Ｄｅ＿Ｌ４に出力する。
【００６６】
デコーダ側ＬＳＴＭ第４層Ｄｅ＿Ｌ４は、デコーダ側ＬＳＴＭ第３層Ｄｅ＿Ｌ３から出力されるデータと、デコーダ側ＬＳＴＭ第４層Ｄｅ＿Ｌ４の１時間ステップ前に出力したデータと、エンコード側ＬＳＴＭ第４層Ｅｎ＿Ｌ４を入力し、入力されたデータを用いて、ＬＳＴＭ層の処理（ＬＳＴＭ層を用いたＲＮＮ処理）を実行し、処理結果をデコーダ側データ一括出力部Ｄｅ＿ｏｕｔに出力する。
【００６７】
デコーダ側データ一括出力部Ｄｅ＿ｏｕｔは、デコーダ側ＬＳＴＭ第４層Ｄｅ＿Ｌ４から出力されるデータを入力する。デコーダ側データ一括出力部Ｄｅ＿ｏｕｔは、デコーダ側ＬＳＴＭ第４層Ｄｅ＿Ｌ４から出力されるデータを複数個保持し、所定の個数のデータが揃ったら、一括して当該データをアテンション部Ａｔｎ１に出力する。
【００６８】
アテンション部Ａｔｎ１は、図２示すように、アテンション用パラメータ更新部Ａｔ１と、コンテキストエンコーダＡｔ２と、コンテキストデコーダＡｔ３とを備える。
【００６９】
アテンション用パラメータ更新部Ａｔ１は、エンコーダ側データ一括出力部Ｅｎ＿ｏｕｔから出力されるデータと、デコーダ側データ一括出力部Ｄｅ＿ｏｕｔから出力されるデータとを入力する。アテンション用パラメータ更新部Ａｔ１は、入力されたデータに基づいて、アテンション機構を実現するためのモデル（ニューラルネットワークによるモデル）のパラメータ（アテンション機構を実現するためのモデルの各シナプス結合の重み係数を更新するためのパラメータ）を更新する。そして、アテンション用パラメータ更新部Ａｔ１は、更新したパラメータに関するデータをコンテキストエンコーダＡｔ２に出力する。
【００７０】
コンテキストエンコーダＡｔ２は、エンコーダ側データ一括出力部Ｅｎ＿ｏｕｔから出力されるデータと、アテンション用パラメータ更新部Ａｔ１から出力されるデータとを入力する。コンテキストエンコーダＡｔ２は、アテンション機構を実現するためのモデル（ニューラルネットワークによるモデル）を実現する機能部であり、アテンション用パラメータ更新部Ａｔ１により取得された更新パラメータを用いて、アテンション機構を実現するモデルを更新する（当該モデルのパラメータを更新する）。また、コンテキストエンコーダＡｔ２は、エンコーダ側データ一括出力部Ｅｎ＿ｏｕｔから出力されるデータ（エンコーダ側ＬＳＴＭ第４層Ｅｎ＿Ｌ４から出力された複数個のデータ）に対してニューラルネットワーク（アテンション機構を実現するニューラルネットワーク）による処理を実行し、コンテキストデータを取得する。そして、コンテキストエンコーダＡｔ２は、取得したコンテキストデータをコンテキストエンコーダＡｔ３に出力する。
【００７１】
コンテキストデコーダＡｔ３は、コンテキストエンコーダＡｔ２から出力されるデータと、デコーダ側データ一括出力部Ｄｅ＿ｏｕｔから出力されるデータとを入力する。コンテキストデコーダＡｔ３は、デコーダ側データ一括出力部Ｄｅ＿ｏｕｔから出力されるデータ（デコーダ側ＬＳＴＭ第４層Ｄｅ＿Ｌ４から出力された複数個のデータ）と、コンテキストエンコーダＡｔ２により取得されたコンテキストデータとを用いて、出力マッピング処理（例えば、デコーダ側ＬＳＴＭ第４層Ｄｅ＿Ｌ４の各ノードから出力されるデータ（デコーダ側データ一括出力部Ｄｅ＿ｏｕｔから出力されるデータに相当）に対して重み付けを行い、重み付け後のデータを加算し、さらに、当該加算結果に対して、活性化関数による処理（例えば、ｔａｎｈ（ｘ）による処理）を実行し、ソフトマックス層ＦＵ１１のノード数と同じ次元のデータを取得する処理）を実行し、処理結果データを出力処理部ＦＵ１に出力する。
【００７２】
出力処理部ＦＵ１は、図２に示すように、ソフトマックス層ＦＵ１１と、更新パラメータ取得部ＦＵ１２とを備える。
【００７３】
ソフトマックス層ＦＵ１１は、コンテキストデコーダＡｔ３から出力されるデータを入力し、当該データに対してソフトマックス処理（ソフトマックス関数による処理）を実行し、ソフトマックス層ＦＵ１１の出力ノードの各ノードに対応する出力値を取得し、例えば、取得した出力値の中の最大値をとるデータ（ソフトマックス層の出力ノードのうち、事後確率が最大となるノードのデータ）を出力データｙｉ（機械翻訳結果出力データｙｉ）として出力する。また、ソフトマックス層ＦＵ１１は、ソフトマックス層ＦＵ１１の出力ノードの各ノードに対応する出力値の単語出力分布を示すベクトルデータ（ソフトマックス層ＦＵ１１の出力ノード数がｍ１の場合、ｍ１次元のベクトルデータ）を更新パラメータ取得部ＦＵ１２に出力する。
【００７４】
更新パラメータ取得部ＦＵ１２は、ソフトマックス層ＦＵ１１から出力されるデータ（ソフトマックス層ＦＵ１１の出力ノードの各ノードに対応する出力値の単語出力分布を示すベクトルデータ）を入力する。更新パラメータ取得部ＦＵ１２は、ソフトマックス層ＦＵ１１から出力される単語出力分布を示すベクトルデータと、教師データ（ソフトマックス層ＦＵ１１から出力される単語出力分布を示すベクトルデータと同次元のベクトルである教師データ）との誤差データΔｙを、例えば、両ベクトルデータのノルムを取得することにより取得する。そして、更新パラメータ取得部ＦＵ１２は、取得した誤差データΔｙに基づいて、（１）エンコーダＥｎｃ１、デコーダＤｅｃ１（及びそれぞれの埋め込み層Ｅｎ＿ｅｍｂ、Ｄｅ＿ｅｍｂ）のＬＳＴＭ第１層の更新用パラメータ（ニューラルネットワークのシナプス結合の重みを更新するためのパラメータ）ＤｐＬ１と、（２）エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第２層の更新用パラメータ（ニューラルネットワークのシナプス結合の重みを更新するためのパラメータ）ＤｐＬ２と、（３）エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第３層、第４層の更新用パラメータ（ニューラルネットワークのシナプス結合の重みを更新するためのパラメータ）ＤｐＬ３４と、を取得する。そして、更新パラメータ取得部ＦＵ１２は、取得した更新用パラメータを、エンコーダＥｎｃ１、デコーダＤｅｃ１に出力する。
【００７５】
＜１．２：機械翻訳システムの動作＞
以上のように構成された機械翻訳システム１０００の動作について説明する。
【００７６】
図３は、機械翻訳システム１０００における機械翻訳処理を模式的に示した遷移図である。
【００７７】
図４は、機械翻訳システム１０００における機械翻訳処理を模式的に示した遷移図であり、機械翻訳システム１０００で実行されるパイプライン処理（モデルパラレルによる並列処理）を説明するための図である。
【００７８】
図５〜８は、機械翻訳システム１０００における機械翻訳処理のシーケンス図である。
【００７９】
図９〜１３は、機械翻訳システム１０００における機械翻訳処理を実行するときの各ＧＰＵの状態、入出力データの関係を模式的に示した図である。図９から図１３においては、図５から図８における処理のステップ（例えばステップＳ１０４等）が記載されており、以下の説明では、図５〜８、図９〜１３を合わせて参照する。
【００８０】
図３において、機械翻訳システム１０００において、入力データ系列ｘ１，ｘ２，ｘ３，・・・，ＢＯＳ（例えば、文章（原文）のデータ、ｘｉは、例えば、単語データ、ＢＯＳ：Ｂｏｔｔｏｍ  ｏｆ  Ｓｅｎｔｅｎｃｅ）が入力され、出力データ系列ｙ１，ｙ２，ｙ３，・・・，ＢＯＳ（例えば、翻訳文のデータ、ｙｉは、例えば、単語データ）が出力されるときの機械翻訳処理を模式的に示した遷移図である。また、図３において、入力データ系列ｘ１，ｘ２，ｘ３，ｘ４が入力されている側がエンコーダＥｎｃ１に相当し、入力データ系列ＢＯＳ，ｙ１，ｙ２，ｙ３が入力されている側がデコーダＤｅｃ１に相当し、図３の下から上に向かって、埋込層、ＬＳＴＭ第１層、ＬＳＴＭ第２層、ＬＳＴＭ第３層、ＬＳＴＭ第４層、ＬＳＴＭ層の出力データ一括出力処理部を、各矩形のブロックで示している。また、説明便宜のため、各矩形のブロック内に当該処理部が実行するタスク（処理）を示す符号を振っている。
【００８１】
なお、機械翻訳システム１０００において、（１）モデルパラレル処理（ネットワークモデルを分割して学習用モデルの学習処理（訓練）を実行する処理）、（２）データパラレル処理（バッチデータを分割して取得した分割バッチデータを用いて、分割バッチデータ処理を実行する処理）についてのＧＰＵの割り当てを以下のようにする。
（１）モデルパラレル処理：
埋込層の処理：ＧＰＵ３
ＬＳＴＭ第１層の処理：ＧＰＵ３
ＬＳＴＭ第２層の処理：ＧＰＵ０
ＬＳＴＭ第３層の処理：ＧＰＵ１
ＬＳＴＭ第４層の処理：ＧＰＵ１
ＬＳＴＭ層の出力データ一括出力処理：ＧＰＵ２
（２）データパラレル処理：ＧＰＵ０（ルートに設定）、ＧＰＵ１、ＧＰＵ２、ＧＰＵ３
なお、データパラレル処理では、アテンション機構の処理を対象とし、アテンション機構を実現するモデルのパラメータの統合処理（同期処理）をＧＰＵ０が実行するものとする。
【００８２】
上記のように設定された機械翻訳システム１０００の動作について、以下、図面を参照しながら、説明する。
【００８３】
なお、説明便宜のため、データｘｉ＋４、ｙｉ＋３（図３、４の場合、ｉ＝０）が入力されている場合について、以下説明する。この場合、機械翻訳システム１０００では、図４の太線の矩形で示したブロックの処理が実行される。
【００８４】
以下、図５〜図９のシーケンス図に示した順に、機械翻訳システム１０００の動作について説明する。
【００８５】
（ステップＳ１０１〜Ｓ１０３２）：
≪ＧＰＵ３の処理≫
ステップＳ１０１において、ＧＰＵ３にデータｘｉ＋4、ｙｉ＋3（図４の場合、ｉ＝０）が通信インターフェースＧ３３を介して、モデルパラレル処理部Ｇ３１に入力される。なお、データｙｉ＋3は、時間ステップｉ＋３における翻訳出力結果データであり、ＧＰＵ０からＧＰＵ３に入力される。
【００８６】
ステップＳ１０２において、ＧＰＵ３のモデルパラレル処理部Ｇ３１は、データｘｉ＋４に対して、エンコーダ側埋込層Ｅｎ＿ｅｍｂの処理（図４の処理Ｅｎ３ｅ４）を実行し、当該処理結果データに対して、エンコーダ側ＬＳＴＭ第１層の処理（図４の処理Ｅｎ３４）を実行する。また、ＧＰＵ３のモデルパラレル処理部Ｇ３１では、データｙｉ＋３に対して、デコーダ側埋込層Ｄｅｃ＿ｅｍｂの処理（図４の処理Ｄｅ３ｅ４）が実行され、当該処理結果データに対して、デコーダ側ＬＳＴＭ第１層の処理（図４の処理Ｄｅ３４）が実行される。
【００８７】
そして、ＧＰＵ３により取得されたデータ（エンコーダ側ＬＳＴＭ第１層の処理結果データ（出力データ）Ｌ１ｏｕｔ＿ｅｎ（ｘｉ＋４）、および、デコーダ側ＬＳＴＭ第１層の処理結果データ（出力データ）Ｌ１ｏｕｔ＿ｄｅ（ｙｉ＋３））は、データＤｏ＿１ｓｔ＿Ｌとして、ＧＰＵ３からＧＰＵ０にデータ送信され、ＧＰＵ０は、当該データを受信する（ステップＳ１０３１）。ＧＰＵ０は、次の時間ステップにおいて、ＧＰＵ３から受信したデータ（Ｌ１ｏｕｔ＿ｅｎ（ｘｉ＋４）、Ｌ１ｏｕｔ＿ｄｅ（ｙｉ＋３））を用いた処理を実行する。
【００８８】
≪ＧＰＵ０の処理≫
現在の時間ステップにおいて、ＧＰＵ０のモデルパラレル処理部Ｇ０１は、１時間ステップ前にＧＰＵ３から受信したデータであるエンコーダ側ＬＳＴＭ第１層の出力データＬ１ｏｕｔ＿ｅｎ（ｘｉ＋３）を用いて、エンコーダ側ＬＳＴＭ第２層の処理（図４の処理Ｅｎ０３）を実行し、その処理結果をデータＬ２ｏｕｔ＿ｅｎ（ｘｉ＋３）として取得する。また、ＧＰＵ０のモデルパラレル処理部Ｇ０１は、１時間ステップ前にＧＰＵ３から受信したデータであるデコーダ側ＬＳＴＭ第１層の出力データＬ１ｏｕｔ＿ｄｅ（ｙｉ＋２）を用いて、デコーダ側ＬＳＴＭ第２層の処理（図４の処理Ｄｅ０３）を実行し、その処理結果をデータＬ２ｏｕｔ＿ｄｅ（ｙｉ＋２）として取得する（ステップＳ１０２）。
【００８９】
そして、ＧＰＵ０は、取得したデータＬ２ｏｕｔ＿ｅｎ（ｘｉ＋３）、および、データＬ２ｏｕｔ＿ｄｅ（ｙｉ＋２）をデータＤｏ＿２ｎｄ＿Ｌとして、ＧＰＵ１に送信し、ＧＰＵ１は、当該データを受信する（ステップＳ１０３２）。ＧＰＵ１は、次の時間ステップにおいて、ＧＰＵ０から受信したデータ（Ｌ２ｏｕｔ＿ｅｎ（ｘｉ＋３）、Ｌ２ｏｕｔ＿ｄｅ（ｙｉ＋２））を用いた処理を実行する。
【００９０】
≪ＧＰＵ１の処理≫
現在の時間ステップにおいて、ＧＰＵ１のモデルパラレル処理部Ｇ１１は、１時間ステップ前にＧＰＵ０から受信したデータであるエンコーダ側ＬＳＴＭ第２層の出力データＬ２ｏｕｔ＿ｅｎ（ｘｉ＋２）を用いて、エンコーダ側ＬＳＴＭ第３層の処理（図４の処理Ｅｎ１Ａ２）を実行し、その処理結果をデータＬ３ｏｕｔ＿ｅｎ（ｘｉ＋２）として取得する。また、ＧＰＵ１のモデルパラレル処理部Ｇ１１は、１時間ステップ前にＧＰＵ１により取得したデータであるエンコーダ側ＬＳＴＭ第３層の出力データＬ３ｏｕｔ＿ｅｎ（ｘｉ＋１）を用いて、エンコーダ側ＬＳＴＭ第４層の処理（図４の処理Ｅｎ１Ｂ１）を実行し、その処理結果をデータＬ４ｏｕｔ＿ｅｎ（ｘｉ＋１）として取得する（ステップＳ１０２）。
【００９１】
また、現在の時間ステップにおいて、ＧＰＵ１のモデルパラレル処理部Ｇ１１は、１時間ステップ前にＧＰＵ０から受信したデータであるデコーダ側ＬＳＴＭ第２層の出力データＬ２ｏｕｔ＿ｄｅ（ｙｉ＋１）を用いて、デコーダ側ＬＳＴＭ第３層の処理（図４の処理Ｄｅ１Ａ２）を実行し、その処理結果をデータＬ３ｏｕｔ＿ｄｅ（ｙｉ＋１）として取得する。また、ＧＰＵ１のモデルパラレル処理部Ｇ１１は、１時間ステップ前にＧＰＵ１により取得したデータであるデコーダ側ＬＳＴＭ第３層の出力データＬ３ｏｕｔ＿ｄｅ（ｙｉ）を用いて、デコーダ側ＬＳＴＭ第４層の処理（図４の処理Ｄｅ１Ｂ１）を実行し、その処理結果をデータＬ４ｏｕｔ＿ｄｅ（ｙｉ）として取得する（ステップＳ１０２）。
【００９２】
そして、ＧＰＵ１は、取得したデータＬ４ｏｕｔ＿ｅｎ（ｘｉ＋１）、および、データＬ４ｏｕｔ＿ｄｅ（ｙｉ）をデータＤｏ＿４ｔｈ＿Ｌとして、ＧＰＵ２に送信し、ＧＰＵ２は、当該データを受信する（ステップＳ１０３２）。ＧＰＵ２は、次の時間ステップにおいて、ＧＰＵ０から受信したデータ（Ｌ４ｏｕｔ＿ｅｎ（ｘｉ＋１）、Ｌ４ｏｕｔ＿ｄｅ（ｙｉ））を用いた処理を実行する。
【００９３】
≪ＧＰＵ２の処理≫
現在の時間ステップにおいて、ＧＰＵ２のモデルパラレル処理部Ｇ２１は、１時間ステップ前にＧＰＵ１から受信したデータであるエンコーダ側ＬＳＴＭ第４層の出力データＬ４ｏｕｔ＿ｅｎ（ｘｉ）、および、過去の時間ステップにおいて取得された複数のエンコーダ側ＬＳＴＭ第４層の出力データを用いて、エンコーダ側データ一括出力処理（図４の処理Ｅｎ２１）を実行し、その処理結果をデータＬ＿ａｌｌ＿ｏｕｔ＿ｅｎ（ｘｉ）として取得する。
【００９４】
また、現在の時間ステップにおいて、ＧＰＵ２のモデルパラレル処理部Ｇ２１は、１時間ステップ前にＧＰＵ１から受信したデータであるデコーダ側ＬＳＴＭ第４層の出力データＬ４ｏｕｔ＿ｄｅ（ｘｉ）、および、過去の時間ステップにおいて取得された複数のデコーダ側ＬＳＴＭ第４層の出力データを用いて、デコーダ側データ一括出力処理（図４の処理Ｄｅ２１）を実行し、その処理結果をデータＬ＿ａｌｌ＿ｏｕｔ＿ｅｎ（ｙｉ−１）として取得する。
【００９５】
上記のようにエンコーダ側データ一括出力処理、デコーダ側一括出力処理を実行し取得したデータ（ＬＳＴＭ第４層の出力データを複数個まとめて取得したデータ）をアテンション部Ａｔｎ１に出力することで、アテンション部Ａｔｎ１のアテンション機構のモデルの学習処理（訓練）を効率良く行うことができる。つまり、通常のアテンション機構のモデルの学習処理では、ループ処理が含まれるため、ＬＳＴＭ第４層の出力データを１個ずつ入力して処理すると、オーバーヘッドが大きくなり処理効率が悪くなる。そこで、機械翻訳システム１０００では、エンコーダ側データ一括出力処理、デコーダ側一括出力処理を実行し取得したデータ（ＬＳＴＭ第４層の出力データを複数個まとめて取得したデータ）をアテンション部Ａｔｎ１に出力し、当該データを用いてアテンション部Ａｔｎ１での処理を実行することで、処理効率を上げることができる。
【００９６】
（ステップＳ１０３３〜Ｓ１０３４）：
ステップＳ１０３３〜Ｓ１０３４において、機械翻訳システム１０００では、データパラレル前処理（バッチ分割処理）が実行される。具体的には、ＧＰＵ２は、エンコーダ側データ一括出力処理により取得したデータ、および、デコーダ側一括出力処理により取得したデータを含むデータをＧＰＵ数で均等に分割し（この例では４分割）、均等に分割したデータ（本例では４分割したデータ）を、ＧＰＵ０用バッチ分割データＤｏ＿ｄｉｖ０、ＧＰＵ１用バッチ分割データＤｏ＿ｄｉｖ１、ＧＰＵ２用バッチ分割データＤｏ＿ｄｉｖ２、および、ＧＰＵ３用バッチ分割データＤｏ＿ｄｉｖ３として取得する。
【００９７】
そして、ＧＰＵ２は、ＧＰＵ２用バッチ分割データＤｏ＿ｄｉｖ２を保持し、ＧＰＵ２のデータパラレル処理部Ｇ２２による処理に用いる。
【００９８】
また、ＧＰＵ２は、ＧＰＵ０に対して、ＧＰＵ０用バッチ分割データＤｏ＿ｄｉｖ０を送信する（ステップＳ１０３３）。また、ＧＰＵ２は、ＧＰＵ３に対して、ＧＰＵ３用バッチ分割データＤｏ＿ｄｉｖ３を送信する（ステップＳ１０３３）。
【００９９】
また、ＧＰＵ２は、ＧＰＵ１に対して、ＧＰＵ１用バッチ分割データＤｏ＿ｄｉｖ１を送信する（ステップＳ１０３４）。
【０１００】
そして、機械翻訳システム１０００では、ステップＳ１０４〜Ｓ１０７において、ＧＰＵ０〜ＧＰＵ３を用いて、データパラレル処理が実行され、ステップＳ１０８〜Ｓ１１０においてモデルパラレル処理が実行される。
【０１０１】
（ステップＳ１０４）：
ステップＳ１０４において、ＧＰＵ０のデータパラレル処理部Ｇ０２は、ＧＰＵ０用バッチ分割データＤｏ＿ｄｉｖ０を用いて、アテンション部Ａｔｎ１の処理（アテンション機構を実現するモデルの学習処理）を実行し、さらに、当該処理の結果を用いてソフトマックス層ＦＵ１１の処理を実行する。そして、ＧＰＵ０のデータパラレル処理部Ｇ０２は、当該処理により取得されたデータと教師データとに基づいて、誤差データΔｗ０を取得し保持する。
【０１０２】
ＧＰＵ１のデータパラレル処理部Ｇ１２は、ＧＰＵ１用バッチ分割データＤｏ＿ｄｉｖ１を用いて、アテンション部Ａｔｎ１の処理（アテンション機構を実現するモデルの学習処理）を実行し、さらに、当該処理の結果を用いてソフトマックス層ＦＵ１１の処理を実行する。そして、ＧＰＵ１のデータパラレル処理部Ｇ１２は、当該処理により取得されたデータと教師データとに基づいて、誤差データΔｗ１を取得し、取得した誤差データΔｗ１を、ＧＰＵ０に送信する。
【０１０３】
ＧＰＵ２のデータパラレル処理部Ｇ２２は、ＧＰＵ２用バッチ分割データＤｏ＿ｄｉｖ２を用いて、アテンション部Ａｔｎ１の処理（アテンション機構を実現するモデルの学習処理）を実行し、さらに、当該処理の結果を用いてソフトマックス層ＦＵ１１の処理を実行する。そして、ＧＰＵ２のデータパラレル処理部Ｇ２２は、当該処理により取得されたデータと教師データとに基づいて、誤差データΔｗ２を取得し、取得した誤差データΔｗ２を、ＧＰＵ０に送信する。
【０１０４】
ＧＰＵ３のデータパラレル処理部Ｇ３２は、ＧＰＵ３用バッチ分割データＤｏ＿ｄｉｖ３を用いて、アテンション部Ａｔｎ１の処理（アテンション機構を実現するモデルの学習処理）を実行し、さらに、当該処理の結果を用いてソフトマックス層ＦＵ１１の処理を実行する。そして、ＧＰＵ３のデータパラレル処理部Ｇ３２は、当該処理により取得されたデータと教師データとに基づいて、誤差データΔｗ３を取得し、取得した誤差データΔｗ３を、ＧＰＵ０に送信する。
【０１０５】
（ステップＳ１０５）：
ステップＳ１０５において、ＧＰＵ０のデータパラレル処理部Ｇ０２は、ＧＰＵ０で保持している誤差データΔｗ０と、ＧＰＵ１〜ＧＰＵ３から、それぞれ受信した誤差データΔｗ１、Δｗ２、および、Δｗ３を用いて、誤差データを統合する処理（同期処理）を実行する。例えば、ＧＰＵ０のデータパラレル処理部Ｇ０２は、
Δｗ＝Ａｖｅ（Δｗ０，Δｗ１，Δｗ２，Δｗ３）
Ａｖｅ（）：要素の平均値を取得する関数
に相当する処理を実行し、各ＧＰＵで取得した誤差データを統合した誤差データΔｗを取得する。
【０１０６】
（ステップＳ１０６）：
ステップＳ１０６において、ＧＰＵ０のデータパラレル処理部Ｇ０２は、統合した誤差データΔｗを、ＧＰＵ１、ＧＰＵ２、および、ＧＰＵ３に送信し、ＧＰＵ１、ＧＰＵ２、および、ＧＰＵ３は、それぞれ、ＧＰＵ０から送信された誤差データΔｗを受信する。
【０１０７】
（ステップＳ１０７）：
ステップＳ１０７において、ＧＰＵ０、ＧＰＵ１、ＧＰＵ２、および、ＧＰＵ３は、それぞれ、誤差データΔｗを用いて、アテンション機構を実現するモデルのパラメータを更新する処理を行う。
【０１０８】
（ステップＳ１０８）：
ステップＳ１０８において、ＧＰＵ０は、モデルパラレル処理で実現されるエンコーダ側の学習モデル、および、デコーダ側の学習モデルのパラメータ更新のためのデータを取得する処理を実行する。具体的には、ＧＰＵ０のデータパラレル処理部Ｇ０２（更新パラメータ取得部ＦＵ１２の機能を実現する機能部）は、ソフトマックス層ＦＵ１１から出力される単語出力分布を示すベクトルデータと、教師データ（ソフトマックス層ＦＵ１１から出力される単語出力分布を示すベクトルデータと同次元のベクトルである教師データ）との誤差データΔｙを、例えば、両ベクトルデータのノルムを取得することにより取得する。そして、データパラレル処理部Ｇ０２は、取得した誤差データΔｙに基づいて、
（１）エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第３層、第４層（ＧＰＵ１により実現される層）の更新用パラメータ（ニューラルネットワークのシナプス結合の重みを更新するためのパラメータ）ＤｐＬ３４（＝Δｙ１＝Δｙ）と、
（２）エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第２層（ＧＰＵ０により実現される層）の更新用パラメータ（ニューラルネットワークのシナプス結合の重みを更新するためのパラメータ）ＤｐＬ２（＝Δｙ０＝ｆ１（Δｙ））と、
（３）エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第１層（ＧＰＵ３により実現される層）の更新用パラメータ（ニューラルネットワークのシナプス結合の重みを更新するためのパラメータ）ＤｐＬ１（＝Δｙ３＝ｆ２（ｆ１（Δｙ）））と、
を取得する。
【０１０９】
なお、関数ｆ１（Δｙ）は、誤差データΔｙから、エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第２層のパラメータを更新するためのデータ（パラメータ更新用データ）を取得する関数である。
【０１１０】
また、関数ｆ２（ｘ）は、上記関数ｆ１（Δｙ）により取得されるデータから（ｘ＝ｆ１（Δｙ）としたとき）、エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第１層のパラメータを更新するためのデータ（パラメータ更新用データ）を取得する関数である。
【０１１１】
（ステップＳ１０９）：
ステップＳ１０９において、ＧＰＵ０は、ステップＳ１０８で取得したモデルパラレル処理で実現されるエンコーダ側のパラメータ更新用データを各ＧＰＵに送信する。
【０１１２】
具体的には、以下の処理が実行される。
（１）ＧＰＵ０は、ＧＰＵ１に対して、エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第３層、第４層（ＧＰＵ１により実現される層）の更新用パラメータ（ニューラルネットワークのシナプス結合の重みを更新するためのパラメータ）ＤｐＬ３４（＝Δｙ１＝Δｙ）を送信する。そして、ＧＰＵ１は、当該データを受信する。
（２）ＧＰＵ０は、エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第２層（ＧＰＵ０により実現される層）の更新用パラメータ（ニューラルネットワークのシナプス結合の重みを更新するためのパラメータ）ＤｐＬ２（＝Δｙ０＝ｆ１（Δｙ））を保持する。
（３）ＧＰＵ０は、ＧＰＵ３に対して、エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第１層（ＧＰＵ３により実現される層）の更新用パラメータ（ニューラルネットワークのシナプス結合の重みを更新するためのパラメータ）ＤｐＬ１（＝Δｙ３＝ｆ２（ｆ１（Δｙ）））を送信する。そして、ＧＰＵ３は、当該データを受信する。
【０１１３】
（ステップＳ１１０）：
ステップＳ１１０において、ＧＰＵ１は、ＧＰＵ０から受信した更新用パラメータＤｐＬ３４（＝Δｙ１＝Δｙ）を用いて、エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第３層、第４層（ＧＰＵ１により実現される層）のパラメータを更新する。
【０１１４】
ＧＰＵ０は、ＧＰＵ０が保持している更新用パラメータＤｐＬ２（＝Δｙ０＝ｆ１（Δｙ））を用いて、エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第２層（ＧＰＵ０により実現される層）のパラメータを更新する。
【０１１５】
ＧＰＵ３は、ＧＰＵ０から受信した更新用パラメータＤｐＬ１（＝Δｙ３＝ｆ２（ｆ１（Δｙ）））を用いて、エンコーダＥｎｃ１、デコーダＤｅｃ１のＬＳＴＭ第１層（ＧＰＵ３により実現される層）のパラメータを更新する。
【０１１６】
上記により、機械翻訳システム１０００では、アテンション機構を用いるエンコーダ・デコーダ方式の機械翻訳処理のモデルの学習処理（訓練処理）が実行される。
なお、以上の説明では、ＧＰＵ０にて、Δｙ他を計算して他のＧＰＵに送信する構成としたが、ＧＰＵ０で得たエラー信号をＧＰＵ１に送信してΔｙをＧＰＵ１内で演算し、ΔｙをＧＰＵ０に送信してＧＰＵ０でΔｙ０を作成し、このΔｙ０をＧＰＵ３に送信して、ＧＰＵ３において、Δｙ３を作成する構成を採用することもできる。
【０１１７】
そして、機械翻訳システム１０００では、図８に示すように、ステップＳ２０１において、時間ステップ１だけ進め、ステップ２０２〜ステップＳ２０５において、上記のステップＳ１０２〜Ｓ１１０と同様の処理が実行される。機械翻訳システム１０００では、当該処理が繰り返し実行される。
【０１１８】
上記のように処理することで、機械翻訳システム１０００では、モデルパラレル処理とデータパラレル処理とを適切に組み合わせて、モデルの学習処理（訓練処理）を効率良く行うことができる。
【０１１９】
以上のように、機械翻訳システム１０００では、（１）学習モデルのパラメータ数が多く、データパラレル処理をした場合に、同期処理の占有割合が高くなる処理である、Ｓｅｑ２Ｓｅｑシステムのエンコード・デコード処理については、モデルパラレル処理によりモデルの学習処理を行い、（２）学習モデルのパラメータ数が少なく、データパラレル処理をした場合に、同期処理の占有割合がそれ程高くならない処理である、アテンション機構のモデルの学習処理については、データパラレル処理によりモデルの学習処理を行う。
【０１２０】
したがって、機械翻訳システム１０００では、データパラレルによる手法とモデルパラレルによる手法とを適切に結合させた、ハイブリッドパラレル情報処理を行うことができ、その結果、学習モデルの訓練（学習）の効率を顕著に向上させることができる。
【０１２１】
［他の実施形態］
上記実施形態の機械翻訳システム１０００において、４つのＧＰＵを用いる場合について、説明したが、これに限定されることはなく、使用するＧＰＵの数は、「４」以外であってもよい。
【０１２２】
また、上記実施形態の機械翻訳システム１０００において、モデルパラレルにより実行させる処理、データパラレルにより実行させる処理の割り当て方法は、上記に限定されることはなく、他の割り当て方でもよい。つまり、（１）パラメータ数が多く、データパラレル処理により実現すると同期処理の占有割合が高くなる処理については、モデルパラレル処理を割り当て、（２）パラメータ数がそれ程多くなく、データパラレル処理により実現すると同期処理の占有割合がそれ程高くならない処理については、データパラレル処理を割り当てればよい。このような割り当て方法を用いるものであれば、他の割り当て方法を採用してもよい。
【０１２３】
また、上記実施形態では、ハイブリッドパラレル情報処理システムの一例として、機械翻訳システム１０００を実現する場合について、説明したが、これに限定されることはない。例えば、ハイブリッドパラレル情報処理システムにより、Ｓｅｑ２Ｓｅｑ処理が用いられる要約や対話等を行うシステムを実現するようにしてもよい。
【０１２４】
また、上記実施形態では、管理部は、ＧＰＵ０に設けられていたが、これに限定されず、管理部は、他のＧＰＵに設けられるものであってもよい。
【０１２５】
また上記実施形態で説明した機械翻訳システム１０００において、各ブロックは、ＬＳＩなどの半導体装置により個別に１チップ化されても良いし、一部または全部を含むように１チップ化されても良い。
【０１２６】
なおここではＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０１２７】
また集積回路化の手法はＬＳＩに限るものではなく、専用回路または汎用プロセサで実現してもよい。ＬＳＩ製造後にプログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０１２８】
また上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置（ＣＰＵ）により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ＲＯＭなどの記憶装置に格納されており、ＲＯＭにおいて、あるいはＲＡＭに読み出されて実行される。
【０１２９】
また上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア（ＯＳ（オペレーティングシステム）、ミドルウェア、あるいは所定のライブラリとともに実現される場合を含む。）により実現してもよい。さらにソフトウェアおよびハードウェアの混在処理により実現しても良い。
【０１３０】
例えば上記実施形態の各機能部をソフトウェアにより実現する場合、図１４に示したハードウェア構成（例えばＣＰＵ（ＧＰＵであってもよい）、ＲＯＭ、ＲＡＭ、入力部、出力部、通信部、記憶部（例えば、ＨＤＤ、ＳＳＤ等により実現される記憶部）、外部メディア用ドライブ等をバスＢｕｓにより接続したハードウェア構成）を用いて各機能部をソフトウェア処理により実現するようにしてもよい。
【０１３１】
また上記実施形態の各機能部をソフトウェアにより実現する場合、当該ソフトウェアは、図１４に示したハードウェア構成を有する単独のコンピュータを用いて実現されるものであってもよいし、複数のコンピュータを用いて分散処理により実現されるものであってもよい。
【０１３２】
また上記実施形態における処理方法の実行順序は、必ずしも上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【０１３３】
前述した方法をコンピュータに実行させるコンピュータプログラム、及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここでコンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、大容量ＤＶＤ、次世代ＤＶＤ、半導体メモリを挙げることができる。
【０１３４】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限らず、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【０１３５】
なお本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【産業上の利用可能性】
【０１３６】
本発明によれば、データパラレルによる手法とモデルパラレルによる手法とを適切に結合させ、学習モデルの訓練（学習）の効率を顕著に向上させるハイブリッドパラレル情報処理システムを実現することができる。このため本発明は、機械学習処理関連産業分野において有用であり、当該分野において実施することができる。
【符号の説明】
【０１３７】
１０００  機械翻訳システム
Ｇ０１、Ｇ１１、Ｇ２１、Ｇ３１  モデルパラレル処理部
Ｇ０２、Ｇ１２、Ｇ２２、Ｇ３２  データパラレル処理部
Ｇ０ｃ  管理部
【図１】
2020140438.tif 000003
【図２】
2020140438.tif 000004
【図３】
2020140438.tif 000005
【図４】
2020140438.tif 000006
【図５】
2020140438.tif 000007
【図６】
2020140438.tif 000008
【図７】
2020140438.tif 000009
【図８】
2020140438.tif 000010
【図９】
2020140438.tif 000011
【図１０】
2020140438.tif 000012
【図１１】
2020140438.tif 000013
【図１２】
2020140438.tif 000014
【図１３】
2020140438.tif 000015
【図１４】
2020140438.tif 000016