(57)【要約】【課題】分散深層学習処理をより高速に行うことができるデータ転送技術を提供することを目的とする。【解決手段】  分散深層学習システムは、通信ネットワークを介して互いに接続され、それぞれが学習データに基づく順伝搬計算および逆伝搬計算を反復的に行い、逆伝搬計算の計算結果を通信ネットワークに送出する複数の計算機１と、計算機１と通信ネットワークを介して接続され、複数の計算機１から受信した計算結果を処理して送信元に返送するＡｌｌｒｅｄｕｃｅ処理装置２とを備え、計算機１は、順伝搬計算部１１と、逆伝搬計算部１２と、逆伝搬計算部１２が逆伝搬計算の計算結果を層ごとに算出するたびに、逆伝搬計算の計算結果を転送バッファに格納する転送処理部１３と、転送バッファに格納された逆伝搬計算の計算結果を通信ネットワークを介してＡｌｌｒｅｄｕｃｅ処理装置２に順次送信する通信部１５とを有する。【選択図】  図１
2020077300.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークを介して互いに接続され、それぞれが学習データに基づく順伝搬計算および逆伝搬計算を反復的に行うとともに、逆伝搬計算の計算結果を前記通信ネットワークに送出する複数の計算機と、
前記複数の計算機と前記通信ネットワークを介して接続され、前記複数の計算機から受信した計算結果を処理して送信元に返送する集団通信部とを備え、
各計算機は、
順伝搬計算を層ごとに行う順伝搬計算部と、順伝搬計算の計算結果と設定されているラベルデータとの誤差に対するニューラルネットワークの構成パラメータの偏微分を、前記ニューラルネットワークの出力層、中間層、および入力層の順に層ごとに算出する逆伝搬計算部とを有する計算部と、
前記逆伝搬計算部が逆伝搬計算の計算結果を層ごとに算出するたびに、前記逆伝搬計算の計算結果を転送バッファに格納する転送処理部と、
前記転送バッファに格納された、前記逆伝搬計算の計算結果を、前記通信ネットワークを介して前記集団通信部に順次送信する通信部と、
を有し、
前記集団通信部は、前記逆伝搬計算の計算結果を前記複数の計算機から受信した順に処理して順次出力する
ことを特徴とする分散深層学習システム。
【請求項２】
請求項１に記載の分散深層学習システムにおいて、
前記通信部は、前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果を前記通信ネットワークを介して受信し、
前記順伝搬計算部は、前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果を前記入力データとして用いることを特徴とする分散深層学習システム。
【請求項３】
請求項２に記載の分散深層学習システムにおいて、
前記複数の計算機のそれぞれにおいて、前記順伝搬計算部に入力される前記入力データに含まれる前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果が、入力層、中間層、および出力層の順番となるように調整する調整部をさらに備えることを特徴とする分散深層学習システム。
【請求項４】
通信ネットワークを介して互いに接続された少なくとも１の計算機を備え、
前記計算機は、
前記通信ネットワークを介して外部からデータを受信する通信部と、
前記通信部で受信された受信データを転送する指示を行う第１転送指示部と、
前記第１転送指示部の指示に基づいて、前記受信データを転送バッファに記憶させる記憶部と、
前記転送バッファに記憶された前記受信データを転送する指示を行う第２転送指示部と、
前記受信データを用いてニューラルネットワークの演算を行う計算部と、
を備え、
前記第１転送指示部と前記第２転送指示部とは互いに非同期に指示を行い、
前記第２転送指示部は、前記受信データを前記計算部に転送する指示を行う
ことを特徴とする分散深層学習システム。
【請求項５】
請求項４に記載の分散深層学習システムにおいて、
前記第２転送指示部は、前記計算部による演算結果を前記転送バッファに転送する指示を行い、
前記第１転送指示部は、前記演算結果を、前記転送バッファから前記通信部に転送する指示を行い、
前記通信部は、前記第１転送指示部からの指示に基づいて転送された前記演算結果を、前記通信ネットワークを介して外部に送信する
ことを特徴とする分散深層学習システム。
【請求項６】
請求項４または請求項５に記載の分散深層学習システムにおいて、
前記記憶部は複数の転送バッファを備えることを特徴とする分散深層学習システム。
【請求項７】
請求項１から６のいずれか１項に記載の分散深層学習システムにおいて、
前記転送バッファは格納するデータサイズに応じてバッファサイズが可変に構成されることを特徴とする分散深層学習システム。
【請求項８】
通信ネットワークを介して互いに接続され、それぞれが学習データに基づく順伝搬計算および逆伝搬計算を反復的に行うとともに、逆伝搬計算の計算結果を前記通信ネットワークに送出する複数の計算機と、
前記複数の計算機と前記通信ネットワークを介して接続され、前記複数の計算機から受信した計算結果を処理して送信元に返送する集団通信部とを備え、
前記複数の計算機の各々で、学習データを含む入力データに基づいてニューラルネットワークの入力層、中間層、および出力層それぞれの順伝搬計算を層ごとに行う第１ステップと、
前記複数の計算機の各々で、順伝搬計算の計算結果と設定されているラベルデータとの誤差に対する前記ニューラルネットワークの構成パラメータの偏微分を、出力層、中間層、および入力層の順に層ごとに算出する第２ステップと、
前記複数の計算機の各々において、前記第２ステップで、逆伝搬計算の計算結果が層ごとに算出されるたびに、前記逆伝搬計算の計算結果を転送バッファに格納する第３ステップと、
前記複数の計算機の各々で、前記転送バッファに格納された、前記逆伝搬計算の計算結果を、前記通信ネットワークを介して前記集団通信部に順次送信する第４ステップと、
前記集団通信部で受信した前記逆伝搬計算の計算結果を前記複数の計算機から受信した順に処理して順次出力する第５ステップと
を備えることを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散深層学習システムおよびデータ転送方法に関し、特に、ネットワークで連携する複数の計算機を用いた分散深層学習におけるデータの転送技術に関する。
【背景技術】
【０００２】
多層ニューラルネットワークにデータの特徴を学習させる深層学習が提案されている。深層学習は、より大量の学習用データを用いて学習を行うことで分類や予測の精度が向上する。この学習処理の効率を向上させるために、複数の計算機をネットワークで連携させて各計算機が異なるデータを学習するデータ並列型の分散深層学習システムが提案されている。
【０００３】
従来の分散深層学習システムにおける深層学習では、図２０に示すように、分散深層学習システムを構成する複数の計算機のそれぞれにおいて、学習データを入力層から出力層へ順番に伝搬させ、ニューラルネットワークからの出力値が正解（「ラベルデータ」と呼ぶ）からどれだけ乖離しているかの指標となる損失関数を求める。このように、ニューラルネットワークの入力側の層から出力側の層に向かって順番に出力値を計算していく処理を「順伝搬計算」という。
【０００４】
さらに、従来の分散深層学習システムでは、各計算機において順伝搬計算により求めた損失関数値に対するニューラルネットワークの各構成パラメータ（ニューラルネットワークの重み等）による偏微分値（勾配）を求める。ニューラルネットワークの出力側の層から入力側の層に向かって順番に各層の構成パラメータに対する勾配を計算していくことから、この処理を「逆伝搬計算」と呼ぶ。深層学習では、順伝搬計算と逆伝搬計算とを反復的に行うことで精度の高い分類を実現する。
【０００５】
例えば、非特許文献１に記載された分散深層学習システムでは、逆伝搬計算の後に、さらに勾配情報を計算機間で共有および集約する集団通信（以下、「Ａｌｌｒｅｄｕｃｅ処理」という。）が行われる。非特許文献１に記載の技術では、複数の計算機のそれぞれは互いに同期しており、したがって、必ず順伝搬計算、逆伝搬計算、またはＡｌｌｒｅｄｕｃｅ処理のいずれかの状態をとる。
【０００６】
より詳細には、非特許文献１に記載された分散深層学習システムでは、図２１に示すように、互いにネットワーク接続されている複数の計算機が、それぞれの学習データに対して順伝搬計算と逆伝搬計算とを行い、計算機ごとに各層の勾配を計算する。そして、全層の勾配が算出された後に、この勾配情報を計算機間で共有するＡｌｌｒｅｄｕｃｅ処理が開始される。
【０００７】
図２２は、従来の分散深層学習システムでのデータフローの一例を示す図である（非特許文献１参照）。図２２に示すように、各計算機が備えるＧｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＧＰＵ）での逆伝搬計算により生成された勾配情報は、ＧＰＵメモリから、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）メモリ（メインメモリ）に転送される。その後、勾配情報は、Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ（ＮＩＣ）の送信バッファに転送され、Ａｌｌｒｅｄｕｃｅ処理によって計算機間で共有および集約される。
【０００８】
分散深層学習システムでＡｌｌｒｅｄｕｃｅ処理を実行するためには、異なる計算機同士で通信する必要がある。そのため、上述したように逆伝搬計算の結果をＮＩＣに転送することが必要となる。
【０００９】
Ａｌｌｒｅｄｕｃｅ処理を経て各計算機に返ってきたデータはＮＩＣの受信バッファに格納され、ＣＰＵメモリ、ＧＰＵメモリの順で転送される。深層学習では、各計算機は、Ａｌｌｒｅｄｕｃｅ処理を経て返ってきたデータを用いて順伝搬計算を行い、その後、順伝搬計算の結果を用いて再度逆伝搬計算を行う。
【００１０】
また、従来の分散深層学習システムを構成する複数の計算機では、ＣＰＵが命令を実行することでＧＰＵとメインメモリであるＣＰＵメモリ間のデータ転送、およびＮＩＣとＣＰＵメモリ間のデータ転送が行われる。データ転送はデータのやり取りをするために設けられたメモリ領域であるバッファを介して行われる。従来の技術では、各計算機が備えるＧＰＵ、ＣＰＵ、およびＮＩＣに設けられたバッファは単数であり、また、そのサイズも固定である。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Ｔａｌ  Ｂｅｎ−Ｎｕｎ  ａｎｄ  Ｔｏｒｓｔｅｎ  Ｈｏｅｆｌｅｒ，Ｄｅｍｙｓｔｉｆｙｉｎｇ  Ｐａｒａｌｌｅｌ  ａｎｄ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄｅｅｐ  Ｌｅａｒｎｉｎｇ：Ａｎ  Ｉｎ−Ｄｅｐｔｈ  Ｃｏｎｃｕｒｒｅｎｃｙ  Ａｎａｌｙｓｉｓ，ａｒＸｉｖ：１８０２．０９９４１，２０１８．，インターネット＜ｈｔｔｐｓ：／／ａｒｘｉｖ．ｏｒｇ／ａｂｓ／１８０２．０９９４１＞
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかし、従来の分散深層学習システムにおけるデータ転送技術では、学習データの順伝搬計算と逆伝搬計算とはそれぞれ異なる時間帯で行われ、全層の勾配情報が計算された後にＡｌｌｒｅｄｕｃｅ処理が開始されるため、逆伝搬計算と順伝搬計算との間の待ち時間がボトルネックとなり、分散深層学習処理の高速化を妨げる要因となっていた。
【００１３】
本発明は、上述した課題を解決するためになされたものであり、分散深層学習処理をより高速に行うことができるデータ転送技術を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決するために、本発明に係る分散深層学習システムは、通信ネットワークを介して互いに接続され、それぞれが学習データに基づく順伝搬計算および逆伝搬計算を反復的に行うとともに、逆伝搬計算の計算結果を前記通信ネットワークに送出する複数の計算機と、前記複数の計算機と前記通信ネットワークを介して接続され、前記複数の計算機から受信した計算結果を処理して送信元に返送する集団通信部とを備え、各計算機は、順伝搬計算を層ごとに行う順伝搬計算部と、順伝搬計算の計算結果と設定されているラベルデータとの誤差に対するニューラルネットワークの構成パラメータの偏微分を、前記ニューラルネットワークの出力層、中間層、および入力層の順に層ごとに算出する逆伝搬計算部とを有する計算部と、前記逆伝搬計算部が逆伝搬計算の計算結果を層ごとに算出するたびに、前記逆伝搬計算の計算結果を転送バッファに格納する転送処理部と、前記転送バッファに格納された、前記逆伝搬計算の計算結果を、前記通信ネットワークを介して前記集団通信部に順次送信する通信部と、を有し、前記集団通信部は、前記逆伝搬計算の計算結果を前記複数の計算機から受信した順に処理して順次出力することを特徴とする。
【００１５】
また、本発明に係る分散深層学習システムにおいて、前記通信部は、前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果を前記通信ネットワークを介して受信し、前記順伝搬計算部は、前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果を前記入力データとして用いてもよい。
【００１６】
また、本発明に係る分散深層学習システムにおいて、前記複数の計算機のそれぞれにおいて、前記順伝搬計算部に入力される前記入力データに含まれる前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果が、入力層、中間層、および出力層の順番となるように調整する調整部をさらに備えていてもよい。
【００１７】
上述した課題を解決するために、本発明に係る分散深層学習システムは、通信ネットワークを介して互いに接続された少なくとも１の計算機を備え、前記計算機は、前記通信ネットワークを介して外部からデータを受信する通信部と、前記通信部で受信された受信データを転送する指示を行う第１転送指示部と、前記第１転送指示部の指示に基づいて、前記受信データを転送バッファに記憶させる記憶部と、前記転送バッファに記憶された前記受信データを転送する指示を行う第２転送指示部と、前記受信データを用いてニューラルネットワークの演算を行う計算部と、を備え、前記第１転送指示部と前記第２転送指示部とは互いに非同期に指示を行い、前記第２転送指示部は、前記受信データを前記計算部に転送する指示を行うことを特徴とする。
【００１８】
また、本発明に係る分散深層学習システムにおいて、前記第２転送指示部は、前記計算部による演算結果を前記転送バッファに転送する指示を行い、前記第１転送指示部は、前記演算結果を、前記転送バッファから前記通信部に転送する指示を行い、前記通信部は、前記第１転送指示部からの指示に基づいて転送された前記演算結果を、前記通信ネットワークを介して外部に送信してもよい。
【００１９】
また、本発明に係る分散深層学習システムにおいて、前記記憶部は複数の転送バッファを備えていてもよい。
【００２０】
また、本発明に係る分散深層学習システムにおいて、前記転送バッファは格納するデータサイズに応じてバッファサイズが可変に構成されていてもよい。
【００２１】
上述した課題を解決するために、本発明に係るデータ転送方法は、通信ネットワークを介して互いに接続され、それぞれが学習データに基づく順伝搬計算および逆伝搬計算を反復的に行うとともに、逆伝搬計算の計算結果を前記通信ネットワークに送出する複数の計算機と、前記複数の計算機と前記通信ネットワークを介して接続され、前記複数の計算機から受信した計算結果を処理して送信元に返送する集団通信部とを備え、前記複数の計算機の各々で、学習データを含む入力データに基づいてニューラルネットワークの入力層、中間層、および出力層それぞれの順伝搬計算を層ごとに行う第１ステップと、前記複数の計算機の各々で、順伝搬計算の計算結果と設定されているラベルデータとの誤差に対する前記ニューラルネットワークの構成パラメータの偏微分を、出力層、中間層、および入力層の順に層ごとに算出する第２ステップと、前記複数の計算機の各々において、前記第２ステップで、逆伝搬計算の計算結果が層ごとに算出されるたびに、前記逆伝搬計算の計算結果を転送バッファに格納する第３ステップと、前記複数の計算機の各々で、前記転送バッファに格納された、前記逆伝搬計算の計算結果を、前記通信ネットワークを介して前記集団通信部に順次送信する第４ステップと、前記集団通信部で受信した前記逆伝搬計算の計算結果を前記複数の計算機から受信した順に処理して順次出力する第５ステップとを備えることを特徴とする。
【発明の効果】
【００２２】
本発明によれば、逆伝搬計算の計算結果が層ごとに算出されるたびに、逆伝搬計算の計算結果が転送バッファに格納され、集団通信部へ順次送信されてＡｌｌｒｅｄｕｃｅ処理の実行が逆伝搬計算と並行して行われるので、分散深層学習処理をより高速に行うことができる。
【図面の簡単な説明】
【００２３】
【図１】図１は、本発明の第１の実施の形態に係る分散深層学習システムの構成を示すブロック図である。
【図２】図２は、第１の実施の形態に係る計算機のハードウェア構成を示すブロック図である。
【図３】図３は、第１の実施の形態に係るデータ転送のデータフローを説明するための図である。
【図４】図４は、第１の実施の形態に係るデータ転送方法のフローを説明するための図である。
【図５】図５は、第１の実施の形態の変形例１に係るデータ転送方法のフローを説明するための図である。
【図６】図６は、第１の実施の形態の変形例２に係るデータ転送方法のフローを説明するための図である。
【図７】図７は、本発明の第２の実施の形態に係る分散深層学習システムの構成を示すブロック図である。
【図８】図８は、第２の実施の形態に係る分散深層学習システムの動作を説明するフローチャートである。
【図９】図９は、第２の実施の形態に係る調整処理を説明するためのフローチャートである。
【図１０】図１０は、第２の実施の形態に係る調整処理を説明するためのフローチャートである。
【図１１】図１１は、第２の実施の形態の変形例に係る分散深層学習システムの構成を示すブロック図である。
【図１２】図１２は、本発明の第３の実施の形態に係る分散深層学習システムの構成を示すブロック図である。
【図１３】図１３は、第３の実施の形態に係る計算機のハードウェア構成を示すブロック図である。
【図１４】図１４は、第３の実施の形態に係る分散深層学習システムの動作を説明するためのシーケンス図である。
【図１５】図１５は、第３の実施の形態に係る分散深層学習システムの動作を説明するためのシーケンス図である。
【図１６】図１６は、従来の分散深層学習システムの動作を説明するためのシーケンス図である。
【図１７】図１７は、本発明の第４の実施の形態に係る計算機のハードウェア構成を示すブロック図である。
【図１８】図１８は、第４の実施の形態に係る分散深層学習システムの動作を説明するためのシーケンス図である。
【図１９】図１９は、従来の分散深層学習システムの動作を説明するためのシーケンス図である。
【図２０】図２０は、従来の深層学習処理を説明するための図である。
【図２１】図２１は、従来の分散深層学習システムの構成例を示す図である。
【図２２】図２２は、従来のデータ転送のデータフローを説明するための図である。
【発明を実施するための形態】
【００２４】
以下、本発明の好適な実施の形態について、図１から図１９を参照して詳細に説明する。
【００２５】
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係る分散深層学習システムの構成を示すブロック図である。本実施の形態に係る分散深層学習システムは、通信ネットワークで互いに接続され、順伝搬計算および逆伝搬計算を反復的に行う複数の計算機１−０〜１−２と、これら複数の計算機１−０〜１−２と通信ネットワークで接続されたＡｌｌｒｅｄｕｃｅ処理装置２（集団通信部）とを備える。分散深層学習システムは、通信ネットワークを介して互いに接続された計算機１−０〜１−２内、および計算機１−０〜１−２とＡｌｌｒｅｄｕｃｅ処理装置２との間でデータを転送して分散深層学習を行う。
【００２６】
なお、本実施の形態において、計算機１−０〜１−２を総称して計算機１ということがある。
【００２７】
計算機１は、学習データ入力部１０、順伝搬計算部１１、逆伝搬計算部１２、転送処理部１３、記憶部１４、および通信部１５を備える。順伝搬計算部１１および逆伝搬計算部１２は、本発明に係る計算機１が備える計算部を構成する。
【００２８】
学習データ入力部１０は、外部から取得したニューラルネットワークの学習データを入力する。学習データは順伝搬計算部１１に入力される。
【００２９】
順伝搬計算部１１は、記憶部１１０と転送バッファ１１１とを備える。順伝搬計算部１１は、学習データを含む入力データに基づいて、ニューラルネットワークの順伝搬計算を行う。より詳細には、順伝搬計算部１１は、ニューラルネットワークを構成する入力層、中間層、および出力層の順に、学習データとニューラルネットワークの重みパラメータとの積和演算を行う。順伝搬計算部１１は、入力層から出力層の順伝搬方向に計算された積和演算の結果を出力する。なお、各層のノードに対応する重みパラメータは初期値として外部から与えられ、計算機１において順伝搬計算および逆伝搬計算が反復されることで重みパラメータが調整および更新され、最終的に決定される。
【００３０】
記憶部１１０は、順伝搬計算部１１によって実行された順伝搬計算の結果を記憶する。
転送バッファ１１１は、後述のＡｌｌｒｅｄｕｃｅ処理装置２によってＡｌｌｒｅｄｕｃｅ処理された逆伝搬計算の計算結果を通信部１５を介して受信し、一時的に記憶する。
【００３１】
逆伝搬計算部１２は、記憶部１２０および転送バッファ１２１を備える。逆伝搬計算部１２は、順伝搬計算の計算結果と、学習データの正解ラベル（ラベルデータ）との誤差に対するニューラルネットワークの構成パラメータの偏微分を、出力層、中間層、および入力層の順に層ごとに算出する。より詳細には、逆伝搬計算部１２は、学習データの正解ラベルと順伝搬計算部１１の計算結果が正解ラベルとどれだけ乖離しているかの指標となる損失関数Ｌを定める。逆伝搬計算部１２は、この損失関数Ｌに対するニューラルネットワークの各構成パラメータによる偏微分値を成分とするベクトル（これを勾配と呼ぶ）を各層について求める。
【００３２】
逆伝搬計算部１２は、出力層、中間層、入力層の順に逆伝搬計算を行って各層の勾配を順次出力する。
【００３３】
記憶部１２０は、逆伝搬計算部１２によって計算された各層の勾配の値を記憶する。
転送バッファ１２１は、後述のＡｌｌｒｅｄｕｃｅ処理装置２に送信する逆伝搬計算の計算結果を一時的に記憶する。転送バッファ１２１は、逆伝搬計算部１２が出力層、中間層、入力層の順に勾配を算出するたびに、層ごとの勾配を格納する。転送バッファ１２１に記憶される逆伝搬計算の計算結果は、転送バッファ１２１から計算機１のメインメモリである記憶部１４に転送され記憶される。
【００３４】
転送処理部１３は、逆伝搬計算部１２が層ごとの勾配を算出するたびに、メインメモリである記憶部１４に記憶されている層ごとの勾配を通信部１５の転送バッファ３４１に格納する。また、転送処理部１３は、Ａｌｌｒｅｄｕｃｅ処理装置２によって処理され返送された層ごとの逆伝搬計算の計算結果を、通信部１５を介して順伝搬計算部１１に転送する。
【００３５】
より詳細には、転送処理部１３は、記憶部１４に逆伝搬計算結果である各層の勾配が順次記憶されると、通信部１５に対してＡｌｌｒｅｄｕｃｅ処理装置２に勾配を順次送信する指示を行う。また、転送処理部１３は、通信部１５が各計算機１間で共有される各層の勾配をＡｌｌｒｅｄｕｃｅ処理装置２から受信すると、記憶部１４にその勾配を順次記憶する指示を行う。
【００３６】
記憶部１４は、計算機１のメインメモリである。記憶部１４は、逆伝搬計算部１２による計算結果を記憶する。また、記憶部１４は、Ａｌｌｒｅｄｕｃｅ処理装置２によって処理され返送された層ごとの勾配情報を記憶する。より詳細には、記憶部１４に記憶されるＡｌｌｒｅｄｕｃｅ処理された勾配情報は、通信部１５がＡｌｌｒｅｄｕｃｅ処理装置２から受信し、さらに転送処理部１３の指示に応じて通信部１５から転送されてきたデータである。
【００３７】
記憶部１４は、逆伝搬計算部１２によって算出される各層の勾配を記憶する領域を有する。また、記憶部１４は、Ａｌｌｒｅｄｕｃｅ処理装置２から返送された勾配情報を記憶する領域を有する。
【００３８】
通信部１５は、転送バッファ１５０を備え、計算機１と通信ネットワークを介して接続されているＡｌｌｒｅｄｕｃｅ処理装置２とのデータのやり取りを行うインターフェースである。また、計算機１は、通信部１５を介して他の計算機とのデータのやり取りを行うことができる。
【００３９】
通信部１５は、転送処理部１３からの指示に基づいてＡｌｌｒｅｄｕｃｅ処理装置２から返送された勾配情報を記憶部１４に転送する。より詳細には、通信部１５は受信した勾配情報を転送バッファ１５０に一時的に記憶し、転送処理部１３の指示に応じて記憶部１４の所定の領域に転送する。
【００４０】
また、通信部１５は、転送処理部１３の指示に基づいて、記憶部１４に記憶されている逆伝搬計算部１２によって計算された各層の勾配を順次取得して、転送バッファ１５０に一時的に記憶してから、Ａｌｌｒｅｄｕｃｅ処理装置２に順次送信する。
【００４１】
Ａｌｌｒｅｄｕｃｅ処理装置２は、例えば、上述した計算機１と同様の演算機能を有する装置で構成される。Ａｌｌｒｅｄｕｃｅ処理装置２は、計算機１−０〜１−２の逆伝搬計算部１２でそれぞれ計算された層ごとの勾配を受信し、受信した順に層ごとに勾配を集約し、計算機１−０〜１−２間で共有させるＡｌｌｒｅｄｕｃｅ処理を行う。Ａｌｌｒｅｄｕｃｅ処理装置２は、例えば、計算機１−０〜１−２のそれぞれから出力層の勾配を受信し、出力層全体の勾配を集約し、集約した出力層の勾配を各計算機１−０〜１−２に返送する。同様に、Ａｌｌｒｅｄｕｃｅ処理装置２は、中間層および入力層についても層ごとのＡｌｌｒｅｄｕｃｅ処理を行う。
【００４２】
なお、Ａｌｌｒｅｄｕｃｅ処理装置２は、各層の勾配の集約において、例えば、層ごとの勾配の平均を計算して、各計算機１−０〜１−２に返送してもよい。また、別の例として、Ａｌｌｒｅｄｕｃｅ処理装置２は、勾配の平均の代わりに勾配の和を計算するようにしてもよい。例えば、次の重みパラメータの更新処理時の学習率ηに（１／計算機の数）を乗じれば、勾配の平均値を求めるのと同じ結果になる。さらに、勾配の平均の代わりに、各勾配に重みづけ定数をかけて重み付き平均を用いるようにしてもよいし、各勾配の二乗の和をとるようにしてもよい。
【００４３】
また、Ａｌｌｒｅｄｕｃｅ処理装置２は、層ごとの逆伝搬計算の結果をＡｌｌｒｅｄｕｃｅ処理し、重みパラメータを含むニューラルネットワークの層ごとの構成パラメータの更新式を決定し各計算機１に返送してもよい。この更新式によって損失関数Ｌがより小さくなるように、ニューラルネットワークの各層の構成パラメータが更新される。例えば、勾配降下法を用いて更新式を決定してもよい。
【００４４】
また、本実施の形態では、３台の計算機１−０〜１−２が通信ネットワークを介して互いに接続されている構成を例に挙げるが、計算機１の台数はこれに限られない。また、Ａｌｌｒｅｄｕｃｅ処理装置２は、計算機１とは独立した装置として設けられる場合を例に挙げて説明するが、Ａｌｌｒｅｄｕｃｅ処理装置２は、通信ネットワークを介して接続された複数の計算機１のうちの一つにその機能が設けられていてもよい。
【００４５】
［計算機のハードウェア構成］
次に、上述した計算機１のハードウェア構成について図２を参照して説明する。
図２に示すように、計算機１は、ＣＰＵ１０１、メインメモリ１０２、ＧＰＵ１０３、およびＮＩＣ１０６を備える。
【００４６】
ＣＰＵ１０１は、図１で説明した転送処理部１３の機能を実現する。
メインメモリ１０２は、図１で説明した記憶部１４を実現する。
ＧＰＵ１０３は、図１で説明した順伝搬計算部１１および逆伝搬計算部１２を実現する。ＧＰＵ１０３は、メモリ１０４と転送バッファ１０５を備える。
【００４７】
メモリ１０４は、図１で説明した順伝搬計算部１１および逆伝搬計算部１２がそれぞれ備える記憶部１１０、１２０を実現する。
転送バッファ１０５は、図１で説明した順伝搬計算部１１および逆伝搬計算部１２がそれぞれ備える転送バッファ１１１、１２１を実現する。
【００４８】
ＮＩＣ１０６は、図１で説明した通信部１５を実現する。ＮＩＣ１０６は、転送バッファ１０７を備え、これは、図１の通信部１５が備える転送バッファ１５０に対応する。
【００４９】
なお、前述したように図１のＡｌｌｒｅｄｕｃｅ処理装置２についても上記の計算機１と同様に構成された計算機によって実現してもよい。
【００５０】
［データ転送処理のデータフローの概要］
次に、本実施の形態に係る分散深層学習システムによるデータ転送処理の概要について、図２および図３を用いて説明する。
【００５１】
図３に示すように、ＧＰＵ１０３において、層ごとの逆伝搬計算が行われ、層ごとの計算結果が順番にＧＰＵ１０３のメモリ１０４に記憶されていく。これと並行して、ＧＰＵ１０３のメモリ１０４に記憶された層ごとの逆伝搬計算の結果は、計算結果が算出された順にメインメモリ１０２に転送される。また、これと並行して、ＣＰＵ１０１の指示に応じてメインメモリ１０２から層ごとの逆伝搬計算の結果が順番にＮＩＣの転送バッファ１０７に転送される。
【００５２】
また、これと並行して、ＮＩＣ１０６は、入ってきた層ごとの逆伝搬計算の結果を、順番に通信ネットワークを介してＡｌｌｒｅｄｕｃｅ処理装置２に送信する。さらに、Ａｌｌｒｅｄｕｃｅ処理装置２は、層ごとの逆伝搬計算の結果のＡｌｌｒｅｄｕｃｅ処理を行い、層ごとのＡｌｌｒｅｄｕｃｅ処理の出力を、通信ネットワークを介してＮＩＣ１０６に返送する。
【００５３】
また、これと並行して、ＮＩＣ１０６の転送バッファ１０７に記憶されている層ごとのＡｌｌｒｅｄｕｃｅ処理の出力は、メインメモリ１０２に順番に転送される。さらに、これと並行して、ＧＰＵ１０３は、メインメモリ１０２からＡｌｌｒｅｄｕｃｅ処理された層ごとの出力を取得し、順伝搬計算を実行する。
【００５４】
このように、本実施の形態では、計算機１において、層ごとに順番に計算された逆伝搬計算の結果をその出力順に転送し、層ごとにＡｌｌｒｅｄｕｃｅ処理が行われ、再び計算機１へ返送されて順伝搬計算が行われる。
【００５５】
［データ転送方法］
次に、上述した本実施の形態のデータ転送方法の詳細について、図４を用いて説明する。
図４に示すように、分散深層学習システムを構成する計算機１−０〜１−２は、それぞれ順伝搬計算を行う（ステップＳ１−０，Ｓ１−１，Ｓ１−２）。より詳細には、学習データ入力部１０は外部からの入力に応じて、学習データ１，３，５をそれぞれの計算機１−０〜１−２の順伝搬計算部１１に入力する。
【００５６】
より具体的には、学習データ１，３，５は、順伝搬計算部１１の入力層に入力層の重みパラメータとともに入力される。入力層での重みパラメータと学習データとの積和演算の結果は中間層に入力され、中間層の重みパラメータとの積和演算が行われる。中間層の出力は出力層の入力として用いられ、出力層において重みパラメータとの積和演算が行われ、その結果がニューラルネットワークの順伝搬計算の結果として記憶部１１０に記憶される。
【００５７】
その後、各計算機１−０〜１−２の逆伝搬計算部１２は、順伝搬計算の結果を変数にとる損失関数Ｌを定め、出力層、中間層、入力層の順に各層の勾配を算出する（逆伝搬計算：ステップＳ２−０，Ｓ２−１，Ｓ２−２）。より詳細には、逆伝搬計算部１２によって算出された出力層の勾配から順に各層の勾配は転送バッファ１２１に格納されて、その順番に従って計算機１−０〜１−２のメインメモリである記憶部１４に転送される。
【００５８】
転送処理部１３は、通信部１５に対して勾配の送信を指示すると、通信部１５は、記憶部１４に記憶されている層ごとの勾配を記憶された順番に読み出して、転送バッファ１５０に格納する。通信部１５は、まず出力層の勾配をＡｌｌｒｅｄｕｃｅ処理装置２に送信する。出力層の勾配を受信したＡｌｌｒｅｄｕｃｅ処理装置２は、各計算機１−０〜１−２で計算された出力層の勾配が集まるとＡｌｌｒｅｄｕｃｅ処理を実行する（ステップＳ３）。
【００５９】
その後、同様に、通信部１５は中間層の勾配をＡｌｌｒｅｄｕｃｅ処理装置２に送信する。中間層の勾配を受信したＡｌｌｒｅｄｕｃｅ処理装置２は、各計算機１−０〜１−２で計算された中間層の勾配が集まるとＡｌｌｒｅｄｕｃｅ処理を実行する（ステップＳ４）。
【００６０】
その後、同様に、通信部１５は入力層の勾配をＡｌｌｒｅｄｕｃｅ処理装置２に送信する。入力層の勾配を受信したＡｌｌｒｅｄｕｃｅ処理装置２は、各計算機１−０〜１−２で計算された入力層の勾配が集まるとＡｌｌｒｅｄｕｃｅ処理を実行する（ステップＳ５）。
【００６１】
次に、ステップＳ３からステップＳ５でそれぞれ出力されるＡｌｌｒｅｄｕｃｅ処理された出力層の勾配情報、中間層の勾配情報、および入力層の勾配情報に基づいて、出力層、中間層、および入力層の重みパラメータの更新式が定められる（ステップＳ６−０，Ｓ６−１，Ｓ６−２）。例えば、Ａｌｌｒｅｄｕｃｅ処理装置２が、各層の重みパラメータの更新式をＡｌｌｒｅｄｕｃｅ処理の出力として通信ネットワークを介して各計算機１−０〜１−２の通信部１５に返送してもよい。
【００６２】
その後、各計算機１−０〜１−２の順伝搬計算部１１は、受信したＡｌｌｒｅｄｕｃｅ処理された各層の勾配情報に基づいて順伝搬計算を行う（ステップＳ７−０，Ｓ７−１，Ｓ７−２）。より詳細には、各計算機１−０〜１−２の通信部１５は、受信したＡｌｌｒｅｄｕｃｅ処理の出力に基づく各層の重みパラメータの更新式を転送バッファ１５０において一時的に格納し、記憶部１４に転送する。
【００６３】
その後、順伝搬計算部１１は、記憶部１４から層ごとの更新式を読み出して順伝搬計算部１１の転送バッファ１１１に格納する。順伝搬計算部１１は、新たな学習データ２，４，６および各層の更新済み重みを入力として順伝搬計算を行う。そして、順伝搬計算の結果は再び逆伝搬計算部１２に入力される。なお、順伝搬計算部１１は、予め各層の更新式を用いて、各層についての更新済みの重みパラメータを求めておく。
【００６４】
以上説明したように、第１の実施の形態に係る分散深層学習システムによれば、各層の逆伝搬計算の結果が算出され次第、各層の勾配情報をＧＰＵ１０３のメモリ１０４からメインメモリ１０２に転送し、各層ごとにＡｌｌｒｅｄｕｃｅ処理を行う。第１の実施の形態に係る分散深層学習システムでは、逆伝搬計算とＡｌｌｒｅｄｕｃｅ処理とを並行して実行することができるので、逆伝搬計算から順伝搬計算の開始までの待ち時間が低減され、分散深層学習処理をより高速に行うことができる。
【００６５】
また、第１の実施の形態に係る分散深層学習システムでは、多層ニューラルネットワークの各層の勾配情報の全てをＮＩＣ１０６の転送バッファ１０７に乗せる必要がなくなるために、ＮＩＣの小型化および省電力化が可能になる。
【００６６】
また、第１の実施の形態に係る分散深層学習システムでは、一度に大量のデータを送受信する必要がなくなるため、パケットロスなどに対して頑健になる。
【００６７】
また、第１の実施の形態に係る分散深層学習システムでは、ＣＰＵ１０１の使用率を下げることができるので、消費電力を低減し、発熱を抑えることができる。
【００６８】
［変形例１］
次に、第１の実施の形態の変形例１について、図５を参照して説明する。
前述したようにＧＰＵ１０３は、複数の処理を並行して実行することができるデバイスである。ＧＰＵ１０３（逆伝搬計算部１２）が実行する逆伝搬計算は、行列演算として行われる。この行列演算はブロック化（タイリング法）と呼ばれるアルゴリズムで実行される。この方法はＧＰＵ１０３が備える図示しないキャッシュにあるデータを再利用することで計算の高速化を図る手法である。
【００６９】
例えば、行列積Ａ×Ｂ＝Ｃを考えると、Ａの行列成分をキャッシュに残しながら、Ｂの各列成分とのベクトル積を実行する。Ｃの１行分の計算が終了するまではＡの行成分はキャッシュに残る。このＣの１行分を単位として、１行分の演算が終了し次第ＧＰＵ１０３のメモリ１０４からメインメモリ１０２にその１行分の演算結果を転送する。そして、Ａｌｌｒｅｄｕｃｅ処理装置２において各層の行成分に対するＡｌｌｒｅｄｕｃｅ処理が実行される（図５のステップＳ３Ａ，Ｓ４Ａ，Ｓ５Ａ）。なお、転送されるデータは層間ではサイズが異なるが、層内では同じサイズのデータである。
【００７０】
このように、変形例１では、逆伝搬計算においてタイリング法により各層の行成分ごとのＡｌｌｒｅｄｕｃｅ処理を実行するので、転送されるデータ量をより小さくすることができる。
【００７１】
［変形例２］
次に第１の実施の形態の変形例２について、図６を参照して説明する。
変形例１では、逆伝搬計算が行列演算として行われる点に着目したデータ転送について説明した。変形例２に係る分散深層学習システムでは、Ａｌｌｒｅｄｕｃｅ処理装置２において、各層の各行列要素ごとにＡｌｌｒｅｄｕｃｅ処理を実行する。
【００７２】
勾配情報は、通常、行列かベクトルである。そのため、ＧＰＵ１０３（逆伝搬計算部１２）において各層の勾配情報の行列またはベクトルの各成分の演算が終了し次第、層ごとの各成分はＧＰＵ１０３のメモリ１０４からメインメモリ１０２に転送される。そして、層ごとの各成分はＮＩＣ１０６からＡｌｌｒｅｄｕｃｅ処理装置２に送信され、例えば、出力層の各行列要素ごとにＡｌｌｒｅｄｕｃｅ処理が実行される（ステップＳ３Ｂ）。同様に、中間層、入力層についても各行列要素ごとにＡｌｌｒｅｄｕｃｅ処理が実行される（ステップＳ４Ｂ、Ｓ５Ｂ）。
【００７３】
このように、各層の行列またはベクトルの成分ごとにデータを転送し、Ａｌｌｒｅｄｕｃｅ処理を行うので、転送されるデータ量をより小さくすることができる。なお、転送されるデータはサイズが同じである。
【００７４】
［第２の実施の形態］
次に、本発明の第２の実施の形態について説明する。なお、以下の説明では、上述した第１の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【００７５】
第１の実施の形態では、逆伝搬計算とＡｌｌｒｅｄｕｃｅ処理とを並行して実行する場合について説明した。これに対して第２の実施の形態では、Ａｌｌｒｅｄｕｃｅ処理と順伝搬計算とを並行して実行する。以下、第１の実施の形態と異なる構成を中心に説明する。
【００７６】
図７に示すように、第２の実施の形態に係る分散深層学習システムにおいて、計算機１−０〜１−２は転送データの順序を入れ替える調整部１６をさらに備える。なお、第２の実施の形態の分散深層学習システムを構成する計算機１のハードウェア構成は第１の実施の形態（図２）と同様である。なお、調整部１６は、図２に示すＣＰＵ１０１によって実現される。
【００７７】
調整部１６は、計算機１−０〜１−２のそれぞれにおいて、順伝搬計算部１１に入力される入力データに含まれる、Ａｌｌｒｅｄｕｃｅ処理された層ごとの逆伝搬計算の計算結果が、入力層、中間層、および出力層の順番となるように調整する。
【００７８】
調整部１６は、例えば、Ａｌｌｒｅｄｕｃｅ処理装置２に送信する前に、記憶部１４に記憶されている層ごとの逆伝搬計算の計算結果の順番を逆順にする。
【００７９】
前述したように、順伝搬計算部１１および逆伝搬計算部１２を実現するＧＰＵ１０３は、複数の処理を並行して実行することができるデバイスである。そのため、ＧＰＵ１０３は、Ａｌｌｒｅｄｕｃｅ処理された層ごとの勾配情報を、計算機１のメインメモリである記憶部１４から取得しながら、順伝搬計算を実行することができる。
【００８０】
また、順伝搬計算は、入力層、中間層、出力層の順に計算が行われ、順伝搬計算を開始するにあたり各層におけるＡｌｌｒｅｄｕｃｅ処理の結果が必要となる（図４のステップＳ６−０〜Ｓ６−２、ステップＳ７−０〜Ｓ７−２）。すなわち、順伝搬計算では、Ａｌｌｒｅｄｕｃｅ処理された勾配情報を用いて得られた、更新済みの各層の重みパラメータおよび新たな学習データを入力として入力層から順番に積和演算が行われる。
【００８１】
一方で、逆伝搬計算は、出力層、中間層、入力層の順に計算されて勾配が出力される。そのため、本実施の形態に係る調整部１６は、順伝搬計算部１１に入力されるＡｌｌｒｅｄｕｃｅ処理された勾配の順番を、入力層、中間層、出力層の順番に入れ替える。
【００８２】
［データ転送方法］
次に、本実施の形態に係る分散深層学習システムの動作について、図８から図１０のフローチャートを参照して説明する。まず、逆伝搬計算部１２は、出力層、中間層、入力層の順に層ごとの逆伝搬計算を行う（ステップＳ８０）。層ごとの逆伝搬計算の結果は記憶部１２０に記憶される。また、このとき、出力層、中間層、入力層の順に、逆伝搬計算の結果が転送バッファ１２１に格納されて、転送処理部１３の指示に応じて計算機１のメインメモリである記憶部１４に順次転送される。
【００８３】
次に、調整部１６は、記憶部１４に転送された各層の逆伝搬計算の結果が記憶される順序を調整する（ステップＳ８１）。より詳細には、調整部１６は、出力層、中間層、入力層の順に記憶部１４に転送された逆伝搬計算の結果である各層の勾配の順序を入力層、中間層、出力層の順に入れ替えて記憶部１４に記憶させる。その後、転送処理部１３の指示に基づいて、通信部１５は記憶部１４に記憶されている逆伝搬計算の結果を、入力層、中間層、出力層の順にＡｌｌｒｅｄｕｃｅ処理装置２に送信する。
【００８４】
その後、Ａｌｌｒｅｄｕｃｅ処理装置２は、初めに受信した入力層の勾配についてＡｌｌｒｅｄｕｃｅ処理を行う（ステップＳ８２）。Ａｌｌｒｅｄｕｃｅ処理の出力は、通信ネットワークを介して通信部１５に返送され、転送バッファ１５０に格納される。転送処理部１３は、通信部１５にデータの転送指示を送り、通信部１５は、記憶部１４にＡｌｌｒｅｄｕｃｅ処理された入力層の勾配を記憶させる。
【００８５】
次に、順伝搬計算部１１は、記憶部１４からＡｌｌｒｅｄｕｃｅ処理された入力層の勾配情報を取得し、入力層の順伝搬計算を実行する（ステップＳ８３）。より詳細には、順伝搬計算部１１は、記憶部１４からＡｌｌｒｅｄｕｃｅ処理された入力層の勾配情報を取得して、転送バッファ１１１に格納する。その後、順伝搬計算部１１は、取得した入力層の勾配情報に基づいて更新済み重みパラメータを算出し、学習データと更新済み重みパラメータとを入力として入力層の積和演算を行う。入力層における順伝搬計算の結果は記憶部１１０に記憶される。
【００８６】
次に、Ａｌｌｒｅｄｕｃｅ処理装置２は、入力層に続いて受信した中間層の勾配についてＡｌｌｒｅｄｕｃｅ処理を行う（ステップＳ８４）。その後、順伝搬計算部１１は、同様に、記憶部１４からＡｌｌｒｅｄｕｃｅ処理された中間層の勾配情報を取得し、中間層の順伝搬計算を実行する（ステップＳ８５）。
【００８７】
その後、Ａｌｌｒｅｄｕｃｅ処理装置２は、中間層の逆伝搬計算の結果に続いて受信した出力層の勾配についてＡｌｌｒｅｄｕｃｅ処理を行う（ステップＳ８６）。その後、順伝搬計算部１１は、同様に、記憶部１４からＡｌｌｒｅｄｕｃｅ処理された出力層の勾配情報を取得し、出力層の順伝搬計算を実行する（ステップＳ８７）。
【００８８】
ここで、ステップＳ８１において調整部１６が行う調整処理について図８および図９を参照して説明する。
【００８９】
調整部１６が行うデータ順序の調整は、いわゆるデータの先入れ後出し方式の処理である。調整部１６は、例えば、図８に示すような公知のラスト・イン・ファースト・アウト（ＬＩＦＯ）方式により調整処理を行うことができる。また、別の例として、調整部１６は、公知のカットスルー方式により調整処理を行うことができる。
【００９０】
まず、ＬＩＦＯ方式による調整部１６の処理を説明する。図８に示すように、調整部１６は、逆伝搬計算部１２から記憶部１４に転送されてきた順にデータを記憶部１４に格納させる（ステップＳ８１０）。具体的には、調整部１６は、出力層、中間層、入力層の順に転送された逆伝搬計算の計算結果である勾配を、転送順に記憶部１４の所定の領域に格納する。
【００９１】
次に、記憶部１４の所定の領域に格納されているデータ量が設定されたしきい値以下の場合には（ステップＳ８１１：ＮＯ）、引き続き、転送されてくるデータを記憶部１４に格納する（ステップＳ８１０）。
【００９２】
一方、記憶部１４の所定の領域に格納されているデータ量が設定されたしきい値を上回る場合には（ステップＳ８１０：ＹＥＳ）、調整部１６は、通信部１５に対して、しきい値を上回る直前のデータからデータを読み込む指示を行う（ステップＳ８１２）。通信部１５は、しきい値を上回る直前のデータから順にデータを読み込み、転送バッファ１５０にデータを格納する。
【００９３】
その後、通信部１５は、通信ネットワークを介して転送バッファ１５０に格納されているデータを、読み込んだ順にＡｌｌｒｅｄｕｃｅ処理装置２に送信（転送）する（ステップＳ８１３）。なお、調整部１６は、ステップＳ８１２で記憶部１４の所定の領域に格納されているデータを全て読み出した場合には、再びステップＳ８１０に移行し、層ごとの逆伝搬計算の結果を記憶部１４の領域に格納させる。その後、処理は、図８のステップＳ８２に戻り、Ａｌｌｒｅｄｕｃｅ処理および順伝搬計算が実行される。
【００９４】
次に、調整部１６が、公知のカットスルー方式により調整処理を行う場合について、図１０のフローチャートを参照して説明する。
【００９５】
まず、調整部１６は、記憶部１４に転送された逆伝搬計算の結果である層ごとの勾配のデータの先頭に、そのデータの層情報を記録しておく（ステップＳ９１０）。次に、記憶部１４の予め設定されている領域が空である場合（ステップＳ９１１：ＹＥＳ）、記憶部１４はデータを設定された領域に格納する（ステップＳ９１２）。
【００９６】
一方、記憶部１４において設定された記憶領域にデータが格納されている場合は（ステップＳ９１１：ＮＯ）、調整部１６は、格納対象のデータの先頭の層情報を読み込む（ステップＳ９１３）。その後、読み込んだ格納対象のデータの層情報と先に記憶部１４の設定領域に格納されているデータの層情報とを比較する（ステップＳ９１４）。
【００９７】
より詳細には、調整部１６は、格納対象のデータの層情報と既に格納されているデータの層情報とでどちらが入力層に近いデータであるかを比較判定する。その後、調整部１６は、通信部１５に対して、入力層に近いデータから順にデータを読み込む指示を行う（ステップＳ９１５）。通信部１５は、入力層に近いデータから順に転送バッファ１５０にデータを格納する。
【００９８】
その後、通信部１５は、転送バッファ１５０に格納されているデータを格納されている順番にＡｌｌｒｅｄｕｃｅ処理装置２に転送（送信）する（ステップＳ９１６）。その後、処理は、図８のステップＳ８２に戻り、Ａｌｌｒｅｄｕｃｅ処理および順伝搬計算が実行される。なお、ステップＳ９１６で転送バッファ１５０に格納されたデータが全て送信された場合には、再び転送される層ごとの逆伝搬計算の結果のデータに対する層情報の記録（ステップＳ９１０以降の処理）が開始される。
【００９９】
なお、上述した調整部１６は、逆伝搬計算部１２から記憶部１４に転送および格納される各層の計算結果の転送順序を調整する場合を例に挙げて説明した。しかし、調整部１６は、順伝搬計算部１１に入力される入力データの順番が、入力層、中間層、出力層の順番となるように調整できれば他の構成を採用してもよい。
【０１００】
例えば、調整部１６は、記憶部１４に記憶されている逆伝搬計算の結果が通信部１５に転送されるタイミングで、これらのデータの順序を調整してもよい。具体的には、調整部１６は、図８のステップＳ８１において、逆伝搬計算の結果がＡｌｌｒｅｄｕｃｅ処理装置２に送信される際に、転送バッファ１５０に格納されるデータの順序を入力層に近い層の逆伝搬計算の結果から順に入れ替えて調整してもよい。
【０１０１】
また、この例においても、調整部１６は、図９または図１０で説明した先入れ後出しの処理を用いることができる。
【０１０２】
また、上記説明では、調整部１６が、Ａｌｌｒｅｄｕｃｅ処理の前において、データの順序を調整する場合を例に挙げて説明した。しかし、前述したように、調整部１６は、順伝搬計算部１１に入力されるデータが入力層から出力層の順番となるように調整されることができれば、Ａｌｌｒｅｄｕｃｅ処理の後または途中において、調整部１６がデータの順序を入れ替えてもよい。
【０１０３】
以上説明したように、第２の実施の形態に係る分散深層学習システムよれば、出力層、中間層、入力層の順に出力される逆伝搬計算の結果を、入力層、中間層、出力層の順序に入れ替えるので、ＧＰＵ１０３（順伝搬計算部１１）において実行される順伝搬計算とＡｌｌｒｅｄｕｃｅ処理とを並行に行うことができる。そのため、逆伝搬計算から順伝搬計算の開始までの待ち時間が低減され、分散深層学習処理をより高速に行うことができる。
【０１０４】
また、第２の実施の形態に係る分散深層学習システムよれば、多層ニューラルネットワークの各層の勾配情報の全てをＮＩＣ１０６の転送バッファ１０７に乗せる必要がなくなるので、ＮＩＣの小型化および省電力化が可能になる。
【０１０５】
また、第２の実施の形態に係る分散深層学習システムよれば、大量のデータを送受信する必要がなくなるため、パケットロスなどに対して頑健になる。
【０１０６】
また、第２の実施の形態に係る分散深層学習システムよれば、ＣＰＵ１０１の使用率を下げることができ、結果として消費電力の低減、および発熱を低減することが可能となる。
【０１０７】
［変形例］
次に、第２の実施の形態の変形例に係る分散深層学習システムについて、図１１および図１２を参照して説明する。変形例に係る分散深層学習システムは、図１１に示すように、計算機１−０〜１−２およびＡｌｌｒｅｄｕｃｅ処理装置２と互いに通信ネットワークを介して接続された調整部１６’を備える。この変形例では、調整部１６’は、Ａｌｌｒｅｄｕｃｅ処理の途中においてデータの順序を調整する。なお、調整部１６’の機能は、第２の実施の形態で説明した調整部１６と同様である。
【０１０８】
調整部１６’は、例えば、ネットワークスイッチなどによって構成することができる。調整部１６’は、計算機１の通信部１５を介して出力層、中間層、入力層の順に送信されてくる逆伝搬計算の結果の順序を逆順にして、入力層に近い層から順にＡｌｌｒｅｄｕｃｅ処理装置２に転送する。Ａｌｌｒｅｄｕｃｅ処理装置２は、入力層に近い層の逆伝搬計算の結果を優先的にＡｌｌｒｅｄｕｃｅ処理する。
【０１０９】
なお、上記変形例においても、調整部１６’は、図９または図１０で説明したＬＩＦＯ方式やカットスルー方式を採用することができる。
【０１１０】
［第３の実施の形態］
次に、本発明の第３の実施の形態について説明する。なお、以下の説明では、上述した第１および第２の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【０１１１】
第３の実施の形態に係る分散深層学習システムでは、各計算機３０においてＧＰＵ３０３が有するメモリ３０４とＣＰＵ３０１のメモリ、すなわち計算機３０のメインメモリ３０２との間のデータ転送はＧＰＵ３０３の命令で実行し、メインメモリ３０２とＮＩＣ３０６の転送バッファ３０７との間のデータ転送は、ＣＰＵ３０１の命令で実行する。
【０１１２】
本実施の形態に係る分散深層学習システムは、少なくとも１つの計算機３０を有する。例えば、図１２に示すように、分散深層学習システムは、複数の計算機３０が通信ネットワークを介して互いに接続されている。各計算機３０は同様の構成を有する。
【０１１３】
図１２に示すように、計算機３０は、転送処理部３１、記憶部３２、計算部３３、および通信部３４を備える。
【０１１４】
転送処理部３１は、ＣＰＵ−ＮＩＣ転送指示部３１０（第１転送指示部）を備える。転送処理部３１は、計算機３０のメインメモリである記憶部３２に記憶されているデータを、通信部３４へ転送する。
【０１１５】
ＣＰＵ−ＮＩＣ転送指示部３１０は、通信部３４に対して、通信ネットワークを介して接続されている他の計算機３０や図示されないＡｌｌｒｅｄｕｃｅ処理装置などから受信したデータを記憶部３２に転送する指示を行う。また、ＣＰＵ−ＮＩＣ転送指示部３１０は、通信部３４に対して、外部へ送信するデータを記憶部３２から通信部３４へ転送する指示を行う。
【０１１６】
記憶部３２は、計算機３０が備えるメインメモリである。記憶部３２は、計算機３０から外部に送信される計算部３３の計算結果を予め設定された領域に記憶する。また、記憶部３２には、外部から受信されたデータが転送され、予め設定された領域に記憶される。例えば、外部からＡｌｌｒｅｄｕｃｅ処理された逆伝搬計算の結果などは、記憶部３２の設定された領域に記憶される。
【０１１７】
計算部３３は、ＧＰＵ−ＣＰＵ転送指示部３３０（第２転送指示部）、記憶部３３１、および転送バッファ３３２を備える。計算部３３は、例えば、ニューラルネットワークの順伝搬計算および逆伝搬計算を行う。
【０１１８】
ＧＰＵ−ＣＰＵ転送指示部３３０は、記憶部３２へのデータの転送や記憶部３２からのデータの取得を行う。
記憶部３３１は、計算部３３によって実行された計算結果を記憶する。
【０１１９】
転送バッファ３３２は、記憶部３３１に記憶されている計算結果を読み出して、一時的に記憶する。転送バッファ３３２に記憶されているデータは、ＧＰＵ−ＣＰＵ転送指示部３３０からの指示に応じて記憶部３２に転送される。
【０１２０】
また、転送バッファ３３２は、ＧＰＵ−ＣＰＵ転送指示部３３０の指示に応じて、記憶部３２から取得されたデータを一時的に記憶する。転送バッファ３３２に記憶されている外部から受信されたデータは、計算部３３が計算を行う際に用いられる。例えば、計算部３３は、外部から受信されたＡｌｌｒｅｄｕｃｅ処理された各層の勾配情報を用いて順伝搬計算を行う。
【０１２１】
通信部３４は、確認部３４０および転送バッファ３４１を備える。通信部３４は、計算機３０と通信ネットワークを介して接続されている他の計算機３０とのデータのやり取りを行うインターフェースである。
【０１２２】
通信部３４は、転送処理部３１からの指示に基づいて外部から受信したデータを記憶部３２に転送する。また、通信部３４は、転送処理部３１からの指示に基づいて計算部３３から記憶部３２に転送されたデータを取得して、外部に送信する。
【０１２３】
確認部３４０は、通信部３４が外部から受信したデータを記憶部３２に転送する際に、記憶部３２の設定された領域に空きがあるかを確認する。また、確認部３４０は、通信部３４が外部へ送信するデータが記憶部３２の設定された領域に記憶されているかを確認する。
【０１２４】
転送バッファ３４１は、通信部３４が外部から受信したデータを一時的に記憶する。また転送バッファ３４１は、通信部３４が外部へ送信するデータを一時的に記憶する。
【０１２５】
［計算機のハードウェア構成］
次に、本実施の形態に係る計算機３０のハードウェア構成について、図１３を参照して説明する。
【０１２６】
図１３に示すように、計算機３０は、ＣＰＵ３０１、メインメモリ３０２、ＧＰＵ３０３、およびＮＩＣ３０６を備える。
【０１２７】
ＣＰＵ３０１は、図１２で説明した転送処理部１３の機能を実現する。
メインメモリ３０２は、図１２で説明した記憶部３２を実現する。
【０１２８】
ＧＰＵ３０３は、図１２で説明した計算部３３を実現する。ＧＰＵ３０３は、メモリ３０４と転送バッファ３０５を備える。ＧＰＵ３０３は、メインメモリ３０２からのデータの取得およびＧＰＵ３０３による計算結果のメインメモリ３０２への転送を行う。また、ＧＰＵ３０３は、例えば、ニューラルネットワークの層ごとの逆伝搬計算と、逆伝搬計算の結果のメインメモリ３０２への転送を並行して実行する。
【０１２９】
ＧＰＵ３０３が備えるメモリ３０４は、図１２で説明した記憶部３３１を実現する。
転送バッファ３０５は、図１２で説明した計算部３３が備える転送バッファ３３２を実現する。
【０１３０】
ＮＩＣ３０６は、図１２で説明した通信部３４を実現する。ＮＩＣ３０６は、転送バッファ３０７を備え、これは、図１２の通信部３４が備える転送バッファ３４１に対応する。
【０１３１】
［データ転送処理］
上述した構成を有する計算機３０の動作シーケンスについて図１４から図１６を参照して説明する。まず、計算機３０が外部からデータを受信した場合のデータ転送処理について説明する。
【０１３２】
図１４に示すように、通信部３４は、通信ネットワークを介して外部からデータを受信する（ステップＳ３００）。なお、通信部３４は、ステップＳ３００において、受信したデータを転送バッファ３４１に格納する。
【０１３３】
次に、確認部３４０は、受信されたデータの転送先である記憶部３２の設定された領域に空きがあることを確認する（ステップＳ３０１）。より詳細には、確認部３４０は、転送処理部３１を介して記憶部３２の空き領域を確認する。
【０１３４】
一方で、計算部３３のＧＰＵ−ＣＰＵ転送指示部３３０は、記憶部３２に取得対象の受信データが転送され記憶されているかを確認する（ステップＳ３０２）。このように、通信部３４と計算部３３とはそれぞれ非同期で記憶部３２の確認を行う。
【０１３５】
その後、ＣＰＵ−ＮＩＣ転送指示部３１０は、通信部３４に対して、記憶部３２の設定された領域にデータを格納する指示を行う（ステップＳ３０３）。その後、通信部３４は転送バッファ３４１に格納されている受信されたデータを記憶部３２に転送する（ステップＳ３０４）。続いて、計算部３３のＧＰＵ−ＣＰＵ転送指示部３３０は、ステップＳ３０２において記憶部３２に転送されたデータがあることが確認されると、記憶部３２からデータを取得する（ステップＳ３０５）。取得されたデータは、計算部３３の転送バッファ３３２に格納される。
【０１３６】
次に、計算機３０がデータを外部に出力する場合について、図１５を用いて説明する。
図１５に示すように、通信部３４が備える確認部３４０は、外部に送信するデータが記憶部３２に記憶されているかを確認する（ステップＳ３０６）。より詳細には、確認部３４０は、転送処理部３１を介して記憶部３２のデータの有無を確認する。
【０１３７】
一方で、計算部３３のＧＰＵ−ＣＰＵ転送指示部３３０は、記憶部３２の設定された領域に空きがあるかを確認する（ステップＳ３０７）。このように、通信部３４と計算部３３とは、それぞれ非同期に記憶部３２を確認する。
【０１３８】
その後、ＧＰＵ−ＣＰＵ転送指示部３３０は、記憶部３２に空き領域があることを確認すると（ステップＳ３０８）、転送バッファ３３２に格納されているデータを記憶部３２に転送する（ステップＳ３０９）。その後、通信部３４は、ステップＳ３０６において計算部３３からの転送データが記憶部３２に記憶されていることが確認されると、記憶部３２からデータを取得する（ステップＳ３１０）。通信部３４は、転送バッファ３４１にデータを格納し、通信ネットワークを介して外部の計算機３０などにデータを送信する（ステップＳ３１１）。
【０１３９】
ここで、本実施の形態に係る分散深層学習システムにおけるデータ転送処理との比較のために従来例のデータ転送処理について図１６を用いて説明する。
【０１４０】
図１６に示すように、従来例においては、まず、通信部は通信ネットワークを介して外部からデータを受信する（ステップＳ１３００）。次に、通信部は、転送処理部を介して記憶部の所定の領域に空きがあるかを確認する（ステップＳ１３０１）。通信部は、記憶部の所定の領域に空きがあることを確認すると、転送処理部からの転送指示を受信する（ステップＳ１３０２）。
【０１４１】
次に、通信部は、転送処理部からの指示に基づいて、計算部が備える記憶部に空き領域があることを確認する（ステップＳ１３０３）。通信部は、計算部に空き領域があることを確認すると、転送処理部を介して転送指示を受信する（ステップＳ１３０４）。
【０１４２】
その後、通信部は、転送バッファから計算機のメインメモリである記憶部および計算部の記憶部に受信したデータを転送する（ステップＳ１３０５）。
【０１４３】
ここで、図１４および図１５で説明した本実施の形態に係る分散深層学習システムにおけるデータ転送処理では、通信部３４と転送処理部３１（記憶部３２）間のバッファチェック、および計算部３３と転送処理部（記憶部３２）とのバッファチェックはそれぞれ非同期で行われる。そのため、本実施の形態におけるバッファチェックに要する時間Ｔ１は、図１６で説明した従来例のデータ転送処理において同期的に行われていたバッファチェックに要した時間Ｔ’と比較してより短縮される。
【０１４４】
以上説明したように、第３の実施の形態に係る分散深層学習システムは、計算部３３（ＧＰＵ３０３）の指示によりＧＰＵ３０３とメインメモリ３０２との間のデータ転送を行い、かつ、転送処理部３１（ＣＰＵ３０１）の指示により、通信部３４（ＮＩＣ３０６）とメインメモリ３０２との間のデータ転送を行う。このように非同期にデータを転送することで、計算機３０内の転送遅延を低減させることができる。
【０１４５】
また、本実施の形態に係る分散深層学習システムは、ＮＩ３０６の転送バッファ３０７条のデータを低遅延にメインメモリ３０２に転送できるので、外部からデータを受信する際の受信の待ち時間を低減できる。
【０１４６】
また、本実施の形態に係る分散深層学習システムは、プロセスを分割して非同期にデータ転送を行うので、ＮＩＣ３０６の転送バッファ３０７があふれることに対して頑健になる。
【０１４７】
また、本実施の形態に係る分散深層学習システムによれば、計算機３０を構成する各デバイスが備える転送バッファが空となる時間が低減されるので、ＮＩＣ３０６においてデータ送受信の待ち時間を低減することができる。
【０１４８】
また、本実施の形態に係る分散深層学習システムによれば、ＣＰＵ３０１の使用率を下げることができ、消費電力の低減、および発熱を低減することができる。
【０１４９】
また、本実施の形態に係る分散深層学習システムは、ＣＰＵ３０１を使用していない合間の時間に、別の処理を実行するので、データ転送以外の処理についても高速化することができる。
【０１５０】
また、本実施の形態に係る分散深層学習システムは、各計算機３０においてデータ転送をより効率的に行うことができるので、より高速に分散深層学習処理を行うことができる。
【０１５１】
［第４の実施の形態］
次に、本発明の第４の実施の形態について説明する。なお、以下の説明では、上述した第１から第３の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【０１５２】
第３の実施の形態では、計算機内のデータ転送の指示をＣＰＵ３０１とＧＰＵ３０３とがそれぞれ非同期で行う場合について説明した。これに対して第４の実施の形態では、メインメモリ３０２およびＧＰＵ３０３においてそれぞれ複数の転送バッファをさらに有する。以下、第１から第３の実施の形態と異なる構成を中心に説明する。
【０１５３】
図１７に示すように、本実施の形態に係る分散深層学習システムを構成する計算機３０Ａは、ＣＰＵ３０１、メインメモリ３０２、ＧＰＵ３０３、およびＮＩＣ３０６を備える。メインメモリ３０２は、複数の転送バッファ３０２ａ〜３０３ｆを備える。また、ＧＰＵ３０３についても、複数の転送バッファ３０５ａ〜３０５ｆを備える。
【０１５４】
なお、本実施の形態に係る分散深層学習システムおよびこれを構成する計算機３０Ａの機能構成は、第３の実施の形態と同様である（図１２）。
【０１５５】
次に、本実施の形態に係る計算機３０Ａにおけるデータ転送処理について、図１８および図１９のシーケンス図を用いて説明する。
【０１５６】
図１８に示すように、通信部３４は、通信ネットワークを介して外部からデータを受信する（ステップＳ３００）。より詳細には、通信部３４はステップＳ３００で、受信したデータを転送バッファ３４１に格納する。
【０１５７】
次に、確認部３４０は、受信されたデータの転送先である記憶部３２の設定された領域に空きがあることを確認する（ステップＳ３０１）。より詳細には、確認部３４０は、転送処理部３１を介して記憶部３２（メインメモリ３０２の転送バッファ３０３ａ〜３０３ｆ）に空きがあることを確認する。
【０１５８】
一方で、計算部３３のＧＰＵ−ＣＰＵ転送指示部３３０は、記憶部３２に取得対象の受信データが転送され記憶されているかを確認する（ステップＳ３０２）。このように、通信部３４と計算部３３とはそれぞれ非同期で記憶部３２の確認を行う。
【０１５９】
その後、ＣＰＵ−ＮＩＣ転送指示部３１０は、通信部３４に対し、記憶部３２の設定された領域にデータを格納する指示を行う（ステップＳ３０３）。その後、通信部３４は転送バッファ３４１に格納されている受信データを記憶部３２の複数の領域に転送する（ステップＳ３０４Ａ）。具体的には、受信されたデータは、メインメモリ３０２の転送バッファ３０３ａ〜３０３ｆにバースト転送される。
【０１６０】
続いて、計算部３３のＧＰＵ−ＣＰＵ転送指示部３３０は、ステップＳ３０２において記憶部３２に転送されたデータがあることを確認すると、記憶部３２の複数の領域からデータを取得する（ステップＳ３０５Ａ）。具体的には、ＧＰＵ−ＣＰＵ転送指示部３３０は、記憶部３２の複数の領域に受信データの断片が格納された時点で、受信データの取得を開始する。ステップＳ３０５Ａにおいて実行されるデータの取得についても、複数の転送バッファ３０６ａ〜３０６ｆを用いたバースト転送により行われる。取得されたデータは、計算部３３の転送バッファ３３２に格納される。
【０１６１】
ここで、本実施の形態に係るデータ転送処理との比較のために従来例のバースト転送を用いたデータ転送処理について図１９を用いて説明する。
【０１６２】
図１９に示すように、まず、通信部は通信ネットワークを介して外部からデータを受信する（ステップＳ１３００）。次に、通信部は、転送処理部を介して記憶部の所定の領域に空きがあるかを確認する（ステップＳ１３０１）。通信部は、記憶部の所定の領域に空きがあることを確認すると、転送処理部からの転送指示を受信する（ステップＳ１３０２）。
【０１６３】
次に、通信部は、転送処理部からの指示に基づいて、計算部が備える記憶部に空き領域があることを確認する（ステップＳ１３０３）。通信部は、計算部に空き領域があることを確認すると、転送処理部を介して転送指示を受信する（ステップＳ１３０４）。
【０１６４】
その後、通信部は、転送バッファから計算機のメインメモリである記憶部に、受信したデータをバースト転送する（ステップＳ１３０５Ａ）。通信部とメインメモリ間でのバースト転送が完了すると、計算機はメインメモリからバースト転送により受信データを取得する（ステップＳ１３０５Ｂ）。
【０１６５】
ここで、図１８で説明した本実施の形態に係るデータ転送処理では、通信部３４と転送処理部３１（記憶部３２）間のバッファチェック、および計算部３３と転送処理部（記憶部３２）とのバッファチェックはそれぞれ非同期で行われる。さらにデータの転送処理についても非同期で行われるので、バッファチェックに要する時間Ｔ１およびデータの転送に要する時間Ｔ２は、図１９で説明した従来例のバースト転送において同期的に行われていたバッファチェックに必要な時間Ｔ’およびデータ転送に要した時間Ｔ’と比較して、より短縮される。
【０１６６】
以上説明したように、第４の実施の形態によれば、計算機３０ＡにおいてＣＰＵ３０１およびＧＰＵ３０３は互いに非同期にデータの転送指示を行い、複数の転送バッファ３０２ａ〜３０２ｆ、３０５ａ〜３０５ｆを用いてデータをバースト転送するので、計算機３０Ａ内でのデータの転送遅延を低減させることができる。
【０１６７】
また、本実施の形態によれば、ＮＩＣ３０６でのデータ送受信の待ち時間が短縮されるので、計算機３０Ａ内での処理を高速化することができる。
【０１６８】
また、本実施の形態では、複数の転送バッファ３０２ａ〜３０２ｆ、３０５ａ〜３０５ｆを用いるので、転送するデータのサイズが比較的大きい場合に、計算機３０Ａ内の転送スループットを向上させることができる。特に、第１の実施の形態で説明したような、ニューラルネットワークの層ごとの演算結果を転送するような場合に有効である。
【０１６９】
また、本実施の形態では、各計算機の転送遅延を低減することができるので、複数の計算機で構成される分散深層学習システムの処理をより高速に行うことができる。
【０１７０】
［第５の実施の形態］
次に、本発明の第５の実施の形態について説明する。なお、以下の説明では、上述した第１から第４の実施の形態と同じ構成については同一の符号を用い、その説明を省略する。
【０１７１】
第１から第４の実施の形態では、転送バッファのサイズは固定である場合を仮定した。これに対し、第５の実施の形態では、転送バッファのバッファサイズを転送するデータサイズに合わせて可変とする構成を採用する。
【０１７２】
従来、転送バッファなどのバッファサイズは固定であり、転送されるデータに対して動的に変化させることはなかった。しかし、転送データに対してバッファのサイズが大きすぎる場合にはデータ転送時間の遅延の原因となったり、占有メモリ領域が大きくなったり、また、転送後にメモリをサーチする際の実行時間が増大するなどの問題がある。
【０１７３】
逆に、転送データに対してバッファのサイズが小さすぎる場合には、データ転送を何度も繰り返す必要が生じ、データ転送時間の遅延の原因となる。
【０１７４】
本実施の形態では、分散深層学習システムを構成する各計算機において用いられる転送バッファのサイズを転送するデータサイズに合わせて動的に変化させる。例えば、ニューラルネットワークの逆伝搬計算の結果のデータサイズに合わせたバッファサイズとなるように、転送バッファのバッファサイズを可変とする。
【０１７５】
また、別の例として、第１の実施の形態で説明したように、各計算機による逆伝搬計算の結果を、行列の行ごとや要素ごとに処理してデータ転送する場合、転送されるデータサイズが予め決定されている。このような場合には、転送バッファのサイズをデータサイズに合わせて予め設定することができる。
【０１７６】
このように、第５の実施の形態によれば、転送されるデータサイズに合わせて転送バッファのバッファサイズを最適化するので、計算機内でのデータの転送時間の遅延を低減することができる。
【０１７７】
また、バッファサイズが最適化されることで、記憶部において占有するメモリ領域を減少させることができる。その結果として、記憶部において格納されているデータの転送順を変更する際のメモリサーチに要する時間を低減することができる。
【０１７８】
また、分散深層学習システムを構成する各計算機においてバッファサイズが最適化された転送バッファを用いるので、分散深層学習をより高速に行うことができる。
【０１７９】
以上、本発明の分散深層学習システムおよびデータ転送方法における実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
【符号の説明】
【０１８０】
１，１−０〜１−２…計算機、２…Ａｌｌｒｅｄｕｃｅ処理装置、１０…学習データ入力部、１１…順伝搬計算部、１２…逆伝搬計算部、１３…転送処理部、１４，１１０，１２０…記憶部、１５…通信部、１１１，１２１，１５０，１０５，１０７…転送バッファ、１０１…ＣＰＵ、１０２…メインメモリ、１０３…ＧＰＵ、１０４…メモリ、１０６…ＮＩＣ。
【図１】
2020077300.tif 000003
【図２】
2020077300.tif 000004
【図３】
2020077300.tif 000005
【図４】
2020077300.tif 000006
【図５】
2020077300.tif 000007
【図６】
2020077300.tif 000008
【図７】
2020077300.tif 000009
【図８】
2020077300.tif 000010
【図９】
2020077300.tif 000011
【図１０】
2020077300.tif 000012
【図１１】
2020077300.tif 000013
【図１２】
2020077300.tif 000014
【図１３】
2020077300.tif 000015
【図１４】
2020077300.tif 000016
【図１５】
2020077300.tif 000017
【図１６】
2020077300.tif 000018
【図１７】
2020077300.tif 000019
【図１８】
2020077300.tif 000020
【図１９】
2020077300.tif 000021
【図２０】
2020077300.tif 000022
【図２１】
2020077300.tif 000023
【図２２】
2020077300.tif 000024