JP2023546761A - 機械学習アクセラレータにおけるキューアロケーション - Google Patents
機械学習アクセラレータにおけるキューアロケーション Download PDFInfo
- Publication number
- JP2023546761A JP2023546761A JP2022553686A JP2022553686A JP2023546761A JP 2023546761 A JP2023546761 A JP 2023546761A JP 2022553686 A JP2022553686 A JP 2022553686A JP 2022553686 A JP2022553686 A JP 2022553686A JP 2023546761 A JP2023546761 A JP 2023546761A
- Authority
- JP
- Japan
- Prior art keywords
- port
- ports
- memory
- shared memory
- network
- 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
Links
- 238000010801 machine learning Methods 0.000 title claims description 39
- 238000004891 communication Methods 0.000 claims abstract description 85
- 238000012549 training Methods 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims description 136
- 230000008569 process Effects 0.000 claims description 64
- 238000012545 processing Methods 0.000 claims description 39
- 238000013528 artificial neural network Methods 0.000 claims description 20
- 230000003287 optical effect Effects 0.000 claims description 8
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 claims description 5
- 229910052802 copper Inorganic materials 0.000 claims description 5
- 239000010949 copper Substances 0.000 claims description 5
- 239000000872 buffer Substances 0.000 abstract description 47
- 230000004913 activation Effects 0.000 description 60
- 238000001994 activation Methods 0.000 description 60
- 238000004364 calculation method Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000003491 array Methods 0.000 description 5
- 239000000306 component Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 210000004205 output neuron Anatomy 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000002457 bidirectional effect Effects 0.000 description 4
- 210000004027 cell Anatomy 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/103—Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
本開示は一般的に、カスタム構築されたパケット交換TPUアクセラレータ側通信ネットワークの性能を改善するためのソリューションを提供する。具体的には、分散訓練スーパーコンピュータネットワーク内のオンチップルータにおいてパケットバッファキューをチューニングすることによってフロー制御挙動を改善するためのソリューションのセットが記載される。
Description
優先権主張
本出願は、米国特許法119条(e)に基づき、2020年10月14日に出願された米国仮出願番号第63/091,708号の優先権の利益を主張する。
本出願は、米国特許法119条(e)に基づき、2020年10月14日に出願された米国仮出願番号第63/091,708号の優先権の利益を主張する。
技術分野
本開示は、機械学習アクセラレータ通信ネットワークにおけるトラフィックキューイングのための共有メモリのアロケーションに関する。
本開示は、機械学習アクセラレータ通信ネットワークにおけるトラフィックキューイングのための共有メモリのアロケーションに関する。
背景
電子デバイスは複数の異なる計算ユニットから構成され得、当該計算ユニットは、電子デバイスが動作するために当該計算ユニット同士の間でデータを通信する必要がある。計算ユニット同士間のデータ通信は、非決定的であり得る。たとえば、データ通信は、1つのユニットにおける送信時間から別のユニットにおける受信時間への間において可変レイテンシに晒される。すなわち、データが1つのユニットから別のユニットに移動するのにかかる時間は一定ではないが、送信時間における多くの異なる変動源に晒される。
電子デバイスは複数の異なる計算ユニットから構成され得、当該計算ユニットは、電子デバイスが動作するために当該計算ユニット同士の間でデータを通信する必要がある。計算ユニット同士間のデータ通信は、非決定的であり得る。たとえば、データ通信は、1つのユニットにおける送信時間から別のユニットにおける受信時間への間において可変レイテンシに晒される。すなわち、データが1つのユニットから別のユニットに移動するのにかかる時間は一定ではないが、送信時間における多くの異なる変動源に晒される。
概要
一般的に、本開示は、機械学習アクセラレータ通信ネットワークにおけるメモリアロケーションのための方法を含む。一般的に、当該方法は、特定用途向け集積回路(ASIC)の複数の通信ポートに関連付けられるメタデータにアクセスすることを含む。メタデータは、各ポートについて、特定のポートが、現在の構成において使用されるか否かと、特定のポートに関連付けられる通信媒体とを識別する。メタデータに基づいて、各ポートについて予想レイテンシが決定され、各ポートに共有メモリの部分がアロケートされる。共有メモリは、使用されないポートにゼロメモリを割り当てすることと、予想レイテンシに基づいて、各ポートについてメモリアロケーションを決定することと、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることとによってアロケートされる。実現例は、以下の特徴のうちの1つ以上を随意に含み得る。
一般的に、本開示は、機械学習アクセラレータ通信ネットワークにおけるメモリアロケーションのための方法を含む。一般的に、当該方法は、特定用途向け集積回路(ASIC)の複数の通信ポートに関連付けられるメタデータにアクセスすることを含む。メタデータは、各ポートについて、特定のポートが、現在の構成において使用されるか否かと、特定のポートに関連付けられる通信媒体とを識別する。メタデータに基づいて、各ポートについて予想レイテンシが決定され、各ポートに共有メモリの部分がアロケートされる。共有メモリは、使用されないポートにゼロメモリを割り当てすることと、予想レイテンシに基づいて、各ポートについてメモリアロケーションを決定することと、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることとによってアロケートされる。実現例は、以下の特徴のうちの1つ以上を随意に含み得る。
いくつかの実現例では、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることは、ASICとは異なるデバイスによって、アプリケーションプログラミングインターフェイス(API)を呼び出すことを含む。
いくつかの実現例では、機械学習アクセラレータ通信ネットワークおよびアロケートされた共有メモリを使用して、ASIC上でプロセスが実行される。いくつかの実現例では、プロセスは、ニューラルネットワークを訓練することである。
いくつかの実現例では、ASICはテンソルプロセッシングユニット(TPU)である。
いくつかの実現例では、メタデータにおいて識別される通信媒体は、銅ケーブル媒体、光媒体、プリント回路基板(PCB)媒体、または、それらの任意の組み合わせである。
いくつかの実現例では、メモリは、式
に従ってアロケートされる。
代替的な実現例では、機械学習アクセラレータ通信ネットワークにおけるメモリアロケーションのための方法は、機械学習アクセラレータASICのネットワークのためのネットワークトポロジを決定することを含む。ネットワーク内の各ASICの複数の通信ポートに関連付けられるメタデータがアクセスされる。メタデータは、複数のポートの各ポートについて、特定のポートが、現在の構成において使用されるか否かと、特定のポートに関連付けられる通信媒体とを識別する。ネットワークトポロジにおいて使用される各ポートについて、ラウンドトリップタイム(RTT)遅延が決定される。複数のポートの各ポートに共有メモリの部分がアロケートされ、当該アロケートすることは、RTT遅延に比例する各ポートについてのメモリアロケーションを決定することと、決定されたメモリアロケーションについて、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることとによって行われる。プロファイリングトラフィックを所定の持続時間の間、ネットワークに送信するプロセスが機械学習アクセラレータ上で実行される。各ポートについて、受信されたトラフィックパケットの数が決定され、共有メモリの部分は、複数のポートの各ポートに再アロケートされ、当該再アロケートすることは、受信されたパケットカウントに比例する各ポートについてのメモリアロケーションを決定することと、決定されたメモリアロケーションの各ポートについて、開始アドレスおよび停止アドレスが再割り当てされることとによって行われる。
代替的な実現例では、機械学習アクセラレータ通信ネットワークにおけるメモリアロケーションのための方法は、機械学習アクセラレータASICのネットワークのためのネットワークトポロジを決定することを含む。ネットワーク内の各ASICの複数の通信ポートに関連付けられるメタデータがアクセスされる。メタデータは、複数のポートの各ポートについて、特定のポートが、現在の構成において使用されるか否かと、特定のポートに関連付けられる通信媒体とを識別する。ネットワークトポロジにおいて使用される各ポートについて、ラウンドトリップタイム(RTT)遅延が決定される。複数のポートの各ポートに共有メモリの部分がアロケートされ、当該アロケートすることは、RTT遅延に比例する各ポートについてのメモリアロケーションを決定することと、決定されたメモリアロケーションについて、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることとによって行われる。プロファイリングトラフィックを所定の持続時間の間、ネットワークに送信するプロセスが機械学習アクセラレータ上で実行される。各ポートについて、受信されたトラフィックパケットの数が決定され、共有メモリの部分は、複数のポートの各ポートに再アロケートされ、当該再アロケートすることは、受信されたパケットカウントに比例する各ポートについてのメモリアロケーションを決定することと、決定されたメモリアロケーションの各ポートについて、開始アドレスおよび停止アドレスが再割り当てされることとによって行われる。
いくつかの実現例では、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当ておよび再割り当てすることは、ASICとは異なるデバイスによってAPIを呼び出すことを含む。
いくつかの実現例では、各ポートについて決定されたRTT遅延に比例するメモリアロケーションは、式
に従って決定される。
いくつかの実現例では、各ポートについて受信されたパケットカウントに比例するメモリアロケーションは、式
いくつかの実現例では、各ポートについて受信されたパケットカウントに比例するメモリアロケーションは、式
に従って決定される。
いくつかの実現例では、RTT遅延は、レイテンシを決定するよう1つ以上のタイミングメッセージを送信および受信することによって実行前に計算される。
いくつかの実現例では、RTT遅延は、レイテンシを決定するよう1つ以上のタイミングメッセージを送信および受信することによって実行前に計算される。
いくつかの実現例では、プロファイリングトラフィックは、オール・ツー・オールトラフィック、最近傍トラフィック、合成トラフィックプロファイル、または、それらの任意の好適な組み合わせを含む。
代替的な実現例では、機械学習アクセラレータ通信ネットワークのためのメモリをアロケートするための方法は、機械学習アクセラレータ特定用途向け集積回路(ASIC)のネットワークのためのネットワークトポロジを決定することを含む。ネットワーク内の各ASICの複数の通信ポートに関連付けられるメタデータがアクセスされる。メタデータは、複数のポートの各ポートについて、特定のポートが、特定のポートに関連付けられる現在のアーキテクチャおよび通信媒体において使用されるか否かを識別する。メタデータは、複数のポートの各ポートについて、特定のポートが、現在の構成において使用されるか否かと、特定のポートに関連付けられる通信媒体とを識別する。ネットワークトポロジにおいて使用される各ポートについて、ラウンドトリップタイム(RTT)遅延が決定される。複数のポートの各ポートに共有メモリの部分がアロケートされ、当該アロケートすることは、RTT遅延に比例する各ポートについてのメモリアロケーションを決定することと、決定されたメモリアロケーションについて、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることとによって行われる。ASIC上でプロセスが実行され、プロセスは、アロケートされた共有メモリとともに機械学習アクセラレータ通信ネットワークを使用する。プロセスの実行中、第1の期間にわたって複数のポートの各ポートにおいて受信されたメッセージパケットの数が決定される。各ポートで受信されたメッセージパケットの数に基づいて、複数のポートの各ポートについて共有メモリの所望の部分サイズが決定される。第2の期間の間、プロセスが休止され、共有メモリは保留中のメッセージパケットについてクリアであるか否かが決定される。共有メモリがクリアであると決定されると、所望の部分サイズに従って、各ポートについて共有メモリの開始アドレスおよび停止アドレスが再割り当てされ、プロセスの実行が再開される。
さまざまな実現例は、以下の利点のうちの1つ以上を提供する。たとえば、いくつかの実現例では、機械学習ハードウェアアクセラレータは、メッセージバッファキューをより効率的にアロケートすることによって、より高速に実行され得、かつ、アクセラレータのオンボード通信ネットワークにおけるボトルネックを回避し得る。
本明細書の主題の1つ以上の実現例の詳細は、添付の図面および以下の説明に記載されている。主題の他の特徴、局面および利点は、説明、図面および請求の範囲から明らかになるであろう。
詳細な説明
一般的に、本開示は、高速通信ネットワーク、たとえば、複数の特定用途向け集積回路(ASIC: application specific integrated circuit)を含む機械学習アクセラレータの通信ネットワーク内の通信またはポートの異なるチャネル間に共有メモリをアロケートすることに関する。深層学習訓練は、分散された並列処理を必要とする。分散は、大量の訓練データを異なる複製物(レプリカ)にパーティショニングし得る(たとえば、データ並列性)か、または、非常に大きいモデルをより小さいモジュールにパーティショニングし得る(たとえば、モデル並列性)。パーティショニングされた訓練データおよびモデルパラメータは、同時に計算するために異なる処理ユニット上に配置される。
一般的に、本開示は、高速通信ネットワーク、たとえば、複数の特定用途向け集積回路(ASIC: application specific integrated circuit)を含む機械学習アクセラレータの通信ネットワーク内の通信またはポートの異なるチャネル間に共有メモリをアロケートすることに関する。深層学習訓練は、分散された並列処理を必要とする。分散は、大量の訓練データを異なる複製物(レプリカ)にパーティショニングし得る(たとえば、データ並列性)か、または、非常に大きいモデルをより小さいモジュールにパーティショニングし得る(たとえば、モデル並列性)。パーティショニングされた訓練データおよびモデルパラメータは、同時に計算するために異なる処理ユニット上に配置される。
分散された訓練は、同期、反復およびインクリメンタルループにおいて行われる。データ並列性の下では、各処理ユニットは、各ステップにおいてデータのミニバッチをインジェストし、局所勾配を計算し、次いで、オールリデュース(all-reduce)の態様で計算ユニットのネットワーク全体にわたってすべての局所勾配を交換して、最終的な全体的に一貫した勾配を計算し、これにより、ステップの終わりに、モデル重みが更新される。
モデル並列性の下では、各処理ユニットは、その局所的な訓練データからモデルアクティベーション入力を取得するか、または、それ自体の前の隠れ層上で動作する別の処理ユニットの出力からモデルアクティベーション入力を取得する。次いで、処理ユニットは、最終モデル出力であり得るか、または、別の処理ユニットのアクティベーション入力として機能し得るアクティベーション出力を計算する。勾配は、最終層を含む処理ユニット上で計算され、パーティショニングされたサブモデルを更新するよう以前の層に送り返される。このプロセスは、連続するミニバッチ上で動作するようにパイプライン化され得る。このアプローチの下では、中間アクティベーション出力がネットワークの周りで送られ、モデル分割境界における勾配も送られる。
実際には、最も高い性能を達成するよう、データおよびモデル並列性が組み合わされ得る。数千億の重みパラメータを有する例示的なモデルの場合、必要とされる精度のレベルに当該モデルを収束させるために、膨大な量の計算リソースおよび通信が必要とされる。
訓練プロセスを高速化するために、カスタム構築されたアクセラレータチップ、テンソル処理ユニット(TPU: Tensor Processing Unit)などのASICは、深層学習計算を高速化するよう処理ユニットとして機能するように設計される。いくつかの実現例では、チップタイプ(たとえば、FPGA、GPGPU、またはCPU)が使用される。一方、処理ユニット間通信を高速化するために、協調設計されたアクセラレータ間高速通信ネットワークも構築される。ともに、訓練システムは、現状技術のスーパーコンピュータと等価なエクサフロップ(exaFLOP)レベルの計算性能を提供し得る。
TPUアクセラレータのカスタム構築されたネットワークは、ネットワーク処理オーバーヘッドを低減するよう、簡素化のために設計される。アドレス指定、誤り検出および訂正、ルーティングおよびフロー制御などの相互接続されたネットワークの基本的な機能が完了すると、大量のネットワーク処理がアクセラレータチップハードウェア上で実行され、処理を高速化する。
本開示は、カスタム構築されたパケット交換TPUアクセラレータ側通信ネットワークの性能を改善することに焦点を当てている。具体的には、分散された訓練スーパーコンピュータネットワークにおけるオンチップルータ内のパケットバッファキューをチューニングすることによってフロー制御挙動を改善するためのソリューションのセットが提案される。
本明細書に開示されるソリューションは、上で論じられた同期データ並列およびモデル並列訓練パターンに適用され、一般的にアクセラレータネットワークにおける非同期分散訓練にも適用され得る。
図1は、本開示の実現例に従った例示的な機械学習アクセラレータ100を示す概略図である。この例では、オンチップネットワークスタック処理ハードウェアモジュールを通じて相互接続されたTPUネットワークが示されている。この例では、各TPU106は、6つのネットワークポートを有しており、当該6つのネットワークポートは、チップ内クロスバーを形成するようバッファキューを通じて互いにリンクされる。いくつかの実現例では、各TPU106は、6つより多いポートまたは6つより少ないポート(たとえば、10、3、または他の数)を有し得る。いくつかの実現例では、ポート同士間のリンクは、通信の複数の仮想チャネルにさらに分割され得る。さらに、どのポートが接続されるかは、TPUネットワーク内でのジョブの実行に先だって、ソフトウェアレベルで決定され得る。たとえば、図1は、2次元構成のある数のTPU106を示しているが、TPUポート間の接続に基づき、3次元(たとえば、球状)構成または他のジオメトリを有することが可能である。
TPU106のアクセラレータ側ネットワークスタックは、各TPU106上のオンチップハードウェア処理モジュールまたはルータ102において実現される。分散訓練中の通信は、複数のネットワークパケットとしてフォーマットされる。動作において、ソースTPUチップとデスティネーションTPUチップとの対の間のパケットは、最終デスティネーションに到達する前に、中間ステップとして1つ以上のTPUチップ上でホッピングされる。各TPUチップホップにおいて、オンチップネットワークスタックは、チップのさまざまなネットワークポートとインターフェイス接続し、ユーザによって特定されたルーティングアルゴリズムによって指示されるように、あるポートから受信されたパケットを別のポートに転送する。チップ内のポート・ツー・ポート送信は、バッファキューにおいてキャリーオーバされる。チップ内のクロス接続されたバッファキューは、高速なチップレベルのネットワーク処理のためのクロスバーを形成する。
フロー制御は、スーパーコンピュータネットワークまたは機械学習アクセラレータ100において直接接続されたTPU106の各対の間で実施され得、これにより、たとえば、より高速の送信側TPU106アクセラレータがより低速の受信側TPU106アクセラレータを圧倒することを防ぐ。TPUネットワークが異なるアクセラレータにわたってアクティベーション出力および重み勾配トラフィックを転送し始めると、各チップのオンチップネットワークスタック内のバッファキューは、入力ポートから出力ポートにパケットを常に入力し、バッファ空間の利用は、TPUチップ106におけるトラフィックイングレスおよびエグレスレート(traffic ingress and egress rate)に依存して動的に変化する。ポートに対応するバッファキューが完全に利用される場合、バッファスペースが残っていないので、そのポートにおいてパケットが受信され得ず、上流のTPUアクセラレータはメッセージの送信を停止するべきである。送信側は、以下では「クレジット」と称される、受信側ポートにおいて利用可能なバッファキュー空間の量を送信側に伝えるフロー制御メッセージを適時に送信することによって規制される。送信側は、受信する利用可能なクレジットよりも大きいメッセージを発するべきでない。いくつかの実現例では、任意の2つの接続されたTPUアクセラレータ106間のリンクは双方向であり、クレジットメッセージも同様に双方向に送信される。
TPUアクセラレータ側通信ネットワークは、異種ネットワーク環境であり得る。言い換えれば、ポート間の通信時間は、ポートごとおよびTPU106ごとに異なり得る。加えて、ポートにわたって分散されるトラフィックの量は均一でないことがあり得、したがって、インテリジェントかつ動的なメッセージキューイングが、TPU通信ネットワークにおける通信を著しく向上させ得る。
この異種性は、いくつかの異なる要因によって引き起こされ得る。たとえば、何千ものTPUアクセラレータ106にスケールする大規模深層学習訓練スーパーコンピュータの場合、全ネットワークを配線するよう、さまざまなリンク媒体が使用され得る。リンクにおいて使用される例示的な媒体は、データを交換するために同じトレイ上にはんだ付けされたTPUアクセラレータ106のために活用されるPCBトレースと、より低コストの短距離通信に使用される銅ケーブルと、長距離通信に使用される光ケーブルとを含むが、これらに限定されない。異なる媒体材料は、ルータにおけるキュー利用に影響を及ぼすスループットおよび容量に関して異種リンク性能を表す。
加えて、大規模スーパーコンピュータネットワークは、必然的に、異なる長さを有するリンクを伴う。何千ものTPUアクセラレータ106は、少なくとも複数のラックにまたがっており、より短い距離およびより低いレイテンシを有するラック内ケーブル、ならびに、より長い距離、より長いレイテンシおよび異なるリンク間のより大きい変動を有するラック間ケーブルに繋がる。レイテンシは、バッファキューの利用に影響を及ぼす。これらのケーブルリンクは、ビットエラーレート(BER: bit-error-rate)によって測定される使用期間後のさまざまな品質レベルを有する。変動するBERによって、パケット送信再試行挙動がすべてのリンク間で異なることになり、異種リンク圧力およびキュー飽和率に繋がる。
TPUのネットワークポートは、分散訓練ジョブのトポロジに依存して、しばしば均一に使用されない。たとえば、ユーザ訓練ジョブが、スーパーコンピュータにおいて利用可能なすべてのTPUリソースの中で2DメッシュトポロジにおけるTPUリソースを要求する場合、メッシュのエッジ上のTPUは、すべてのポートを使用せず、メッシュにおいて内側を向いていないポートは、隣接するアクセラレータに接続されるが、他のアクティブに送信しているポートと比較してトラフィックを受信しない。
大規模スーパーコンピュータネットワークは、障害のあるチップ、障害のあるホスト、または、障害のあるTPU間リンク媒体の周りをルーティングすることによって、本質的に耐障害性(fault tolerance)を提供し得る。耐障害性ルーティングによって、障害のないトポロジが元々同種のトポロジであっても、リンクトラフィック圧力が不均衡になり得る。すべてのポートがアクティブに使用されるとともに同じタイプ、距離および品質を有する媒体に接続されるTPU106は、いくつかのポートが障害サイトの周りを通るよりクリティカルなルート上にあるので、非常に異種なトラフィックを受け得る。さらに、障害サイトに隣接するアクセラレータは、障害チップまたは障害リンクに直接接続されるポートがトラフィックを受信しない場合、ポートの不均衡な使用を悪化させる。
分散訓練アプローチは、それ自体が異種性を導入する。データ並列モデルでは、すべてのTPU106は、同じ量の局所勾配を互いに交換するが、モデルパーティショニングおよびモデル並列性のようなより高度な技術は、ネットワーク上で交換される勾配およびアクティベーション出力を、分割境界にわたって本質的に異種にする。パーティショニングされたモデル上での推論は、しばしば別のパーティションからの出力に依存するので、スループットではなく通信レイテンシも、モデル並列性においてより重要になる。加えて、強化学習訓練も、TPUネットワークトラフィックを異種にし、TPUワーカー106のグループが推論を実行するエージェントとして存在し、TPUワーカー106の別のグループが古典的な反復学習ループを実行する。これらのグループ内およびグループ間のトラフィックは、本質的に異なる。したがって、この異種性に対処するための動的なキューアロケーションが望ましい。
各TPU106は、複数の通信ポート、チャネルおよびオンチップハードウェア処理モジュール(ルータ102)に加えて、共有プログラマブルバッファキューストレージ構造104を含む。各ポートのバッファキューは、異なる深さまでソフトウェア制御され得、共有ランダムアクセスメモリ(RAM: Random Access Memory)、たとえば、スタティックRAM(SRAM: static RAM)またはダイナミックRAM(DRAM: dynamic RAM)に格納される。いくつかの実現例では、TPU106の各ポートには、共有メモリ空間内のその特定のポートのキュー領域を特定するよう、共有RAM104において開始アドレスおよび終了アドレスが割り当てられる。
TPUアクセラレータ106のさまざまなネットワークポートに関連付けられるバッファキューのサイズ設定は、全体的な訓練通信スループットをチューニングすることにおいてクリティカルである。大量のトラフィックを受ける所与のリンクについて、受信側TPU106において当該ポートにあまりにも小さいバッファキュー空間をアロケートすることは、送信側TPU106が頻繁にそのパケット送出を停止し、トラフィックを減速させ、同期訓練通信のボトルネックになる可能性につながる。各キューは、チャネルごとのキューアロケーションのために、いくつかの仮想チャネルにさらに分割され得る。相互接続リンクは双方向であるが、すべてのキューは、2つのアクセラレータ間の単方向リンクに対応する。
図2は、ポート・ツー・ポートトラフィックのためにアロケートされたバッファキューを有する例示的な共有メモリ200を示す。バッファキューにおけるトラフィックは、エグレス・ツー・ポートトラフィック(たとえば、TPUから生成され、異なるTPUにアウトバウンドされるトラフィック)、ポート・ツー・イングレストラフィック(たとえば、特定のTPUの外部で生成され、特定のTPUによってインジェストされるトラフィック)、または、ポート・ツー・ポートトラフィック(たとえば、TPUネットワークにおけるTPUを通過するトラフィック)であり得る。さらに、各ポートは、各々が固有の通信パスを提供する複数の仮想チャネルに細分され得る。図2は、共有メモリにおいてアロケートされたポート・ツー・ポートキューのみを示すが、すべての3つのタイプのトラフィックまたはそれらの任意の好適な組み合わせが存在し得、本開示の範囲内である。示される例では、各キューのFIFO(First In, First Out)ポインタは、キューからデータをプッシュおよびポップするための基準として、その開始および終了アドレスを使用する。ポート・ツー・イングレスキューおよびエグレス・ツー・ポートキューは、同じアドレス指定スキームに従い、より少ない数のキューがRAM容量を共有する。同じメカニズムが、示されるよりも多いポートまたは少ないポートを有するアクセラレータに適用される。
これらの開始アドレスおよび停止アドレス(たとえば、示されるようにアドレス0およびアドレス1)は、ソフトウェアを介して制御または割り当てられ得る。アプリケーションプログラミングインターフェイス(API: application programming interface)のセットは、各バッファキューのサイズを特定するPCIeコンフィグスペースレジスタに書き込むよう、TPUアクセラレータのデバイスドライバを通じて公開される。APIは、ハードウェア動作のために、キューサイズを各キューの開始アドレスおよび終了アドレスに変換する。開示されるソリューションは、TPU通信ネットワークにおいてすべてのポートについてキューサイズを動的に構成およびアロケートするよう、これらのAPIを呼び出し得る。
図3は、本開示の実現例に従った、予期レイテンシに基づいて共有メモリをアロケートするための例示的なプロセスのフローチャートである。バッファキューアロケーションプロセスは、訓練プロセスに参加する(サブ)ネットワークにおいてアクティブに使用されるポートを検査し、各ポートのアップストリームラウンドトリップレイテンシの重みによってキューサイズ(クレジット)をアロケートする。このスキームは、リンク媒体の異種性と、非同形ネットワークにおけるアクティブでないポートと、障害のあるリンクまたは障害のあるTPUアクセラレータチップに直接接続されるアクティブでないポートとを考慮に入れる。このスキームは、オフラインリンク較正およびオンラインクレジットアロケーションという2つのステップに分割される。
オフラインリンク較正中に、TPU通信ネットワークにおいて使用される異なるリンク媒体についての平均ラウンドトリップ時間(RTT: round-trip time)が決定される(302)。これは、履歴値、ピング動作または他の方法に基づいて決定され得、そのリンクの媒体に基づいて所与のリンクについて一般的な予想レイテンシを提供する。たとえば、PCTトレースは、光ケーブルよりも低い予想レイテンシを有し得る。
オンラインクレジットアロケーションフェーズ中に、特定のジョブが実行されるのに必要とされるまたは要求されるTPU通信ネットワークのネットワークトポロジを決定するよう、トポロジディスカバリが実行され得る(304)。トポロジディスカバリは、どのTPUが次に来るジョブに参加するか、および、どのポートが各TPUにおいて利用可能であるかを識別し得る。
ネットワークトポロジが決定された後、ジョブのためにTPU通信ネットワークにおいて使用される通信ポートに関する情報を提供するメタデータがアクセスされ得る(306)。たとえば、各TPUは、各ポートのポートID、ポートが現在のトポロジにおいて使用中であるか否か、各ポートに関連付けられる媒体(たとえば、銅、光、PCBなど)、および、ポートに関連付けられるケーブル長を識別するメタデータをオンチップメモリ内に保持し得る。
アクセスされたメタデータは、オフライン較正中に決定された予想レイテンシと組み合わせて、各ポートについて予想または予期されるRTT遅延を決定するために使用され得、次いで、当該予想または予期されるRTT遅延は、予期されるRTT遅延またはレイテンシに従って、各ポートについて共有メモリにおいてキューバッファをアロケートするよう使用され得る(308)。キューサイズは、TPU自体によって各TPUにおいて各ポートについて計算される。TPUは、最初に、任意の使用されていないポートにゼロのキューサイズを割り当て、次いで、各ポートについて残りのキューサイズを割り当てする。いくつかの実現例では、キューサイズ計算プロセスは、TPU通信ネットワークにおいて保留中のジョブのために、すべてのTPUについて独立かつ同時に行われる。それは、オフラインで較正されたリンクレイテンシテーブルにインデックス化し、入力ポートのラウンドトリップ時間に比例して各ポートのキューサイズを計算する。いくつかの実現例では、キューサイズは、以下の式を介して計算され、式中、pは計算されているポートであり、Nはチップにおけるアクティブに使用されるポートの総数である。
ひとたび各ポートおよびチャネルについてのキューサイズが決定されると、共有メモリの開始アドレスおよび終了アドレスが、サイズアロケーションに従って各ポートに割り当てられ得る(310)。いくつかの実現例では、これは、TPUアーキテクチャによって提供される1つ以上のAPIを使用して達成される。たとえば、APIは、各バッファキューのサイズを特定するPCIeコンフィグスペースレジスタに書き込み得る。APIは、ハードウェア動作のために、キューサイズを各キューの開始アドレスおよび終了アドレスに変換する。開示されるソリューションは、TPU通信ネットワークにおいてすべてのポートについてキューサイズを動的に構成およびアロケートするよう、これらのAPIを呼び出し得る。
共有メモリへのアドレスの割り当てが完了すると、TPU通信ネットワークが有効にされ得、推論プロセスまたは訓練実行が開始し得る(312)。推論プロセスは、将来の機械学習出力のためにニューラルネットワークを訓練または重み付けすることを意図した長期実行プロセス(long running process)であり得る。
図4は、本開示の実現例に従った、プロファイリングトラフィック実行に基づいて共有メモリをアロケートするための例示的なプロセスのフローチャートである。プロファイリングトラフィック実行を実行することによって、ジョブ実行中のトラフィック需要のより真正な表現が決定され得る。いくつかの実現例では、プロファイリングトラフィック実行に基づいて共有メモリをアロケートするためのプロセスは、図3(たとえば、302~310)に関して記載されるようにプロセスを完了することによって始まり、トラフィックキューに初期アロケーションが与えられる。
ひとたび初期バッファキューが割り当てられると、ネットワーク上でのプロファイリング実行のために1つ以上のメッセージトラフィックプロファイルが選択され得る(402)。例示的なプロファイルは、オール・ツー・オール(all-to-all)、最近傍トラフィック(nearest-neighbor traffic)、または、機械学習モデル(たとえば、モデルパーティショニングされたResNet-50またはバイディレクショナル・エンコーダ・フロム・トランスフォーマ(BERT(bidirectional encoder representation from transformer))モデル)によって生成される別の合成パターンを含み得るが、それらに限定されない。いくつかの実現例では、以前のトラフィックプロファイルのすべてまたは組み合わせが、プロファイリング実行のために組み合わされる。プロファイリング実行を開始する前に、ソフトウェアは、各TPU内のハードウェアパフォーマンスカウンタレジスタをクリアし、それを実質的にゼロにリセットする。ハードウェアTPU性能カウンタレジスタは、TPUの各ポートの各チャネルにおいて受信に成功したパケットの数を記録する。プロファイリングトラフィックはTPU通信ネットワークに注入され、TPUの各ポートで受信に成功したパケットの数がハードウェアレジスタによってカウントされる(404)。別個のソフトウェアシステムは、カウンタレジスタを(たとえば、APIを介して)読み出し、プロファイリング実行中に各ポート(およびチャネル)について受信されたパケットの合計値を決定する。いくつかの実現例では、プロファイリング実行は、実行される実際の訓練実行より有意に短い。たとえば、プロファイリング実行は、分または時間のオーダーであり得るが、訓練ジョブは、何日または何週間もかかり得る。
ひとたびプロファイリング実行が完了すると、各ポートについてのキューサイズを決定するよう、そのポートの各チャネルにおいて受信されたパケットの数が使用され得る(406)。いくつかの実現例では、キューサイズは、以下の式を使用して決定され、式中、pはポートであり、NはASIC上のポートの総数であり、packet_numはプロファイリング実行中に受信されるパケットの数である。なお、以下の式は、使用されていないポートについてゼロの値を算出し、したがって、使用されていないポートには、ゼロのキューサイズがアロケートされる。
ひとたび各ポートおよびチャネルについてのキューサイズが決定されると、共有メモリの開始アドレスおよび終了アドレスが、サイズアロケーションに従って各ポートに割り当てられ得る(310)。いくつかの実現例では、これは、TPUアーキテクチャによって提供される1つ以上のAPIを使用して達成される。たとえば、APIは、各バッファキューのサイズを特定するPCIeコンフィグスペースレジスタに書き込み得る。APIは、ハードウェア動作のために、キューサイズを各キューの開始アドレスおよび終了アドレスに変換する。開示されるソリューションは、TPU通信ネットワークにおいてすべてのポートについてキューサイズを動的に構成およびアロケートするよう、これらのAPIを呼び出し得る。
共有メモリへのアドレスの割り当てが完了すると、TPU通信ネットワークが有効化され得、推論プロセスまたは訓練実行が開始し得る(312)。推論プロセスは、将来の機械学習出力のためにニューラルネットワークを訓練または重み付けすることを意図した長期実行プロセスであり得る。
プロファイルによってガイドされるキュー調整は、悪いリンク品質によって引き起こされるパケット再送信、ルーティングアルゴリズムによって引き起こされる不均衡なリンクトラフィック、または、障害のあるチップ/リンクを反映し得る。したがって、それは、より多くのトラフィックを受けるとともに1つのポートから他のポートにメッセージを転送するためにより多くのバッファ空間を必要とするポート/リンクについてより多くのクレジットをアロケートするより最適なスキームであり得る。
図5は、本開示の実現例に従った、実行中にトラフィックに基づいて共有メモリをアロケートするための例示的なプロセスのフローチャートである。図5において記載されるプロセスは、図4および図3のプロセス(たとえば、302から312)と同様に開始し得る。いくつかの実現例では、プロセスのいくつかまたはすべてが順次行われる。たとえば、システムは、最初に、図3に関して記載されるように予測レイテンシに基づいてメモリをアロケートし得、次いで、図4に関して記載されるようにプロファイリング実行を実行するとともにプロファイリング実行に基づいてメモリを再アロケートし、最後に、訓練実行の実行中に、図5を参照して以下に記載されるプロセスに従ってメモリをさらに再アロケートし得る。これらのプロセスの任意の好適な組み合わせが、本開示によって企図される。
ひとたび(図3または図4に記載されるプロセスのいずれかまたは両方を介して)初期キューアロケーションが達成されると、訓練ジョブが実行を開始し得る。実行中、コントローラは、上述のようにハードウェアTPU性能カウンタレジスタによって記録される、各ポートについてのパケットカウントを監視し得る。最初に、実行の開始時に、ポートごとのパケット統計およびハードウェアカウンタがクリアされ得る(502)。訓練ジョブは、所定の時間量にわたって実行し得、次いで、キューは、ジョブ実行中に各ポートについてのパケットカウントに基づいて調整され得る。いくつかの実現例では、メッセージキューは、実行中に周期的に、または、設定された回数(たとえば、実行の最初の5時間について1時間に1回)再アロケートされる。いくつかの実現例では、メッセージキューは、訓練ジョブの開始中により頻繁に再アロケートされ、実行が進行するにつれて頻度はより少なくなる(たとえば、最初の1時間は10分ごと、次いで次の5時間は1時間ごと、次いでその後は1日に1回である)。いくつかの実現例では、期間は、ケースバイケースベースでユーザによって構成される。
所定時間が経過するとともにキューが再アロケートされるべき場合、各ポートについてのパケット統計がハードウェアTPU性能カウンタレジスタから読み出される(504)。所望のキューサイズが計算される(506)。いくつかの実現例では、所望のキューサイズは、図4を参照して記載されるような式を使用して計算される。
キューサイズが決定されると、訓練ジョブの実行が休止され得、これにより、TPUが、任意の保留中のメッセージトラフィックを完全にインジェストおよび処理し、それらのキューをクリアすることが可能になる(508)。いくつかの実現例では、コントローラは、進行する前に、キューがクリアである(たとえば、共有RAMは、各TPUについて保留中のメッセージを有しない)ことを検証する(510)。いくつかの例では、当該休止は所定の時間量だけ継続し、共有RAMがクリアでない場合(512)、訓練ジョブの実行が再開する(516)。これらの例では、コントローラは、その後の時点で再アロケーションを再試行し得る。共有RAMがクリアであると決定される場合、共有RAMにおけるキューには各々、新しい開始アドレスおよび停止アドレスが(たとえば、上で論じたAPIを介して)割り当てられる(514)。次いで、コントローラは、ハードウェアTPU性能カウンタレジスタに格納されたポートごとのパケット統計をクリアし得、次いで、訓練ジョブは実行を再開する(502)。このプロセスは、訓練ジョブの実行中に必要に応じて繰り返し得る。
図6は、図1の機械学習アクセラレータにおいて使用され得る特殊目的論理チップの例を示す概略図である。図6は、ディープニューラルネットワーク(DNN: deep neural network)に関連付けられるテンソル計算を加速するための例示的なコンピューティングシステム600として機械学習ハードウェアアクセラレータにおいて使用されるASICのブロック図を示す。システム600は、たとえば、図1を参照して記載されるようにASIC102であり得る。システム600は一般的に、コントローラ602と、ホストインターフェイス608と、入力/出力(I/O)リンク610と、第1のタイルセット612および第2のタイルセット614を含む複数のタイルと、分類器部分616と、バスマップ618(明確性のために示されているが、システム600には含まれない)において識別されるデータバスとを含む。コントローラ602は一般的に、データメモリ604と、命令メモリ606と、コンピュータ可読記憶媒体において符号化された1つ以上の命令を実行するように構成される少なくとも1つのプロセッサとを含む。命令メモリ606は、コントローラ602の1つ以上のプロセッサによって実行可能である1つ以上の機械可読命令を格納し得る。データメモリ604は、システム600内で発生する計算に関するさまざまなデータを格納するとともにその後にアクセスするためのさまざまなデータ記憶媒体のいずれかであり得る。
コントローラ602は、システム600内において、命令メモリ606に格納された命令を含む、テンソル計算に関する1つ以上の命令を実行するように構成される。いくつかの実現例では、データメモリ604および命令メモリ606は、揮発性メモリユニットである。いくつかの他の実現例では、データメモリ604および命令メモリ606は、不揮発性メモリユニットである。データメモリ604および命令メモリ606はさらに、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、テープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、または、ストレージエリアネットワークもしくは他の構成におけるデバイスを含むデバイスのアレイといった別の形態のコンピュータ可読媒体であり得る。さまざまな実現例では、コントローラ602は、コアマネージャ602と呼称または参照され得る。
示されるように、ホストインターフェイス608は、I/Oリンク610、コントローラ602および分類器部分616に結合される。ホストインターフェイス608は、I/Oリンク610から命令およびデータパラメータを受信し、命令およびパラメータをコントローラ602に提供する。一般的に、命令は、命令バス624(後述)を介してシステム600における1つ以上のデバイスに提供され得、パラメータは、リングバス628(後述)を介してシステム600における1つ以上のデバイスに提供され得る。いくつかの実現例では、命令は、初期時間においてホストインターフェイス618からコントローラ602によって受信され、その後の時間においてコントローラ602によって実行するために命令メモリ606に格納される。
分類器部分616は、同様に、コントローラ602および第2のタイルセット614のタイル7に結合される。いくつかの実現例では、分類器部分616は、システム600内の別個のタイルとして実現される。代替的な実現例では、分類器部分616は、コントローラ602のサブ回路またはサブデバイスとしてコントローラ602内に配置または設置される。分類器部分616は一般的に、全結合層の出力として受信される蓄積されたアクティベーション前値に対して1つ以上の関数を実行するように構成される。全結合層は、タイルセット612および614においてタイルにわたってパーティショニングされ得る。したがって、各タイルは、タイルのメモリユニットに格納され得るアクティベーション前値(すなわち、線形出力)のサブセットを生成するように構成される。分類結果バス620は、分類器部分616からコントローラ602へのデータパスを提供する。関数後値(すなわち、結果)を含むデータが、分類結果バス620を介して分類器部分616からコントローラ602に提供される。
バスマップ618は、第1のタイルセット612および第2のタイルセット614のタイル間の1つ以上の相互接続されたデータ通信パスを提供するデータバスを示す。バスマップ618は、図6に示されるように、分類結果バス620、CSR/マスタバス622、命令バス624、メッシュバス626、および、リングバス628を識別するための凡例を提供する。一般的に、タイルは、システム600のアクセラレータアーキテクチャ内のコアコンポーネントであり、システムにおいて生じるテンソル計算についての焦点である。各タイルは、多層ニューラルネットワークの1つ以上の層にわたる計算を加速するようシステムにおいて他のタイルと協働する個々の計算ユニットである。タイルセット612,614におけるタイルは、所与の命令に関連付けられるテンソル計算の実行を共有し得るが、個々のコンピューティングユニットは、タイルセット612,614内の他の対応するタイルに対して独立してテンソル計算のサブセットを実行するように構成される自己完結型の計算コンポーネントである。
CSRバス622は、コントローラ602が、プログラム構成を設定するとともに1つ以上のタイルに関連付けられるステータスレジスタを読み出す1つ以上の命令を送信することを可能にするシングルマスタマルチスレーブバス(single master multiple slave bus)である。CSRバス622は、1つのマスタバスセグメントおよび複数のスレーブバスセグメントを有するシングルデイジーチェーン構成(single daisy chain configuration)で接続され得る。図6に示されるように、CSRバス622は、ホストインターフェイス610へのリング内のタイルセット612,614およびコントローラ602におけるタイルを接続するバスデータパスを通じた通信結合を提供する。いくつかの実現例では、ホストインターフェイス610は、CSRバスリングのシングルマスタであり、全CSRバスアドレス空間は、ホストインターフェイス610においてメモリ空間にマッピングされるメモリである。
CSRバス622は、1つ以上の動作を実行するようホストインターフェイス610によって使用され得、当該1つ以上の動作は、たとえば、コントローラ602が命令メモリ606から命令をフェッチし始めることを可能にするようコントローラ602においてメモリバッファポインタをプログラミングすること、1つ以上の計算中に静的なままであるさまざまなタイル設定(たとえば、多項式近似計算のための係数テーブル)を更新/プログラミングすること、および/または、ファームウェアを分類部分616にロード/リロードすることを含む。一例では、ファームウェアのリロードは、線形出力(すなわち、アクティベーション前値)に適用されるべき新しい関数を含み得る。したがって、CSRバス622へのアクセスを有するすべてのスレーブは、スレーブに結び付けられるとともにそれを識別する、別個のノード識別子(ノードID)を有することになる。ノードIDは、命令アドレスの一部であり、CSRパケットがスレーブにアドレス指定されるか否かを決定するために、CSRスレーブ(すなわち、コントローラ602、タイル612,614、および分類器616)によって使用され、検査または別の態様で調査されることになる。
いくつかの実現例では、1つ以上の命令は、コントローラ602を通じてホストインターフェイス602によって送信され得る。命令は、たとえば、32ビット幅であってもよく、最初の7ビットは、命令を受信し実行すべき命令アドレス/宛先を示すヘッダ情報を含む。ヘッダの最初の7ビットは、特定のノードIDを表すデータパラメータを含み得る。したがって、CSRバスリング上のスレーブ(たとえば、各タイル)は、命令のヘッダを検査して、マスタ(ホストインターフェイス610)による要求がヘッダを検査するタイルにアドレス指定されたか否かを決定し得る。ヘッダのノードIDが、宛先が検査タイルであることを示さない場合、検査タイルは、次のタイルによる検査のために、次のタイルに接続されたCSRバス入力に入力CSR命令パケットをコピーする。
命令バス624は、コントローラ602から始まり、CSRバス622と同様に、リングにおけるタイルセット612,614内のタイルをコントローラ602に戻すように接続するバスデータパスを通じて通信結合をさらに提供する。一実現例では、コントローラ602は、命令バス624を介して1つ以上の命令をブロードキャスト送信する。コントローラ602によってブロードキャスト送信される命令は、CSRバス622を介して提供される命令とは異なり得る。しかしながら、タイルがバス624を介して受信される命令を受信および/または消費もしくは実行する態様は、CSRバス622を介して受信される命令を実行するためのプロセスと同様であり得る。
一例では、命令のヘッダ(すなわち、ビットマップ)は、受信タイルが、命令に関連付けられるビットマップに基づいて特定の命令を消費する必要があることを受信タイルに示す。ビットマップは、ビットに関して定義される特定の幅を有し得る。命令は典型的には、命令のパラメータに基づいて、1つのタイルから次のタイルに転送される。一実現例では、命令バス624の幅は、命令のサイズ/幅よりも小さくなるように構成され得る。したがって、そのような構成では、命令の送信は数サイクルにわたり、命令バス624のバスストップは、デコーダに、タイルにおいて受信された命令をそのタイルに関連付けられる適切なターゲット命令バッファへ配置させることになる。
以下にさらに記載されるように、タイルセット612,614におけるタイルは一般的に、命令の2つの広いカテゴリをサポートするように構成される。2つの広いカテゴリは、命令タイプとも称され得る。命令タイプは、テンソル演算(TensorOp)命令およびダイレクトメモリアクセス(DMAOp)命令を含む。いくつかの実現例では、DMAOp命令は、同時であることが許可される1つ以上の特殊化(specialization)を有する。1つ以上の特殊化は、DMAOp命令サブタイプまたはOpコードと称され得る。いくつかの場合において、各固有および/または有効なDMAOp命令タイプ/サブタイプタプルは、特定のタイル内に別個の命令バッファを有することになる。
タイル612,614の特定のタイルにおいて、命令バス624に関連付けられるバスストップは、命令タイプ/サブタイプを決定するよう、ヘッダビットマップを検査する。命令は、タイルによって受信され、その後、タイルによる命令の実行に先立ってタイルの命令バッファに書き込まれ得る。命令が書き込まれるタイルの命令バッファは、命令のタイプおよびサブタイプインジケータ/フィールドによって決定され得る。命令バッファは、1つ以上の関連する命令の消費を優先させる先入先出(FIFO: first-in first-out)制御スキームを含み得る。したがって、このFIFO制御スキーム下では、同じタイプ/サブタイプの命令が常に、命令が命令バスに到着した順序で実行されることになる。
タイル内の異なる命令バッファは、TensorOp命令バッファおよびDMAOp命令バッファである。上で示されたように、命令タイプは、TensorOp命令およびDMAOp命令を含む。DMAOp命令に関して、命令サブタイプ(「書き込み」バッファ位置を示す)は、1)メッシュインバウンド命令バッファと、2)メッシュアウトバウンド命令バッファと、3)ナローワイドDMA命令バッファと、4)ワイドナローDMA命令バッファと、5)リングバスDMA命令バッファとを含む。これらのバッファ位置は、図7を参照して以下においてより詳細に記載される。ワイドおよびナローの名称は、本明細書全体にわたって使用され、一般的に、1つ以上のメモリユニットの幅(ビット/バイト)におけるおおよそのサイズを指す。本明細書において使用されるように、「ナロー」は、各々が16ビット未満のサイズまたは幅を有する1つ以上のメモリユニットを指し得、「ワイド」は、各々が64ビット未満のサイズまたは幅を有する1つ以上のメモリユニットを指し得る。
メッシュバス626は、CSRバス622、命令バス624、およびリングバス628(後述)とは異なるデータ通信パスを提供する。図6に示すように、メッシュバス626は、X次元およびY次元の両方において、各タイルをその対応する隣接タイルに結合または接続する通信パスを提供する。さまざまな実現例では、メッシュバス626は、隣接するタイルにおいて1つ以上のナローメモリユニット同士間で入力アクティベーション量を搬送するために使用され得る。示されるように、メッシュバス626は、隣接しないタイルへの入力アクティベーションデータの直接転送を可能にしない。
さまざまな実現例では、メッシュバス626およびメッシュバス626を介して接続されるさまざまなタイルは、以下の構成を有し得る。メッシュの4つのコーナータイルは、2つのアウトバウンドポートおよび2つのインバウンドポートを有する。メッシュの4つのエッジタイルは、3つのインバウンドポートおよび3つのアウトバウンドポートを有する。すべての非エッジ、非コーナータイルは、4つのインバウンドポートおよび4つのアウトバウンドポートを有する。一般的に、例示的なN×Nタイルレイアウトを考えると、エッジタイルは、3つの隣接するタイルのみを有するタイルであり、その一方、コーナータイルは、2つの隣接するタイルを有するタイルである。メッシュバス626を介したデータフロー方法に関して、一般的に、特定のタイルについてメッシュバス626を介して到着するすべての入力アクティベーションは、タイルの1つ以上のナローメモリユニットにコミットされなければならない。さらに、4つより少ないインバウンドポートを有するタイル構成の場合、DMAOp命令は、不在の入力ポート上のデータを待つ代わりに、タイルのナローメモリ内の位置にゼロ値を書き込み得る。同様に、4つより少ないアウトバウンドポートを有するタイル構成の場合、DMAOp命令は、任意の不在のポートに対する転送に関連するナローメモリ読み出しおよびポート書き込みを実行しない。
いくつかの実現例では、特定の入力アクティベーションが書き込まれるかまたは読み出されるナローメモリユニットの位置またはアドレスは、メッシュバス626を介して提供されるインバウンド/アウトバウンドDMAOpに基づいて、テンソルトラバーサルユニット(Tensor Traversal Unit;以下「TTU」)によって生成されることになる。インバウンドDMAOpおよびアウトバウンドDMAOpは、同時に実行されてもよく、任意の必要とされる同期が、コントローラ602によって管理される同期フラグ制御スキームを通じて管理されることになる。TTUは、図7を参照して以下でさらに詳細に記載される。
リングバス628は、コントローラ602から始まり、CSRバス622および命令バス624と同様に、リングにおいてタイル612,614をコントローラ602に戻すように接続するバスデータパスを通じて通信結合をさらに提供する。さまざまな実現例では、リングバス628は、一般的に、すべてのタイル612,614においてすべてのワイドメモリユニット(図7を参照して以下でより詳細に記載される)を接続または結合する。したがって、リングバス628のペイロード幅は、タイルセット612,614の各タイル内に配置されるワイドメモリユニットの幅に対応する。上で論じたように、リングバス628はさらに、リングバス628を介して通信される命令またはパラメータを含むペイロードデータを消費する必要があるタイルを示すビットマップヘッダを含む。
リングバス628を介して特定のタイルにおいて受信されるデータ(すなわち、ペイロード)に関して、情報を受信することに応答して、各タイルは、別のタイルにデータを転送する前に、受信タイルに固有であるビットマップヘッダにおいて示される位置データをゼロにする(すなわち、クリアする)。したがって、ペイロードを受信するべき特定のタイルを示す残りのビットセットデータをヘッダビットマップが有さない場合、ペイロードの別のタイルへの転送は停止することになる。ペイロードデータは一般的に、ディープにネストされたループの実行に基づいて実行されるテンソル計算中に1つ以上のタイルによって使用されるアクティベーションおよび重みを指す。
いくつかの実現例では、コントローラ602は、リングバス628の部分であるとして記載され得る。一例では、特定のタイル内で実行されるDMAOp命令について、コントローラ602は、リングにおいて、リングバスストップからデータ/ペイロードをポップし、当該ペイロードを次のタイルにおけるリングバスストップに転送するよう使用され得る。コントローラ602はさらに、そのようなアクションがビットマップヘッダ中の命令によって必要とされる場合、ペイロードデータをタイルの1つ以上のワイドメモリユニットにコミットさせ得る。データが書き込まれる必要がある1つ以上のワイドメモリユニットのアドレスは、特定のタイル内においてDMAOp命令によって生成され得る。
さまざまな実現例では、タイルセット612,614の各タイルは、ペイロードデータの作成者またはペイロードデータの消費者のいずれかであり得る。タイルがペイロードデータの作成者である場合、タイルは、そのワイドメモリユニットのうちの1つ以上からデータを読み出し、1つ以上の他のタイルによる消費のためにリングバス628を介してデータをマルチキャスト送信する。タイルがペイロードデータの消費者である場合、タイルは、当該データを受信して、タイル内において1つ以上のワイドメモリユニットに書き込み、1つ以上の他のタイルによる消費のためにペイロードデータを転送する。リングバス628を介したペイロードデータの移動に関して、典型的には、任意の所与の時間において、リングバス628上にデータの作成者/マスタが1つのみが存在することになる。すべてのタイルにおけるDMAOp命令実行順序(たとえば、FIFO制御スキーム)によって、所与の時間においてリングバス628上にデータの作成者/マスタが1つのみ存在することが保証される。
いくつかの実現例では、コントローラ602は、所与の時間にリングバス628上にペイロードデータの作成者/マスタが1つのみ存在することを保証するために、同期フラグ制御アーキテクチャを使用する。一例では、リング出力へのタイルによる各書き込みによって、対応する同期フラグカウントのインクリメントがトリガされる。コントローラ602は、ペイロードデータを検査して、ペイロードを含むデータチャンクまたはセグメントの数を決定し得る。次いで、コントローラ602は、別のタイルがマスタモードで実行される前に、予想される数のデータセグメントがタイルによって転送および/または消費されることを保証するために、タイルによる実行を監視する。
所与の時間にリングバス628上にデータの作成者/マスタが1つのみ存在することを保証することに対する例外は、リングバス上に重なる領域を有しない、リングバス628を介して接続されるローカルマルチキャストグループが存在する場合に生じる。たとえば、タイル0(マスタ)は、タイル0-タイル3グルーピングにおけるタイルにマルチキャスト送信(すなわち、データを生成)し得、その一方、タイル4(マスタ)は、タイル4-タイル7グルーピングにおけるタイルに同じことを行い得る。このデュアルマスタマルチキャスト方法の重要な要件は、パケットオーバーラップが生じて1つ以上のデータ計算エラーにつながり得るので、異なるマルチキャストグループが互いのデータパケットを見ることを許可されてはならないことである。
図6に示すように、コントローラ602は、タイルセット612,614におけるタイルをI/O610に結合または接続する通信データパスを提供し、いくつかのコア機能を含む。コントローラ602のコア機能は一般的に、タイルセット612,614におけるタイルに1つ以上のI/O入力アクティベーションを供給することと、タイルにI/O610から受信した1つ以上の入力アクティベーションおよびパラメータを供給することと、タイルに1/O610から受信した1つ以上の命令を供給することと、ホストインターフェイス608にI/O出力アクティベーションを送信することと、CSRバス622およびリングバス628のためのリングストップとして機能することとを含む。以下により詳細に記載されるように、第1のタイルセット612および第2のタイルセット614は各々、内側ループおよび外側ループから構成されるディープループネストに基づいて実行される1つ以上のテンソル計算を実行するよう使用される複数のタイルを含む。
システム600は一般的に以下のように動作する。ホストインターフェイス608は、所与の計算のために生じるダイレクトメモリアクセス動作(DMAOp)を定義する1つ以上の命令をコントローラ602に提供することになる。コントローラ602に供給される命令に関連付けられる記述子は、多次元データアレイ(テンソル)に関連付けられる大規模ドット積計算を促進するためにコントローラによって必要とされる情報を含むことになる。一般的に、コントローラ602は、ニューラルネットワークの所与の層のためのテンソル計算を実行するための入力アクティベーション、タイル命令およびモデルパラメータ(すなわち、重み)をホストインターフェイス608から受信する。次いで、コントローラ602は、命令によって定義されるデータフローの態様で、命令をタイル612,614にマルチキャスト送信させ得る。上で論じたように、命令を消費するタイルは次いで、命令ヘッダ中のビットマップデータに基づいて、別のタイルへの新しい/その後の命令のブロードキャスト送信を開始し得る。
データフローに関して、入力アクティベーションおよびパラメータは、リングバス628を介してタイルセット612,614のタイルに送信される。タイル612,614の各々は、その特定のタイルに割り当てられる出力アクティベーションのサブセットを計算するために必要とされる入力アクティベーションのサブセットを格納する。タイルについてのDMAOp命令は、入力アクティベーションをワイドメモリからナローメモリに移動させる。タイル内の計算は、必要な入力アクティベーション、パラメータ/重みおよび計算命令(TTU演算、メモリアドレスなど)がタイルにおいて利用可能である場合に開始する。タイル内で発生する計算は、タイル内のMACオペレータ(後述)が命令セットによって定義されるすべてのドット積演算を完了し、アクティベーション前関数が乗算演算の結果(すなわち、出力アクティベーション)に適用されると終了する。
1つ以上のテンソル計算の結果は、計算層の出力アクティベーションを、計算を実行するタイルのナローメモリユニットに書き込むことを含む。あるテンソル計算では、メッシュバス626を介して隣接するタイルへの出力エッジアクティベーションの転送がある。計算が複数の層にまたがる場合、後続の層のための出力アクティベーションを計算するために、隣接するタイルへの出力エッジアクティベーションの転送が必要とされる。すべての層についての計算が完了すると、DMAOpは、リングバス628を介して分類器タイル616に最終アクティベーションを移動させる。次いで、コントローラ602は、分類器タイル616から最終アクティベーションを読み出し、DMAOpを実行して、最終アクティベーションをホストインターフェイス608に移動させる。いくつかの実現例では、分類器部分616は、NNの出力層(すなわち、最後の層)の計算を実行する。他の実現例では、NNの出力層は、分類器層、回帰層、または、一般的にニューラルネットワークに関連付けられる別の層タイプのうちの1つである。
図7は、図1を参照して記載されるようにASIC(たとえばTPU106)において使用され得る例示的なニューラルネットワーク(NN)計算タイル700を示す。一般的に、例示的なタイル700は、図6を参照して上で論じた第1のタイルセット612および第2のタイルセット614内のタイルのいずれかに対応し得る。さまざまな実現例では、計算タイル700は、計算ユニット700とも呼称または参照され得る。各計算タイル700は、タイルセット612,614内の他の対応するタイルに対して独立して命令を実行するように構成される自己完結型の計算ユニットである。上で簡潔に論じたように、各計算タイル700は、TensorOp命令およびDMAOp命令という2つのタイプの命令を実行する。一般的に、各命令タイプは、ディープループネストに関連付けられる計算演算を含み、したがって、各命令タイプは一般的に、すべてのループ反復の完了を保証するよう、複数の時間エポックにわたって実行されることになる。
以下により詳細に論じられるように、異なる命令タイプは、計算タイル700内で管理される同期フラグ制御を通じてデータ上で同期する計算タイル700内の独立した制御ユニットによって実行される。同期フラグ制御は、計算タイル700内の異なる命令タイプの実行間の同時性を管理する。各命令タイプに関連付けられる各計算演算は、発行の厳密な順序(すなわち、先入先出)で実行されることになる。2つの命令タイプであるTensorOPおよびDMAOpに関して、これらの異なる命令タイプ間に順序の保証は存在せず、各タイプは、計算タイル700によって制御の別個のスレッドとして扱われる。
データフロー構成に関して、計算タイル700は一般的に、各々が計算タイル700に入るとともに計算タイル700から出るデータフローのための通信パスを提供するデータパス702およびデータパス705を含む。上述のように、システム600は、リング構成でレイアウトされる3つの別個のデータバス構造を含む、すなわち、CSRバス622、命令バス624、および、リングバス628を含む。図7を参照して、データパス705は命令バス624に対応し、データパス702は一般的にCSRバス622およびリングバス628のうちの1つに対応する。示されるように、データパス702は、計算タイル700を出るデータのための出力パスを提供するリング出力703と、計算タイル700に入るデータのための入力パスを提供するリング入力704とを含む。
計算タイル700は、TensorOpテンソルトラバーサルユニット(TTU)726を含むTensorOp制御706と、DMAOp TTU728を含むDMAOp制御708とをさらに含む。TensorOp制御706は、一般的に、TensorOp TTUレジスタ732への書き込みおよびTensorOp TTUレジスタ732からの読み出しを管理し、TensorOp TTU726による実行のためのトラバーサル動作を管理する。同様に、DMAOp制御708は、一般的に、DMAOp TTUレジスタ734への書き込みおよびDMAOp TTUレジスタからの読み出しを管理し、DMAOp TTU728による実行のためのトラバーサル動作を管理する。TTUレジスタ732は、TensorOp制御706による命令の実行時にTensorOp TTU726によって実行されるべき動作を含む1つ以上の命令を格納するための命令バッファを含む。同様に、TTUレジスタ734は、DMAOp制御708による命令の実行時にTTU708によって実行されるべき動作を含む1つ以上の命令を格納するための命令バッファを含む。以下においてさらに記載されるように、TTUは、一般的にナローメモリ710およびワイドメモリ712に存在する1つ以上のテンソルのアレイ要素をトラバースするよう計算タイル700によって使用される。
いくつかの実現例では、計算タイル700による実行のためのある命令が、データパス705(すなわち、命令バス624の部分)を介してタイルに到着する。計算タイル700は、命令タイプ(TensorOpまたはDMAOp)および命令サブタイプ(読み出し動作または書き込み動作)を決定するようヘッダビットマップを検査する。計算タイル700によって受信された命令は、その後、命令タイプに依存して特定の命令バッファに書き込まれる。一般的に、命令は、計算タイル700のコンポーネントによる命令の実行の前に受信され格納される(すなわち、バッファに書き込まれる)。図7に示されるように、命令バッファ(すなわち、TensorOp TTUレジスタ732およびDMAOp TTUレジスタ734)は各々、1つ以上の関連する命令の消費(実行)を優先する先入先出(FIFO)制御スキームを含み得る。
上で簡潔に論じたように、テンソルは、多次元ジオメトリックオブジェクトであり、例示的な多次元ジオメトリックオブジェクトは、行列およびデータアレイを含む。ディープにネストされたループを含むアルゴリズムは、N次元のテンソルをトラバースするように1つ以上のネストされたループを反復することによってテンソル計算を実行するよう、計算タイル700によって実行され得る。1つの例示的な計算プロセスでは、ループネストの各ループは、N次元テンソルの特定の次元をトラバースすることを担い得る。本明細書において記載されるように、TensorOp制御706は、一般的に、特定のテンソル構築物の次元要素がトラバースされ、ディープネストループによって定義される計算を完了するようアクセスされるシーケンスを駆動する1つ以上のテンソル演算を管理する。
計算タイル700はさらに、ナローメモリ710およびワイドメモリ712を含む。ナローおよびワイドの名称は、一般的に、ナローメモリ710およびワイドメモリ712のメモリユニットの幅(ビット/バイト)におけるサイズを指す。いくつかの実現例では、ナローメモリ710は、各々が16ビット未満のサイズまたは幅を有するメモリユニットを含み、ワイドメモリ712は、各々が32ビット未満のサイズまたは幅を有するメモリユニットを含む。一般的に、計算タイル700は、データパス705を介して入力アクティベーションを受信し、DMA制御708は、入力アクティベーションをナローメモリ710に書き込むための動作を実行する。同様に、計算タイル700は、データパス702を介してパラメータ(重み)を受信し、DMA制御708は、ワイドメモリ712にパラメータを書き込むための動作を実行する。いくつかの実現例では、ナローメモリ710は、各メモリサイクルについて、どの制御デバイス(たとえば、TensorOp制御706またはDMAOp制御708)がナローメモリ710のその共有メモリユニットにアクセスすることを許可されるかを決定するよう、共有メモリシステムにおいて典型的に使用されるメモリアービタ(memory arbiter)を含み得る。
計算タイル700は、入力アクティベーションバス716と、各々がMACオペレータ715およびサムレジスタ720を含む複数のセルを含むMACアレイ714とをさらに含む。一般的に、MACアレイ714は、複数のセルにわたるMACオペレータ715およびサムレジスタ720を使用して、ドット積計算に関連する算術演算を含むテンソル計算を実行する。入力アクティベーションバス716は、MACアレイ714の各MACオペレータ715によるそれぞれのアクセスのために1つずつ、ナローメモリ710によって入力アクティベーションが提供されるデータパスを提供する。したがって、入力アクティベーションの1つずつのブロードキャスト送信に基づいて、特定のセルの単一のMACオペレータ715は、各々、入力アクティベーションを受信する。MACアレイ714のMACオペレータによって実行される算術演算は一般的に、ナローメモリ710によって提供される入力アクティベーションをワイドメモリ712からアクセスされるパラメータと乗算して、単一の出力アクティベーション値を生成することを含む。
算術演算中、部分和は、たとえば対応するサムレジスタ720に蓄積および格納され得るか、または、ワイドメモリ712に書き込まれ、MACアレイ714の特定のセルによって再アクセスされて、後続の乗算演算を完了し得る。テンソル計算は、第1の部分および第2の部分を有するものとして記載され得る。第1の部分は、乗算演算が、たとえば、入力アクティベーションと出力アクティベーションを生成するためのパラメータとの乗算を完了することによって、出力アクティベーションを生成する際に完了する。第2の部分は、出力アクティベーションへの非線形関数の適用を含み、第2の部分は、出力アクティベーションが関数の適用後にナローメモリ710に書き込まれる際に完了する。
計算タイル700は、出力アクティベーションバス718と、出力アクティベーションパイプライン724を含む非線形ユニット(NLU: non-linear unit)722と、NLU制御738と、計算タイル700におけるコンポーネントのコア属性を示す参照マップ730とをさらに含む。参照マップ730は、明確性のために示されているが、計算タイル700には含まれていない。コア属性は、特定のコンポーネントがユニットであるか、記憶装置であるか、オペレータであるか、制御デバイスであるか、または、データパスであるかを含む。一般的に、テンソル計算の第1の部分が完了すると、出力アクティベーションが、MACアレイ714から出力アクティベーションバス718を介してNLU722に提供される。NLU722に到着した後、アクティベーションパイプライン724を介して受信されたアクティベーション関数を特定するデータは、出力アクティベーションに適用され、出力アクティベーションは、次いで、ナローメモリ710に書き込まれる。いくつかの実現例では、出力アクティベーションバス718は、少なくとも1つのパイプライン化されたシフトレジスタ736を含み、テンソル計算の第2の部分を完了することは、出力アクティベーションをナローメモリ710に向かってシフトするようアクティベーションバス718のシフトレジスタ736を使用することを含む。
たとえば、2つの多次元データアレイのドット積計算に関して、単一の計算タイル700について、MACアレイ714は、堅牢なシングルインストラクションマルチプルデータ(SIMD: single instruction multiple data)機能を提供する。SIMDは、一般的に、すべての並列ユニット(複数のMACオペレータ715)が(ディープループネストに基づいて)同じ命令を共有するが、各MACオペレータ715が異なるデータ要素上で命令を実行することを意味する。1つの基本的な例において、配列[1,2,3,4]および[5,6,7,8]を要素ごとに加算して1サイクルにおいて配列[6,8,10,12]を得ることは、典型的には、各要素に対して演算を実行するために4つの演算ユニットを必要とすることになる。SIMDを使用することによって、4つのユニットは、同じ命令(たとえば、「加算」)を共有し、並列に計算を実行し得る。したがって、システム600および計算タイル700は、従来の方法に対してテンソル計算において向上した加速および並列性を提供する。
一例では、以下においてより詳細に記載されるように、複数のMACアレイ714による消費のために、コントローラ602によって単一の命令が複数の計算タイル700(図6のタイルセット612,614参照)に提供され得る。一般的に、ニューラルネットワーク層は、複数の出力ニューロンを含み得、出力ニューロンは、出力ニューロンのサブセットに関連付けられるテンソル計算がタイルセット612,614の特定のタイルに割り当てられ得るようにパーティショニングされ得る。次いで、タイルセット612,614の各タイルは、所与の層についてニューロンの異なるグループ上で関係するテンソル計算を実行し得る。したがって、計算タイル700は、少なくとも2つの形態の並列性を提供し得る、すなわち、1)1つの形態は、タイルセット612,614の複数のタイルの間で出力アクティベーション(出力ニューロンのサブセットに対応する)をパーティショニングすることを含み、2)別の形態は、タイルセット612,614のタイル間のパーティショニングに基づく出力ニューロンの複数のサブセットの(単一の命令による)同時計算を含む。
開示される発明概念は、添付の請求の範囲において定義されるものを含むが、当該発明概念はさらに、以下の実施形態に従って定義され得ることが理解されるべきである。
実施形態1は、機械学習アクセラレータ通信ネットワークにおけるメモリアロケーションのための方法である。一般的に、この方法は、特定用途向け集積回路(ASIC)の複数の通信ポートに関連付けられるメタデータにアクセスすることを含む。メタデータは、各ポートについて、特定のポートが、現在の構成において使用されるか否かと、特定のポートに関連付けられる通信媒体とを識別する。メタデータに基づいて、各ポートについて予想レイテンシが決定され、各ポートに共有メモリの部分がアロケートされる。共有メモリは、使用されないポートにゼロメモリを割り当てすることと、予想レイテンシに基づいて、各ポートのメモリアロケーションを決定することと、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることによってアロケートされる。実現例は、以下の特徴のうちの1つ以上を随意に含み得る。
実施形態2は、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることは、ASICとは異なるデバイスによってアプリケーションプログラミングインターフェイス(API)を呼び出すことを含む、実施形態1に記載の方法である。
実施形態3は、機械学習アクセラレータ通信ネットワークおよびアロケートされた共有メモリを使用して、ASIC上でプロセスが実行される、実施形態1または2に記載の方法である。いくつかの実施形態では、プロセスはニューラルネットワークを訓練することである。
実施形態4は、ASICがテンソルプロセッシングユニット(TPU)である、実施形態1~3のいずれか1つに記載の方法である。
実施形態5は、メタデータにおいて識別される通信媒体が、銅ケーブル媒体、光媒体、プリント回路基板(PCB)媒体、または、それらの任意の組み合わせである、実施形態1~4のうちのいずれか1つの方法である。
実施形態6は、メモリが、式
に従ってアロケートされる、実施形態1~5のいずれか1つに記載の方法である。
実施形態7は、1つ以上のコンピュータと、命令を格納する1つ以上の記憶装置とを含み、当該命令は、1つ以上のコンピュータによって実行されると、1つ以上のコンピュータに請求項1~6のいずれかに記載の方法を実行させるように動作可能である、システムである。
実施形態7は、1つ以上のコンピュータと、命令を格納する1つ以上の記憶装置とを含み、当該命令は、1つ以上のコンピュータによって実行されると、1つ以上のコンピュータに請求項1~6のいずれかに記載の方法を実行させるように動作可能である、システムである。
実施形態8は、コンピュータプログラムにより符号化されたコンピュータ記憶媒体であり、当該プログラムは、データ処理装置によって実行されると、データ処理装置に請求項1~6のいずれか1つに記載の方法を実行させるように動作可能な命令を含む。
実施形態9は、機械学習アクセラレータ通信ネットワークにおけるメモリアロケーションのための方法であって、当該方法は、機械学習アクセラレータASICのネットワークのためのネットワークトポロジを決定することを含む。ネットワーク内の各ASICの複数の通信ポートに関連付けられるメタデータがアクセスされる。メタデータは、複数のポートの各ポートについて、特定のポートが、現在の構成において使用されるか否かと、特定のポートに関連付けられる通信媒体とを識別する。ネットワークトポロジで使用される各ポートについて、ラウンドトリップタイム(RTT)遅延が決定される。複数のポートの各ポートに共有メモリの部分がアロケートされ、当該アロケートすることは、RTT遅延に比例する各ポートについてのメモリアロケーションを決定することと、決定されたメモリアロケーションについて、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることとによって行われる。プロファイリングトラフィックを所定の持続時間の間、ネットワークに送信するプロセスが機械学習アクセラレータ上で実行される。各ポートについて、受信されたトラフィックパケットの数が決定され、共有メモリの部分が複数のポートの各ポートに再アロケートされ、再アロケートすることは、受信されたパケットカウントに比例する各ポートについてのメモリアロケーションを決定することと、決定されたメモリアロケーションの各ポートについて開始アドレスおよび停止アドレスが再割り当てされることとによって行われる。
実施形態10は、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当ておよび再割り当てすることは、ASICとは異なるデバイスによってAPIを呼び出すことを含む、実施形態9に記載の方法である。
実施形態11は、各ポートについて決定されたRTT遅延に比例するメモリアロケーションが、式
に従って決定される、実施形態9または10に記載の方法である。
実施形態12は、受信されたパケットカウントに比例する各ポートについてのメモリアロケーションが、式
実施形態12は、受信されたパケットカウントに比例する各ポートについてのメモリアロケーションが、式
に従って決定される、実施形態9~11のいずれか1つに記載の方法である。
実施形態13は、RTT遅延が、レイテンシを決定するために1つ以上のタイミングメッセージを送信および受信することによって実行前に計算される、実施形態9~12のいずれか1つに記載の方法である。
実施形態13は、RTT遅延が、レイテンシを決定するために1つ以上のタイミングメッセージを送信および受信することによって実行前に計算される、実施形態9~12のいずれか1つに記載の方法である。
実施形態14は、プロファイリングトラフィックが、オール・ツー・オールトラフィック、最近傍トラフィック、合成トラフィックプロファイル、または、それらの任意の好適な組み合わせを含む、実施形態9~13のいずれか1つに記載の方法である。
実施形態15は、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることが、ASICとは異なるデバイスによって、アプリケーションプログラミングインターフェイス(API)を呼び出すことを含む、実施形態9~14のいずれか1つに記載の方法である。
実施形態16は、機械学習アクセラレータ通信ネットワークおよびアロケートされた共有メモリを使用してASIC上でプロセスが実行される、実施形態9~15のいずれか1つの方法である。いくつかの実施形態では、プロセスはニューラルネットワークを訓練することである。
実施形態17は、ASICがテンソルプロセッシングユニット(TPU)である、実施形態9~16のいずれか1つに記載の方法である。
実施形態18は、1つ以上のコンピュータと、命令を格納する1つ以上の記憶装置とを含み、当該命令は、1つ以上のコンピュータによって実行されると、1つ以上のコンピュータに請求項9~17のいずれかに記載の方法を実行させるように動作可能である、システムである。
実施形態19は、コンピュータプログラムにより符号化されたコンピュータ記憶媒体であり、当該プログラムは、データ処理装置によって実行されると、データ処理装置に請求項9~17のいずれか1つに記載の方法を実行させるように動作可能な命令を含む。
実施形態20は、機械学習アクセラレータ通信ネットワークのためのメモリをアロケートするための方法であって、当該方法は、機械学習アクセラレータ特定用途向け集積回路(ASIC)のネットワークのためのネットワークトポロジを決定することを含む。ネットワーク内の各ASICの複数の通信ポートに関連付けられるメタデータがアクセスされる。メタデータは、複数のポートの各ポートについて、特定のポートが、特定のポートに関連付けられる現在のアーキテクチャおよび通信媒体において使用されるか否かを識別する。メタデータは、複数のポートの各ポートについて、特定のポートが、現在の構成において使用されるか否かと、特定のポートに関連付けられる通信媒体とを識別する。ネットワークトポロジで使用される各ポートについて、ラウンドトリップタイム(RTT)遅延が決定される。複数のポートの各ポートに共有メモリの部分がアロケートされ、当該アロケートすることは、RTT遅延に比例する各ポートについてのメモリアロケーションを決定することと、決定されたメモリアロケーションについて、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることとによって行われる。ASIC上でプロセスが実行され、当該プロセスは、アロケートされた共有メモリとともに機械学習アクセラレータ通信ネットワークを使用する。プロセスの実行中、第1の期間にわたって複数のポートの各ポートにおいて受信されたメッセージパケットの数が決定される。各ポートで受信されたメッセージパケットの数に基づいて、複数のポートの各ポートについて共有メモリの所望の部分サイズが決定される。第2の期間の間、プロセスが休止され、共有メモリは保留中のメッセージパケットについてクリアであるか否かが決定される。共有メモリがクリアであると、所望の部分サイズに従って、各ポートについて共有メモリの開始アドレスおよび停止アドレスが再割り当てされ、プロセスの実行が再開される。
実施形態21は、共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることが、ASICとは異なるデバイスによってアプリケーションプログラミングインターフェイス(API)を呼び出すことを含む、実施形態20に記載の方法である。
実施形態22は、機械学習アクセラレータ通信ネットワークおよびアロケートされた共有メモリを使用してASIC上でプロセスが実行される、実施形態20または21に記載の方法である。いくつかの実施形態では、プロセスは、ニューラルネットワークを訓練することである。
実施形態23は、ASICがテンソルプロセッシングユニット(TPU)である、実施形態20~22のいずれか1つに記載の方法である。
実施形態24は、1つ以上のコンピュータと、命令を格納する1つ以上の記憶装置とを含み、当該命令は、1つ以上のコンピュータによって実行されると、1つ以上のコンピュータに請求項20~23のいずれかに記載の方法を実行させるように動作可能である、システムである。
実施形態25は、コンピュータプログラムにより符号化されたコンピュータ記憶媒体であり、当該プログラムは、データ処理装置によって実行されると、データ処理装置に請求項20~23のいずれか1つに記載の方法を実行させるように動作可能な命令を含む。
前述の説明は、1つ以上の特定の実現例の文脈で提供されている。本開示の範囲から逸脱することがなければ、開示された実現例のさまざまな修正例、変更例、および置換例が可能である。したがって、本開示は、記載または示される実現例のみに限定されることが意図されず、本明細書において開示される原理および特徴と一貫する最も広い範囲を与えられるべきである。
主題の特定の実施形態が記載された。他の実施形態は、添付の請求の範囲内にある。たとえば、バスラインは「制御可能」として説明されるが、すべてのバスラインが同じレベルの制御を有する必要はない。たとえば、制御可能性の程度の変動があり得、いくつかのバスラインのみが制御され得、いくつかのバスラインが、データをそこから送出し得るタイルの数、または、データをそこに送信し得るタイルの数に関して、制限される。別の例では、いくつかのバスラインは、本明細書において記載されるように、北、東、西または南など、単一の方向に沿ってデータを提供することについて専用であり得る。いくつかの場合において、請求項に記載される動作は、異なる順序で行われ得、それでも所望の結果を達成し得る。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、必ずしも示される特定の順序または逐次的な順序を必要としない。ある実現例では、マルチタスクおよび並列処理が有利であり得る。
本明細書において記載される主題および機能的動作の実施形態は、デジタル電子回路において実現され得、本明細書に開示される構造およびそれらの構造的等価物を含むコンピュータハードウェアにおいて実現され得、または、それらの1つ以上の組み合わせにおいて実現され得る。本明細書において記載される主題の実施形態は、1つ以上のコンピュータプログラムとして実現され得る、すなわち、データ処理装置による実行のために、または、データ処理装置の動作の制御のために、有形の非一時的なプログラムキャリア上に符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実現され得る。代替的または付加的には、プログラム命令は、人工的に生成された伝搬信号上で符号化され得、伝搬信号はたとえば、データ処理装置による実行のために好適な受信機装置への送信のための情報を符号化するように生成される機械生成電気信号、光信号、または電磁信号である。コンピュータ記憶媒体は、機械可読記憶装置、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、または、これらの1つ以上の組み合わせであり得る。
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、または、複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイスおよび機械を包含する。当該装置は、特殊目的論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASICを含み得る。装置はさらに、ハードウェアに加えて、当該コンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、または、それらの1つ以上の組み合わせを構成するコードを含み得る。
本明細書において記載されるプロセスおよび論理フローは、入力データに対して動作するとともに出力を生成することによって機能を実行するよう、1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルコンピュータによって実行され得る。プロセスおよび論理フローはさらに、たとえば、FPGA、ASIC、または、GPGPU(汎用グラフィックス処理ユニット(general purpose graphics processing unit))といった専用論理回路によって実行され得、装置はさらに、当該専用論理回路として実現され得る。
本明細書は、多くの具体的な実現例の詳細を含むが、これらは、いかなる発明の範囲または特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ、特定の発明の特定の実現例に特有の特徴の説明として解釈されるべきである。別個の実現例の文脈で本明細書において記載されるある特徴はさらに、単一の実現例において組み合わせて実現され得る。逆に、単一の実現例の文脈において説明されるさまざまな特徴はさらに、複数の実現例において別々に、または、任意の好適なサブコンビネーションにおいて実現され得る。さらに、特徴は、特定の組み合わせで作用すると上で記載され、そのように最初に特許請求されることさえあり得るが、特許請求される組み合わせのうちの1つ以上の特徴は、いくつかの場合において、その組み合わせから削除され得、特許請求される組み合わせは、サブコンビネーションまたはサブコンビネーションの変形例に向けられ得る。
同様に、動作は特定の順序で図面に描かれているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順序もしくは逐次的な順序で実行されること、または、すべての示された動作が実行されることを必要としていると理解されるべきではない。ある状況では、マルチタスクおよび並列処理が有利であり得る。さらに、上で記載した実現例におけるさまざまなシステム構成要素の分離は、すべての実現例においてそのような分離を必要としていると理解されるべきではなく、記載されたプログラムコンポーネントおよびシステムは、一般的に、単一のソフトウェア製品にともに統合されるか、または、複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。
上記の説明に加えて、本明細書において記載されるシステム、プログラム、または、特徴がユーザ情報の収集を可能にし得るか否か、および、いつ可能にし得るかの両方についてユーザが選択することを可能にする制御がユーザに提供されてもよい。さらに、あるデータは、個人的に識別可能な情報が取り除かれるように、格納または使用される前に1つ以上の態様で扱われ得る。たとえば、ユーザの身元は、個人的に識別可能な情報がユーザに対して決定されないように、または、ユーザの皮膚データおよび/もしくは診断がユーザと関連付けられると識別され得ないように、扱われ得る。したがって、ユーザは、どの情報がユーザに関して収集されるか、および、その情報がどのように使用されるかに対して制御を有し得る。
このように、主題の特定の実現例が記載された。他の実現例は、添付の請求の範囲内にある。いくつかの場合、請求項に列挙される動作は、異なる順序で行われ得、それでも、所望の結果が達成され得る。加えて、添付の図面に示されるプロセスは、望ましい結果を達成するために必ずしも、示される特定の順序または逐次的な順序を必要としない。ある実現例では、マルチタスクおよび並列処理が有利であり得る。
Claims (20)
- 機械学習アクセラレータ通信ネットワークのための、コンピュータによって実現されるメモリアロケーション方法であって、前記方法は、
特定用途向け集積回路(ASIC)の複数の通信ポートに関連付けられるメタデータにアクセスすることを含み、前記メタデータは、前記複数のポートの各ポートについて、それぞれのポートが、現在の構成において使用されるか否かと、前記それぞれのポートに関連付けられる通信媒体とを識別し、
前記方法はさらに、
アクセスされた前記メタデータに基づいて、前記複数のポートの各ポートについて予想レイテンシを決定することと、
前記複数のポートの各ポートに共有メモリの部分をアロケートすることとを含み、
前記アロケートすることは、
使用されないポートにゼロメモリを割り当てすることと、
前記予想レイテンシに基づいて、各ポートについてメモリアロケーションを決定することと、
前記共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることと、
によって行われる、方法。 - 前記共有メモリの前記開始アドレスおよび前記停止アドレスを各ポートに割り当てすることは、ASICとは異なるデバイスによって、アプリケーションプログラミングインターフェイス(API)を呼び出すことを含む、請求項1に記載の方法。
- 前記ASIC上でプロセスを実行することを含み、前記プロセスは、前記機械学習アクセラレータ通信ネットワークおよびアロケートされた前記共有メモリを使用する、請求項1に記載の方法。
- 前記プロセスは、ニューラルネットワークを訓練することを含む、請求項3に記載の方法。
- 前記ASICは、テンソルプロセッシングユニット(TPU)である、請求項1に記載の方法。
- 前記メタデータにおいて識別される前記通信媒体は、
銅ケーブル媒体、
光媒体、または、
プリント回路基板(PCB)媒体
のうちの少なくとも1つを含む、請求項1に記載の方法。 - 機械学習アクセラレータ通信ネットワークのための、コンピュータによって実現されるメモリアロケーション方法であって、前記方法は、
機械学習アクセラレータ特定用途向け集積回路(ASIC)のネットワークのためのネットワークトポロジを決定することと、
前記ネットワーク内の各ASICの複数の通信ポートに関連付けられるメタデータにアクセスすることとを含み、前記メタデータは、前記複数のポートの各ポートについて、それぞれのポートが、現在の構成において使用されるか否かと、前記それぞれのポートに関連付けられる通信媒体とを識別し、
前記方法はさらに、
前記ネットワークトポロジにおいて使用される各ポートについて、ラウンドトリップタイム(RTT)遅延を決定することと、
前記複数のポートの各ポートに共有メモリの部分をアロケートすることとを含み、
前記アロケートすることは、
前記RTT遅延に比例する各ポートについてのメモリアロケーションを決定することと、
決定された前記メモリアロケーションについて、前記共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることと
によって行われ、
前記方法はさらに、
プロファイリングトラフィックを所定の持続時間の間、前記ネットワークに送信するよう、前記機械学習アクセラレータ上でプロセスを実行することと、
各ポートについて、受信されたトラフィックパケットの数を決定することと、
前記共有メモリの部分を前記複数のポートの各ポートに再アロケートすることとを含み、
前記再アロケートすることは、
受信されたトラフィックパケットの前記数に比例する各ポートについてのメモリアロケーションを決定することと、
決定された前記メモリアロケーションについて、各ポートに前記共有メモリの前記開始アドレスおよび前記停止アドレスを再割り当てすることと
によって行われる、方法。 - 前記共有メモリの前記開始アドレスおよび前記停止アドレスを各ポートに割り当ておよび再割り当てすることは、ASICとは異なるデバイスによって、アプリケーションプログラミングインターフェイス(API)を呼び出すことを含む、請求項8に記載の方法。
- 前記ASIC上でプロセスを実行することを含み、前記プロセスは、前記機械学習アクセラレータ通信ネットワークおよびアロケートされた前記共有メモリを使用する、請求項8に記載の方法。
- 前記プロセスは、ニューラルネットワークを訓練することを含む、請求項10に記載の方法。
- 前記ASICは、テンソルプロセッシングユニット(TPU)である、請求項8に記載の方法。
- RTT遅延は、レイテンシを決定するよう1つ以上のタイミングメッセージを送信および受信することによって実行前に計算される、請求項8に記載の方法。
- 前記プロファイリングトラフィックは、
オール・ツー・オールトラフィック、
最近傍トラフィック、または、
合成トラフィックプロファイル
のうちの少なくとも1つである、請求項8に記載の方法。 - 機械学習アクセラレータ通信ネットワークのための、コンピュータによって実現されるメモリアロケーション方法であって、前記方法は、
機械学習アクセラレータ特定用途向け集積回路(ASIC)のネットワークのためのネットワークトポロジを決定することと、
各ASICの複数の通信ポートに関連付けられるメタデータにアクセスすることとを含み、前記メタデータは、前記複数のポートの各ポートについて、それぞれのポートが、現在の構成において使用されるか否かと、前記それぞれのポートに関連付けられる通信媒体とを識別し、
前記方法はさらに、
前記ネットワークトポロジにおいて使用される各ポートについて、ラウンドトリップタイム(RTT)遅延を決定することと、
前記複数のポートの各ポートに共有メモリの部分をアロケートすることとを含み、
前記アロケートすることは、
前記RTT遅延に比例する各ポートについてのメモリアロケーションを決定することと、
決定された前記メモリアロケーションについて、前記共有メモリの開始アドレスおよび停止アドレスを各ポートに割り当てすることと、
によって行われ、
前記方法はさらに、
ASIC上でプロセスを実行することを含み、前記プロセスは、アロケートされた前記共有メモリとともに前記機械学習アクセラレータ通信ネットワークを使用し、
前記方法はさらに、
前記プロセスの実行中、
第1の期間にわたって前記複数のポートの各ポートにおいて受信されたメッセージパケットの数を決定することと、
各ポートにおいて受信されたメッセージパケットの前記数に基づいて、前記複数のポートの各ポートについて前記共有メモリの所望の部分サイズを決定することと、
第2の期間の間、前記プロセスを休止することと、
前記共有メモリは保留中のメッセージパケットについてクリアであると決定することと、
前記所望の部分サイズについて、各ポートに前記共有メモリの前記開始アドレスおよび前記停止アドレスを再割り当てすることと、
前記プロセスの実行を再開することと、
を含む、方法。 - 前記共有メモリの前記開始アドレスおよび前記停止アドレスを各ポートに割り当ておよび再割り当てすることは、ASICとは異なるデバイスによって、アプリケーションプログラミングインターフェイス(API)を呼び出すことを含む、請求項17に記載の方法。
- 前記ASICは、テンソルプロセッシングユニット(TPU)である、請求項17に記載の方法。
- 前記プロセスは、ニューラルネットワークを訓練することを含む、請求項17に記載の方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063091708P | 2020-10-14 | 2020-10-14 | |
US63/091,708 | 2020-10-14 | ||
US17/136,229 | 2020-12-29 | ||
US17/136,229 US20220114440A1 (en) | 2020-10-14 | 2020-12-29 | Queue Allocation in Machine Learning Accelerators |
PCT/US2021/054474 WO2022081506A1 (en) | 2020-10-14 | 2021-10-12 | Queue allocation in machine learning accelerators |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023546761A true JP2023546761A (ja) | 2023-11-08 |
JPWO2022081506A5 JPWO2022081506A5 (ja) | 2024-08-23 |
Family
ID=81079061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022553686A Pending JP2023546761A (ja) | 2020-10-14 | 2021-10-12 | 機械学習アクセラレータにおけるキューアロケーション |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220114440A1 (ja) |
EP (1) | EP4097957A1 (ja) |
JP (1) | JP2023546761A (ja) |
KR (1) | KR20220136426A (ja) |
CN (1) | CN115244909A (ja) |
WO (1) | WO2022081506A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11714765B2 (en) * | 2021-07-23 | 2023-08-01 | Hewlett Packard Enterprise Development Lp | System and method for implementing a network-interface-based allreduce operation |
US11973855B2 (en) * | 2021-08-25 | 2024-04-30 | Siemens Canada Limited | PTP transparent clock with inter-VLAN forwarding |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7382793B1 (en) * | 2002-01-17 | 2008-06-03 | Juniper Networks, Inc. | Systems and methods for determining the bandwidth used by a queue |
US20130215745A1 (en) * | 2012-02-16 | 2013-08-22 | Broadcom Corporation | Dynamic buffer management in high-throughput wireless systems |
US8797877B1 (en) * | 2012-08-09 | 2014-08-05 | Juniper Networks, Inc. | Virtual output queue allocation using dynamic drain bandwidth |
EP3238395A4 (en) * | 2014-12-24 | 2018-07-25 | Intel Corporation | Apparatus and method for buffering data in a switch |
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10437616B2 (en) * | 2016-12-31 | 2019-10-08 | Intel Corporation | Method, apparatus, system for optimized work submission to an accelerator work queue |
GB2568776B (en) * | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
US11101804B2 (en) * | 2019-01-22 | 2021-08-24 | Intel Corporation | Fast memory for programmable devices |
US10915471B2 (en) * | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US11714998B2 (en) * | 2020-05-05 | 2023-08-01 | Intel Corporation | Accelerating neural networks with low precision-based multiplication and exploiting sparsity in higher order bits |
-
2020
- 2020-12-29 US US17/136,229 patent/US20220114440A1/en active Pending
-
2021
- 2021-10-12 EP EP21802134.3A patent/EP4097957A1/en active Pending
- 2021-10-12 CN CN202180019645.8A patent/CN115244909A/zh active Pending
- 2021-10-12 KR KR1020227030949A patent/KR20220136426A/ko unknown
- 2021-10-12 JP JP2022553686A patent/JP2023546761A/ja active Pending
- 2021-10-12 WO PCT/US2021/054474 patent/WO2022081506A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
KR20220136426A (ko) | 2022-10-07 |
CN115244909A (zh) | 2022-10-25 |
EP4097957A1 (en) | 2022-12-07 |
WO2022081506A1 (en) | 2022-04-21 |
US20220114440A1 (en) | 2022-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11816480B2 (en) | Neural network compute tile | |
KR102662211B1 (ko) | 칩에 상주하는 파라미터를 갖는 신경망 가속기 | |
US9244880B2 (en) | Automatic construction of deadlock free interconnects | |
GB2569844A (en) | Sending data off-chip | |
KR20190044565A (ko) | 호스트 프로세서와의 동기화 | |
JP2023546761A (ja) | 機械学習アクセラレータにおけるキューアロケーション | |
US20220245453A1 (en) | Redistributing tensor elements between machine learning computing units | |
TWI832000B (zh) | 用於神經網路之方法及系統 | |
US20220294848A1 (en) | Massively parallel in-network compute | |
US11637682B2 (en) | Extended sync network | |
Wang et al. | Preemptive switch memory usage to accelerate training jobs with shared in-network aggregation | |
US12001893B1 (en) | Distributed synchronization scheme | |
Li et al. | Efficient communication scheduling for parameter synchronization of dml in data center networks | |
US11675686B2 (en) | Tracing activity from multiple components of a device | |
US11907772B2 (en) | Tracing synchronization activity of a processing unit | |
US20230029217A1 (en) | Synchronisation for a Multi-Tile Processing Unit | |
Zha et al. | Probabilistic Scheduling of Dynamic I/O Requests via Application Clustering for Burst-Buffer Equipped HPC | |
Cardona Nadal | On the Impact of Heterogeneous NoC Bandwidth Allocation in the WCET of Applications | |
Matos et al. | Reconfigurable intercommunication infrastructure: NoCs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240815 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240815 |