JP2020077300A - 分散深層学習システムおよびデータ転送方法 - Google Patents

分散深層学習システムおよびデータ転送方法 Download PDF

Info

Publication number
JP2020077300A
JP2020077300A JP2018211345A JP2018211345A JP2020077300A JP 2020077300 A JP2020077300 A JP 2020077300A JP 2018211345 A JP2018211345 A JP 2018211345A JP 2018211345 A JP2018211345 A JP 2018211345A JP 2020077300 A JP2020077300 A JP 2020077300A
Authority
JP
Japan
Prior art keywords
unit
calculation
transfer
data
layer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2018211345A
Other languages
English (en)
Inventor
顕至 田仲
Kenji Tanaka
顕至 田仲
勇輝 有川
Yuki Arikawa
勇輝 有川
健治 川合
Kenji Kawai
健治 川合
順一 加藤
Junichi Kato
順一 加藤
伊藤 猛
Takeshi Ito
伊藤  猛
フィクー ゴー
Huycu Ngo
フィクー ゴー
坂本 健
Takeshi Sakamoto
健 坂本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2018211345A priority Critical patent/JP2020077300A/ja
Priority to PCT/JP2019/042008 priority patent/WO2020095729A1/ja
Priority to US17/291,082 priority patent/US20210357760A1/en
Publication of JP2020077300A publication Critical patent/JP2020077300A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】分散深層学習処理をより高速に行うことができるデータ転送技術を提供することを目的とする。【解決手段】分散深層学習システムは、通信ネットワークを介して互いに接続され、それぞれが学習データに基づく順伝搬計算および逆伝搬計算を反復的に行い、逆伝搬計算の計算結果を通信ネットワークに送出する複数の計算機1と、計算機1と通信ネットワークを介して接続され、複数の計算機1から受信した計算結果を処理して送信元に返送するAllreduce処理装置2とを備え、計算機1は、順伝搬計算部11と、逆伝搬計算部12と、逆伝搬計算部12が逆伝搬計算の計算結果を層ごとに算出するたびに、逆伝搬計算の計算結果を転送バッファに格納する転送処理部13と、転送バッファに格納された逆伝搬計算の計算結果を通信ネットワークを介してAllreduce処理装置2に順次送信する通信部15とを有する。【選択図】 図1

Description

本発明は、分散深層学習システムおよびデータ転送方法に関し、特に、ネットワークで連携する複数の計算機を用いた分散深層学習におけるデータの転送技術に関する。
多層ニューラルネットワークにデータの特徴を学習させる深層学習が提案されている。深層学習は、より大量の学習用データを用いて学習を行うことで分類や予測の精度が向上する。この学習処理の効率を向上させるために、複数の計算機をネットワークで連携させて各計算機が異なるデータを学習するデータ並列型の分散深層学習システムが提案されている。
従来の分散深層学習システムにおける深層学習では、図20に示すように、分散深層学習システムを構成する複数の計算機のそれぞれにおいて、学習データを入力層から出力層へ順番に伝搬させ、ニューラルネットワークからの出力値が正解(「ラベルデータ」と呼ぶ)からどれだけ乖離しているかの指標となる損失関数を求める。このように、ニューラルネットワークの入力側の層から出力側の層に向かって順番に出力値を計算していく処理を「順伝搬計算」という。
さらに、従来の分散深層学習システムでは、各計算機において順伝搬計算により求めた損失関数値に対するニューラルネットワークの各構成パラメータ(ニューラルネットワークの重み等)による偏微分値(勾配)を求める。ニューラルネットワークの出力側の層から入力側の層に向かって順番に各層の構成パラメータに対する勾配を計算していくことから、この処理を「逆伝搬計算」と呼ぶ。深層学習では、順伝搬計算と逆伝搬計算とを反復的に行うことで精度の高い分類を実現する。
例えば、非特許文献1に記載された分散深層学習システムでは、逆伝搬計算の後に、さらに勾配情報を計算機間で共有および集約する集団通信(以下、「Allreduce処理」という。)が行われる。非特許文献1に記載の技術では、複数の計算機のそれぞれは互いに同期しており、したがって、必ず順伝搬計算、逆伝搬計算、またはAllreduce処理のいずれかの状態をとる。
より詳細には、非特許文献1に記載された分散深層学習システムでは、図21に示すように、互いにネットワーク接続されている複数の計算機が、それぞれの学習データに対して順伝搬計算と逆伝搬計算とを行い、計算機ごとに各層の勾配を計算する。そして、全層の勾配が算出された後に、この勾配情報を計算機間で共有するAllreduce処理が開始される。
図22は、従来の分散深層学習システムでのデータフローの一例を示す図である(非特許文献1参照)。図22に示すように、各計算機が備えるGraphics Processing Unit(GPU)での逆伝搬計算により生成された勾配情報は、GPUメモリから、Central Processing Unit(CPU)メモリ(メインメモリ)に転送される。その後、勾配情報は、Network Interface Card(NIC)の送信バッファに転送され、Allreduce処理によって計算機間で共有および集約される。
分散深層学習システムでAllreduce処理を実行するためには、異なる計算機同士で通信する必要がある。そのため、上述したように逆伝搬計算の結果をNICに転送することが必要となる。
Allreduce処理を経て各計算機に返ってきたデータはNICの受信バッファに格納され、CPUメモリ、GPUメモリの順で転送される。深層学習では、各計算機は、Allreduce処理を経て返ってきたデータを用いて順伝搬計算を行い、その後、順伝搬計算の結果を用いて再度逆伝搬計算を行う。
また、従来の分散深層学習システムを構成する複数の計算機では、CPUが命令を実行することでGPUとメインメモリであるCPUメモリ間のデータ転送、およびNICとCPUメモリ間のデータ転送が行われる。データ転送はデータのやり取りをするために設けられたメモリ領域であるバッファを介して行われる。従来の技術では、各計算機が備えるGPU、CPU、およびNICに設けられたバッファは単数であり、また、そのサイズも固定である。
Tal Ben−Nun and Torsten Hoefler,Demystifying Parallel and Distributed Deep Learning:An In−Depth Concurrency Analysis,arXiv:1802.09941,2018.,インターネット<https://arxiv.org/abs/1802.09941>
しかし、従来の分散深層学習システムにおけるデータ転送技術では、学習データの順伝搬計算と逆伝搬計算とはそれぞれ異なる時間帯で行われ、全層の勾配情報が計算された後にAllreduce処理が開始されるため、逆伝搬計算と順伝搬計算との間の待ち時間がボトルネックとなり、分散深層学習処理の高速化を妨げる要因となっていた。
本発明は、上述した課題を解決するためになされたものであり、分散深層学習処理をより高速に行うことができるデータ転送技術を提供することを目的とする。
上述した課題を解決するために、本発明に係る分散深層学習システムは、通信ネットワークを介して互いに接続され、それぞれが学習データに基づく順伝搬計算および逆伝搬計算を反復的に行うとともに、逆伝搬計算の計算結果を前記通信ネットワークに送出する複数の計算機と、前記複数の計算機と前記通信ネットワークを介して接続され、前記複数の計算機から受信した計算結果を処理して送信元に返送する集団通信部とを備え、各計算機は、順伝搬計算を層ごとに行う順伝搬計算部と、順伝搬計算の計算結果と設定されているラベルデータとの誤差に対するニューラルネットワークの構成パラメータの偏微分を、前記ニューラルネットワークの出力層、中間層、および入力層の順に層ごとに算出する逆伝搬計算部とを有する計算部と、前記逆伝搬計算部が逆伝搬計算の計算結果を層ごとに算出するたびに、前記逆伝搬計算の計算結果を転送バッファに格納する転送処理部と、前記転送バッファに格納された、前記逆伝搬計算の計算結果を、前記通信ネットワークを介して前記集団通信部に順次送信する通信部と、を有し、前記集団通信部は、前記逆伝搬計算の計算結果を前記複数の計算機から受信した順に処理して順次出力することを特徴とする。
また、本発明に係る分散深層学習システムにおいて、前記通信部は、前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果を前記通信ネットワークを介して受信し、前記順伝搬計算部は、前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果を前記入力データとして用いてもよい。
また、本発明に係る分散深層学習システムにおいて、前記複数の計算機のそれぞれにおいて、前記順伝搬計算部に入力される前記入力データに含まれる前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果が、入力層、中間層、および出力層の順番となるように調整する調整部をさらに備えていてもよい。
上述した課題を解決するために、本発明に係る分散深層学習システムは、通信ネットワークを介して互いに接続された少なくとも1の計算機を備え、前記計算機は、前記通信ネットワークを介して外部からデータを受信する通信部と、前記通信部で受信された受信データを転送する指示を行う第1転送指示部と、前記第1転送指示部の指示に基づいて、前記受信データを転送バッファに記憶させる記憶部と、前記転送バッファに記憶された前記受信データを転送する指示を行う第2転送指示部と、前記受信データを用いてニューラルネットワークの演算を行う計算部と、を備え、前記第1転送指示部と前記第2転送指示部とは互いに非同期に指示を行い、前記第2転送指示部は、前記受信データを前記計算部に転送する指示を行うことを特徴とする。
また、本発明に係る分散深層学習システムにおいて、前記第2転送指示部は、前記計算部による演算結果を前記転送バッファに転送する指示を行い、前記第1転送指示部は、前記演算結果を、前記転送バッファから前記通信部に転送する指示を行い、前記通信部は、前記第1転送指示部からの指示に基づいて転送された前記演算結果を、前記通信ネットワークを介して外部に送信してもよい。
また、本発明に係る分散深層学習システムにおいて、前記記憶部は複数の転送バッファを備えていてもよい。
また、本発明に係る分散深層学習システムにおいて、前記転送バッファは格納するデータサイズに応じてバッファサイズが可変に構成されていてもよい。
上述した課題を解決するために、本発明に係るデータ転送方法は、通信ネットワークを介して互いに接続され、それぞれが学習データに基づく順伝搬計算および逆伝搬計算を反復的に行うとともに、逆伝搬計算の計算結果を前記通信ネットワークに送出する複数の計算機と、前記複数の計算機と前記通信ネットワークを介して接続され、前記複数の計算機から受信した計算結果を処理して送信元に返送する集団通信部とを備え、前記複数の計算機の各々で、学習データを含む入力データに基づいてニューラルネットワークの入力層、中間層、および出力層それぞれの順伝搬計算を層ごとに行う第1ステップと、前記複数の計算機の各々で、順伝搬計算の計算結果と設定されているラベルデータとの誤差に対する前記ニューラルネットワークの構成パラメータの偏微分を、出力層、中間層、および入力層の順に層ごとに算出する第2ステップと、前記複数の計算機の各々において、前記第2ステップで、逆伝搬計算の計算結果が層ごとに算出されるたびに、前記逆伝搬計算の計算結果を転送バッファに格納する第3ステップと、前記複数の計算機の各々で、前記転送バッファに格納された、前記逆伝搬計算の計算結果を、前記通信ネットワークを介して前記集団通信部に順次送信する第4ステップと、前記集団通信部で受信した前記逆伝搬計算の計算結果を前記複数の計算機から受信した順に処理して順次出力する第5ステップとを備えることを特徴とする。
本発明によれば、逆伝搬計算の計算結果が層ごとに算出されるたびに、逆伝搬計算の計算結果が転送バッファに格納され、集団通信部へ順次送信されてAllreduce処理の実行が逆伝搬計算と並行して行われるので、分散深層学習処理をより高速に行うことができる。
図1は、本発明の第1の実施の形態に係る分散深層学習システムの構成を示すブロック図である。 図2は、第1の実施の形態に係る計算機のハードウェア構成を示すブロック図である。 図3は、第1の実施の形態に係るデータ転送のデータフローを説明するための図である。 図4は、第1の実施の形態に係るデータ転送方法のフローを説明するための図である。 図5は、第1の実施の形態の変形例1に係るデータ転送方法のフローを説明するための図である。 図6は、第1の実施の形態の変形例2に係るデータ転送方法のフローを説明するための図である。 図7は、本発明の第2の実施の形態に係る分散深層学習システムの構成を示すブロック図である。 図8は、第2の実施の形態に係る分散深層学習システムの動作を説明するフローチャートである。 図9は、第2の実施の形態に係る調整処理を説明するためのフローチャートである。 図10は、第2の実施の形態に係る調整処理を説明するためのフローチャートである。 図11は、第2の実施の形態の変形例に係る分散深層学習システムの構成を示すブロック図である。 図12は、本発明の第3の実施の形態に係る分散深層学習システムの構成を示すブロック図である。 図13は、第3の実施の形態に係る計算機のハードウェア構成を示すブロック図である。 図14は、第3の実施の形態に係る分散深層学習システムの動作を説明するためのシーケンス図である。 図15は、第3の実施の形態に係る分散深層学習システムの動作を説明するためのシーケンス図である。 図16は、従来の分散深層学習システムの動作を説明するためのシーケンス図である。 図17は、本発明の第4の実施の形態に係る計算機のハードウェア構成を示すブロック図である。 図18は、第4の実施の形態に係る分散深層学習システムの動作を説明するためのシーケンス図である。 図19は、従来の分散深層学習システムの動作を説明するためのシーケンス図である。 図20は、従来の深層学習処理を説明するための図である。 図21は、従来の分散深層学習システムの構成例を示す図である。 図22は、従来のデータ転送のデータフローを説明するための図である。
以下、本発明の好適な実施の形態について、図1から図19を参照して詳細に説明する。
[第1の実施の形態]
図1は、本発明の第1の実施の形態に係る分散深層学習システムの構成を示すブロック図である。本実施の形態に係る分散深層学習システムは、通信ネットワークで互いに接続され、順伝搬計算および逆伝搬計算を反復的に行う複数の計算機1−0〜1−2と、これら複数の計算機1−0〜1−2と通信ネットワークで接続されたAllreduce処理装置2(集団通信部)とを備える。分散深層学習システムは、通信ネットワークを介して互いに接続された計算機1−0〜1−2内、および計算機1−0〜1−2とAllreduce処理装置2との間でデータを転送して分散深層学習を行う。
なお、本実施の形態において、計算機1−0〜1−2を総称して計算機1ということがある。
計算機1は、学習データ入力部10、順伝搬計算部11、逆伝搬計算部12、転送処理部13、記憶部14、および通信部15を備える。順伝搬計算部11および逆伝搬計算部12は、本発明に係る計算機1が備える計算部を構成する。
学習データ入力部10は、外部から取得したニューラルネットワークの学習データを入力する。学習データは順伝搬計算部11に入力される。
順伝搬計算部11は、記憶部110と転送バッファ111とを備える。順伝搬計算部11は、学習データを含む入力データに基づいて、ニューラルネットワークの順伝搬計算を行う。より詳細には、順伝搬計算部11は、ニューラルネットワークを構成する入力層、中間層、および出力層の順に、学習データとニューラルネットワークの重みパラメータとの積和演算を行う。順伝搬計算部11は、入力層から出力層の順伝搬方向に計算された積和演算の結果を出力する。なお、各層のノードに対応する重みパラメータは初期値として外部から与えられ、計算機1において順伝搬計算および逆伝搬計算が反復されることで重みパラメータが調整および更新され、最終的に決定される。
記憶部110は、順伝搬計算部11によって実行された順伝搬計算の結果を記憶する。
転送バッファ111は、後述のAllreduce処理装置2によってAllreduce処理された逆伝搬計算の計算結果を通信部15を介して受信し、一時的に記憶する。
逆伝搬計算部12は、記憶部120および転送バッファ121を備える。逆伝搬計算部12は、順伝搬計算の計算結果と、学習データの正解ラベル(ラベルデータ)との誤差に対するニューラルネットワークの構成パラメータの偏微分を、出力層、中間層、および入力層の順に層ごとに算出する。より詳細には、逆伝搬計算部12は、学習データの正解ラベルと順伝搬計算部11の計算結果が正解ラベルとどれだけ乖離しているかの指標となる損失関数Lを定める。逆伝搬計算部12は、この損失関数Lに対するニューラルネットワークの各構成パラメータによる偏微分値を成分とするベクトル(これを勾配と呼ぶ)を各層について求める。
逆伝搬計算部12は、出力層、中間層、入力層の順に逆伝搬計算を行って各層の勾配を順次出力する。
記憶部120は、逆伝搬計算部12によって計算された各層の勾配の値を記憶する。
転送バッファ121は、後述のAllreduce処理装置2に送信する逆伝搬計算の計算結果を一時的に記憶する。転送バッファ121は、逆伝搬計算部12が出力層、中間層、入力層の順に勾配を算出するたびに、層ごとの勾配を格納する。転送バッファ121に記憶される逆伝搬計算の計算結果は、転送バッファ121から計算機1のメインメモリである記憶部14に転送され記憶される。
転送処理部13は、逆伝搬計算部12が層ごとの勾配を算出するたびに、メインメモリである記憶部14に記憶されている層ごとの勾配を通信部15の転送バッファ341に格納する。また、転送処理部13は、Allreduce処理装置2によって処理され返送された層ごとの逆伝搬計算の計算結果を、通信部15を介して順伝搬計算部11に転送する。
より詳細には、転送処理部13は、記憶部14に逆伝搬計算結果である各層の勾配が順次記憶されると、通信部15に対してAllreduce処理装置2に勾配を順次送信する指示を行う。また、転送処理部13は、通信部15が各計算機1間で共有される各層の勾配をAllreduce処理装置2から受信すると、記憶部14にその勾配を順次記憶する指示を行う。
記憶部14は、計算機1のメインメモリである。記憶部14は、逆伝搬計算部12による計算結果を記憶する。また、記憶部14は、Allreduce処理装置2によって処理され返送された層ごとの勾配情報を記憶する。より詳細には、記憶部14に記憶されるAllreduce処理された勾配情報は、通信部15がAllreduce処理装置2から受信し、さらに転送処理部13の指示に応じて通信部15から転送されてきたデータである。
記憶部14は、逆伝搬計算部12によって算出される各層の勾配を記憶する領域を有する。また、記憶部14は、Allreduce処理装置2から返送された勾配情報を記憶する領域を有する。
通信部15は、転送バッファ150を備え、計算機1と通信ネットワークを介して接続されているAllreduce処理装置2とのデータのやり取りを行うインターフェースである。また、計算機1は、通信部15を介して他の計算機とのデータのやり取りを行うことができる。
通信部15は、転送処理部13からの指示に基づいてAllreduce処理装置2から返送された勾配情報を記憶部14に転送する。より詳細には、通信部15は受信した勾配情報を転送バッファ150に一時的に記憶し、転送処理部13の指示に応じて記憶部14の所定の領域に転送する。
また、通信部15は、転送処理部13の指示に基づいて、記憶部14に記憶されている逆伝搬計算部12によって計算された各層の勾配を順次取得して、転送バッファ150に一時的に記憶してから、Allreduce処理装置2に順次送信する。
Allreduce処理装置2は、例えば、上述した計算機1と同様の演算機能を有する装置で構成される。Allreduce処理装置2は、計算機1−0〜1−2の逆伝搬計算部12でそれぞれ計算された層ごとの勾配を受信し、受信した順に層ごとに勾配を集約し、計算機1−0〜1−2間で共有させるAllreduce処理を行う。Allreduce処理装置2は、例えば、計算機1−0〜1−2のそれぞれから出力層の勾配を受信し、出力層全体の勾配を集約し、集約した出力層の勾配を各計算機1−0〜1−2に返送する。同様に、Allreduce処理装置2は、中間層および入力層についても層ごとのAllreduce処理を行う。
なお、Allreduce処理装置2は、各層の勾配の集約において、例えば、層ごとの勾配の平均を計算して、各計算機1−0〜1−2に返送してもよい。また、別の例として、Allreduce処理装置2は、勾配の平均の代わりに勾配の和を計算するようにしてもよい。例えば、次の重みパラメータの更新処理時の学習率ηに(1/計算機の数)を乗じれば、勾配の平均値を求めるのと同じ結果になる。さらに、勾配の平均の代わりに、各勾配に重みづけ定数をかけて重み付き平均を用いるようにしてもよいし、各勾配の二乗の和をとるようにしてもよい。
また、Allreduce処理装置2は、層ごとの逆伝搬計算の結果をAllreduce処理し、重みパラメータを含むニューラルネットワークの層ごとの構成パラメータの更新式を決定し各計算機1に返送してもよい。この更新式によって損失関数Lがより小さくなるように、ニューラルネットワークの各層の構成パラメータが更新される。例えば、勾配降下法を用いて更新式を決定してもよい。
また、本実施の形態では、3台の計算機1−0〜1−2が通信ネットワークを介して互いに接続されている構成を例に挙げるが、計算機1の台数はこれに限られない。また、Allreduce処理装置2は、計算機1とは独立した装置として設けられる場合を例に挙げて説明するが、Allreduce処理装置2は、通信ネットワークを介して接続された複数の計算機1のうちの一つにその機能が設けられていてもよい。
[計算機のハードウェア構成]
次に、上述した計算機1のハードウェア構成について図2を参照して説明する。
図2に示すように、計算機1は、CPU101、メインメモリ102、GPU103、およびNIC106を備える。
CPU101は、図1で説明した転送処理部13の機能を実現する。
メインメモリ102は、図1で説明した記憶部14を実現する。
GPU103は、図1で説明した順伝搬計算部11および逆伝搬計算部12を実現する。GPU103は、メモリ104と転送バッファ105を備える。
メモリ104は、図1で説明した順伝搬計算部11および逆伝搬計算部12がそれぞれ備える記憶部110、120を実現する。
転送バッファ105は、図1で説明した順伝搬計算部11および逆伝搬計算部12がそれぞれ備える転送バッファ111、121を実現する。
NIC106は、図1で説明した通信部15を実現する。NIC106は、転送バッファ107を備え、これは、図1の通信部15が備える転送バッファ150に対応する。
なお、前述したように図1のAllreduce処理装置2についても上記の計算機1と同様に構成された計算機によって実現してもよい。
[データ転送処理のデータフローの概要]
次に、本実施の形態に係る分散深層学習システムによるデータ転送処理の概要について、図2および図3を用いて説明する。
図3に示すように、GPU103において、層ごとの逆伝搬計算が行われ、層ごとの計算結果が順番にGPU103のメモリ104に記憶されていく。これと並行して、GPU103のメモリ104に記憶された層ごとの逆伝搬計算の結果は、計算結果が算出された順にメインメモリ102に転送される。また、これと並行して、CPU101の指示に応じてメインメモリ102から層ごとの逆伝搬計算の結果が順番にNICの転送バッファ107に転送される。
また、これと並行して、NIC106は、入ってきた層ごとの逆伝搬計算の結果を、順番に通信ネットワークを介してAllreduce処理装置2に送信する。さらに、Allreduce処理装置2は、層ごとの逆伝搬計算の結果のAllreduce処理を行い、層ごとのAllreduce処理の出力を、通信ネットワークを介してNIC106に返送する。
また、これと並行して、NIC106の転送バッファ107に記憶されている層ごとのAllreduce処理の出力は、メインメモリ102に順番に転送される。さらに、これと並行して、GPU103は、メインメモリ102からAllreduce処理された層ごとの出力を取得し、順伝搬計算を実行する。
このように、本実施の形態では、計算機1において、層ごとに順番に計算された逆伝搬計算の結果をその出力順に転送し、層ごとにAllreduce処理が行われ、再び計算機1へ返送されて順伝搬計算が行われる。
[データ転送方法]
次に、上述した本実施の形態のデータ転送方法の詳細について、図4を用いて説明する。
図4に示すように、分散深層学習システムを構成する計算機1−0〜1−2は、それぞれ順伝搬計算を行う(ステップS1−0,S1−1,S1−2)。より詳細には、学習データ入力部10は外部からの入力に応じて、学習データ1,3,5をそれぞれの計算機1−0〜1−2の順伝搬計算部11に入力する。
より具体的には、学習データ1,3,5は、順伝搬計算部11の入力層に入力層の重みパラメータとともに入力される。入力層での重みパラメータと学習データとの積和演算の結果は中間層に入力され、中間層の重みパラメータとの積和演算が行われる。中間層の出力は出力層の入力として用いられ、出力層において重みパラメータとの積和演算が行われ、その結果がニューラルネットワークの順伝搬計算の結果として記憶部110に記憶される。
その後、各計算機1−0〜1−2の逆伝搬計算部12は、順伝搬計算の結果を変数にとる損失関数Lを定め、出力層、中間層、入力層の順に各層の勾配を算出する(逆伝搬計算:ステップS2−0,S2−1,S2−2)。より詳細には、逆伝搬計算部12によって算出された出力層の勾配から順に各層の勾配は転送バッファ121に格納されて、その順番に従って計算機1−0〜1−2のメインメモリである記憶部14に転送される。
転送処理部13は、通信部15に対して勾配の送信を指示すると、通信部15は、記憶部14に記憶されている層ごとの勾配を記憶された順番に読み出して、転送バッファ150に格納する。通信部15は、まず出力層の勾配をAllreduce処理装置2に送信する。出力層の勾配を受信したAllreduce処理装置2は、各計算機1−0〜1−2で計算された出力層の勾配が集まるとAllreduce処理を実行する(ステップS3)。
その後、同様に、通信部15は中間層の勾配をAllreduce処理装置2に送信する。中間層の勾配を受信したAllreduce処理装置2は、各計算機1−0〜1−2で計算された中間層の勾配が集まるとAllreduce処理を実行する(ステップS4)。
その後、同様に、通信部15は入力層の勾配をAllreduce処理装置2に送信する。入力層の勾配を受信したAllreduce処理装置2は、各計算機1−0〜1−2で計算された入力層の勾配が集まるとAllreduce処理を実行する(ステップS5)。
次に、ステップS3からステップS5でそれぞれ出力されるAllreduce処理された出力層の勾配情報、中間層の勾配情報、および入力層の勾配情報に基づいて、出力層、中間層、および入力層の重みパラメータの更新式が定められる(ステップS6−0,S6−1,S6−2)。例えば、Allreduce処理装置2が、各層の重みパラメータの更新式をAllreduce処理の出力として通信ネットワークを介して各計算機1−0〜1−2の通信部15に返送してもよい。
その後、各計算機1−0〜1−2の順伝搬計算部11は、受信したAllreduce処理された各層の勾配情報に基づいて順伝搬計算を行う(ステップS7−0,S7−1,S7−2)。より詳細には、各計算機1−0〜1−2の通信部15は、受信したAllreduce処理の出力に基づく各層の重みパラメータの更新式を転送バッファ150において一時的に格納し、記憶部14に転送する。
その後、順伝搬計算部11は、記憶部14から層ごとの更新式を読み出して順伝搬計算部11の転送バッファ111に格納する。順伝搬計算部11は、新たな学習データ2,4,6および各層の更新済み重みを入力として順伝搬計算を行う。そして、順伝搬計算の結果は再び逆伝搬計算部12に入力される。なお、順伝搬計算部11は、予め各層の更新式を用いて、各層についての更新済みの重みパラメータを求めておく。
以上説明したように、第1の実施の形態に係る分散深層学習システムによれば、各層の逆伝搬計算の結果が算出され次第、各層の勾配情報をGPU103のメモリ104からメインメモリ102に転送し、各層ごとにAllreduce処理を行う。第1の実施の形態に係る分散深層学習システムでは、逆伝搬計算とAllreduce処理とを並行して実行することができるので、逆伝搬計算から順伝搬計算の開始までの待ち時間が低減され、分散深層学習処理をより高速に行うことができる。
また、第1の実施の形態に係る分散深層学習システムでは、多層ニューラルネットワークの各層の勾配情報の全てをNIC106の転送バッファ107に乗せる必要がなくなるために、NICの小型化および省電力化が可能になる。
また、第1の実施の形態に係る分散深層学習システムでは、一度に大量のデータを送受信する必要がなくなるため、パケットロスなどに対して頑健になる。
また、第1の実施の形態に係る分散深層学習システムでは、CPU101の使用率を下げることができるので、消費電力を低減し、発熱を抑えることができる。
[変形例1]
次に、第1の実施の形態の変形例1について、図5を参照して説明する。
前述したようにGPU103は、複数の処理を並行して実行することができるデバイスである。GPU103(逆伝搬計算部12)が実行する逆伝搬計算は、行列演算として行われる。この行列演算はブロック化(タイリング法)と呼ばれるアルゴリズムで実行される。この方法はGPU103が備える図示しないキャッシュにあるデータを再利用することで計算の高速化を図る手法である。
例えば、行列積A×B=Cを考えると、Aの行列成分をキャッシュに残しながら、Bの各列成分とのベクトル積を実行する。Cの1行分の計算が終了するまではAの行成分はキャッシュに残る。このCの1行分を単位として、1行分の演算が終了し次第GPU103のメモリ104からメインメモリ102にその1行分の演算結果を転送する。そして、Allreduce処理装置2において各層の行成分に対するAllreduce処理が実行される(図5のステップS3A,S4A,S5A)。なお、転送されるデータは層間ではサイズが異なるが、層内では同じサイズのデータである。
このように、変形例1では、逆伝搬計算においてタイリング法により各層の行成分ごとのAllreduce処理を実行するので、転送されるデータ量をより小さくすることができる。
[変形例2]
次に第1の実施の形態の変形例2について、図6を参照して説明する。
変形例1では、逆伝搬計算が行列演算として行われる点に着目したデータ転送について説明した。変形例2に係る分散深層学習システムでは、Allreduce処理装置2において、各層の各行列要素ごとにAllreduce処理を実行する。
勾配情報は、通常、行列かベクトルである。そのため、GPU103(逆伝搬計算部12)において各層の勾配情報の行列またはベクトルの各成分の演算が終了し次第、層ごとの各成分はGPU103のメモリ104からメインメモリ102に転送される。そして、層ごとの各成分はNIC106からAllreduce処理装置2に送信され、例えば、出力層の各行列要素ごとにAllreduce処理が実行される(ステップS3B)。同様に、中間層、入力層についても各行列要素ごとにAllreduce処理が実行される(ステップS4B、S5B)。
このように、各層の行列またはベクトルの成分ごとにデータを転送し、Allreduce処理を行うので、転送されるデータ量をより小さくすることができる。なお、転送されるデータはサイズが同じである。
[第2の実施の形態]
次に、本発明の第2の実施の形態について説明する。なお、以下の説明では、上述した第1の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第1の実施の形態では、逆伝搬計算とAllreduce処理とを並行して実行する場合について説明した。これに対して第2の実施の形態では、Allreduce処理と順伝搬計算とを並行して実行する。以下、第1の実施の形態と異なる構成を中心に説明する。
図7に示すように、第2の実施の形態に係る分散深層学習システムにおいて、計算機1−0〜1−2は転送データの順序を入れ替える調整部16をさらに備える。なお、第2の実施の形態の分散深層学習システムを構成する計算機1のハードウェア構成は第1の実施の形態(図2)と同様である。なお、調整部16は、図2に示すCPU101によって実現される。
調整部16は、計算機1−0〜1−2のそれぞれにおいて、順伝搬計算部11に入力される入力データに含まれる、Allreduce処理された層ごとの逆伝搬計算の計算結果が、入力層、中間層、および出力層の順番となるように調整する。
調整部16は、例えば、Allreduce処理装置2に送信する前に、記憶部14に記憶されている層ごとの逆伝搬計算の計算結果の順番を逆順にする。
前述したように、順伝搬計算部11および逆伝搬計算部12を実現するGPU103は、複数の処理を並行して実行することができるデバイスである。そのため、GPU103は、Allreduce処理された層ごとの勾配情報を、計算機1のメインメモリである記憶部14から取得しながら、順伝搬計算を実行することができる。
また、順伝搬計算は、入力層、中間層、出力層の順に計算が行われ、順伝搬計算を開始するにあたり各層におけるAllreduce処理の結果が必要となる(図4のステップS6−0〜S6−2、ステップS7−0〜S7−2)。すなわち、順伝搬計算では、Allreduce処理された勾配情報を用いて得られた、更新済みの各層の重みパラメータおよび新たな学習データを入力として入力層から順番に積和演算が行われる。
一方で、逆伝搬計算は、出力層、中間層、入力層の順に計算されて勾配が出力される。そのため、本実施の形態に係る調整部16は、順伝搬計算部11に入力されるAllreduce処理された勾配の順番を、入力層、中間層、出力層の順番に入れ替える。
[データ転送方法]
次に、本実施の形態に係る分散深層学習システムの動作について、図8から図10のフローチャートを参照して説明する。まず、逆伝搬計算部12は、出力層、中間層、入力層の順に層ごとの逆伝搬計算を行う(ステップS80)。層ごとの逆伝搬計算の結果は記憶部120に記憶される。また、このとき、出力層、中間層、入力層の順に、逆伝搬計算の結果が転送バッファ121に格納されて、転送処理部13の指示に応じて計算機1のメインメモリである記憶部14に順次転送される。
次に、調整部16は、記憶部14に転送された各層の逆伝搬計算の結果が記憶される順序を調整する(ステップS81)。より詳細には、調整部16は、出力層、中間層、入力層の順に記憶部14に転送された逆伝搬計算の結果である各層の勾配の順序を入力層、中間層、出力層の順に入れ替えて記憶部14に記憶させる。その後、転送処理部13の指示に基づいて、通信部15は記憶部14に記憶されている逆伝搬計算の結果を、入力層、中間層、出力層の順にAllreduce処理装置2に送信する。
その後、Allreduce処理装置2は、初めに受信した入力層の勾配についてAllreduce処理を行う(ステップS82)。Allreduce処理の出力は、通信ネットワークを介して通信部15に返送され、転送バッファ150に格納される。転送処理部13は、通信部15にデータの転送指示を送り、通信部15は、記憶部14にAllreduce処理された入力層の勾配を記憶させる。
次に、順伝搬計算部11は、記憶部14からAllreduce処理された入力層の勾配情報を取得し、入力層の順伝搬計算を実行する(ステップS83)。より詳細には、順伝搬計算部11は、記憶部14からAllreduce処理された入力層の勾配情報を取得して、転送バッファ111に格納する。その後、順伝搬計算部11は、取得した入力層の勾配情報に基づいて更新済み重みパラメータを算出し、学習データと更新済み重みパラメータとを入力として入力層の積和演算を行う。入力層における順伝搬計算の結果は記憶部110に記憶される。
次に、Allreduce処理装置2は、入力層に続いて受信した中間層の勾配についてAllreduce処理を行う(ステップS84)。その後、順伝搬計算部11は、同様に、記憶部14からAllreduce処理された中間層の勾配情報を取得し、中間層の順伝搬計算を実行する(ステップS85)。
その後、Allreduce処理装置2は、中間層の逆伝搬計算の結果に続いて受信した出力層の勾配についてAllreduce処理を行う(ステップS86)。その後、順伝搬計算部11は、同様に、記憶部14からAllreduce処理された出力層の勾配情報を取得し、出力層の順伝搬計算を実行する(ステップS87)。
ここで、ステップS81において調整部16が行う調整処理について図8および図9を参照して説明する。
調整部16が行うデータ順序の調整は、いわゆるデータの先入れ後出し方式の処理である。調整部16は、例えば、図8に示すような公知のラスト・イン・ファースト・アウト(LIFO)方式により調整処理を行うことができる。また、別の例として、調整部16は、公知のカットスルー方式により調整処理を行うことができる。
まず、LIFO方式による調整部16の処理を説明する。図8に示すように、調整部16は、逆伝搬計算部12から記憶部14に転送されてきた順にデータを記憶部14に格納させる(ステップS810)。具体的には、調整部16は、出力層、中間層、入力層の順に転送された逆伝搬計算の計算結果である勾配を、転送順に記憶部14の所定の領域に格納する。
次に、記憶部14の所定の領域に格納されているデータ量が設定されたしきい値以下の場合には(ステップS811:NO)、引き続き、転送されてくるデータを記憶部14に格納する(ステップS810)。
一方、記憶部14の所定の領域に格納されているデータ量が設定されたしきい値を上回る場合には(ステップS810:YES)、調整部16は、通信部15に対して、しきい値を上回る直前のデータからデータを読み込む指示を行う(ステップS812)。通信部15は、しきい値を上回る直前のデータから順にデータを読み込み、転送バッファ150にデータを格納する。
その後、通信部15は、通信ネットワークを介して転送バッファ150に格納されているデータを、読み込んだ順にAllreduce処理装置2に送信(転送)する(ステップS813)。なお、調整部16は、ステップS812で記憶部14の所定の領域に格納されているデータを全て読み出した場合には、再びステップS810に移行し、層ごとの逆伝搬計算の結果を記憶部14の領域に格納させる。その後、処理は、図8のステップS82に戻り、Allreduce処理および順伝搬計算が実行される。
次に、調整部16が、公知のカットスルー方式により調整処理を行う場合について、図10のフローチャートを参照して説明する。
まず、調整部16は、記憶部14に転送された逆伝搬計算の結果である層ごとの勾配のデータの先頭に、そのデータの層情報を記録しておく(ステップS910)。次に、記憶部14の予め設定されている領域が空である場合(ステップS911:YES)、記憶部14はデータを設定された領域に格納する(ステップS912)。
一方、記憶部14において設定された記憶領域にデータが格納されている場合は(ステップS911:NO)、調整部16は、格納対象のデータの先頭の層情報を読み込む(ステップS913)。その後、読み込んだ格納対象のデータの層情報と先に記憶部14の設定領域に格納されているデータの層情報とを比較する(ステップS914)。
より詳細には、調整部16は、格納対象のデータの層情報と既に格納されているデータの層情報とでどちらが入力層に近いデータであるかを比較判定する。その後、調整部16は、通信部15に対して、入力層に近いデータから順にデータを読み込む指示を行う(ステップS915)。通信部15は、入力層に近いデータから順に転送バッファ150にデータを格納する。
その後、通信部15は、転送バッファ150に格納されているデータを格納されている順番にAllreduce処理装置2に転送(送信)する(ステップS916)。その後、処理は、図8のステップS82に戻り、Allreduce処理および順伝搬計算が実行される。なお、ステップS916で転送バッファ150に格納されたデータが全て送信された場合には、再び転送される層ごとの逆伝搬計算の結果のデータに対する層情報の記録(ステップS910以降の処理)が開始される。
なお、上述した調整部16は、逆伝搬計算部12から記憶部14に転送および格納される各層の計算結果の転送順序を調整する場合を例に挙げて説明した。しかし、調整部16は、順伝搬計算部11に入力される入力データの順番が、入力層、中間層、出力層の順番となるように調整できれば他の構成を採用してもよい。
例えば、調整部16は、記憶部14に記憶されている逆伝搬計算の結果が通信部15に転送されるタイミングで、これらのデータの順序を調整してもよい。具体的には、調整部16は、図8のステップS81において、逆伝搬計算の結果がAllreduce処理装置2に送信される際に、転送バッファ150に格納されるデータの順序を入力層に近い層の逆伝搬計算の結果から順に入れ替えて調整してもよい。
また、この例においても、調整部16は、図9または図10で説明した先入れ後出しの処理を用いることができる。
また、上記説明では、調整部16が、Allreduce処理の前において、データの順序を調整する場合を例に挙げて説明した。しかし、前述したように、調整部16は、順伝搬計算部11に入力されるデータが入力層から出力層の順番となるように調整されることができれば、Allreduce処理の後または途中において、調整部16がデータの順序を入れ替えてもよい。
以上説明したように、第2の実施の形態に係る分散深層学習システムよれば、出力層、中間層、入力層の順に出力される逆伝搬計算の結果を、入力層、中間層、出力層の順序に入れ替えるので、GPU103(順伝搬計算部11)において実行される順伝搬計算とAllreduce処理とを並行に行うことができる。そのため、逆伝搬計算から順伝搬計算の開始までの待ち時間が低減され、分散深層学習処理をより高速に行うことができる。
また、第2の実施の形態に係る分散深層学習システムよれば、多層ニューラルネットワークの各層の勾配情報の全てをNIC106の転送バッファ107に乗せる必要がなくなるので、NICの小型化および省電力化が可能になる。
また、第2の実施の形態に係る分散深層学習システムよれば、大量のデータを送受信する必要がなくなるため、パケットロスなどに対して頑健になる。
また、第2の実施の形態に係る分散深層学習システムよれば、CPU101の使用率を下げることができ、結果として消費電力の低減、および発熱を低減することが可能となる。
[変形例]
次に、第2の実施の形態の変形例に係る分散深層学習システムについて、図11および図12を参照して説明する。変形例に係る分散深層学習システムは、図11に示すように、計算機1−0〜1−2およびAllreduce処理装置2と互いに通信ネットワークを介して接続された調整部16’を備える。この変形例では、調整部16’は、Allreduce処理の途中においてデータの順序を調整する。なお、調整部16’の機能は、第2の実施の形態で説明した調整部16と同様である。
調整部16’は、例えば、ネットワークスイッチなどによって構成することができる。調整部16’は、計算機1の通信部15を介して出力層、中間層、入力層の順に送信されてくる逆伝搬計算の結果の順序を逆順にして、入力層に近い層から順にAllreduce処理装置2に転送する。Allreduce処理装置2は、入力層に近い層の逆伝搬計算の結果を優先的にAllreduce処理する。
なお、上記変形例においても、調整部16’は、図9または図10で説明したLIFO方式やカットスルー方式を採用することができる。
[第3の実施の形態]
次に、本発明の第3の実施の形態について説明する。なお、以下の説明では、上述した第1および第2の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第3の実施の形態に係る分散深層学習システムでは、各計算機30においてGPU303が有するメモリ304とCPU301のメモリ、すなわち計算機30のメインメモリ302との間のデータ転送はGPU303の命令で実行し、メインメモリ302とNIC306の転送バッファ307との間のデータ転送は、CPU301の命令で実行する。
本実施の形態に係る分散深層学習システムは、少なくとも1つの計算機30を有する。例えば、図12に示すように、分散深層学習システムは、複数の計算機30が通信ネットワークを介して互いに接続されている。各計算機30は同様の構成を有する。
図12に示すように、計算機30は、転送処理部31、記憶部32、計算部33、および通信部34を備える。
転送処理部31は、CPU−NIC転送指示部310(第1転送指示部)を備える。転送処理部31は、計算機30のメインメモリである記憶部32に記憶されているデータを、通信部34へ転送する。
CPU−NIC転送指示部310は、通信部34に対して、通信ネットワークを介して接続されている他の計算機30や図示されないAllreduce処理装置などから受信したデータを記憶部32に転送する指示を行う。また、CPU−NIC転送指示部310は、通信部34に対して、外部へ送信するデータを記憶部32から通信部34へ転送する指示を行う。
記憶部32は、計算機30が備えるメインメモリである。記憶部32は、計算機30から外部に送信される計算部33の計算結果を予め設定された領域に記憶する。また、記憶部32には、外部から受信されたデータが転送され、予め設定された領域に記憶される。例えば、外部からAllreduce処理された逆伝搬計算の結果などは、記憶部32の設定された領域に記憶される。
計算部33は、GPU−CPU転送指示部330(第2転送指示部)、記憶部331、および転送バッファ332を備える。計算部33は、例えば、ニューラルネットワークの順伝搬計算および逆伝搬計算を行う。
GPU−CPU転送指示部330は、記憶部32へのデータの転送や記憶部32からのデータの取得を行う。
記憶部331は、計算部33によって実行された計算結果を記憶する。
転送バッファ332は、記憶部331に記憶されている計算結果を読み出して、一時的に記憶する。転送バッファ332に記憶されているデータは、GPU−CPU転送指示部330からの指示に応じて記憶部32に転送される。
また、転送バッファ332は、GPU−CPU転送指示部330の指示に応じて、記憶部32から取得されたデータを一時的に記憶する。転送バッファ332に記憶されている外部から受信されたデータは、計算部33が計算を行う際に用いられる。例えば、計算部33は、外部から受信されたAllreduce処理された各層の勾配情報を用いて順伝搬計算を行う。
通信部34は、確認部340および転送バッファ341を備える。通信部34は、計算機30と通信ネットワークを介して接続されている他の計算機30とのデータのやり取りを行うインターフェースである。
通信部34は、転送処理部31からの指示に基づいて外部から受信したデータを記憶部32に転送する。また、通信部34は、転送処理部31からの指示に基づいて計算部33から記憶部32に転送されたデータを取得して、外部に送信する。
確認部340は、通信部34が外部から受信したデータを記憶部32に転送する際に、記憶部32の設定された領域に空きがあるかを確認する。また、確認部340は、通信部34が外部へ送信するデータが記憶部32の設定された領域に記憶されているかを確認する。
転送バッファ341は、通信部34が外部から受信したデータを一時的に記憶する。また転送バッファ341は、通信部34が外部へ送信するデータを一時的に記憶する。
[計算機のハードウェア構成]
次に、本実施の形態に係る計算機30のハードウェア構成について、図13を参照して説明する。
図13に示すように、計算機30は、CPU301、メインメモリ302、GPU303、およびNIC306を備える。
CPU301は、図12で説明した転送処理部13の機能を実現する。
メインメモリ302は、図12で説明した記憶部32を実現する。
GPU303は、図12で説明した計算部33を実現する。GPU303は、メモリ304と転送バッファ305を備える。GPU303は、メインメモリ302からのデータの取得およびGPU303による計算結果のメインメモリ302への転送を行う。また、GPU303は、例えば、ニューラルネットワークの層ごとの逆伝搬計算と、逆伝搬計算の結果のメインメモリ302への転送を並行して実行する。
GPU303が備えるメモリ304は、図12で説明した記憶部331を実現する。
転送バッファ305は、図12で説明した計算部33が備える転送バッファ332を実現する。
NIC306は、図12で説明した通信部34を実現する。NIC306は、転送バッファ307を備え、これは、図12の通信部34が備える転送バッファ341に対応する。
[データ転送処理]
上述した構成を有する計算機30の動作シーケンスについて図14から図16を参照して説明する。まず、計算機30が外部からデータを受信した場合のデータ転送処理について説明する。
図14に示すように、通信部34は、通信ネットワークを介して外部からデータを受信する(ステップS300)。なお、通信部34は、ステップS300において、受信したデータを転送バッファ341に格納する。
次に、確認部340は、受信されたデータの転送先である記憶部32の設定された領域に空きがあることを確認する(ステップS301)。より詳細には、確認部340は、転送処理部31を介して記憶部32の空き領域を確認する。
一方で、計算部33のGPU−CPU転送指示部330は、記憶部32に取得対象の受信データが転送され記憶されているかを確認する(ステップS302)。このように、通信部34と計算部33とはそれぞれ非同期で記憶部32の確認を行う。
その後、CPU−NIC転送指示部310は、通信部34に対して、記憶部32の設定された領域にデータを格納する指示を行う(ステップS303)。その後、通信部34は転送バッファ341に格納されている受信されたデータを記憶部32に転送する(ステップS304)。続いて、計算部33のGPU−CPU転送指示部330は、ステップS302において記憶部32に転送されたデータがあることが確認されると、記憶部32からデータを取得する(ステップS305)。取得されたデータは、計算部33の転送バッファ332に格納される。
次に、計算機30がデータを外部に出力する場合について、図15を用いて説明する。
図15に示すように、通信部34が備える確認部340は、外部に送信するデータが記憶部32に記憶されているかを確認する(ステップS306)。より詳細には、確認部340は、転送処理部31を介して記憶部32のデータの有無を確認する。
一方で、計算部33のGPU−CPU転送指示部330は、記憶部32の設定された領域に空きがあるかを確認する(ステップS307)。このように、通信部34と計算部33とは、それぞれ非同期に記憶部32を確認する。
その後、GPU−CPU転送指示部330は、記憶部32に空き領域があることを確認すると(ステップS308)、転送バッファ332に格納されているデータを記憶部32に転送する(ステップS309)。その後、通信部34は、ステップS306において計算部33からの転送データが記憶部32に記憶されていることが確認されると、記憶部32からデータを取得する(ステップS310)。通信部34は、転送バッファ341にデータを格納し、通信ネットワークを介して外部の計算機30などにデータを送信する(ステップS311)。
ここで、本実施の形態に係る分散深層学習システムにおけるデータ転送処理との比較のために従来例のデータ転送処理について図16を用いて説明する。
図16に示すように、従来例においては、まず、通信部は通信ネットワークを介して外部からデータを受信する(ステップS1300)。次に、通信部は、転送処理部を介して記憶部の所定の領域に空きがあるかを確認する(ステップS1301)。通信部は、記憶部の所定の領域に空きがあることを確認すると、転送処理部からの転送指示を受信する(ステップS1302)。
次に、通信部は、転送処理部からの指示に基づいて、計算部が備える記憶部に空き領域があることを確認する(ステップS1303)。通信部は、計算部に空き領域があることを確認すると、転送処理部を介して転送指示を受信する(ステップS1304)。
その後、通信部は、転送バッファから計算機のメインメモリである記憶部および計算部の記憶部に受信したデータを転送する(ステップS1305)。
ここで、図14および図15で説明した本実施の形態に係る分散深層学習システムにおけるデータ転送処理では、通信部34と転送処理部31(記憶部32)間のバッファチェック、および計算部33と転送処理部(記憶部32)とのバッファチェックはそれぞれ非同期で行われる。そのため、本実施の形態におけるバッファチェックに要する時間T1は、図16で説明した従来例のデータ転送処理において同期的に行われていたバッファチェックに要した時間T’と比較してより短縮される。
以上説明したように、第3の実施の形態に係る分散深層学習システムは、計算部33(GPU303)の指示によりGPU303とメインメモリ302との間のデータ転送を行い、かつ、転送処理部31(CPU301)の指示により、通信部34(NIC306)とメインメモリ302との間のデータ転送を行う。このように非同期にデータを転送することで、計算機30内の転送遅延を低減させることができる。
また、本実施の形態に係る分散深層学習システムは、NI306の転送バッファ307条のデータを低遅延にメインメモリ302に転送できるので、外部からデータを受信する際の受信の待ち時間を低減できる。
また、本実施の形態に係る分散深層学習システムは、プロセスを分割して非同期にデータ転送を行うので、NIC306の転送バッファ307があふれることに対して頑健になる。
また、本実施の形態に係る分散深層学習システムによれば、計算機30を構成する各デバイスが備える転送バッファが空となる時間が低減されるので、NIC306においてデータ送受信の待ち時間を低減することができる。
また、本実施の形態に係る分散深層学習システムによれば、CPU301の使用率を下げることができ、消費電力の低減、および発熱を低減することができる。
また、本実施の形態に係る分散深層学習システムは、CPU301を使用していない合間の時間に、別の処理を実行するので、データ転送以外の処理についても高速化することができる。
また、本実施の形態に係る分散深層学習システムは、各計算機30においてデータ転送をより効率的に行うことができるので、より高速に分散深層学習処理を行うことができる。
[第4の実施の形態]
次に、本発明の第4の実施の形態について説明する。なお、以下の説明では、上述した第1から第3の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第3の実施の形態では、計算機内のデータ転送の指示をCPU301とGPU303とがそれぞれ非同期で行う場合について説明した。これに対して第4の実施の形態では、メインメモリ302およびGPU303においてそれぞれ複数の転送バッファをさらに有する。以下、第1から第3の実施の形態と異なる構成を中心に説明する。
図17に示すように、本実施の形態に係る分散深層学習システムを構成する計算機30Aは、CPU301、メインメモリ302、GPU303、およびNIC306を備える。メインメモリ302は、複数の転送バッファ302a〜303fを備える。また、GPU303についても、複数の転送バッファ305a〜305fを備える。
なお、本実施の形態に係る分散深層学習システムおよびこれを構成する計算機30Aの機能構成は、第3の実施の形態と同様である(図12)。
次に、本実施の形態に係る計算機30Aにおけるデータ転送処理について、図18および図19のシーケンス図を用いて説明する。
図18に示すように、通信部34は、通信ネットワークを介して外部からデータを受信する(ステップS300)。より詳細には、通信部34はステップS300で、受信したデータを転送バッファ341に格納する。
次に、確認部340は、受信されたデータの転送先である記憶部32の設定された領域に空きがあることを確認する(ステップS301)。より詳細には、確認部340は、転送処理部31を介して記憶部32(メインメモリ302の転送バッファ303a〜303f)に空きがあることを確認する。
一方で、計算部33のGPU−CPU転送指示部330は、記憶部32に取得対象の受信データが転送され記憶されているかを確認する(ステップS302)。このように、通信部34と計算部33とはそれぞれ非同期で記憶部32の確認を行う。
その後、CPU−NIC転送指示部310は、通信部34に対し、記憶部32の設定された領域にデータを格納する指示を行う(ステップS303)。その後、通信部34は転送バッファ341に格納されている受信データを記憶部32の複数の領域に転送する(ステップS304A)。具体的には、受信されたデータは、メインメモリ302の転送バッファ303a〜303fにバースト転送される。
続いて、計算部33のGPU−CPU転送指示部330は、ステップS302において記憶部32に転送されたデータがあることを確認すると、記憶部32の複数の領域からデータを取得する(ステップS305A)。具体的には、GPU−CPU転送指示部330は、記憶部32の複数の領域に受信データの断片が格納された時点で、受信データの取得を開始する。ステップS305Aにおいて実行されるデータの取得についても、複数の転送バッファ306a〜306fを用いたバースト転送により行われる。取得されたデータは、計算部33の転送バッファ332に格納される。
ここで、本実施の形態に係るデータ転送処理との比較のために従来例のバースト転送を用いたデータ転送処理について図19を用いて説明する。
図19に示すように、まず、通信部は通信ネットワークを介して外部からデータを受信する(ステップS1300)。次に、通信部は、転送処理部を介して記憶部の所定の領域に空きがあるかを確認する(ステップS1301)。通信部は、記憶部の所定の領域に空きがあることを確認すると、転送処理部からの転送指示を受信する(ステップS1302)。
次に、通信部は、転送処理部からの指示に基づいて、計算部が備える記憶部に空き領域があることを確認する(ステップS1303)。通信部は、計算部に空き領域があることを確認すると、転送処理部を介して転送指示を受信する(ステップS1304)。
その後、通信部は、転送バッファから計算機のメインメモリである記憶部に、受信したデータをバースト転送する(ステップS1305A)。通信部とメインメモリ間でのバースト転送が完了すると、計算機はメインメモリからバースト転送により受信データを取得する(ステップS1305B)。
ここで、図18で説明した本実施の形態に係るデータ転送処理では、通信部34と転送処理部31(記憶部32)間のバッファチェック、および計算部33と転送処理部(記憶部32)とのバッファチェックはそれぞれ非同期で行われる。さらにデータの転送処理についても非同期で行われるので、バッファチェックに要する時間T1およびデータの転送に要する時間T2は、図19で説明した従来例のバースト転送において同期的に行われていたバッファチェックに必要な時間T’およびデータ転送に要した時間T’と比較して、より短縮される。
以上説明したように、第4の実施の形態によれば、計算機30AにおいてCPU301およびGPU303は互いに非同期にデータの転送指示を行い、複数の転送バッファ302a〜302f、305a〜305fを用いてデータをバースト転送するので、計算機30A内でのデータの転送遅延を低減させることができる。
また、本実施の形態によれば、NIC306でのデータ送受信の待ち時間が短縮されるので、計算機30A内での処理を高速化することができる。
また、本実施の形態では、複数の転送バッファ302a〜302f、305a〜305fを用いるので、転送するデータのサイズが比較的大きい場合に、計算機30A内の転送スループットを向上させることができる。特に、第1の実施の形態で説明したような、ニューラルネットワークの層ごとの演算結果を転送するような場合に有効である。
また、本実施の形態では、各計算機の転送遅延を低減することができるので、複数の計算機で構成される分散深層学習システムの処理をより高速に行うことができる。
[第5の実施の形態]
次に、本発明の第5の実施の形態について説明する。なお、以下の説明では、上述した第1から第4の実施の形態と同じ構成については同一の符号を用い、その説明を省略する。
第1から第4の実施の形態では、転送バッファのサイズは固定である場合を仮定した。これに対し、第5の実施の形態では、転送バッファのバッファサイズを転送するデータサイズに合わせて可変とする構成を採用する。
従来、転送バッファなどのバッファサイズは固定であり、転送されるデータに対して動的に変化させることはなかった。しかし、転送データに対してバッファのサイズが大きすぎる場合にはデータ転送時間の遅延の原因となったり、占有メモリ領域が大きくなったり、また、転送後にメモリをサーチする際の実行時間が増大するなどの問題がある。
逆に、転送データに対してバッファのサイズが小さすぎる場合には、データ転送を何度も繰り返す必要が生じ、データ転送時間の遅延の原因となる。
本実施の形態では、分散深層学習システムを構成する各計算機において用いられる転送バッファのサイズを転送するデータサイズに合わせて動的に変化させる。例えば、ニューラルネットワークの逆伝搬計算の結果のデータサイズに合わせたバッファサイズとなるように、転送バッファのバッファサイズを可変とする。
また、別の例として、第1の実施の形態で説明したように、各計算機による逆伝搬計算の結果を、行列の行ごとや要素ごとに処理してデータ転送する場合、転送されるデータサイズが予め決定されている。このような場合には、転送バッファのサイズをデータサイズに合わせて予め設定することができる。
このように、第5の実施の形態によれば、転送されるデータサイズに合わせて転送バッファのバッファサイズを最適化するので、計算機内でのデータの転送時間の遅延を低減することができる。
また、バッファサイズが最適化されることで、記憶部において占有するメモリ領域を減少させることができる。その結果として、記憶部において格納されているデータの転送順を変更する際のメモリサーチに要する時間を低減することができる。
また、分散深層学習システムを構成する各計算機においてバッファサイズが最適化された転送バッファを用いるので、分散深層学習をより高速に行うことができる。
以上、本発明の分散深層学習システムおよびデータ転送方法における実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
1,1−0〜1−2…計算機、2…Allreduce処理装置、10…学習データ入力部、11…順伝搬計算部、12…逆伝搬計算部、13…転送処理部、14,110,120…記憶部、15…通信部、111,121,150,105,107…転送バッファ、101…CPU、102…メインメモリ、103…GPU、104…メモリ、106…NIC。

Claims (8)

  1. 通信ネットワークを介して互いに接続され、それぞれが学習データに基づく順伝搬計算および逆伝搬計算を反復的に行うとともに、逆伝搬計算の計算結果を前記通信ネットワークに送出する複数の計算機と、
    前記複数の計算機と前記通信ネットワークを介して接続され、前記複数の計算機から受信した計算結果を処理して送信元に返送する集団通信部とを備え、
    各計算機は、
    順伝搬計算を層ごとに行う順伝搬計算部と、順伝搬計算の計算結果と設定されているラベルデータとの誤差に対するニューラルネットワークの構成パラメータの偏微分を、前記ニューラルネットワークの出力層、中間層、および入力層の順に層ごとに算出する逆伝搬計算部とを有する計算部と、
    前記逆伝搬計算部が逆伝搬計算の計算結果を層ごとに算出するたびに、前記逆伝搬計算の計算結果を転送バッファに格納する転送処理部と、
    前記転送バッファに格納された、前記逆伝搬計算の計算結果を、前記通信ネットワークを介して前記集団通信部に順次送信する通信部と、
    を有し、
    前記集団通信部は、前記逆伝搬計算の計算結果を前記複数の計算機から受信した順に処理して順次出力する
    ことを特徴とする分散深層学習システム。
  2. 請求項1に記載の分散深層学習システムにおいて、
    前記通信部は、前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果を前記通信ネットワークを介して受信し、
    前記順伝搬計算部は、前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果を前記入力データとして用いることを特徴とする分散深層学習システム。
  3. 請求項2に記載の分散深層学習システムにおいて、
    前記複数の計算機のそれぞれにおいて、前記順伝搬計算部に入力される前記入力データに含まれる前記集団通信部によって処理され返送された、層ごとの前記逆伝搬計算の計算結果が、入力層、中間層、および出力層の順番となるように調整する調整部をさらに備えることを特徴とする分散深層学習システム。
  4. 通信ネットワークを介して互いに接続された少なくとも1の計算機を備え、
    前記計算機は、
    前記通信ネットワークを介して外部からデータを受信する通信部と、
    前記通信部で受信された受信データを転送する指示を行う第1転送指示部と、
    前記第1転送指示部の指示に基づいて、前記受信データを転送バッファに記憶させる記憶部と、
    前記転送バッファに記憶された前記受信データを転送する指示を行う第2転送指示部と、
    前記受信データを用いてニューラルネットワークの演算を行う計算部と、
    を備え、
    前記第1転送指示部と前記第2転送指示部とは互いに非同期に指示を行い、
    前記第2転送指示部は、前記受信データを前記計算部に転送する指示を行う
    ことを特徴とする分散深層学習システム。
  5. 請求項4に記載の分散深層学習システムにおいて、
    前記第2転送指示部は、前記計算部による演算結果を前記転送バッファに転送する指示を行い、
    前記第1転送指示部は、前記演算結果を、前記転送バッファから前記通信部に転送する指示を行い、
    前記通信部は、前記第1転送指示部からの指示に基づいて転送された前記演算結果を、前記通信ネットワークを介して外部に送信する
    ことを特徴とする分散深層学習システム。
  6. 請求項4または請求項5に記載の分散深層学習システムにおいて、
    前記記憶部は複数の転送バッファを備えることを特徴とする分散深層学習システム。
  7. 請求項1から6のいずれか1項に記載の分散深層学習システムにおいて、
    前記転送バッファは格納するデータサイズに応じてバッファサイズが可変に構成されることを特徴とする分散深層学習システム。
  8. 通信ネットワークを介して互いに接続され、それぞれが学習データに基づく順伝搬計算および逆伝搬計算を反復的に行うとともに、逆伝搬計算の計算結果を前記通信ネットワークに送出する複数の計算機と、
    前記複数の計算機と前記通信ネットワークを介して接続され、前記複数の計算機から受信した計算結果を処理して送信元に返送する集団通信部とを備え、
    前記複数の計算機の各々で、学習データを含む入力データに基づいてニューラルネットワークの入力層、中間層、および出力層それぞれの順伝搬計算を層ごとに行う第1ステップと、
    前記複数の計算機の各々で、順伝搬計算の計算結果と設定されているラベルデータとの誤差に対する前記ニューラルネットワークの構成パラメータの偏微分を、出力層、中間層、および入力層の順に層ごとに算出する第2ステップと、
    前記複数の計算機の各々において、前記第2ステップで、逆伝搬計算の計算結果が層ごとに算出されるたびに、前記逆伝搬計算の計算結果を転送バッファに格納する第3ステップと、
    前記複数の計算機の各々で、前記転送バッファに格納された、前記逆伝搬計算の計算結果を、前記通信ネットワークを介して前記集団通信部に順次送信する第4ステップと、
    前記集団通信部で受信した前記逆伝搬計算の計算結果を前記複数の計算機から受信した順に処理して順次出力する第5ステップと
    を備えることを特徴とするデータ転送方法。
JP2018211345A 2018-11-09 2018-11-09 分散深層学習システムおよびデータ転送方法 Pending JP2020077300A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2018211345A JP2020077300A (ja) 2018-11-09 2018-11-09 分散深層学習システムおよびデータ転送方法
PCT/JP2019/042008 WO2020095729A1 (ja) 2018-11-09 2019-10-25 分散深層学習システムおよびデータ転送方法
US17/291,082 US20210357760A1 (en) 2018-11-09 2019-10-25 Distributed Deep Learning System and Data Transfer Method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018211345A JP2020077300A (ja) 2018-11-09 2018-11-09 分散深層学習システムおよびデータ転送方法

Publications (1)

Publication Number Publication Date
JP2020077300A true JP2020077300A (ja) 2020-05-21

Family

ID=70612437

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018211345A Pending JP2020077300A (ja) 2018-11-09 2018-11-09 分散深層学習システムおよびデータ転送方法

Country Status (3)

Country Link
US (1) US20210357760A1 (ja)
JP (1) JP2020077300A (ja)
WO (1) WO2020095729A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022102009A1 (ja) * 2020-11-11 2022-05-19 日本電信電話株式会社 分散処理システムおよび方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11645534B2 (en) * 2018-09-11 2023-05-09 Intel Corporation Triggered operations to improve allreduce overlap
KR20210092980A (ko) * 2020-01-17 2021-07-27 삼성전자주식회사 스토리지 컨트롤러, 이를 포함하는 스토리지 시스템 및 스토리지 컨트롤러의 동작 방법
JPWO2022004601A1 (ja) * 2020-07-03 2022-01-06
US20220067508A1 (en) * 2020-08-31 2022-03-03 Advanced Micro Devices, Inc. Methods for increasing cache hit rates for neural networks
CN112463056B (zh) * 2020-11-28 2023-06-09 苏州浪潮智能科技有限公司 一种多节点分布式训练方法、装置、设备及可读介质
CN114897146B (zh) * 2022-05-18 2023-11-03 北京百度网讯科技有限公司 模型生成方法、装置和电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07322076A (ja) * 1994-05-24 1995-12-08 Fuji Xerox Co Ltd 画像復号処理装置
JPH11224180A (ja) * 1998-02-06 1999-08-17 Fuji Xerox Co Ltd インターフェース回路
WO2016006150A1 (ja) * 2014-07-10 2016-01-14 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 車載ネットワークシステム、電子制御ユニット、受信方法及び送信方法
JP2018018220A (ja) * 2016-07-26 2018-02-01 富士通株式会社 並列情報処理装置、情報処理方法、およびプログラム
JP2018018422A (ja) * 2016-07-29 2018-02-01 株式会社デンソーアイティーラボラトリ 予測装置、予測方法および予測プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07322076A (ja) * 1994-05-24 1995-12-08 Fuji Xerox Co Ltd 画像復号処理装置
JPH11224180A (ja) * 1998-02-06 1999-08-17 Fuji Xerox Co Ltd インターフェース回路
WO2016006150A1 (ja) * 2014-07-10 2016-01-14 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 車載ネットワークシステム、電子制御ユニット、受信方法及び送信方法
JP2018018220A (ja) * 2016-07-26 2018-02-01 富士通株式会社 並列情報処理装置、情報処理方法、およびプログラム
JP2018018422A (ja) * 2016-07-29 2018-02-01 株式会社デンソーアイティーラボラトリ 予測装置、予測方法および予測プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JEFFREY DEAN, ET AL.: ""Large Scale Distributed Deep Networks"", PROCEEDINGS OF NEURAL INFORMATION PROCESSING SYSTEMS 2012 (NIPS 2012), JPN6019010779, 2012, pages 1 - 9, XP055980970, ISSN: 0004759833 *
TUNG D. LE, ET AL.: ""Involving CPUs into Multi-GPU Deep Learning"", PROCEEDINGS OF THE 2018 ACM/SPEC INTERNATIONAL CONFERENCE ON PERFORMANCE ENGINEERING (ICPE'18), JPN7020000089, 13 April 2018 (2018-04-13), pages 56 - 67, ISSN: 0004759834 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022102009A1 (ja) * 2020-11-11 2022-05-19 日本電信電話株式会社 分散処理システムおよび方法

Also Published As

Publication number Publication date
US20210357760A1 (en) 2021-11-18
WO2020095729A1 (ja) 2020-05-14

Similar Documents

Publication Publication Date Title
WO2020095729A1 (ja) 分散深層学習システムおよびデータ転送方法
EP3669304B1 (en) Systolic neural network engine with crossover connection optimization
Chatzipanagiotis et al. An augmented Lagrangian method for distributed optimization
US20180046913A1 (en) Combining cpu and special accelerator for implementing an artificial neural network
CN110832509B (zh) 使用神经网络的黑盒优化
TW202147188A (zh) 神經網路模型的訓練方法和相關産品
WO2020026741A1 (ja) 情報処理方法、情報処理装置及び情報処理プログラム
CN116680062B (zh) 一种基于大数据集群的应用调度部署方法及存储介质
JP7137064B2 (ja) 最適化装置及び最適化装置の制御方法
JP2020204928A (ja) 最適化装置および最適化方法
KR20220057396A (ko) 강화학습 기반 에너지 관리 시스템 제어 방법 및 장치
CN114626516A (zh) 一种基于对数块浮点量化的神经网络加速系统
WO2022019913A1 (en) Systems and methods for generation of machine-learned multitask models
CN116489708B (zh) 面向元宇宙的云边端协同的移动边缘计算任务卸载方法
Zhang et al. Reinforcement and transfer learning for distributed analytics in fragmented software defined coalitions
JP7279796B2 (ja) 秘密勾配降下法計算方法、秘密深層学習方法、秘密勾配降下法計算システム、秘密深層学習システム、秘密計算装置、およびプログラム
CN117114055B (zh) 面向工业应用场景的fpga二值神经网络加速方法
Wu et al. A fast task offloading optimization framework for irs-assisted multi-access edge computing system
WO2023286129A1 (ja) 学習システムおよび学習方法
WO2021140643A1 (ja) ニューラルネットワークシステム、ニューラルネットワークの学習方法及びニューラルネットワークの学習プログラム
CN118036776A (zh) 一种模型训练方法及相关装置
Sivakumar et al. A novel optimised GWOAN algorithm for scheduling task and power consumption in MEC network
Li Model Distributed Learning at Edge Networks
Qadeer Machine Learning Driven Resource Allocation in Edge Cloud
WO2024104983A1 (en) Method and system for training a neural network for a multi-core data processing system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221110

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230221