(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-04
(45)【発行日】2023-04-12
(54)【発明の名称】アドバンストインタコネクト技術を利用してAIトレーニングを加速するための方法及びシステム
(51)【国際特許分類】
G06N 3/063 20230101AFI20230405BHJP
G06F 15/173 20060101ALI20230405BHJP
【FI】
G06N3/063
G06F15/173 683B
(21)【出願番号】P 2020536955
(86)(22)【出願日】2019-10-12
(86)【国際出願番号】 CN2019110814
(87)【国際公開番号】W WO2021068243
(87)【国際公開日】2021-04-15
【審査請求日】2020-11-30
(73)【特許権者】
【識別番号】517323290
【氏名又は名称】バイドゥドットコム タイムズ テクノロジー (ベイジン) カンパニー リミテッド
【氏名又は名称原語表記】Baidu.com Times Technology (Beijing) Co., Ltd.
【住所又は居所原語表記】2/F A2 Zhongguancun Software Park 17th building, No.8, Dongbeiwang West Road, Haidian District, Beijing 100080, China
(73)【特許権者】
【識別番号】516357421
【氏名又は名称】バイドゥ ユーエスエイ エルエルシー
【氏名又は名称原語表記】Baidu USA LLC
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100163511
【氏名又は名称】辻 啓太
(73)【特許権者】
【識別番号】521457387
【氏名又は名称】クンルンシン テクノロジー (ベイジン) カンパニー リミテッド
【氏名又は名称原語表記】Kunlunxin Technology (Beijing) Company Limited
【住所又は居所原語表記】CW Section, F/4, Building 1, No.10, Shangdi 10th Street, Haidian District, 100101, Beijing, China
(72)【発明者】
【氏名】ジャオ ジービャオ
(72)【発明者】
【氏名】オウヤン チエン
(72)【発明者】
【氏名】ジュー ハーフェイ
(72)【発明者】
【氏名】チェン チンシュー
(72)【発明者】
【氏名】チー ウェイ
【審査官】加藤 優一
(56)【参考文献】
【文献】米国特許出願公開第2016/0321776(US,A1)
【文献】米国特許出願公開第2019/0312772(US,A1)
【文献】特表2010-521728(JP,A)
【文献】特表2011-511986(JP,A)
【文献】中国実用新案第209044577(CN,U)
【文献】米国特許出願公開第2018/0239992(US,A1)
【文献】米国特許出願公開第2019/0197420(US,A1)
【文献】米国特許出願公開第2018/0293691(US,A1)
【文献】Andrew Gibiansky,Bringing HPC Techniques to Deep Learning,2017年02月21日,[検索日 2022年01月14日],インターネット<URL:https://andrew.gibiansky.com/blog/machine-learning/baidu-allreduce/>
【文献】小島郁太郎,サーバーのアクセラレーションをスムーズに、CCIXBS1.0がリリース,日経xTECH,2018年06月25日, [検索日 2022年01月14日] インターネット<URL:https://xtech.nikkei.com/atcl/nxt/column/18/00001/00636/>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00 -99/00
G06F 15/173
(57)【特許請求の範囲】
【請求項1】
データ処理(DP)アクセラレータを用いて、人工知能(AI)モデルをトレーニングするための、コンピュータにより実施される方法であって、
CPUにより配信された複数のデータブロックを含むトレーニングデータセットに基づいて前記AIモデルをトレーニングするための要求を、前記CPUから受信するステップと、
論理リングに配置された複数の汎用処理ユニット(GPU)によって複数回のDP反復を実行して、前記AIモデルをトレーニングするステップと、を含み、
前記複数回のDP反復は、
各回のDP反
復に対し、
第1のDPサイクルにおいて、前記複数のGPUは、それぞれ、前記複数のデータブロックの一つに対して、データ圧縮操作
を並行して実行し、それぞれの第1の
圧縮データブロックを生成し、
第2のDPサイクルにおいて、前記複数のGPUは、それぞれ、プロセッサ間リンクを介して、それぞれの第1の
圧縮データブロックを、更に処理するために論理リング内の下流のGPUに転送し、そして、
それぞれ、対応するプロセッサ間リンク或いはCCIX接続を介して、前記論理リング内の上流GPUから、
当該上流GPUがデータ圧縮操作を実行して生成した第2の
圧縮データブロックを、さらに処理するために受信し、
第3のDPサイクルにおいて、前記複数のGPUは、それぞれ、現在のGPUによって処理される第1の
圧縮データブロックと、対応する上流のGPUによって処理され、当該GPUから受信された第2の
圧縮データブロックとに対して、
合計操作を実行して、第1のDP結果を生成
し、
第4のDPサイクルにおいて、前記複数のGPUは、それぞれ、前記第1のDP結果に対して、データ解凍操作を実行し、解凍して得られたデータブロックは、次回のDP反復に用いられる、ことを含み、
前記合計操作は、前記第1の
圧縮データブロックと第2の
圧縮データブロックとをパイプライン化して、一方の
圧縮データブロックのビットマスクフィールド内のビットを他方の
圧縮データブロックのビットマスクフィールド内のビットと比較し、比較した結果を出力する操作である、コンピュータにより実施される方法。
【請求項2】
前記データブロックの少なくとも一部は、前記AIモデルのトレーニングの一部として生成されたパラメータまたは勾配を表す、請求項1に記載の方法。
【請求項3】
前記データ圧縮操作は、1つまたは複数のデータブロックを、ビットマスク部分および圧縮データ部分を有するデータ構造に圧縮するゼロ値圧縮アルゴリズムを使用して実行され、前記ビットマスク部分は、前記データブロックにおける非ゼロ値の位置を示すビットを含む、
請求項1に記載の方法。
【請求項4】
データ処理システムであって、
少なくとも一つのCPUと、
前記CPUに接続された複数の汎用処理ユニット(GPU)と、を含み、
前記複数のGPUのそれぞれは、前記CPUから配信された人工知能AIデータ処理(DP)操作を実行するように構成され、
前記操作は、
CPUにより配信された複数のデータブロックを含むトレーニングデータセットに基づい
てAIモデルをトレーニングするための要求を、前記CPUから受信するステップと、
論理リングに配置された複数の汎用処理ユニット(GPU)によって複数回のDP反復を実行して、前記AIモデルをトレーニングするステップと、を含み、
前記複数回のDP反復は、
各回のDP反
復に対し、
第1のDPサイクルにおいて、前記複数のGPUは、それぞれ、前記複数のデータブロックの一つに対して、データ圧縮操作
を並行して実行し、それぞれの第1の
圧縮データブロックを生成し、
第2のDPサイクルにおいて、前記複数のGPUは、それぞれ、プロセッサ間リンクを介して、それぞれの第1の
圧縮データブロックを、更に処理するために論理リング内の下流のGPUに転送し、そして、
それぞれ、対応するプロセッサ間リンク或いはCCIX接続を介して、前記論理リング内の上流GPUから、
当該上流GPUがデータ圧縮操作を実行して生成した第2の
圧縮データブロックを、さらに処理するために受信し、
第3のDPサイクルにおいて、前記複数のGPUは、それぞれ、現在のGPUによって処理される第1の
圧縮データブロックと、対応する上流のGPUによって処理され、当該GPUから受信された第2の
圧縮データブロックとに対して、
合計操作を実行して、第1のDP結果を生成
し、
第4のDPサイクルにおいて、前記複数のGPUは、それぞれ、前記第1のDP結果に対して、データ解凍操作を実行し、解凍して得られたデータブロックは、次回のDP反復に用いられる、ことを含み、
前記合計操作は、前記第1の
圧縮データブロックと第2の
圧縮データブロックとをパイプライン化して、一方の
圧縮データブロックのビットマスクフィールド内のビットを他方の
圧縮データブロックのビットマスクフィールド内のビットと比較し、比較した結果を出力する操作である、データ処理システム。
【請求項5】
指令が記憶された非一時的な機械可読媒体であって、
前記指令は、プロセッサによって実行されると、前記プロセッサに人工知能AIトレーニングの操作を実行させ、前記操作は、
CPUにより配信された複数のデータブロックを含むトレーニングデータセットに基づい
てAIモデルをトレーニングするための要求を、前記CPUから受信するステップと、
論理リングに配置された複数の汎用処理ユニット(GPU)によって複数回のDP反復を実行して、前記AIモデルをトレーニングするステップと、を含み、
前記複数回のDP反復は、
各回のDP反
復に対し、
第1のDPサイクルにおいて、前記複数のGPUは、それぞれ、前記複数のデータブロックの一つに対して、データ圧縮操作
を並行して実行し、それぞれの第1の
圧縮データブロックを生成し、
第2のDPサイクルにおいて、前記複数のGPUは、それぞれ、プロセッサ間リンクを介して、それぞれの第1の
圧縮データブロックを、更に処理するために論理リング内の下流のGPUに転送し、そして、
それぞれ、対応するプロセッサ間リンク或いはCCIX接続を介して、前記論理リング内の上流GPUから、
当該上流GPUがデータ圧縮操作を実行して生成した第2の
圧縮データブロックを、さらに処理するために受信し、
第3のDPサイクルにおいて、前記複数のGPUは、それぞれ、現在のGPUによって処理される第1の
圧縮データブロックと、対応する上流のGPUによって処理され、当該GPUから受信された第2の
圧縮データブロックとに対して、
合計操作を実行して、第1のDP結果を生成
し、
第4のDPサイクルにおいて、前記複数のGPUは、それぞれ、前記第1のDP結果に対して、データ解凍操作を実行し、解凍して得られたデータブロックは、次回のDP反復に用いられる、ことを含み、
前記合計操作は、前記第1の
圧縮データブロックと第2の
圧縮データブロックとをパイプライン化して、一方の
圧縮データブロックのビットマスクフィールド内のビットを他方の
圧縮データブロックのビットマスクフィールド内のビットと比較し、比較した結果を出力する操作である、非一時的な機械可読媒体。
【請求項6】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、前記請求項1乃至
3の何れか一項に記載の方法を実現させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、概して機械学習に関する。より具体的には、本開示の実施形態は、ニューラルネットワークトレーニングに関する。
【背景技術】
【0002】
複雑な問題を解決するために、ニューラルネットワークはますます複雑になる。複雑なニューラルネットワークのトレーニングの際に、複雑な深層学習アルゴリズム及びより多くの帯域幅が必要であるため、トレーニング時間、コスト、消費電力が増やすことになる。トレーニングを加速するために、高級なサーバ(例えば、より複雑なインタフェースを有する高速なサーバまたはサーバクラスタ)を利用して、計算および通信を改善し、高価なハードウェアのコストを削減する。しかし、従来の解決手段では、性能およびコストの点で依然として挑戦がある。
【発明の概要】
【0003】
第1の態様によれば、本開示のいくつかの実施形態は、データ処理(DP)アクセラレータを用いて、人工知能(AI)モデルをトレーニングするための、コンピュータにより実施される方法であって、CPUにより配信された複数のデータブロックを含むトレーニングデータセットに基づいて前記AIモデルをトレーニングするための要求を、前記CPUから受信するステップと、論理リングに配置された複数の汎用処理ユニット(GPU)によって複数回のDP反復を実行して、前記AIモデルをトレーニングするステップと、を含み、前記複数回のDP反復は、各回のDP反復のに対し、第1のDPサイクルにおいて、前記複数のGPUは、それぞれ、前記複数のデータブロックの一つに対して、並行して第1の所定のDP操作を実行し、それぞれの第1のDP結果を生成し、第2のDPサイクルにおいて、前記複数のGPUは、それぞれ、プロセッサ間リンクを介して、それぞれの第1のDP結果を、更に処理するために論理リング内の下流のGPUに転送する、ことを含む、コンピュータにより実施される方法を提供する。
【0004】
第2の態様によれば、本開示のいくつかの実施形態は、データ処理システムであって、少なくとも一つのCPUと、前記CPUに接続された複数の汎用処理ユニット(GPU)と、を含み、前記複数のGPUのそれぞれは、前記CPUから配信された人工知能AIデータ処理(DP)操作を実行するように構成され、前記操作は、CPUにより配信された複数のデータブロックを含むトレーニングデータセットに基づいて前記AIモデルをトレーニングするための要求を、前記CPUから受信するステップと、論理リングに配置された複数の汎用処理ユニット(GPU)によって複数回のDP反復を実行して、前記AIモデルをトレーニングするステップと、を含み、前記複数回のDP反復は、各回のDP反復のに対し、第1のDPサイクルにおいて、前記複数のGPUは、それぞれ、前記複数のデータブロックの一つに対して、並行して第1の所定のDP操作を実行し、それぞれの第1のDP結果を生成し、第2のDPサイクルにおいて、前記複数のGPUは、それぞれ、プロセッサ間リンクを介して、それぞれの第1のDP結果を、更に処理するために論理リング内の下流のGPUに転送する、ことを含む、データ処理システムを提供する。
【0005】
第3の態様によれば、本開示のいくつかの実施形態は、指令が記憶された非一時的な機械可読媒体であって、前記指令は、プロセッサによって実行されると、前記プロセッサに人工知能AIトレーニングの操作を実行させ、前記操作は、CPUにより配信された複数のデータブロックを含むトレーニングデータセットに基づいて前記AIモデルをトレーニングするための要求を、前記CPUから受信するステップと、論理リングに配置された複数の汎用処理ユニット(GPU)によって複数回のDP反復を実行して、前記AIモデルをトレーニングするステップと、を含み、前記複数回のDP反復は、各回のDP反復のに対し、第1のDPサイクルにおいて、前記複数のGPUは、それぞれ、前記複数のデータブロックの一つに対して、並行して第1の所定のDP操作を実行し、それぞれの第1のDP結果を生成し、第2のDPサイクルにおいて、前記複数のGPUは、それぞれ、プロセッサ間リンクを介して、それぞれの第1のDP結果を、更に処理するために論理リング内の下流のGPUに転送する、ことを含む、非一時的な機械可読媒体を提供する。
【0006】
第4の態様によれば、本開示のいくつかの実施形態は、コンピュータプログラムであって、前記コンピュータプログラムがプロセッサにより実行されると、第1の態様に記載の方法を実現させるコンピュータプログラムを提供する。
【図面の簡単な説明】
【0007】
図面は、本発明の実施形態を例示的に示しているが、本発明の実施形態を限定するものではない。図面において、類似の要素に同じ符号が付けられている。
【
図1】本願実施形態に係る、AIモデルのトレーニング用のシステムの一例を示す図である。
【
図2】
図2A~
図2F本願実施形態に係るAIモデルのトレーニングにおけるデータ転送の例示的なプロセスを示す図である。
【
図4】本願実施形態による、データ圧縮、データ操作、および相互接続バスの例示的アーキテクチャを示す図である。
【
図5】一実施形態によるゼロサム圧縮技術を示す図である。
【
図6】一実施形態に係る圧縮データに対する操作の例を示す図である。
【
図7】一実施形態によるAIモデルトレーニングの例示的なプロセスを示す図である。
【発明を実施するための形態】
【0008】
以下、本発明の実施の形態について図面を参照して説明する。以下の説明及び図面は本開示の説明であり、本開示を限定するものと解釈されるべきではない。本開示の様々な実施形態の完全な理解を提供するために、多くの特定の詳細が記載されている。しかしながら、いくつかの場合において、本開示の実施形態の簡潔な説明を提供するために、周知または従来の詳細は記載されていない。
【0009】
本明細書において「一実施形態」または「実施形態」という言及は、実施形態を用いて説明された特定の特徴、構造、または特徴が、本開示の少なくとも1つの実施形態に含まれてもよいことを意味する。明細書の様々な箇所に現れる「一実施形態において」という語句は、必ずしも同じ実施形態を指すものではない。
【0010】
様々な実施形態によれば、アドバンストインタコネクト技術を利用して人工知能(AI)トレーニングを加速するための方法およびシステムが提供される。本開示に記載の実施形態によれば、ソフトウェア及びハードウェアコンポーネントを利用することにより、相互接続通信帯域幅の要求、消費電力を大幅に低減させ、且つトレーニング時間を低減させ、これにより、精度損失がない状況でトレーニング性能を向上させる。分散システムにおいてシステムのデータ圧縮及び解凍を用いてAIモデルトレーニングを行うとともに、効率的な全減少(All-Reduce )アルゴリズムを併用する。
【0011】
一実施形態によれば、AIモデルトレーニングのコンピュータにより実施される方法は、プロセッサクラスタで、分散規約(Scatter-Reduce)プロセスにおいて、複数回の反復を実行することを含み、それぞれのプロセッサは、グラフィックス処理ユニット(GPU)であってもよい。ニューラルネットワークモデルをトレーニングするために、プロセッサは、論理リングとして配置され、それぞれのプロセッサは、複数のデータブロックを有し、それぞれのデータブロックは、ニューラルネットワークモデル内のパラメータのセットまたはパラメータのセットを更新するための勾配のセットをそれぞれ表すようにしてもよい。
【0012】
各回の反復において、プロセッサは、論理リングにおける前のプロセッサから、圧縮データブロックを受信し、受信した圧縮データブロックと、現在プロセッサで生成された圧縮データブロックとに対して、操作を実行して、データブロックを演算し、演算されたデータブロックを論理リング内の後続のプロセッサに送信する。複数回の反復が終了すると、複数のプロセッサ上の各データブロックは、すべて圧縮されて操作されたことになる。この方法は、複数のプロセッサのそれぞれにおいて、圧縮データブロックを識別する操作をさらに含み、ここで、圧縮データブロックは、複数のプロセッサの対応するデータブロックから算出されたものである。
【0013】
一実施形態では、識別された圧縮データブロックは、論理リング内の他のプロセッサのそれぞれに配信され、そのプロセッサ上で解凍され、ニューラルネットワークモデル内のパラメータを更新するに使用される。プロセッサは、分散型AIモデルトレーニングシステムの異なるシステム内の中央処理装置(CPU)に添付可能である。一実施形態では、各プロセッサは、ゼロ値圧縮技法を使用してデータブロックを圧縮および解凍するためのハードウェアベースまたはソフトウェアベースの圧縮モジュールを含んでも良い。圧縮データブロックは、ビットマスク部分と圧縮データ部分とを有するデータ構造によって表すことができ、ビットマスクは、データブロック内の非ゼロ値の位置を示すビットを含む。
【0014】
一実施形態によれば、中央処理装置(CPU)からAIトレーニングのための要求を受信すると、論理リングとして配置された汎用処理装置(GPU)の各々は、CPUから配信されたデータブロックに対してデータ処理(DP)操作をパイプライン方式で繰り返し実行するように構成される。各GPUは、CPUに対してDPアクセラレータとして操作する。毎回の反復について、第1のDPサイクルにおいて、複数のGPUは、それぞれ、データブロックのうちの1つに対して、並行して第1の所定のDP操作(例えば、データ圧縮)を実行し、それぞれのDP結果を生成する。第2のDPサイクルにおいて、複数のGPUは、それぞれ、対応するプロセッサ間リンクを介して、それぞれのDP結果を論理リング内の対応する下流のGPUに転送し、そこでさらに処理する。説明のために、GPUをDPアクセラレータの例として使用するが、他のタイプのプロセッサまたは処理ロジックをDPアクセラレータとして使用してもよい。
【0015】
一実施形態では、第2のDPサイクル中に、各GPUは、対応するプロセッサ間リンクを介して、論理リング内の対応する上流GPUから処理結果をも受信し、受信された処理結果は、GPUで更なる処理を実行するに用いられる。一実施形態では、第3のDPサイクル中に、複数のGPUの各々は、自身によって処理された第1のデータブロック(例えば、処理結果)と、上流のGPUから受信した第2のデータブロック(例えば、上流のGPUによる処理結果)とに対して、第2の所定のDP操作(例えば、加算などの結合演算)を同時に実行する。一実施形態では、第4のDPサイクル中に、複数のGPUの各々は、データ解凍操作などのさらなるDP操作を実行する。
【0016】
図1は、一実施形態による、AIモデルのトレーニング用のシステムの一例を示す図である。
図1に示すように、システムは、複数のサーバ(例えば、サーバA103およびサーバB105)に分散された汎用処理ユニット(GPU)クラスタ101を含み、各サーバは、1つまたは複数のCPUを含み、各CPUは、GPUなどの1つまたは複数のデータ処理(DP)アクセラレータと関連付けられている。
【0017】
サーバは、イーサネット接続111を介して互いに通信するCPU107およびCPU109を含むことができる。
図1に示すシステム例では、各CPUは、PCIe(Peripheral Device Interconnection High Speed)スイッチを介してCPUに接続された複数のGPUを有することができる。例えば、サーバA103において、GPU117、GPU119およびGPU121は、PCIeスイッチA113を介してCPU A107に接続される。サーバB105において、GPU123、GPU125およびGPU127は、PCIe B115を介してCPU B109に接続される。
【0018】
CPU107およびCPU109は、ニューラルネットワークをトレーニングするためのタスクを協働させるために、イーサネット接続111などのプロセッサ間リンクを介して互いに通信することができる。例えば、ジョブコマンドは、イーサネット接続111を介して各サーバに配信することができる。次に、ジョブコマンドを、サーバ内のCPUから当該CPUに接続されたGPUに配信ることができる。ジョブコマンドが配信られると、システム内のGPU間には、対応するチップ間リンク122を介してデータを転送可能とされる。チップ間リンク112には、例えば、アクセラレータ用のキャッシュコヒーレントインタコネクト(CCIX)リンクなど、様々なチップ間相互接続のソリューションが採用できる。
図1に示すように、一方向リングトポロジーを使用することができるが、システム内のGPUは、双方向リングトポロジーに配置される。
【0019】
CCIXは、CCIXアライアンスによって開発されたオープンキャッシュコヒーレンス相互接続アーキテクチャである。CCIXは、標準的なPCIeのキャッシュコヒーレンシを拡張することによって、システム内のCPUなどの中央プロセッサとGPUなどの様々なアクセラレータとの間の通信を簡略化するように設計されている。CCIXは、異種システムアーキテクチャのためのキャッシュコヒーレンスフレームワークを提供する高性能チップ間相互接続アーキテクチャである。システム内の中央処理装置と様々な他のアクセラレータとの間のキャッシュコヒーレンシは常に自動的に維持される。CCIXをサポートする各装置は、少なくとも1つのCCIXポートを含み、CCIXポートは、CCIXの起用されたあらゆる他のデバイスとは、ピン互換性がある。CCIXは、チップ・トゥ・チップ、チップ・トゥ・スイッチ・トゥ・チップ、グリッド、デイジーチェーン、およびリングなどの様々なトポロジーをサポートする。
【0020】
一実施形態では、GPUは、それぞれのCPUから配信されたデータブロックに対して、パイプライン方式でAIトレーニング動作を実行するように構成される。それぞれのGPUは、さらに、プロセッサ間リンクを介して互いに通信する。GPUは、さらなるデータ処理のために、上流のGPUからの処理結果を受信するように環状に構成されてもよい。それぞれのGPUは、処理結果をその対応する下流の、さらなる処理を実行するためのGPUにさらに送信することができる。したがって、それぞれのGPUは、並列して、配信られたDP操作を実行し、そのDP結果をダウンストリームGPUに送信する。且つ、各GPUは、その上流のGPUから処理結果を受信して、さらなる処理を実行する。
【0021】
図2A~
図2Fは、一実施形態によるAIモデルのトレーニングにおけるデータ転送の例示的なプロセスを示す図である。ここでは、GPU203、205、および207の3つのGPUが示されているが、例示的なプロセスは、トレーニングされるニューラルネットワークの複雑さ、トレーニング用データのサイズ、およびユーザが所望するトレーニングの速度などの複数の要因に応じて、できる限り多くのGPU(例えば、数千個のGPU)を使用することができる。
【0022】
例示的なシステム上でトレーニングされたニューラルネットワークの例は、結合されるニューロンの集合を含む多層パーセプトロン(MLP)ニューラルネットワークを含む。MLPニューラルネットワーク内のニューロンは、1つの層内の各ニューロンが後続の層内の各ニューロンにパラメータ(例えば、重みおよびバイアス)で結合されると、完全に結合され得る。
【0023】
ニューラルネットワークモデルのトレーニング中、勾配降下(すなわち、逆伝達)を使用して、ニューラルネットワークモデルの期待値と実際の出力との間の差を最小化するためのパラメータのセットを決定することができる。勾配降下は、損失/誤差関数の勾配を計算するステップと、勾配に応答して既存のパラメータを更新するステップとを含む。このサイクルは、損失関数の極小値に達するまで繰り返される。
【0024】
一実施形態では、ニューラルネットワークモデルのトレーニング用データセットは、複数のサブセットに分割され、各サブセットは、ニューラルネットワークのトレーニングが複数のGPUによって並行して行われるように、GPUのうちの1つ上でニューラルネットワークモデルをトレーニングするために使用される。各GPUは、ニューラルネットワークモデルの完全なコピーを有することができる。
【0025】
トレーニング用データセットの各サブセットは、複数の等しいサイズのデータブロックに論理的に分割することができる。例示的なプロセスでは、ブロックの数は、 GPUの数に等しい。ニューラルネットワークモデルの並列的なトレーニンは、勾配降下の複数の反復を必要とする。毎回の反復に、各GPUは、ネットワークパラメータに対する損失の勾配を計算するために、GPU上のデータに対してニューラルネットワークモデルの順方向伝達を実行し、続いて誤差の逆伝達を実行する。次に、GPUは、互いに通信して、勾配の統計量(例えば、平均値、最大値、または最小値)を計算し、そして、統計量(例えば、平均勾配)を利用して、更新されたパラメータを得ることができる。ニューラルネットワークモデルは、多数のパラメータ(例えば、数十億のパラメータ)を有し、各パラメータは、それぞれ勾配値に関連付けられるようにすることができる。このように、ニューラルネットワークにとって、勾配の大きさは非常に大きく、GPU間で勾配を転送することは、かなり帯域幅を占有する。
【0026】
再び
図2A~
図2Fを参照すると、例示的なプロセスは、GPU間のデータ転送による要求の帯域幅を低減するためのアルゴリズムを示す。一実施形態では、本開示で使用される帯域幅とは、所与のネットワーク接続における最大データ転送レートである。当該アルゴリズムは、2つのプロセスを含むことができる。第1のプロセスは、分散規約(Scatter-Reduce)プロセスであり、第2のプロセスは、全凝集(Allgather)プロセスである。Scatter-Reduceプロセス中において、GPUは、各GPUが多数の最終結果ブロックで終了するようにデータを交換することができる。Allgatherプロセス中において、GPUは、すべてのGPUが完全な最終結果で終わるように、これらの結果ブロックを交換することができる。
【0027】
各GPUは、GPU上のトレーニング用データセットのサブセットを等しいサイズのデータブロックに分割するように構成された1つ以上のアプリケーションを含むことができる。例示的なシステムでは、各GPU上のデータブロックの数は、GPUの数である。ニューラルネットワークモデルのトレーニング中において、各データブロックに対しては、それ自体の勾配のセットを生成することができる。
【0028】
この例では、上述したように、システム内に3つのGPUが存在するので、それぞれのGPU上のデータブロックの数は3である。GPU#0 203上のトレーニング用データのサブセットから、3組の勾配a0215、b0231、c0237を生成することができ、GPU#1 205上のトレーニング用データのサブセットから、さらに3組の勾配a1217、b1223、c1239を生成することができる。同様に、GPU#2 207上のトレーニング用データのサブセットから、3組の勾配a2 219、b2235、c2241が生成される。一実施形態では、各GPU上の異なる勾配セットは、アレイまたは別のデータ構造で記憶されてもよい。
【0029】
一例として、当該アルゴリズムは、トレーニング用データセットの各サブセットによって生成された勾配を合計するように設計されても良い。これにより、アルゴリズムが完了すると、各GPUは、トレーニング用データセットから生成された勾配の合計を有することになる。
【0030】
例示的なプロセスにおけるGPUは、Scatter-Reduceプロセス中にN-1回の反復を有することができ、ここで、Nは、システム内のGPUの総数である。このように、例示的なシステムにおけるGPUは、2つの反復を有することができる。毎回の反復時、各GPUは、GPU上の1組の勾配をその右隣に送信するとともに、その左隣から1組の勾配を受信して、当該2組の勾配を加算して1組の新しい勾配とすることができる。各GPUによって送信または受信される勾配の組は、毎回の反復に異なる。n番目のGPUは、n番目の勾配の組が送信されたことによって開始するとともに、(n-1)番目の勾配の組を受信するように、処理を逆行する。
【0031】
図2A~
図2Cは、Scatter-Reduce処理を示す図である。
図2Aは、Scatter-Reduceプロセスの第1回の反復におけるデータ伝送を示す。第1の送信および第1の受信が完了した後、各GPUは、2つの異なるGPU上の2組の勾配の合計を表す値を有するアレイ要素を有する。例えば、GPU205における第1の要素a1は、第2のGPU205および第1のGPU203からの勾配の組の合計を含むことができる。
図2Bは、Scatter-Reduceプロセスの第2回の反復におけるデータ転送を示しており、Scatter-Reduceプロセスの第1回の反復の完了後の中間和も示す。第2回の反復では、Scatter-Reduceプロセスが続き、そして、Scatter-Reduceプロセスの終了時に(すなわち、この例では第2回の反復の後に)、各GPUは、すべてのGPUに亘る、対応するアレイ要素のすべての勾配の合計を含む一つのアレイ要素を有する。
図2Cは、Scatter-Reduce処理終了時の最終状態を示している。
【0032】
図2D~
図2Fは、Allgatherプロセスを示す。当該プロセスは、Scatter-Reduceと同様に行われ、且つ、N-1回の反復を有する。Scatter-Reduceと比べ、受信された勾配が、GPUによって受信された勾配に累積することの代わりに、受信GPU上の対応するアレイ要素内の勾配をカバーするという点で相違する。
図2Dは、Allgatherプロセスの第1回の反復におけるデータ転送を示す。
図2Eに示すように、第1回の反復が完了した後、各GPUは、すべてのGPUに亘る対応するアレイ要素内のすべての勾配の合計をそれぞれ含む2つのアレイ要素を有する。
図2Eは、第2回の反復におけるAllgatherプロセス、すなわち例示的プロセスにおける最終回の反復を示す。
図2Fに示すように、Allgatherプロセスの終了時に、GPUは、トレーニング用データセット全体からの完全に蓄積された勾配を有する。例示的なプロセスは、すべてのデータ転送が、離散の反復において同期して起こるので、帯域幅が最適となる。
【0033】
図3は、
図2A~
図2Fの処理の変形例を示すフローチャートである。一実施形態では、
図3に示される例示的なプロセスを使用して、ニューラルネットワークパラメータを更新するための勾配をニューラルネットワークモデルのトレーニング中に転送することができる。ここで、分散サーバ間で数十メガバイトのデータが転送される必要があるとともに、協働して操作する必要もある。これは、性能及び遅延を改善できる効率的なハードウェア及びソフトウェアを必要とする。
【0034】
一実施形態では、例示的なプロセスは、All-Reduceアルゴリズム、を利用し、且つ、ソフトウェアとハードウェアとの協調設計により、性能および遅延を改善する。ソフトウェアとハードウェアとの協調設計とは、所望の機能を実現するために、ハードウェアとソフトウェアを同時に設計することをいう。この例示的なプロセスは、クラスタ内のGPUを接続するために使用されるアクセラレータのキャッシュコヒーレンスインタコネクト(CCIX)などのハードウェアコンポーネントと、圧縮データに基づくハードウェア計算を可能にするゼロ値圧縮モジュールおよび他の圧縮モジュールなどのソフトウェアモジュールを使用する。この例示的なプロセスは、効率的なAll-Reduceプロセスを実行するように設計された分散システムでシステムデータ圧縮を使用する。これにより、より速くトレーニングデータセットの異なるサブセットから生成された勾配を累積して各GPUに分配することができ、よって、AIモデルトレーニングをより速くすることができる。
【0035】
図3において、左段は、
図2A~
図2Fに詳細に記載された典型的なAll-Reduceプロセス302を示し、右段は、分散システム上でシステム圧縮を使用した改善されたAll-Reduceプロセスを示す。
図3は、一例として、論理リングを形成するように配置されている3つのGPUを使用している。
【0036】
典型的なAll-Reduceプロセス302および改善されたAll -Reduceプロセスにおいて、CPU間で転送されるデータブロックは、データ構造(例えば、アレイ)に格納され、且つ、データブロックは、ニューラルネットワークモデルをトレーニングするために使用されるトレーニングデータセットのサブセットの異なるブロックから生成された勾配であってもよい。それぞれのGPUは、トレーニングされるニューラルネットワークモデルの完全なコピーを有することができる。勾配は、ニューラルネットワークモデルのパラメータを更新するためにGPU間で渡される。
【0037】
一実施形態では、各GPU上のデータブロックは、Scatter-Reduceプロセスの第1回の反復または第1の処理サイクルにおいて圧縮モジュールにより圧縮されてもよく、当該圧縮モジュールは、ハードウェア上で実施されてもよく、ソフトウェアモジュールとして実施されてもよい。例えば、操作301、315、329では、GPU#0 203上のデータブロックa0、GPU#1 205上のデータブロックb1、GPU#2 207上のデータブロックc2がそれぞれ圧縮される。
【0038】
圧縮データブロックは、次の処理サイクルにおいて隣接のGPUに送信されてもよい。例えば、操作303において、GPU#0 203上の圧縮データブロックをGPU#1 205に送信してもよく、操作317において、GPU#1 205上の圧縮データブロックをGPU#2 207に送信してもよく、操作331において、GPU#2 207上の圧縮データブロックをGPU#0 203に送信してもよい。
【0039】
一実施形態では、圧縮データブロックが隣接のGPUに送信されると同時に、各GPU上の異なるデータブロックが圧縮され、上述のように受信された圧縮データに付加されてもよい。当該例示的な実施形態では、合計操作を例に挙げているが、他の操作(例えば、乗算、演繹、及び数学的平均など)を用いてもよい。
【0040】
例えば、操作305において、GPU#0 203上のデータブロックc0は圧縮されて、GPU#2 207から受信された圧縮データブロックc2に付加されてもよい。操作319において、GPU#1 205上のデータブロックa1は圧縮されて、GPU#0 203から受信された圧縮データブロックa0に付加されてもよい。操作333において、GPU#2 207上のデータブロックb2が圧縮されて、GPU#1 205から受信した圧縮データブロックb1に追加される。
【0041】
上記のプロセスは、Scatter-Reduceプロセスの残りの反復ごとに繰り返すことができる。反復の回数は、GPUの数から1を引いた数であってもよい。このように、改善されたAll-ReduceプロセスにおけるScatter-Reduceプロセス305は、2回の反復を有することができる。残りの反復のそれぞれにおいて、各GPUは、元の圧縮データブロックをGPU上で送るのではなく、圧縮データブロックの合計を複数のGPUから次のGPUに送ることができる。
【0042】
例えば、第2回の反復において、操作307において、GPU#0 203は、圧縮データブロックc0と圧縮データブロックc2との合計をGPU#1 205に送信することができる。操作321において、GPU#1 205は、圧縮データブロックa0と圧縮データブロックa1との合計をGPU#2 207に送信することができる。操作335において、GPU#2 207は、圧縮データブロックb1と圧縮データブロックb2との合計をGPU#0 203に送信することができる。
【0043】
一実施形態では、圧縮データブロックの合計が隣接するGPUに送信されると同時に、各GPUは、GPU上の残りのデータブロックを圧縮して、この前論理リング内の前のGPUから受信した圧縮データブロックの合計に圧縮データブロックに付加されてもよい。例えば、操作309において、GPU#0 202上のデータブロックb0が圧縮され、圧縮データブロックb1およびb2の合計に付加されてもよい。操作323において、GPU#1 205上のデータブロックc1は、圧縮され、圧縮データブロックc0およびc2の合計に追加されてもよい。操作337において、GPU#2 207上のデータブロックa2は、圧縮されて、圧縮データブロックa0およびa1の合計に追加されてもよい。
【0044】
したがって、Scatter-Reduceプロセスの終了時には、例示的なプロセスでは、各GPUは、アレイ内のすべてのGPUに亘る対応する位置からの圧縮データブロックの合計を有する。
【0045】
Allgatherプロセス中に、各GPUは、圧縮データブロックの合計をアレイ内の対応する位置から他のGPUに配信してもよい。その結果、Allgatherプロセスの終了時に、各GPUは、全ての圧縮データブロックの合計のコピーを有することになる。その後、操作313、327、および341に示されるように、各GPUは、圧縮された合計を解凍してもよい。各GPU上の解凍された合計を使用して、GPU上のニューラルネットワークモデルのコピーのパラメータを更新することができる。
【0046】
図4は、一実施形態による、データ圧縮、データ操作、および相互接続バスの例示的アーキテクチャを示す。
【0047】
図4のグラフは、生(RAW)データブロック405および407を圧縮し、圧縮しされたデータブロックを相互接続バス416および418を介して転送し、圧縮データに対して操作413および419を実行し、圧縮データを生(RAW)データへ解凍する、データフローを示す。
【0048】
図3に示すように、各GPU上で、圧縮モジュールと解凍モジュールの対が一対使用されてもよい。例えば、GPU A401上では、圧縮モジュール412および解凍モジュール409が使用され、GPU B403上では、圧縮モジュール417および解凍モジュール415が使用されてもよい。
【0049】
圧縮モジュール412および417には、任意の圧縮アルゴリズムを使用することができる。圧縮アルゴリズムの例として、ゼロ値圧縮アルゴリズム/技法があり、以下の開示において詳細に説明される。ゼロ値比が50%である場合、ゼロ値圧縮アルゴリズムを採用することで、50%に近いデータ転送の帯域幅を節約することができる。相互接続バスと圧縮データに対する様々な操作とが組み合わせられる場合、帯域幅のメリットは50%を超えることができる。
【0050】
図5は、一実施形態によるゼロ圧縮技術を示す。
図5において、マトリクス513は、ニューラルネットワークモデルをトレーニングするための元の4×4データアレイである。データ構造510は、ゼロ値圧縮技術を使用したマトリクス513の圧縮形式を示している。データ構造510は、例えば、タイプフィールド501、長さフィールド503、ビットマスクフィールド505、および圧縮データフィールド507などの複数のフィールドを含む。マトリクス513およびデータ構造510は、圧縮511および解凍509を使用して相互に変換することができる。
【0051】
一実施形態では、タイプフィールド501は、マトリクス513内の値のデータタイプを表す。データタイプの例として、浮動小数点数(FP)32、FP16、および整数(INT)8が挙げられる。長さは、バイトで、ビットマスクフィールド505と圧縮データフィールド507との合計サイズを表し、又は、一定のサイズのビットマスクバイトを有する圧縮データフィールド507のサイズを表す。ビットマスクフィールド505は、行列513内の特定の位置における非ゼロ値を表すために「1」に設定され、ゼロ値を表すために「0」に設定される。圧縮データフィールド507は、正しいアラインメント/オフセットを有する非ゼロ値データのみを含む。ビットマスクフィールドは、非ゼロで値を4×4データアレイ513内の元の位置に書き戻すために、解凍モジュール(例えば、
図4の解凍モジュール409または415)によって使用されてもよい。
【0052】
図6は、本実施形態に係る圧縮データに対する操作の例を示す図である。
図6に示すように、合計操作を例として、2つの圧縮データブロックに対してどのように操作するかを説明する。
【0053】
一実施形態では、圧縮データ617は、マトリクスA613の圧縮形式でマトリクスA613を表すデータ構造であり、圧縮データ619は、マトリクスB615の圧縮形式でマトリクスB615を表すデータ構造である。これらの2つの構造は、
図5に示される圧縮技術により生成され、解凍モジュール(例えば、解凍モジュール409または415)により、それぞれマトリクスA613およびマトリクスB615に解凍される。
【0054】
一実施形態では、2つの圧縮されたマトリクス613および615をその圧縮形式で合計するために、ハードウェア圧縮モジュール(例えば、
図4の圧縮モジュール411または417)は、まず、2つの圧縮データ構造617および619をパイプライン化して、一方のデータ構造内のビットマスクフィールド内のビットを他方のデータ構造のビットマスクフィールド内のビットと比較し、比較した結果621を出力することができる。
【0055】
GPU間でデータを圧縮形式で転送することによって、データ転送に必要な帯域幅を低減することができる。さらに、圧縮データブロックは、その非圧縮形式より少ないメモリを占有し、操作中にメモリから読み出され、メモリに書き込まれるビットが少ないので、圧縮データブロックの操作に必要なメモリを低減することができる。
【0056】
例えば、合計操作は、2回の読み出しおよび1回の書き込みを必要とすることがある。メモリから読み書きされるデータが圧縮された形式であるため、合計操作に必要なメモリを低減することができる。
【0057】
図7は、一実施形態によるAIモデルトレーニングの例示的なプロセス700を示す。プロセス700は、ソフトウェア、ハードウェア、またはそれらの組み合わせを含む処理ロジックによって実行することができる。
【0058】
再び
図7を参照すると、操作701において、論理リングとして配置された複数のプロセッサにおいて、複数回の反復を実行して、ニューラルネットワークモデルをトレーニングし、それぞれのプロセッサは、複数のデータブロックを含む。操作702において、複数回の反復のそれぞれに対し、複数のプロセッサのうちの1つが、論理リング内の前のプロセッサから、圧縮データブロックを受信し、受信した圧縮データブロックと当該プロセッサ上で生成された圧縮データブロックとに対して操作を実行して、データブロックを算出し、算出したデータブロックを論理リング内の後続のプロセッサに送信する。操作703において、複数のプロセッサの各々において、複数のプロセッサからの対応するデータブロックに基づいて算出された圧縮データブロックを識別する。識別されたデータブロックは、他のプロセッサのそれぞれに配信され、そこに解凍されて、ニューラルネットワークモデルのパラメータの更新などのAIモデルのトレーニングに用いられる。
【0059】
なお、上述した構成要素の一部または全部は、ソフトウェア、ハードウェア、またはそれらの組み合わせによって実現されてもよい。例えば、そのような構成要素は、永久記憶装置にインストールされて記憶されたソフトウェアとして実装することができ、このソフトウェアは、プロセッサ(図示せず)によってメモリにロードされて実行され、本明細書に記載のプロセスまたは操作全体を実施することができる。あるいは、そのようなコンポーネントは、集積回路(例えば、特定用途向けICまたはASIC)、デジタル信号プロセッサ(DSP)、またはフィールドプログラマブルゲートアレイ(FPGA)などの特定用途向けハードウェアにプログラムまたは組み込まれた実行可能コードとして実装することができ、実行可能コードは、対応するドライバおよび/またはオペレーティングシステムを介してアプリケーションからアクセスすることができる。さらに、そのようなコンポーネントは、1つまたは複数の特定の命令を介してソフトウェアコンポーネントによってアクセス可能な命令セットの一部として、プロセッサまたはプロセッサコア内の特定のハードウェアロジックとして実装することができる。
【0060】
上述の詳細な説明の一部は、コンピュータメモリ内のデータビットの操作のアルゴリズムおよびシンボル表現に基づいて提示されている。これらのアルゴリズム記述および表現は、データ処理分野の当業者が、当業者に最も効率的にその作業内容を伝えるために使用する方法である。ここで、アルゴリズムは、一般に、所望の結果をもたらす自己適合性操作シーケンスであると考えられる。これらの操作は、物理量を物理的に操作する必要がある操作である。
【0061】
これらの用語および類似の用語はすべて、適切な物理量と関連付けられ、これらの量に適用される便利なタグのみである。上述の議論から明らかなように、他に明示的に指摘されない限り、以下の特許請求の範囲に記載されているような用語を用いた説明は、コンピュータシステムのレジスタおよびメモリ内の物理的(電子的)量として表されているデータを、コンピュータシステムのメモリまたはレジスタまたは他のそのような情報記憶、送信または表示装置内の物理量として同様に表されている他のデータに変換する、コンピュータシステムまたは同様の電子計算装置の操作およびプロセスを、本明細書全体を通して意味することを理解されたい。
【0062】
本開示の実施形態は、本明細書の操作を実行するための装置にも関する。このようなコンピュータプログラムは、非一時的なコンピュータ可読媒体に格納される。機械可読媒体は、機械(例えば、コンピュータ)によって読み取り可能な形態で情報を記憶するための任意の機構を含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械可読記憶媒体、例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置を含む。
【0063】
前の図に描かれたプロセスまたは方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時的なコンピュータ可読媒体上に含まれる)、または両方の組み合わせを含む処理ロジックによって実行されてもよい。プロセスまたは方法は、いくつかのシーケンス操作に従って上述したが、説明したいくつかの操作は、異なるシーケンスで実行されてもよいことを理解されたい。さらに、いくつかの操作は、連続的ではなく並列に実行されてもよい。
【0064】
本開示の実施形態は、特定のプログラミング言語を参照して記載されていない。本明細書に記載の本開示の実施形態の教示は、様々なプログラミング言語を使用して実施することができることを理解されたい。
【0065】
以上、特定の実施形態を参照しながら、本発明について詳解してきた。以下の特許請求の範囲に記載された本開示のより広い趣旨および範囲から逸脱することなく、様々な変更を加えることができることは明らかである。したがって、本明細書および図面は、限定ではなく例示的なものと解釈されるべきである。