(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-02-01
(54)【発明の名称】フレキシブルケーブル接続に基づく分散型AIトレーニングトポロジー
(51)【国際特許分類】
G06F 15/173 20060101AFI20220125BHJP
G06F 9/38 20060101ALI20220125BHJP
G06F 13/10 20060101ALI20220125BHJP
G06F 13/36 20060101ALI20220125BHJP
【FI】
G06F15/173 683C
G06F15/173 673
G06F9/38 370C
G06F13/10 310C
G06F13/36 530C
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2020536942
(86)(22)【出願日】2019-11-15
(85)【翻訳文提出日】2020-11-26
(86)【国際出願番号】 CN2019118752
(87)【国際公開番号】W WO2021092890
(87)【国際公開日】2021-05-20
(81)【指定国・地域】
(71)【出願人】
【識別番号】518091956
【氏名又は名称】バイドゥ ドットコム タイムス テクノロジー (ベイジン) カンパニー リミテッド
(71)【出願人】
【識別番号】516353375
【氏名又は名称】バイドゥ ユーエスエー エルエルシー
【氏名又は名称原語表記】Baidu USA LLC
【住所又は居所原語表記】1195 Bordeaux Dr., Sunnyvale, CA 94089, U.S.A.
(74)【代理人】
【識別番号】110000914
【氏名又は名称】特許業務法人 安富国際特許事務所
(72)【発明者】
【氏名】ヂュ, ホァフェイ
(72)【発明者】
【氏名】オウヤン, ジェン
(72)【発明者】
【氏名】ヂャオ, ヂービャオ
(72)【発明者】
【氏名】ゴン, シャオヂャン
(72)【発明者】
【氏名】チェン, チンシュ
【テーマコード(参考)】
5B013
5B045
5B061
【Fターム(参考)】
5B013DD03
5B045BB25
5B045GG09
5B045GG12
5B061GG11
(57)【要約】
【課題】フレキシブルケーブル接続に基づく分散型AIトレーニングトポロジーの提供。
【解決手段】データ処理システムは、CPUと、バスを介して前記CPUに接続された複数のアクセラレータカードと、を備え、複数のアクセラレータカードのそれぞれが、前記CPUからDPタスクを受信して実行するデータ処理用のDPアクセラレータを複数有する。複数のアクセラレータカードのうちの少なくとも2つの間は、カード間接続を介して接続され、複数のDPアクセラレータのうちの少なくとも2つの間は、チップ間接続を介して接続される。CPUから受信した要求に応じて、CPUから受信した何れか一つの前記DPタスクを処理するために、何れか一つの前記アクセラレータカード、又は、何れか一つの前記アクセラレータカードにおける何れか一つの前記DPアクセラレータを、有効化または無効化するように、カード間接続及び前記チップ間接続は、それぞれ、動的に起動又は停止可能とされる。
【選択図】
図8
【特許請求の範囲】
【請求項1】
データ処理システムであって、
CPUと、
バスを介して前記CPUに接続された複数のアクセラレータカードと、を備え、
複数のアクセラレータカードのそれぞれが、前記CPUからDPタスクを受信して実行するデータ処理用のDPアクセラレータを複数有し、前記複数のアクセラレータカードのうちの少なくとも2つの間は、カード間接続を介して接続され、前記複数のDPアクセラレータのうちの少なくとも2つの間は、チップ間接続を介して接続され、
前記CPUから受信した要求に応じて、前記CPUから受信した何れか一つの前記DPタスクを処理するために、何れか一つの前記アクセラレータカード、又は、何れか一つの前記アクセラレータカードにおける何れか一つの前記DPアクセラレータを、有効化または無効化するように、前記カード間接続及び前記チップ間接続は、それぞれ、動的に起動又は停止可能とされる、
ことを特徴とするデータ処理システム。
【請求項2】
各前記アクセラレータカードにおける各前記DPアクセラレータは、それぞれのチップ間接続を介して前記アクセラレータカードにおける別のDPアクセラレータと相互接続するために利用可能なチップ間インターフェースを複数有する、
請求項1に記載のデータ処理システム。
【請求項3】
各前記アクセラレータカードにおける各前記DPアクセラレータは、それぞれのカード間接続を介して他のアクセラレータカードにおける別のDPアクセラレータと相互接続するために利用可能なチップ間インターフェースを複数有する、
請求項1に記載のデータ処理システム。
【請求項4】
各前記アクセラレータカードにおいて、前記DPアクセラレータが、1つ又は複数のチップ間接続を介して、互いに接続された複数の行および列として配置される、請求項1~3のいずれか一項に記載のデータ処理システム。
【請求項5】
前記複数のアクセラレータカードのうちの第1のアクセラレータカードにおける各行のDPアクセラレータは、それぞれの水平チップ間接続を介して直列接続されることにより、水平アクセラレータリングを形成する、
請求項4に記載のデータ処理システム。
【請求項6】
第1のアクセラレータカードにおける各列のDPアクセラレータは、一つ又は複数のカード間接続を介して、前記複数のアクセラレータカードのうちの第2のアクセラレータカードの対応する列に接続されることにより、垂直アクセラレータリングを形成する、
請求項5に記載のデータ処理システム。
【請求項7】
前記第1のアクセラレータカードにおける各列のDPアクセラレータは、それぞれの垂直チップ間接続を介して直列接続されることにより、垂直アクセラレータリングを形成する、
請求項4に記載のデータ処理システム。
【請求項8】
第1のアクセラレータカードにおける各行のDPアクセラレータは、それぞれのカード間接続を介して、前記アクセラレータカードのうちの第2のアクセラレータカードの対応する行に接続されることにより、水平アクセラレータリングを形成する、
請求項7に記載のデータ処理システム。
【請求項9】
各前記DPアクセラレータは、人工知能AIアクセラレータチップを備える、請求項1~8のいずれか一項に記載のデータ処理システム。
【請求項10】
前記バスは、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)リンクまたはイーサネット接続を含み、前記チップ間接続またはカード間接続は、アクセラレータ用のキャッシュコヒーレントインタコネクト(CCIX)リンクを含む、
請求項1~9のいずれか一項に記載のデータ処理システム。
【請求項11】
アクセラレータカードであって、
バスを介してCPUに接続されたホストインターフェースと、
前記CPUからDPタスクを受信して実行する複数のデータ処理DPアクセラレータと、を備え、
前記複数のDPアクセラレータのうちの少なくとも2つの間は、チップ間接続を介して接続され、
前記CPUから受信した要求に応じて、前記CPUから受信した何れか一つの前記DPタスクを処理するために、何れか一つの前記DPアクセラレータを、有効化または無効化するように、前記チップ間接続は、動的に起動又は停止可能とされる、
ことを特徴とするアクセラレータカード。
【請求項12】
各前記DPアクセラレータは、それぞれのチップ間接続を介して前記アクセラレータカードにおける別のDPアクセラレータと相互接続するために利用可能なチップ間インターフェースを複数有する、
請求項11に記載のアクセラレータカード。
【請求項13】
各前記DPアクセラレータは、それぞれのカード間接続を介して他のアクセラレータカードにおける別のDPアクセラレータと相互接続するために利用可能なチップ間インターフェースを複数有する、
請求項11に記載のアクセラレータカード。
【請求項14】
前記DPアクセラレータは、1つ又は複数のチップ間接続を介して、互いに接続された複数の行および列として配置される、
請求項11~13のいずれか一項に記載のアクセラレータカード。
【請求項15】
各行のDPアクセラレータは、それぞれの水平チップ間接続を介して直列接続されることにより、水平アクセラレータリングを形成する、
請求項14に記載のアクセラレータカード。
【請求項16】
各列のDPアクセラレータは、一つ又は複数のカード間接続を介して、複数のアクセラレータカードのうちの第2のアクセラレータカードの対応する列に接続されることにより、垂直アクセラレータリングを形成する、
請求項15に記載のアクセラレータカード。
【請求項17】
各列のDPアクセラレータは、それぞれの垂直チップ間接続を介して直列接続されることにより、垂直アクセラレータリングを形成する、
請求項14に記載のアクセラレータカード。
【請求項18】
各行のDPアクセラレータは、それぞれのカード間接続を介して、複数のアクセラレータカードのうちの第2のアクセラレータカードの対応する行に接続されることにより、水平アクセラレータリングを形成する、
請求項17に記載のアクセラレータカード。
【請求項19】
各前記DPアクセラレータは、人工知能AIアクセラレータチップを備える、
請求項11~18のいずれか一項に記載のアクセラレータカード。
【請求項20】
前記バスは、ペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeリンクまたはイーサネット接続を含み、前記チップ間接続またはカード間接続は、アクセラレータ用のキャッシュコヒーレントインタコネクト(CCIX)リンクを含む、請求項11~19のいずれか一項に記載のアクセラレータカード。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、概して機械学習に関する。より具体的には、本開示の実施形態は、人工知能(AI)アクセラレータチップトポロジーに関する。
【背景技術】
【0002】
分散型AIトレーニングは、トレーニングプロセス全体を加速し、トレーニング時間を短縮するために、複数のAIアクセラレータチップが同時に動作することを必要とする。したがって、複数のチップを協働させるためにAIアクセラレータチップのトポロジーが必要である。このようなトポロジーは、トレーニングのニーズに応じて、数個のAIアクセラレータチップから数千個のAIアクセラレータチップまでの様々なサイズがある。一般に、小さなトポロジーは、基板上のプリント回路基板(PCB)配線を使用して生成することができる一方、大きなトポロジーは、異なる基板を接続するためにイーサネットを使用して生成することができる。しかし、どちらの方法も、不器用であるか、または多数のハードウェアオーバーヘッドを必要とするため、実施可能ではない。
【発明の概要】
【課題を解決するための手段】
【0003】
第1の態様において、本開示の幾つかの実施例は、データ処理システムであって、CPUと、バスを介して前記CPUに接続された複数のアクセラレータカードと、を備え、複数のアクセラレータカードのそれぞれが、前記CPUからDPタスクを受信して実行するデータ処理用のDPアクセラレータを複数有し、前記複数のアクセラレータカードのうちの少なくとも2つの間は、カード間接続を介して接続され、前記複数のDPアクセラレータのうちの少なくとも2つの間は、チップ間接続を介して接続され、前記CPUから受信した要求に応じて、前記CPUから受信した何れか一つの前記DPタスクを処理するために、何れか一つの前記アクセラレータカード、又は、何れか一つの前記アクセラレータカードにおける何れか一つの前記DPアクセラレータを、有効化または無効化するように、前記カード間接続及び前記チップ間接続は、それぞれ、動的に起動又は停止可能とされる、データ処理システムを提供する。
【0004】
第2の態様において、本開示のいくつかの実施例は、アクセラレータカードであって、バスを介してCPUに接続されたホストインターフェースと、前記CPUからDPタスクを受信して実行する複数のデータ処理DPアクセラレータと、を備え、前記複数のDPアクセラレータのうちの少なくとも2つの間は、チップ間接続を介して接続され、前記CPUから受信した要求に応じて、前記CPUから受信した何れか一つの前記DPタスクを処理するために、何れか一つの前記DPアクセラレータを、有効化または無効化するように、前記チップ間接続は、動的に起動又は停止可能とされる、アクセラレータカードを提供する。
【0005】
図面は、本発明の実施形態を例示的に示しているが、本発明の実施形態を限定するものではない。図面において、類似の要素に同じ符号が付けられている。
【図面の簡単な説明】
【0006】
【
図1】本願実施形態に係る、AIモデルのトレーニング用のシステムの一例を示す図である。
【
図2A】本願実施形態に係るAIモデルのトレーニングにおけるデータ転送の例示的な処理を示す図である。
【
図2B】本願実施形態に係るAIモデルのトレーニングにおけるデータ転送の例示的な処理を示す図である。
【
図2C】本願実施形態に係るAIモデルのトレーニングにおけるデータ転送の例示的な処理を示す図である。
【
図2D】本願実施形態に係るAIモデルのトレーニングにおけるデータ転送の例示的な処理を示す図である。
【
図2E】本願実施形態に係るAIモデルのトレーニングにおけるデータ転送の例示的な処理を示す図である。
【
図2F】本願実施形態に係るAIモデルのトレーニングにおけるデータ転送の例示的な処理を示す図である。
【
図3】本願実施形態に係る、AIチップトポロジーを生成するための例示的なシステムを示す図である。
【
図4】本願実施形態に係る例示的なAIチップを示す図である。
【
図5】本願実施形態に係る例示的なPCB基板を示す図である。
【
図6】本願実施形態に係る例示的なAIチップトポロジー600を示す図である。
【
図7】本願実施形態に係るAIモデルのトレーニングの例示的なプロセスを示す。
【
図8】本願実施形態に係るAIチップトポロジーを生成するための例示的なプロセスを示す図である。
【発明を実施するための形態】
【0007】
以下、本発明の実施の形態について図面を参照して説明する。以下の説明及び図面は本開示の説明であり、本開示を限定するものと解釈されるべきではない。本開示の様々な実施形態の完全な理解を提供するために、多くの特定の詳細が記載されている。しかしながら、いくつかの場合において、本開示の実施形態の簡潔な説明を提供するために、周知または従来の詳細は記載されていない。
【0008】
本明細書において「一実施形態」または「実施形態」という言及は、実施形態を用いて説明された特定の特徴、構造、または特徴が、本開示の少なくとも1つの実施形態に含まれてもよいことを意味する。明細書の様々な箇所に現れる「一実施形態において」という語句は、必ずしも同じ実施形態を指すものではない。
【0009】
本開示において、AIアクセラレータ、AIアクセラレータチップ、チップ等の用語は互換的に使用することができ、それらの各々は、汎用処理ユニット(GPU)の一例であり、汎用処理ユニット(GPU)は、データ処理(DP)アクセラレータの一例である。
【0010】
一実施態様において、データ処理システムは、中央処理ユニット(CPU)と、バスを介して前記CPUに接続された複数のアクセラレータカードと、を備え、複数のアクセラレータカードのそれぞれが、CPUからDPタスクを受信して実行するデータ処理用のDPアクセラレータを複数有する。複数のアクセラレータカードのうちの少なくとも2つの間は、カード間接続を介して接続され、複数のDPアクセラレータのうちの少なくとも2つの間は、チップ間接続を介して接続される。CPUから受信した要求に応じて、CPUから受信した何れか一つのDPタスクを処理するために、何れか一つのアクセラレータカード、又は、何れか一つのアクセラレータカードにおける何れか一つの前記DPアクセラレータを、有効化または無効化するように、カード間接続及び前記チップ間接続は、それぞれ、動的に起動又は停止可能とされる。
【0011】
別の実施態様において、アクセラレータカードは、バスを介してCPUに接続されたホストインターフェースと、CPUからDPタスクを受信して実行する複数のデータ処理DPアクセラレータと、を備える。複数のDPアクセラレータのうちの少なくとも2つの間は、チップ間接続を介して接続され、CPUから受信した要求に応じて、CPUから受信した何れか一つの前記DPタスクを処理するために、何れか一つのDPアクセラレータを、有効化または無効化するように、チップ間接続は、動的に起動又は停止可能とされる。
【0012】
様々な実施形態によれば、AIチップトポロジーを動的に生成するためのシステムおよび方法が記載される。AIアクセラレータチップクラスタ内の基板(アクセラレータカードまたはアクセラレータモジュールとも呼ばれる)間のケーブル接続(チップ間接続またはプロセッサ間接続とも呼ばれる)を動的に起動または停止することによって、異なるサイズのAIトポロジーを生成することができる。チップクラスタは、異なる基板上に設けられた多数のAIチップを含むことができる。各基板は、等しい数のAIチップを含むことができ、ここで、AIチップは、プリント回路基板(PCB)配線または電気配線を介して相互接続される。
【0013】
例示的な方法において、チップクラスタ内のチップトポロジーを生成するための要求であって、当該チップトポロジーを構成するチップの数を指定する要求を受信する。チップクラスタは、ケーブル接続を介して互いに接続された複数の基板を含み、それぞれの基板に一セットのチップが配置される。当該要求に応じて、チップトポロジーのために指定された、チップの数と各基板上のチップセットの数とに基づいて、チップトポロジーに使用される一セットの基板セットを決定する。基板のセットが決定されると、基板のセット間のケーブル接続をチェックして、ケーブル接続が非アクティブ化されているかどうかを判断する。次に、非アクティブ化されているケーブル接続をアクティブ化して、要求されたチップトポロジーを生成する。
【0014】
一実施形態において、各チップは、チップとのチップ間接続をアクティブ化または非アクティブ化するように、1つまたは複数のプログラム命令(コマンドまたは信号)を実行するように構成することができる。一実施形態では、それぞれのチップは、AIアクセラレータチップとされる。各基板上のチップセットは、それぞれ等しい数のチップを含む複数の列に配置され、それぞれのチップは、双方向プリント回路基板(PCB)配線を介してその隣接のチップと接続される。
【0015】
一実施形態において、チップトポロジーは、複数の行および複数の列のチップを含み、各行または各列のチップは、デイジーチェーン方式で接続されることにより双方向の物理的ループを形成する。それぞれの物理的リングにおいて、毎行または毎列の両端のチップは、ケーブル接続を介して互いに接続される。ケーブル接続は、アクセラレータ用のキャッシュコヒーレントインタコネクト(CCIX)接続であってもよい。
【0016】
一実施形態では、それぞれの基板に、2行に配置された偶数個のチップを含むことができる。各行の端部上のチップは、2つ以上のチップ間ケーブルインターフェースを有することができ、他のチップは、1つ以上のチップ間ケーブルインターフェースを有することができる。各チップは、チップの両側に、それぞれ少なくとも1つのチップ間ケーブルまたはPCB配線インターフェースを有する。
【0017】
図1は、一実施形態による、AIモデルのトレーニング用のシステムの一例を示す図である。
図1に示すように、システムは、複数のサーバ(例えば、サーバA103およびサーバB105)に分散された汎用処理ユニット(GPU)クラスタ101を含み、各サーバは、1つまたは複数のCPUを含み、各CPUは、GPUなどの1つまたは複数のデータ処理(DP)アクセラレータと関連付けられている。
【0018】
サーバは、イーサネット接続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に接続される。
【0019】
CPU107およびCPU109は、ニューラルネットワークをトレーニングするためのタスクを協働させるために、イーサネット接続111などのプロセッサ間リンクを介して互いに通信することができる。例えば、ジョブコマンドは、イーサネット接続111を介して各サーバに配信することができる。次に、ジョブコマンドを、サーバ内のCPUから当該CPUに接続されたGPUに配信することができる。ジョブコマンドが配信されると、システム内のGPU間には、対応するチップ間リンク122を介してデータを転送可能とされる。チップ間リンク122には、例えば、アクセラレータ用のキャッシュコヒーレントインタコネクト(CCIX)リンクなど、様々なチップ間相互接続のソリューションが採用できる。
図1に示すように、一方向リングトポロジーを使用することができるが、システム内のGPUは、双方向リングトポロジーに配置される。
【0020】
CCIXは、CCIXアライアンスによって開発されたオープンキャッシュコヒーレンス相互接続アーキテクチャである。CCIXは、標準的なPCIeのキャッシュコヒーレンシを拡張することによって、システム内のCPUなどの中央プロセッサとGPUなどの様々なアクセラレータとの間の通信を簡略化するように設計されている。CCIXは、異種システムアーキテクチャのためのキャッシュコヒーレンスフレームワークを提供する高性能チップ間相互接続アーキテクチャである。システム内の中央処理装置と様々な他のアクセラレータとの間のキャッシュコヒーレンシは常に自動的に維持される。CCIXをサポートする各装置は、少なくとも1つのCCIXポートを含み、CCIXポートは、CCIXの起用されたあらゆる他のデバイスとは、ピン互換性がある。CCIXは、チップ・トゥ・チップ、チップ・トゥ・スイッチ・トゥ・チップ、グリッド、デイジーチェーン、およびリングなどの様々なトポロジーをサポートする。
【0021】
一実施形態では、GPUは、それぞれのCPUから配信されたデータブロックに対して、パイプライン方式でAIトレーニング動作を実行するように構成される。それぞれのGPUは、さらに、プロセッサ間リンクを介して互いに通信する。GPUは、さらなるデータ処理のために、上流のGPUからの処理結果を受信するように環状に構成されてもよい。それぞれのGPUは、処理結果をその対応する下流の、さらなる処理を実行するためのGPUにさらに送信することができる。したがって、それぞれのGPUは、並列して、配信されたDPオペレーションを実行し、そのDP結果をダウンストリームGPUに送信する。且つ、各GPUは、その上流のGPUから処理結果を受信して、さらなる処理を実行する。
【0022】
図2A~
図2Fは、一実施形態によるAIモデルのトレーニングにおけるデータ転送の例示的なプロセスを示す図である。ここでは、GPU203、205、および207の3つのGPUが示されているが、例示的なプロセスは、トレーニングされるニューラルネットワークの複雑さ、トレーニング用データのサイズ、およびユーザが所望するトレーニングの速度などの複数の要因に応じて、できる限り多くのGPU(例えば、数千個のGPU)を使用することができる。
【0023】
例示的なシステム上でトレーニングされたニューラルネットワークの例は、結合されるニューロンの集合を含む多層パーセプトロン(MLP)ニューラルネットワークを含む。MLPニューラルネットワーク内のニューロンは、1つの層内の各ニューロンが後続の層内の各ニューロンにパラメータ(例えば、重みおよびバイアス)で結合されると、完全に結合され得る。
【0024】
ニューラルネットワークモデルのトレーニング中、勾配降下(すなわち、逆伝達)を使用して、ニューラルネットワークモデルの期待値と実際の出力との間の差を最小化するためのパラメータのセットを決定することができる。勾配降下は、損失/誤差関数の勾配を計算するステップと、勾配に応答して既存のパラメータを更新するステップとを含む。このサイクルは、損失関数の極小値に達するまで繰り返される。
【0025】
一実施形態では、ニューラルネットワークモデルのトレーニング用データセットは、複数のサブセットに分割され、各サブセットは、ニューラルネットワークのトレーニングが複数のGPUによって並行して行われるように、1つのGPU上でニューラルネットワークモデルをトレーニングするために使用される。各GPUは、ニューラルネットワークモデルの完全なコピーを有することができる。
【0026】
トレーニング用データセットの各サブセットは、複数の等しいサイズのデータブロックに論理的に分割することができる。例示的なプロセスでは、ブロックの数は、GPUの数に等しい。ニューラルネットワークモデルの並列的なトレーニングは、勾配降下の複数の反復を必要とする。毎回の反復に、各GPUは、ネットワークパラメータに対する損失の勾配を計算するために、GPU上のデータに対してニューラルネットワークモデルの順方向伝達を実行し、続いて誤差の逆伝達を実行する。次に、GPUは、互いに通信して、勾配の統計量(例えば、平均値、最大値、または最小値)を計算し、そして、統計量(例えば、平均勾配)を利用して、更新されたパラメータを得ることができる。ニューラルネットワークモデルは、多数のパラメータ(例えば、数十億のパラメータ)を有し、各パラメータは、それぞれ勾配値に関連付けられるようにすることができる。このように、ニューラルネットワークにとって、勾配の大きさは非常に大きく、GPU間で勾配を転送することは、かなり帯域幅を占有する。
【0027】
再び
図2A~
図2Fを参照すると、例示的なプロセスは、GPU間のデータ転送による要求の帯域幅を低減するためのアルゴリズムを示す。一実施形態では、本開示で使用される帯域幅とは、所与のネットワーク接続における最大データ転送レートである。当該アルゴリズムは、2つのプロセスを含むことができる。第1のプロセスは、分散規約(Scatter-Reduce)プロセスであり、第2のプロセスは、全凝集(Allgather)プロセスである。Scatter-Reduceプロセス中において、GPUは、各GPUが多数の最終結果ブロックで終了するようにデータを交換することができる。Allgatherプロセス中において、GPUは、すべてのGPUが完全な最終結果で終わるように、これらの結果ブロックを交換することができる。
【0028】
各GPUは、GPU上のトレーニング用データセットのサブセットを等しいサイズのデータブロックに分割するように構成された1つ以上のアプリケーションを含むことができる。例示的なシステムでは、各GPU上のデータブロックの数は、GPUの数である。ニューラルネットワークモデルのトレーニング中において、各データブロックに対しては、それ自体の勾配のセットを生成することができる。
【0029】
この例では、上述したように、システム内に3つのGPUが存在するので、それぞれのGPU上のデータブロックの数は3である。GPU#0 203上のトレーニング用データのサブセットから、3組の勾配a0215、b0231、c0237を生成することができ、GPU#1 205上のトレーニング用データのサブセットから、さらに3組の勾配a1217、b1223、c1239を生成することができる。同様に、GPU#2 207上のトレーニング用データのサブセットから、3組の勾配a2219、b2235、c2241が生成される。一実施形態では、各GPU上の異なる勾配セットは、アレイまたは別のデータ構造で記憶されてもよい。
【0030】
一例として、当該アルゴリズムは、トレーニング用データセットの各サブセットによって生成された勾配を合計するように設計されても良い。これにより、アルゴリズムが完了すると、各GPUは、トレーニング用データセットから生成された勾配の合計を有することになる。
【0031】
例示的なプロセスにおけるGPUは、Scatter-Reduceプロセス中にN-1回の反復を有することができ、ここで、Nは、システム内のGPUの総数である。このように、例示的なシステムにおけるGPUは、2つの反復を有することができる。毎回の反復時、各GPUは、GPU上の1組の勾配をその右隣に送信するとともに、その左隣から1組の勾配を受信して、当該2組の勾配を加算して1組の新しい勾配とすることができる。各GPUによって送信または受信される勾配の組は、毎回の反復で異なる。n番目のGPUは、n番目の勾配の組が送信されたことによって開始するとともに、(n-1)番目の勾配の組を受信するように、処理を逆行する。
【0032】
図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処理終了時の最終状態を示している。
【0033】
図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は、トレーニング用データセット全体からの完全に蓄積された勾配を有する。例示的なプロセスは、すべてのデータ転送が、離散の反復において同期して起こるので、帯域幅が最適となる。
【0034】
図3は、一実施形態による、AIチップトポロジーを生成するための例示的なシステムを示す図である。
図1に示すように、AIアクセラレータチップクラスタ302は、クラウド環境310内に設けることができる。AIアクセラレータチップクラスタ302は、例えば、基板A304、基板B305、基板C308、および基板N335など、多数のPCB基板を含むことができる。図面に4つしかの基板が示されていないが、AIアクセラレータチップクラスタ302は、任意の数のPCB基板を含むことができる。
【0035】
チップクラスタ302内のPCB基板の各々は、同じ数のAIチップを含む。この図は、各基板上のAIチップの例を示しており、例えば、基板A304上のAIチップA303、基板B305上のAIチップB311、基板C308上のAIチップC325、基板N335上のAIチップN329がある。各PCB基板において、同じようにチップがレイアウトされ、各チップがPCB配線307、309、313、315、321、323、331、333を用いて互いに接続されている。
【0036】
例えば、各PCB基板は、2行に配列された偶数個(例えば、8個)のAIチップを含むことができる。各行のAIチップは、PCB配線を用いて順次接続され、1行における各AIチップは、他行の対応するAIチップに接続される。
【0037】
AIアクセラレータチップクラスタ302内のPCB基板は、ケーブル接続を介して互いに接続することができ、ケーブル接続は、最初は非アクティブの状態とすることができる。各ケーブルの接続される終点は、対応する基板自体ではなく、対応するPCB基板上のAIチップである。各AIチップは、ケーブル接続用またはPCB配線接続用の相互接続インターフェースを複数有することができる。しかし、各AIチップは、別のPCB基板上のAIチップに接続するために用いられる少なくとも1つのケーブル接続用の相互接続インターフェースを有することができる。
【0038】
一実施形態では、互いに水平となる任意の2つのPCB基板間のケーブル接続333、335、337、および339の数は、PCB基板上のAIチップの行数と同じであり、互いに垂直となる任意の2つのPCB基板間のケーブル接続341、345、347、349、351、および355の数は、PCB基板上のAIチップの列数と等しい。
【0039】
AIチップ間の各PCB配線はハードワイヤードであり、動的に遮断可能ではない。しかし、PCB基板間の各ケーブル接続(例えば、CCIX接続)は、プログラムで遮断または再接続することができる。ケーブル接続の遮断または再接続は、ケーブル接続に関連する1つまたは複数のPCB基板上で実行される1つまたは複数のプログラム命令によって実行することができる。
【0040】
図3において、ユーザ301は、所定の数のAIチップを有するAIチップトポロジーの生成要求をAIアクセラレータチップクラスタ302に送信することができる。クラウド環境310をプラットフォーム、即ちサービス(PaaS)として、複数のテナントに提供することができる。ユーザ301は、テナントの一つであってもよい。
【0041】
この要求は、1つまたは複数のクラウドサーバ上で実行されるトポロジー生成ソフトウェアプログラム312によって受信される。トポロジー生成ロジック312は、要求に含まれる情報を、AIアクセラレータチップクラスタ302内の1つまたは複数のPCB基板によって実行されるプログラム命令のセットに変換するための、所定のアルゴリズムを実現することができる。トポロジー作成ソフトウェアプログラム312は、AIアクセラレータチップクラスタ302内の各PCB基板の状態を追跡することができ、PCB基板の状態は、PCB基板がアイドルであるかビジーであるかである。PCB基板がアイドル状態にあるとは、PCB基板がテナントに使用されていないことである。トポロジー作成ロジック312は、さらに、受信したトポロジー作成要求を達成するために、1つまたは複数のPCB基板をどのように選択するかを決定するための一セットのルールを実現することができる。
【0042】
例えば、トポロジー生成ソフトウェアプログラム312は、AIアクセラレータチップクラスタ302を走査し、要求されたAIチップトポロジーを生成するために使用される任意の空きPCB基板にマークを付けることができる。選択的には、PCB基板の利用可能な残りの時間が所定の範囲内にあり、且つ、当該PCB基板が、要求されたトポロジーを生成するために選択されたPCB基板により近い位置にある場合、トポロジー生成ソフトウェアプログラム312は、1つまたは複数のPCB基板上で待機してもよい。
【0043】
説明的な例として、ユーザ301が32-チップトポロジーを有するトポロジーの作成を要求した場合、トポロジー作成ソフトウェアプログラム312は、種々の異なる方法でトポロジーを作成することができる。トポロジーは、基板A304及び基板B305、基板C308及び基板N335、基板A304及び基板C308、基板B305及び基板N335を含むことができる。要求されたトポロジーを生成する際にPCB基板を選択するために使用される所定のアルゴリズムおよび/またはルールに応じて、トポロジー生成ソフトウェアプログラム312は、4つの選択肢のいずれかを選択することができる。
【0044】
図4は、本実施形態に係るAIチップの一例を示す図である。
図4に示すように、AIチップ401は、4つのチップ間相互接続インターフェース402、403、405、407を含むことができる。一実施形態では、AIチップ401は、4つ以上の相互接続インターフェースを有することができる。
【0045】
各チップ間相互接続インターフェースは、PCIe、CCIX、またはInterlakenなどの任意の業界規格のインターフェースとすることができる。相互接続バス411、415、413、または417は、それぞれの相互接続インターフェースと共に使用することができる。各相互接続バスは、ケーブルまたはPCB配線であってもよく、各相互接続バス上のデータ転送は、一方向または双方向であってもよい。
【0046】
図5は、実施形態による例示的なPCB基板を示す。
図5に示すように、PCB基板501は、偶数個のAIチップ(例えば、8個)501~515を含むことができ、それらは2行に配置され、各行は同じ数のAIチップを有する。一対のAIチップは、PCB配線、ケーブル接続、またはこれら両方に介して接続することができる。例えば、AIチップ501とAIチップ509は、PCB配線とケーブル接続を介して接続される一方、AIチップ503とAIチップ505は、PCB配線のみを介して接続される。
【0047】
一実施形態では、各行の両端のAIチップ(例えば、AIチップ501、AIチップ507、AIチップ509、およびAIチップ515)は、それぞれ2つの相互接続ケーブルインターフェースを有し、残りのAIチップは、それぞれ1つの相互接続ケーブルインターフェースを有してもよい。
【0048】
例示的なPCB基板501上のAIチップは、All-ReduceアルゴリズムにおけるAIモデルトレーニングにおけるデータ交換のための2つの双方向物理的リング503および505として構成することができる。各物理的リングは、双方向であるので、2つの物理的リングは、4つの論理リングとして動作することができる。
【0049】
AIモデルのトレーニングにおいて、特にいくつかのアルゴリズム(例えば、全減算アルゴリズム)において、多数のリング(物理的または論理的リング)は、多数のトレーニングプロセスが並行して実行可能であることを意味し、それにより、AIモデルのトレーニングが加速され、トレーニングの所要の総時間が短縮されることになる。
【0050】
PCB基板501上のAIチップのレイアウト及びPCB配線とケーブル接続とを混用することで、複数のこのようなPCB基板によって作成されたAIチップトポロジーは、トポロジー上の物理的リングの数を最大化することができるとともに、異なるサイズのトポロジーを作成する柔軟性を維持することができ、過度のハードウェアオーバーヘッドを必要としない。
【0051】
図6は、実施形態による例示的なAIチップトポロジー600を示す図である。図示のように、16-チップトポロジーは、2つのPCB基板602および604からなり、各PCB基板は、2行に配列された8個のAIチップを含む。
【0052】
一実施形態では、
図5に示されるように、AIチップトポロジーが単一のPCB基板を含む場合、図に示されるように、2つの双方向物理的リングが存在し得る。しかし、
図6に示すように、1つ以上のそのようなPCB基板がAIチップトポロジーを生成するために使用される場合、AIチップトポロジーにおける物理的リングの形成方法は異なることがある。
【0053】
図6では、全体として見ると、トポロジー600は、4列および4行を含むことができる。複数のPCB配線およびケーブル接続を使用して各行を接続して、双方向物理的リングを形成することができる。ケーブル接続は、行の端部にある2つのAIチップを接続するために使用される。リング601~607は、4行のAIチップによって作成された4つの物理的リングを示す。
【0054】
トポロジー600内の4列のAIチップは、さらに4つの別個の物理的リング609、611、613、615を形成する。しかし、各列について、物理的リングを形成するために複数のケーブル接続が必要とされる。例えば、物理的リング609の場合、第1のケーブル接続617を介して、AIチップ618とAIチップ619が接続され、第2の接続616を介して、AIチップの行端部に位置する2つのAIチップ620とAIチップ621とが接続される。
【0055】
ケーブル接続とPCB配線の混用により作成可能な16-チップトポロジー600は、サーバラックの電源容量がサポートできる限り、1つのサーバラック内のより大きなトポロジー(例えば、64チップ又は128チップ)に垂直に拡張することができる。単一のサーバラックがその全電源容量に達した後、16-チップトポロジー600は、サーバラック全体にわたって水平方向に拡張することができる。
【0056】
図7は、実施形態によるAIチップトポロジー700の別の例を示す図である。上述したように、AIチップトポロジーのサイズは、単一のサーバラックの電源容量によって制限され得る。サーバラック内の電力制限を克服するために、
図7は、AIチップを複数のサーバラックにわたって水平に横断するトポロジーを示す。
【0057】
AIチップトポロジー700は、異なるサーバラック内において4つのPCB基板701、703、705および707を含むことができる。例えば、PCB基板701、705を第1のサーバラックに収容し、PCB基板703、707を第2のサーバラックに収容してもよい。サーバラック内のPCB基板の数は、サーバラックの電源容量の限界まで増加させることができる。チップトポロジー700は、より多くのサーバラックに接続されることによって、さらに水平に拡張することもできる。
【0058】
図8は、一実施形態による、AIチップトポロジーを作成する例示的なプロセス800を示す。プロセス800は、ソフトウェア、ハードウェア、またはそれらの組み合わせを含むことができる処理ロジックによって実行することができる。
【0059】
図8を参照すると、動作801において、処理ロジックは、同じ数のチップを含む互いに接続された複数の基板を含むチップクラスタにおいて、指定された数のチップを有するチップトポロジーを生成するための要求を受信する。動作803において、当該要求に応答して、処理ロジックは、指定されたチップの数および各基板上のチップの数に基づいて、複数の基板からチップトポロジーを生成するための基板のセットを決定する。動作805において、処理ロジックは、基板のセットから、非アクティブ化されたケーブル接続を特定する。動作807において、処理ロジックは、要求されたチップトポロジーを生成するためにケーブル接続をアクティブ化する。
【0060】
なお、上述した構成要素の一部または全部は、ソフトウェア、ハードウェア、またはそれらの組み合わせによって実現されてもよい。例えば、そのような構成要素は、永久記憶装置にインストールされて記憶されたソフトウェアとして実装することができ、このソフトウェアは、プロセッサ(図示せず)によってメモリにロードされて実行され、本明細書に記載のプロセスまたは動作全体を実施することができる。あるいは、そのようなコンポーネントは、集積回路(例えば、特定用途向けICまたはASIC)、デジタル信号プロセッサ(DSP)、またはフィールドプログラマブルゲートアレイ(FPGA)などの特定用途向けハードウェアにプログラムまたは組み込まれた実行可能コードとして実装することができ、実行可能コードは、対応するドライバおよび/またはオペレーティングシステムを介してアプリケーションからアクセスすることができる。さらに、そのようなコンポーネントは、1つまたは複数の特定の命令を介してソフトウェアコンポーネントによってアクセス可能な命令セットの一部として、プロセッサまたはプロセッサコア内の特定のハードウェアロジックとして実装することができる。
【0061】
上述の詳細な説明の一部は、コンピュータメモリ内のデータビットの操作のアルゴリズムおよびシンボル表現に基づいて提示されている。これらのアルゴリズム記述および表現は、データ処理分野の当業者が、当業者に最も効率的にその作業内容を伝えるために使用する方法である。ここで、アルゴリズムは、一般に、所望の結果をもたらす自己適合性動作シーケンスであると考えられる。これらの操作は、物理量を物理的に操作する必要がある操作である。
【0062】
これらの用語および類似の用語はすべて、適切な物理量と関連付けられ、これらの量に適用される便利なタグのみである。上述の議論から明らかなように、他に明示的に指摘されない限り、以下の特許請求の範囲に記載されているような用語を用いた説明は、コンピュータシステムのレジスタおよびメモリ内の物理的(電子的)量として表されているデータを、コンピュータシステムのメモリまたはレジスタまたは他のそのような情報記憶、送信または表示装置内の物理量として同様に表されている他のデータに変換する、コンピュータシステムまたは同様の電子計算装置の動作およびプロセスを、本明細書全体を通して意味することを理解されたい。
【0063】
本開示の実施形態は、本明細書の動作を実行するための装置にも関する。このようなコンピュータプログラムは,非一時的なコンピュータ可読媒体に格納される。機械可読媒体は、機械(例えば、コンピュータ)によって読み取り可能な形態で情報を記憶するための任意の機構を含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械可読記憶媒体、例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置を含む。
【0064】
前の図に描かれたプロセスまたは方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時的なコンピュータ可読媒体上に含まれる)、または両方の組み合わせを含む処理ロジックによって実行されてもよい。プロセスまたは方法をいくつかのシーケンス動作に従って上述したが、説明したいくつかの動作は、異なるシーケンスで実行されてもよいことを理解されたい。さらに、いくつかの動作は、連続的ではなく並列に実行されてもよい。
【0065】
本開示の実施形態は、特定のプログラミング言語を参照して記載されていない。本明細書に記載の本開示の実施形態の教示は、様々なプログラミング言語を使用して実施することができることを理解されたい。
【0066】
以上、特定の実施形態を参照しながら、本発明について詳解してきた。以下の特許請求の範囲に記載された本開示のより広い趣旨および範囲から逸脱することなく、様々な変更を加えることができることは明らかである。したがって、本明細書および図面は、限定的ではなく例示的なものと解釈されるべきである。
【国際調査報告】