IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ザ ガバニング カウンシル オブ ザ ユニバーシティ オブ トロントの特許一覧

特表2023-534068スパース性を使用して深層学習ネットワークを加速するためのシステム及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-08-07
(54)【発明の名称】スパース性を使用して深層学習ネットワークを加速するためのシステム及び方法
(51)【国際特許分類】
   G06F 17/10 20060101AFI20230731BHJP
   G06N 3/048 20230101ALI20230731BHJP
   G06N 3/0495 20230101ALI20230731BHJP
【FI】
G06F17/10 A
G06N3/048
G06N3/0495
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023504015
(86)(22)【出願日】2021-07-16
(85)【翻訳文提出日】2023-03-02
(86)【国際出願番号】 CA2021050989
(87)【国際公開番号】W WO2022016257
(87)【国際公開日】2022-01-27
(31)【優先権主張番号】63/054,498
(32)【優先日】2020-07-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FACEBOOK
2.VERILOG
(71)【出願人】
【識別番号】522443372
【氏名又は名称】ザ ガバニング カウンシル オブ ザ ユニバーシティ オブ トロント
(74)【代理人】
【識別番号】100114775
【弁理士】
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【弁理士】
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100202751
【弁理士】
【氏名又は名称】岩堀 明代
(74)【代理人】
【識別番号】100208580
【弁理士】
【氏名又は名称】三好 玲奈
(74)【代理人】
【識別番号】100191086
【弁理士】
【氏名又は名称】高橋 香元
(72)【発明者】
【氏名】マームード,モスタファ
(72)【発明者】
【氏名】モショヴォス,アンドレアス
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056AA04
5B056BB26
5B056BB38
5B056BB71
(57)【要約】
システム及び方法は、スパース性を使用して深層学習ネットワークを加速するためのものである。この方法は、入力テンソル内のどの値が非ゼロであるかを識別するスケジューラにビットベクトルを通信することと、入力テンソルのレーンごとに、どの値が積和(MAC)演算のために通信される必要があるかを決定することであって、レーン内の現在の値を通信すること、同じレーン内でその次の値を、そのような値が非ゼロである場合に通信すること、時間内で1つ先のステップからの値を、そのような値が非ゼロである場合に通信すること、及び隣接するレーンからの値を、そのような値が非ゼロである場合に通信すること、のうちの1つのパフォーマンスを指示することを含む、該決定することと、MAC演算の値を出力することとを含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
スパース性を使用して処理素子の深層学習ネットワークを加速する方法であって、
複数の入力ストリームのそれぞれから入力テンソルを受信して格納することと、
前記入力テンソル内のどの値が非ゼロであるかを識別するスケジューラにビットベクトルを通信することと、
前記入力テンソルのレーンごとに、どの値が積和(MAC)演算のために通信される必要があるかを決定することであって、
前記レーン内の現在の値を通信すること、
前記同じレーン内のその次の値を、そのような値が非ゼロである場合に通信すること、
時間内で1つ先のステップからの値を、そのような値が非ゼロである場合に通信すること、及び
隣接するレーンからの値を、そのような値が非ゼロである場合に通信すること、
のうちの1つのパフォーマンスを指示することを含む、前記決定することと、
前記MAC演算のために前記指示された値を通信することと、
前記MAC演算の前記値を出力することと、
を含む、前記方法。
【請求項2】
前記処理素子は、複数の他の処理素子と共にタイリングされ、前記複数の入力ストリームのそれぞれから前記入力テンソルを受信して格納することは、前記入力ストリームの同じロウに沿った処理素子が入力を共有することと、前記入力ストリームの同じカラムに沿った処理素子が入力を共有することとを含む、請求項1に記載の方法。
【請求項3】
前記複数の処理ユニットの各処理ユニットは別個のスケジューラを使用する、請求項2に記載の方法。
【請求項4】
前記同じロウに沿った各処理ユニットは共通のスケジューラを使用する、請求項1に記載の方法。
【請求項5】
前記レーンは、前記レーンの最後のレーンが前記レーンの最初のレーンに隣接しているリングに配置されるように処理される、請求項1に記載の方法。
【請求項6】
前記隣接するレーンからの前記値を通信することは、時間内で1つ先のステップから隣接するレーンからの値を、そのような値が非ゼロである場合に通信することを含む、請求項1に記載の方法。
【請求項7】
前記複数の入力ストリームのそれぞれから前記入力テンソルを受信して格納することは、前記入力ストリームのそれぞれを、それぞれのステージングバッファに格納することを含む、請求項1に記載の方法。
【請求項8】
前記ステージングバッファは、前記入力ストリームの現在のステップと、時間内で1つ以上先のステップとを含む、請求項7に記載の方法。
【請求項9】
前記スケジューラは、階層優先度スキームを使用する、請求項1に記載の方法。
【請求項10】
前記階層優先度スキームは、密なスケジュールを含み、前記密なスケジュールは、時間内で次第に先の複数のステップを後に伴い、時間内で次第に先の隣接するレーンの複数のステップを後に伴う、請求項9に記載の方法。
【請求項11】
スパース性を使用して深層学習ネットワークを加速するためのシステムであって、処理素子(PE)を実行するためにデータメモリと通信する1つ以上の処理ユニットを含み、
各処理素子は、
複数の入力ストリームを受信し、
前記複数の入力ストリームのそれぞれから入力テンソルを受信して格納するためのステージングバッファと、
各ステージングバッファからビットベクトルを受信して、前記入力テンソル内のどの値が非ゼロであるかを識別するためのスケジューラと、を含み、
前記スケジューラは、
前記入力テンソルのレーンごとに、前記スケジューラは積和(MAC)演算のためにどの値がMACユニットに通信される必要があるかを決定し、
前記決定は、
前記レーン内の現在の値を通信すること、
前記同じレーン内のその次の値を、そのような値が非ゼロである場合に通信すること、
時間内で1つ先のステップからの値を、そのような値が非ゼロである場合に通信すること、及び
隣接するレーンからの値を、そのような値が非ゼロである場合に通信すること、
のうちの1つのパフォーマンスを指示することと、
前記MACユニットによって前記MAC演算を実行して前記MAC演算の前記値を出力することと、
を含む、
前記システム。
【請求項12】
前記処理素子は、前記入力ストリームの同じロウに沿った処理素子が入力を共有し、前記入力ストリームの同じカラムに沿った処理素子が入力を共有するタイル型配置に集合的に配置される、請求項11に記載のシステム。
【請求項13】
各処理ユニットは別個のスケジューラを使用する、請求項12に記載のシステム。
【請求項14】
前記同じロウに沿った各処理ユニットは共通のスケジューラを使用する、請求項11に記載のシステム。
【請求項15】
前記レーンは、前記レーンの最後のレーンが前記レーンの最初のレーンに隣接しているリングに配置されるように処理される、請求項11に記載のシステム。
【請求項16】
前記隣接するレーンからの前記値を通信することは、時間内で1つ先のステップから隣接するレーンからの値を、そのような値が非ゼロである場合に通信することを含む、請求項11に記載のシステム。
【請求項17】
前記ステージングバッファは、前記入力ストリームの現在のステップと、時間内で1つ以上先のステップとを含む、請求項11に記載のシステム。
【請求項18】
前記スケジューラは、階層優先度スキームを使用する、請求項11に記載のシステム。
【請求項19】
前記階層優先度スキームは、密なスケジュールを含み、前記密なスケジュールは、時間内で次第に先の複数のステップを後に伴い、時間内で次第に先の隣接するレーンの複数のステップを後に伴う、請求項19に記載のシステム。
【請求項20】
前記スケジューラは、各レーンでの値に関連する前記ステージングバッファのそれぞれから2個のビットベクトルを受信し、前記2個のビットベクトルをビット単位でOR演算して、少なくとも1個のゼロがあることを示す出力ビットベクトルを生成し、
前記スケジューラは、前記出力ビットベクトルにおける前記値を使用して、できるだけ多くの前記非ゼロ値が単一ステップ内で処理されるように、レーンごとの移動を選択する、請求項11に記載のシステム。

【発明の詳細な説明】
【技術分野】
【0001】
以下は、概して深層学習ネットワークに関し、より具体的には、スパース性を使用して深層学習ネットワークを加速するためのシステム及び方法に関する。
【背景技術】
【0002】
以前には、ニューラルネットワークはコモディティサーバ上で数時間以内にトレーニングされることができたが、現代では、最良のニューラルネットワークのトレーニングはエクサスケールクラスの問題になってきている。最先端のニューラルネットワークでは、現実的な時間制限内でトレーニングされることができるように、多くのグラフィックスプロセッサ、またはテンソルプロセッシングユニット(TPU)、Gaudi、DaVinci、もしくはCerebras CS1などの専用アクセラレータが必要になる場合がある。推論中の最良のパフォーマンスまたは精度のために、例えば、ハイパーパラメータ探索を介して、またはより一般的にはネットワークアーキテクチャ検索を介して、ニューラルネットワークを調整すると、トレーニングのコストがさらに悪化する。それらのような高価なコンピューティングリソースを取得する、またはそれらにアクセスするためのコスト以外に、運用コスト及びトレーニングの環境への影響もある。例えば、ユーザ固有の情報及び入力を用いて既存のモデルを洗練するなど、特定の用途では、「エッジ」でのニューラルネットワークのトレーニングが必要になる場合がある。エッジデバイスのトレードオフはデータセンターまたはデスクトップマシンのトレードオフとは異なるが、特定の制約の下で実行時間を短縮し、エネルギー効率を向上させるという必要性は変わらない。
【発明の概要】
【0003】
一態様では、スパース性を使用して処理素子の深層学習ネットワークを加速する方法が提供され、この方法は、複数の入力ストリームのそれぞれから入力テンソルを受信して格納することと、入力テンソル内のどの値が非ゼロであるかを識別するスケジューラにビットベクトルを通信することと、入力テンソルのレーンごとに、積和(MAC)演算のためにどの値が通信される必要があるかを決定することであって、レーン内の現在の値を通信すること、同じレーン内のその次の値を、そのような値が非ゼロである場合に通信すること、時間内で1つ先のステップからの値を、そのような値が非ゼロである場合に通信すること、及び隣接するレーンからの値を、そのような値が非ゼロである場合に通信することのうちの1つのパフォーマンスを指示することを含む、決定することと、MAC演算のために指示された値を通信することと、MAC演算の値を出力することとを含む。
【0004】
この方法の特定の場合には、処理素子は、複数の他の処理素子と共にタイリングされ、複数の入力ストリームのそれぞれから入力テンソルを受信して格納することは、入力ストリームの同じロウに沿った処理素子が入力を共有することと、入力ストリームの同じカラムに沿った処理素子が入力を共有することとを含む。
【0005】
この方法の別の場合には、複数の処理ユニットの各処理ユニットは別個のスケジューラを使用する。
【0006】
この方法のさらに別の場合には、同じロウに沿った各処理ユニットは共通のスケジューラを使用する。
【0007】
この方法のさらに別の場合には、レーンは、レーンの最後のレーンがレーンの最初のレーンに隣接しているリングに配置されるように処理される。
【0008】
この方法のさらに別の場合には、隣接するレーンからの値を通信することは、時間内で1つ先のステップから隣接するレーンからの値を、そのような値が非ゼロである場合に通信することを含む。
【0009】
この方法のさらに別の場合には、複数の入力ストリームのそれぞれから入力テンソルを受信して格納することは、入力ストリームのそれぞれを、それぞれのステージングバッファに格納することを含む。
【0010】
この方法のさらに別の場合には、ステージングバッファは、入力ストリームの現在のステップと、時間内で1つ以上先のステップとを含む。
【0011】
この方法のさらに別の場合には、スケジューラは、階層優先度スキームを使用する。
【0012】
この方法のさらに別の場合には、階層優先度スキームは、密なスケジュールを含み、この密なスケジュールは、時間内で次第に先の複数のステップを後に伴い、時間内で次第に先の隣接するレーンの複数のステップを後に伴う。
【0013】
別の態様では、スパース性を使用して深層学習ネットワークを加速するためのシステムが提供され、このシステムは、処理素子(PE)を実行するためにデータメモリと通信する1つ以上の処理ユニットを含み、各処理素子は、複数の入力ストリームを受信し、複数の入力ストリームのそれぞれから入力テンソルを受信して格納するためのステージングバッファと、各ステージングバッファからビットベクトルを受信して、入力テンソル内のどの値が非ゼロであるかを識別するためのスケジューラとを含み、このスケジューラは、入力テンソルのレーンごとに、スケジューラは積和(MAC)演算のためにどの値がMACユニットに通信される必要があるかを決定し、この決定は、レーン内の現在の値を通信すること、同じレーン内のその次の値を、そのような値が非ゼロである場合に通信すること、時間内の1つ先のステップからの値を、そのような値が非ゼロである場合に通信すること、及び隣接するレーンからの値を、そのような値が非ゼロである場合に通信すること、のうちの1つのパフォーマンスを指示することと、MACユニットによってMAC演算を実行し、それらMAC演算の値を出力することとを含む。
【0014】
このシステムの特定の場合には、処理素子は、入力ストリームの同じロウに沿った処理素子が入力を共有し、入力ストリームの同じカラムに沿った処理素子が入力を共有するタイル型配置に集合的に配置される。
【0015】
このシステムの別の場合には、各処理ユニットは別個のスケジューラを使用する。
【0016】
このシステムのさらに別の場合には、同じロウに沿った各処理ユニットは共通のスケジューラを使用する。
【0017】
このシステムのさらに別の場合には、レーンは、レーンの最後のレーンがレーンの最初のレーンに隣接しているリングに配置されるように処理される。
【0018】
このシステムのさらに別の場合には、隣接するレーンからの値を通信することは、時間内で1つ先のステップから隣接するレーンからの値を、そのような値が非ゼロである場合に通信することを含む。
【0019】
このシステムのさらに別の場合には、ステージングバッファは、入力ストリームの現在のステップと、時間内で1つ以上先のステップとを含む。
【0020】
このシステムのさらに別の場合には、スケジューラは、階層優先度スキームを使用する。
【0021】
このシステムのさらに別の場合には、階層優先度スキームは、密なスケジュールを含み、この密なスケジュールは、時間内で次第に先の複数のステップを後に伴い、時間内で次第に先の隣接するレーンの複数のステップを後に伴う。
【0022】
このシステムのさらに別の場合には、スケジューラは、各レーンでの値に関連するステージングバッファのそれぞれから2個のビットベクトルを受信し、2個のビットベクトルをビット単位でOR演算し、少なくとも1つのゼロがあることを示す出力ビットベクトルを生成し、スケジューラは、出力ビットベクトルにおけるそれらの値を使用して、できるだけ多くの非ゼロ値が単一ステップ内で処理されるように、レーンごとの移動を選択する。
【0023】
これら及び他の態様が企図され、本明細書に記載される。前述の概要は、当業者が以下の詳細な説明を理解するのを助けるために、実施形態の代表的な態様を提示していることが理解されるであろう。
【0024】
実施形態のより深い理解が、図面を参照して得られるであろう。
【図面の簡単な説明】
【0025】
図1】一実施形態による、スパース性を使用して深層学習ネットワークを加速するためのシステムの概略図である。
図2図1のシステム及び例示的な動作環境を示す概略図である。
図3】一実施形態による、スパース性を使用して深層学習ネットワークを加速するための方法のフローチャートである。
図4】例示的な実験による、モデルごとの3つの演算のそれぞれに対する作業削減のポテンシャルの合計の一例を示すチャートである。
図5】深層学習ネットワーク(DNN)のフォワードパスの一例を示す。
図6】DNNのバックワードパスの入力勾配の決定の一例を示す。
図7】DNNのバックワードパスの重み勾配の決定の一例を示す。
図8】ベースライン処理素子の一例を示す。
図9A】16個の値対を、無効なものを除去しないで処理するという一例を示す。
図9B】非ゼロ値が時間と時空間との両方で制限なしに独立して移動することが可能になるアプローチの一例を示す。
図9C】レーンごとの限定された1セットの値の移動でスパース性を利用する、図1のシステムの一例の図解を示す。
図9D図1のシステムの例示的なアプローチについてサイクル1を示す図解である。
図9E図1のシステムの例示的なアプローチについてサイクル2を示す図解である。
図10図1のシステムの処理素子の例示的な図解を示す。
図11】レーン1の接続の一例を示す図解である。
図12】スケジューラの例示的な実装の図解を示す。
図13図1のシステムのための2×2タイル構成を有する単純化されたコアを示す。
図14】それぞれのモデルのTensorcoreアーキテクチャに図1のシステムを組み込むことによって達成される高速化を示すチャートである。
図15】第一エポックから収束までのトレーニング中の図1のシステムによる実行時間の高速化を示す。
図16】コアロジック及びチップ全体の計算のためのモデルごとのエネルギー効率を示す。
図17】ベースラインに対して、図1のシステムで消費されたエネルギーを示す。
図18】タイルごとのロウ数は、カラム数が4に固定されているが、1から最大16まで変化するにつれて変化する、図1のシステムのパフォーマンスを示す。
図19】幅16の処理素子の最上部の上に3深層のステージングバッファを備えた図1のシステムの平均的なパフォーマンスの向上を示す。
図20】ランダムなスパーステンソルに対する図1のシステムの高速化を示す。
【発明を実施するための形態】
【0026】
ここで、図面を参照して実施形態を説明する。説明を簡単かつ明瞭にするために、適切と考えられる場合、図面間で参照番号を繰り返し使用して、対応する要素または類似の要素を示すことがある。以下の説明では、説明する多様な実施形態の十分な理解を与えるために多数の具体的な詳細を説明する。しかしながら、本明細書において説明されている実施形態がこれらの具体的な詳細なしで実践することができることは、当業者によってよく理解されよう。他の例では、周知の方法、手順、及び構成要素は、本明細書に記載の実施形態を不明確にしないように、詳細には説明されていない。また、この説明は、本明細書に記載された実施形態の範囲を限定するものと見なされるべきではない。
【0027】
命令を実行する本明細書に例示された任意のモジュール、ユニット、構成要素、サーバ、コンピュータ、端末、またはデバイスは、ストレージ媒体、コンピュータストレージ媒体、またはデータストレージデバイス(取り外し可能及び/または取り外し不可能)、例えば、磁気ディスク、光ディスク、またはテープなどのコンピュータ可読媒体を含むかまたはそれにアクセスすることができる。コンピュータストレージ媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装される、揮発性及び不揮発性の、取り外し可能及び取り外し不可能な媒体が含まれ得る。コンピュータストレージ媒体の例は、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD‐ROM、デジタル多用途ディスク(DVD)もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、所望の情報を記憶するために使用することができ、アプリケーション、モジュール、もしくはその両方によってアクセスできる、任意の他の媒体を含む。そのようなコンピュータストレージ媒体はいずれも、デバイスの一部であってもよいし、デバイスにアクセス可能または接続可能であってもよい。本明細書で説明する任意のアプリケーションまたはモジュールは、そのようなコンピュータ可読媒体によって格納または保持できるコンピュータ可読/実行可能命令を使用して実装することができる。
【0028】
最近では、トレーニングの実行時間及びエネルギーコストを削減する方法に多大な努力が費やされてきた。一例として、分散トレーニングは、モデル、データ、及びパイプラインの並列性を利用することで、トレーニング作業負荷をいくつかのコンピューティングノードにパーティション化し、全体的なレイテンシを短縮させる。ノード内及びノード間のデータのブロッキング、再利用、ならびに通信及び計算の重複を使用して、コンピューティング、メモリ階層、及び通信リソースをオーケストレーションし、パフォーマンス及びエネルギー効率を向上させることができる。ロスレス及びロッシー圧縮を使用して、トレーニング中に処理される膨大な量のデータのフットプリントを減少させることができる。元来、トレーニングには単精度浮動小数点データ及び演算が使用されているが、よりコンパクトなデータ型(例えば、半精度浮動小数点FP16、bfloat16、動的浮動小数点、及びフレックスポイント)によって全体的なデータ量及び計算コストが削減される。混合データ型のアプローチでは、より低コストの表現を使用して計算することが多くなり、より高コストの表現を使用して計算することが少なくなることで、さらにコストを削減することができる。
【0029】
上記のアプローチに関係なく、トレーニングは実質的にエクサスケールクラスの問題のままである。本発明者らは、トレーニング中に多くの無効な計算が自然に、様々なモデルについて発生することを観察した。したがって、本実施形態は、トレーニングの実行時間及びエネルギー効率を向上させるためのアプローチを有利に提供する。トレーニング中のエネルギー消費の大部分は、積和演算(MAC)を実行するために必要な転送及び計算が原因である。多くの場合、これらのMACでのオペランドのうちの1つがゼロであるため、これらの演算は、トレーニング中に生成された値、したがって、収束及び最終精度に影響しないため、安全に除去されることができる。多くの人工ニューラルネットワークでは、フォワードパス及びバックワードパス中のアクティベーション、ならびにバックワードパス中の勾配で多くのゼロが自然に発生する。スパース性は、存在する場合、パフォーマンス及びエネルギー効率を向上させる機会を表す。
【0030】
また、重みとアクティベーションとの両方で、推論中にゼロ値及び無効な演算が発生する。一部のゼロ重みは自然に現れるが、それらの発生はプルーニングによって大幅に増幅されることができる。ゼロアクティベーションもまた推論中に自然に発生し、正規化線形ユニット(ReLU)活性化関数を使用するモデルで最も頻繁に発生する。したがって、スパース性と呼ばれるゼロの存在を利用することができる。あるアプローチは重みにおけるスパース性を標的にし、あるアプローチはアクティベーションと重みとの両方におけるスパース性を標的にする。
【0031】
ただし、トレーニング中にスパース性を利用することは、推論中よりも実質的にはるかに技術的に困難である。第一に、推論中にゼロが発生したからといって、それらがトレーニング中にも現れることを黙示しない。一般に、トレーニングは、重みの一部のランダムな初期化から始まり、それらをネットワークが収束するまでゆっくりと調整していく。最終的に、重みの一部がゼロになるが、これがどの程度の速さで発生するかは不明であり、ゼロにとどまるかどうかも不明である。第二に、推論中のゼロ重みの位置は、既知であり、変化しないため、スパース性パターンは静的である。その結果、推論のために、重みにおけるスパース性を最大限に利用するための計算を事前にスケジュールすることができる。これは、重み値が変化し続けるトレーニング中の場合ではないため、スパース性パターンは動的である。このパターンは、通常、トレーニングデータセット内のすべてのサンプル及びバッチで変化し、経時的にも変化する。第三に、推論には2個の入力テンソル(重み及びアクティベーション)が含まれ、これらは、通常、行列と行列の乗算または行列とベクトルの乗算である、1回の計算でのみ使用される。そのため、2個のテンソルは、データ並列を促進する特定のアクセスパターン、したがって、エネルギー効率の高いフェッチ及び実行を提供する方法でメモリにレイアウトされることができる。トレーニング中、一般に第三テンソルである勾配があり、3個のテンソルのそれぞれは2個の異なる計算に使用される。特に難しいのは、これら2個の計算のそれぞれにテンソルが使用される方法が異なる可能性があることである。例えば、フォワードパス中には、バックワードパス中とは異なる1セットの重みが出力に寄与する場合がある。これにより、両方の計算ニーズに適合する方法でメモリに値をレイアウトすることが困難になり、フォワードに適合するレイアウトは、バックワード用に「転置」される必要がある。第四に、スパース性を利用する大部分の推論アクセラレータは固定小数点値で演算するが、トレーニングには通常、浮動小数点値が必要である。演算の相対的なコストは異なるため、様々なトレードオフが発生する可能性がある。
【0032】
スパース性は、存在する場合、パフォーマンス及びエネルギー効率を向上させる機会を表す。この機会を利用するために、本実施形態は、スパース性が存在する場合にパフォーマンス及びエネルギー効率を向上させるうえ、本来であればパフォーマンス及びエネルギー効率を大幅に損なうことを回避する。本実施形態(非公式に「TensorDash」と呼ばれることができる)は、MACユニットの真正面に配置される、安価なハードウェアスケジューラと、コデザインされたスパースで低コストのデータインターコネクトとの組み合わせを使用して、無効なMACを除去するランタイムアプローチを提供する。本実施形態は、「アウトオブザボックス」ニューラルネットワークで作業することができ、モデル開発者からの修正もいかなる特別なアノテーションも必要としない。本実施形態は、値も機能ユニットも変更しないため、収束にも精度にも影響しない。
【0033】
場合によっては、本実施形態は、トレーニング中のネットワークのプルーニング及び量子化から追加の利益を得る。通常、プルーニングの目的は、重み値をゼロに変換することである。動的スパース再パラメータ化、スパースモメンタム、先行プルーニング(Eger Pruning)、及びDropBackは、出力精度への影響が最小になる、または影響がない、高いスパース性レベルを達成することができるトレーニング時のプルーニング方法である。本発明者らは、本実施形態とこれらの方法のいくつかとのインタラクションを調べた。一般に、量子化の目的は、推論中に使用されるデータ幅を減らすことである。トレーニング中、量子化は、本来であれば大きさの小さい値であるものをゼロに有効にクリップする。量子化方法には、PACT(量子化ニューラルネットワークのパラメータ化されたクリッピングアクティベーション)及びLQ-Nets(学習済み量子化ネット)が含まれる。また、本実施形態は、ニューロンのいくつかについてのみ損失を逆伝播する選択的逆伝播方法に利益をもたらすことができる。場合によっては、選択的逆伝播は、多数の勾配をゼロに有効に変換するため、スパース性として現れる。
【0034】
有利なことに、本明細書に記載の実施形態は、少なくとも以下の機能及び利益を提供する:
・主にアクティベーション及び勾配に現れる、トレーニング中に自然に発生するスパース性を利用する。スパース性は、動的に利用され、そしてほとんどの場合、低オーバーヘッドのハードウェアスケジューラを使用して、MAC演算を時間(より早いサイクル)及び空間(別のMACユニット)内で進めるハードウェアで完全に利用されるため、全体的な計算がより早く終了する。スケジューラは、トレーニング中に発生する動的スパース性パターンを効率的に処理することができるように、スパース性がどのように分散されるかについて仮定を行わない。
・入力のうちの少なくとも1つがゼロであるMAC演算を除去するだけなので、数値の忠実度に影響しない。
・複数のMAC演算を実行して単一の出力に累算させるデータ並列処理素子と互換性があり、それらのような処理素子の任意のデータフローと互換性がある。
・利点は、量子化またはプルーニングを組み込むトレーニングアルゴリズムで増幅することであることができる。
・一方または両方のオペランドでのスパース性を抽出するように構成されることができる。
【0035】
図を明確にするために、本開示は、アクティベーションウィンドウの使用により、畳み込み層のデータフローが他の層よりも難しいため、一般に畳み込み層を対象とする。ただし、本明細書に記載の実施形態が任意の適切な層、例えば、プーリング層及び全結合層などに適用されることができることが理解される。トレーニング中、層iの処理は、通常、次の3つの主な畳み込みまたは演算を含む:
フォワードパス: A+1=Wi*(1)
バックワードパス: G-1=Gi*(2)
バックワードパス: Gw=Gi*(3)
式中、Wは重みであり、Aは入力アクティベーションであり、Ai+1は出力アクティベーションであり、Gi-1は入力アクティベーション勾配であり、Gは出力アクティベーション勾配であり、Gwは重み勾配である。第一畳み込みは、層の出力アクティベーションを計算するためにフォワードパス中に実行され、その次の2個の畳み込みは、それぞれ入力勾配及び重み勾配を計算するために逆伝播パス中に実行される。畳み込みニューラルネットワークのアクティベーション、勾配、及び/または重みがトレーニング中に有意なスパース性を示すことが確認されている。本実施形態は、そのようなスパース性を有利に利用して、対応する積和(MAC)演算を除外することによって処理を加速する。
【0036】
ここで図1及び図2を参照すると、一実施形態による、スパース性を使用して深層学習ネットワーク(非公式に「TensorDash」と称される)を加速するためのシステム100が示される。この実施形態では、システム100はコンピューティングデバイス26上で実行され、インターネットなどのネットワーク24を介してサーバ32上にあるコンテンツにアクセスする。さらなる実施形態では、システム100は、デバイス26上でのみ、またはサーバ32上でのみ実行することができ、または、他のコンピューティングデバイス上、例えば、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、タブレットコンピュータ、サーバ、スマートウォッチ、分散またはクラウドコンピューティングデバイス(複数可)などで実行及び/または分散することができる。いくつかの実施形態では、システム100の構成要素は、単一のコンピュータシステムによって格納され、単一のコンピュータシステム上で実行される。他の実施形態では、システム100の構成要素は、ローカルまたはリモートに分散され得る2つ以上のコンピュータシステム間に分散される。
【0037】
図1は、システム100の実施形態の様々な物理コンポーネント及び論理コンポーネントを示す。示されるように、システム100は、複数の物理コンポーネント及び論理コンポーネントを有し、これら複数の物理コンポーネント及び論理コンポーネントは、処理ユニット102(1つ以上のプロセッサを含む)、ランダムアクセスメモリ(「RAM」)104、入力インタフェース106、出力インタフェース108、ネットワークインタフェース110、不揮発性ストレージ112、及び処理ユニット102が他のコンポーネントと通信することを可能にするローカルバス114を含む。処理ユニット102は、以下でより詳細に説明されるように、様々なモジュールを実行する、またはそれらの実行を指示することができる。RAM104は、比較的応答性の高い揮発性ストレージを処理ユニット102に提供する。入力インタフェース106により、管理者またはユーザは、キーボード及びマウスなどの入力デバイスを介して入力を提供することができる。出力インタフェース108は、情報を出力デバイス、例えば、ディスプレイ及び/またはスピーカに出力する。ネットワークインタフェース110は、典型的なクラウドベースのアクセスモデルの場合など、システム100から離れて配置された他のコンピューティングデバイス及びサーバなどの他のシステムとの通信を可能にする。不揮発性ストレージ112は、オペレーティングシステム及びモジュールを実装するためのコンピュータ実行可能命令を含むオペレーティングシステム及びプログラム、ならびにこれらのサービスによって使用される任意のデータを格納する。追加の格納されたデータを、以下に説明されるように、データベース116に格納することができる。システム100の動作中、実行を容易にするために、オペレーティングシステム、モジュール、及び関連データを不揮発性ストレージ112から取り出してRAM104に配置することができる。
【0038】
一実施形態では、システム100は、1つまたは複数の処理素子(PE)122を含む。場合によっては、本明細書で説明されるように、処理素子122をタイリングすることができる。各処理素子122はいくつかのモジュールを含み、これらいくつかのモジュールは、複数の入力ストリーム124(入力ストリーム用のパッドを含む)、複数のステージングバッファ126、スケジューラ128、及びMACユニット130を含む。場合によっては、MACユニット130は、出力パッド(Cパッド)に出力することができる。場合によっては、モジュールの一部が別個のハードウェアに専用で少なくとも部分的に実行されることができ、他の場合では、モジュールの一部の機能の少なくとも一部が処理ユニット102上で実行される。
【0039】
場合によっては、トレーニングがプルーニングを組み込まない限り、トレーニング中に無視できるスパース性を重みが示すことがあるが、本発明者らは、アクティベーション及び出力勾配に考慮すべきスパース性があると判断した。したがって、第一及び第二畳み込みではそれぞれA及びGのスパース性が利用されることができる。第三畳み込みでは、GまたはAでのスパース性は、例えばいずれか高い方が、利用されることができる。場合によっては、本実施形態は、GとAとの両方のスパース性を同時に利用することができる。
【0040】
図4は、モデルごとの3つの演算のそれぞれに対する作業削減のポテンシャルの合計の一例を示すチャートである。1つの順伝播演算(A×W)、ならびに2つの逆伝播演算(A×G)及び(W×G)は、それぞれほぼ同じ数のMACを実行する。作業削減は、次のように定義される高速化として示される:
【数1】
ここでは、残りのMACは、標的オペランドがゼロであるMAC演算を除去した後に残ったMAC演算の数である。すべてのモデルを平均すると、畳み込みの「高速化」のポテンシャルは約2.6倍である。最小ポテンシャルは、ニューラル協調フィルタリング(NCF)推奨システムによって示されるが、それでも1.7倍である。自然言語推論モデルSNLIの場合、そのポテンシャルは5.6倍ほどにもなることができる。高度に最適化されたSqueezeNetでは2.4倍を上回るが、Facebookのオブジェクト検出及びセグメント化モデルDetectron2では2.2倍である。BERTの場合、ポテンシャルは2倍である。ResNet50は、元来、密なモデルであるが、プルーニング技法により、ポテンシャルが1.75倍まで上昇する、有意なスパース性が誘発される。
【0041】
多くの場合、深層ニューラルネットワークは、勾配降下アルゴリズムのバリアントを使用してトレーニングされることができ、ここでは、トレーニングサンプルがネットワークを介して実行されることで、対応するラベル(フォワードパス)に関する予測誤差(勾配)が見いだされてから、勾配がネットワーク層を介して逆伝播されることで、ネットワークパラメータ(バックワードパス)が更新される。
【0042】
フォワードパス中に、AWは、最初の層から最後の層までのシーケンスに適用される。層ごとに、重みを入力アクティベーションで畳み込み、出力アクティベーションを生成して、その次の層に供給する。一番最後の層の出力アクティベーションをグランドトゥルースラベルと比較して勾配を生成し、次いで、これらの勾配を逆伝播して全体の重みを更新することができる。逆伝播中、層は最後から最初へと逆の順序で呼び出される。各層では、その出力勾配を重みで畳み込み、入力勾配を生成し、その前の層に供給する。また、層では、その出力勾配をその入力アクティベーションで畳み込み、重み勾配を計算する。層ごとの重み勾配は、ミニバッチ内のトレーニングサンプル全体に累算され、次に説明されるように、ミニバッチごとに1回、または反復して重みを更新するために使用される:
【数2】
式中、iは層番号であり、tは反復回数であり、αは学習率であり、Sはミニバッチサイズである。
【0043】
図5~7は、1つのトレーニングサンプルの処理を例示する、CNNのトレーニングの一例を示す。図5~7は、畳み込み層のみの演算を示す。全結合層は、すべての入力テンソルが同じサイズのものである特殊な場合の畳み込み層として処理されることができる。この例では、重みはバッチごとに更新される。アクティベーション、重み、アクティベーション勾配、重み勾配に使用される記号は、それぞれ
【数3】
であり、ここで、Sはトレーニングサンプルを表し、Lはネットワーク層を表し、Fは重みフィルタであり、cはチャネル番号であり、x、yは2D空間座標である。ストライドはstとして表される。
【0044】
図5はフォワードパスの一例を示す。畳み込み層では、入力アクティベーションと重みフィルタのそれぞれとの間ではスライディングウィンドウの三次元(3D)畳み込みを実行し、出力アクティベーションでは1つのチャネルを生成する:
【数4】
全結合層の場合、各フィルタは1つの出力アクティベーションを生成する:
【数5】
【0045】
図6及び図7は、バックワードパスの一例を示す。図6は、入力勾配の決定の一例を示す。畳み込み層では、スライディングウィンドウ3D畳み込みは、後続層からのアクティベーション勾配を用いて、リシェイプされたバージョンのフィルタ間で実行される。フィルタはチャネルごとに再構築され、180度回転され、アクティベーション勾配はストライドstによって膨張する:
【数6】
全結合層の場合、各フィルタは1つの出力アクティベーションを生成する:
【数7】
【0046】
図7は、重み勾配の決定の一例を示す。畳み込み層の場合、重み勾配はバッチサンプル全体に累算される。サンプルごとに、入力アクティベーションの2Dチャネルと、ストライドに従って膨張する出力勾配のチャネルとの間の2D畳み込みとして決定される:
【数8】
全結合層の場合、各重み勾配は、入力アクティベーションとそれが影響する出力アクティベーションの勾配とのスカラー積である。重みの勾配は、更新を重みに適用する前に、ミニバッチのサンプルにわたって累算される:
【数9】
【0047】
人工ニューラルネットワークをトレーニングするための例示的なアーキテクチャは、Tensorcore拡張(TC)を備えたNVIDIA(商標)グラフィックスプロセッシングユニット(GPU)である。一例では、本実施形態によるベースラインアクセラレータのビルディングブロックは、Tensorcore様ユニットを含むことができる。TCは、既存のメモリデータパスのデータ供給制約の下で計算スループットを最大にするように設計されるため、内部編成はGPU世代ごとに異なる場合がある。特定の場合には、TCは1サイクルあたり4×4浮動小数点行列乗算、すなわち、1サイクルあたり64個のMACを実行することができる。これは、4×4個の処理素子(PE)のタイルとして実装されることができ、各PEは、図8に示されるように、4MAC/サイクルを実行し、すべてが同じ出力に寄与することができる。例えば、これらはすべてが同じ出力アクティベーションに寄与するもの(アクティベーション、重み)の4対であってもよく、またはそれらはすべてが同じ入力勾配に寄与するもの(出力勾配、重み)の4対であってもよい。
【0048】
それらのようなPEは、いくつかの演算を介してアキュムレータを更新するためのエネルギーコストと、MACを融合することによる総和ステージのコストとを償却するため、一般に、単一MACユニットと比較してエネルギー効率が高くなる。TCと同様に、PEは混合精度MAC演算を実装し、乗算は浮動小数点16(FP16)で行われ、累算は浮動小数点32(FP32)で行われる。処理素子は、3つのローカルスクラッチパッド(入力用に2つ、出力用に1つ)を有することができる。アクセラレータは、各PEが異なるスクラッチパッドを有する、これらのPEのグリッドを使用してもよく、またはそれらのいくつかを、時間及び空間の再利用を利用するためにバッファを共有するタイリングされたグリッド内に編成してもよい。上記の場合は混合精度浮動小数点値(TCなどでのもの)を想定するが、本実施形態は、データ型に依存せず、任意のデータ型、例えばbfloat16、固定小数点、または専用の狭い浮動小数点で作業することができる。
【0049】
一例では、2つの入力ストリームをA及びBとみなし、Cを使用して出力を示す。図9Aは、16個の値対を、それらの無効なもの(2つの入力値のうちの少なくとも1つがゼロである)をシステムが除去しようとしない場合にどのように処理することができるかの一例を示す。入力値は
【数10】
及び
【数11】
として表され、レーンはそれらが現れる乗算器を指定し、時間は処理順序である。図9Aは、密なスケジュールでは、システム100がすべての対を、それらの値に関係なく処理する場合、それらを、PEがサイクルごとに4つのMACを実行する入力バッファから4対の群として読み出すことができるように、それらをメモリに配置するのは複雑ではないことを示す。PEは、それらすべてを処理するには4つのサイクルを必要とする。ただし、この例では、両方のオペランドが非ゼロである、黒でハイライトされた7対のみがある。PEがこれらの値対を処理する限り、出力は正しくなる。パフォーマンスを向上させ、エネルギー消費を削減するために、システム100は、無効な対を、それらの位置を有効な対で埋めることによって除去する。このように、1サイクルあたり4つのMACを実行するPEは、すべての有効な対を2つのサイクルで処理することができるはずである。ただし、そのようなアプローチでは、時間内で(より早く、かつ同じレーンに)、かつ時空間内に(より早く異なるレーンに)、両方のバッファ内でタンデムに対を移動させる必要がある場合がある。
【0050】
一部のアプローチは、推論中にスパース性を利用しようとする。推論は、重みが予めわかっているAW畳み込みのみを実行するため、これはそれらのスパース性パターンを表す。1つの畳み込み及び1つのパスしかないことから、シングルデータフローで十分であるため、システムは、値を、それらを処理したい順序でメモリ内に配置することができる。最も困難な層は、それらのアクティベーションにスライディングウィンドウを使用するため、一般に畳み込み層である。これは、重みがウィンドウごとに異なるアクティベーションとマッチングする必要があることを意味する。図9Bは、両側からの非ゼロ値が時間と時空間との両方で制限なしに独立して移動することが可能になるアプローチを示す。ここでは、A内の非ゼロ値は、メモリ空間内に次々と密にパックされ、B内の値も同様である。同じ対に属する値は、時間でも空間でもアライメントされなくなる。すべての無効な対を処理しないようにするために、システムは、両方の値が非ゼロである対を識別し、それらを何らかの乗算器に集める必要がある。一般に、できるだけ多くの乗算器をビジーに保つことが好ましい。これは、1)時間及び空間における値の任意の移動を実行することがハードウェアでのコストを高くすること、及び2)4つの乗算器レーンをビジーに保つために、多くの場合、各バッファから複数のロウからの値を取得することが必要であること、という2つの理由から困難なタスクである。
【0051】
一部のアプローチは、例えば、非ゼロ重みをメモリ空間内で密にパックするため、ランタイムにPEが1回で1つのロウのそれらにアクセスすることができることにより、重み側でのみスパース性を利用する。各重みはメタデータでアノテーションされるため、システムはその密な(レーン、時間)位置を決定することができる。アクティベーション候補のプールを維持するユニットは、各非ゼロ重みを見つけて、そのアクティベーションと対にする。このユニットは、クロスバーの機能を実行する場合、一般に計算コストが高くなるため、アクティベーションはメモリ空間内の重みの任意の移動を反映することができる。他のアプローチは、両側でのスパース性を利用することで、重み及びアクティベーションは時間と時空間との両方で自由に移動することが可能になる。一例では、インデックス付きモジュールは、非ゼロの重み及びアクティベーションをマッチングさせるタスクを課される。他のアプローチは、モデルがプルーニングされる方法に構造上の制約を課すことにより効率を向上させる。実際には、それらのようなアプローチは、無効な対を、無効な対のうちのn個が単一の幅nのロウ内に共に現れる場合にのみ除去することができる。これらの構造上の制約は、プルーニング中に課される必要がある。他のアプローチは、乗算器入力(AとBとの両方)ごとに独立したバッファバンクの展開コストを支払うにもかかわらず、両側でスパース性を利用する。それらは時間内にのみ値の移動をサポートするため、「Struggler」レーンがボトルネックになるレーン間の作業不均衡を有効に処理することができない。一例では、非ゼロ重み及びアクティベーションは、メモリ内に密にパックされ、ランタイムに両方のオペランドがゼロではない有効な対のみを処理することができる。そのためには、値は1回に1つのチャネルで処理されるため、任意の重みと任意のアクティベーションとの積が1のストライドを想定する出力アクティベーションに寄与することが保証される。このようにして、すべてのデータ移動が入力で回避される。ただし、これらの積を標的アキュムレータバンクにルーティングするには、クロスバーが必要である。クロスバーとバンクの数とは、本来であれば有意であるバンク競合によるストールを回避するために過剰にプロビジョニングされる。他のアプローチは、フロントエンドに低コストのスパースインターコネクトと、ソフトウェアスケジューラとを使用して、スパース性が構造化される方法に制限を課すことなく、プルーニングされたモデルの重みでのスパース性を抽出する。アクティベーション側では、それらのようなアプローチは、値内のスパース性(ビットレベルのスパース性)を標的にし、そのためにシフトアンドアッド乗算器ベースのMACユニットを使用する。他のアプローチは、再帰型ニューラルネットワークを標的にし、固定小数点値を演算する、効率的なベクトルベースのエンコーディングをメモリに使用して、重みとアクティベーションとの両方からスパース性を抽出する。
【0052】
上記のアプローチはいずれもトレーニングには適用されない。本実施形態は、少なくとも、当技術分野における以下の実質的な課題に有利に対処する:
・トレーニング中のスパース性パターンは常に動的である。対照的に、推論中、重みは静的に知られているため、ゼロの重みを除去した後にメモリ内に事前にパックされることができる。
・トレーニング中、各テンソルは2つの畳み込みまたは演算に関与する。各畳み込みでの出力に寄与する値群は異なるため、それらが配置される順序も異なるはずである。例えば、フォワードパス中のフィルタチャネルは、バックワードパス中の「再構築された」フィルタのチャネルとは異なる。バックワードパス中の「再構築された」フィルタは、すべてのフィルタにわたって同じチャネルから重みを取得し、それらをチャネル次元に沿って積層させてから、フィルタを空間的に180度回転させることによって形成される。同様に、第二畳み込みの勾配は、第三畳み込みとは別に合わせてバンドルされる必要がある。これら2つの畳み込みは、勾配をオフチップにスピルしなくてよいようにしたいバックワードパス中に層ごとに計算される。したがって、それらが使用されるすべてのケースに機能するメモリにそれらをパックする(効果的に事前にスケジュールする)方法は単一ではない。
・アクティベーションは、推論中に各層の後に破棄されることができるが、バックワードパスによって使用されるために保存されるトレーニング中にはそうではない。
・推論アクセラレータは狭い固定小数点演算(例えば、8b)を使用するが、最新のトレーニングは主に浮動小数点(例えば、FP32、FP16、またはBfloat16)を使用して行われる。通常、浮動小数点値は幅が広いため、クロスバーのコストが高くなり、ビットレベルのスパース性を抽出するためのシフトアンドアッド演算の実行は、浮動小数点では簡単ではない。
・トレーニングは、ランダムに初期化された値から始まり、トレーニングプロセス全体で進化し続ける。
【0053】
場合によっては、3つのテンソルのいずれかまたはすべてに現れる可能性がある動的スパース性パターンを利用するために、本実施形態は、DNNトレーニングに含まれる3つの畳み込みまたは演算のすべてから、ランタイムに無効な値対を動的に除去することができるアプローチを提供する。このアプローチのエネルギー効率をよくするために、オペランドの任意の移動を可能にする徹底したインターコネクトの高いハードウェアコストだけでなく、様々な演算に合う様々な方法でテンソルを再配置するエネルギー及びレイテンシのコストを回避する。
【0054】
システム100は、入力テンソル(例えば、図9Aの例示的な入力テンソル)を処理するときに無効な値対を有利に除去する。場合によっては、システム100は、サイクルごとに4つのMACを実行するTensorcore様処理ユニットの拡張として使用されることができるが、システム100を使用して任意のデータ並列ユニットを拡張することができることを理解する。例えば、本発明者らは、最大16個までのMACの幅のユニットに対してシステム100を使用して例示的な実験を実行した。本開示の一例では、システム100は、2つの入力テンソルA及びBの3D畳み込みを処理しており、処理素子が4つのMAC演算を並行に実行すると理解されることができる。
【0055】
図10は、処理素子122、この例では、Tensorcoreの処理素子を拡張するスパースインターコネクトの例示的な図解を示す。スパースインターコネクトは、ステージングバッファ及びスケジューラを含む。一例では、A及びBのステージングバッファがあり、各ステージングバッファの深度は所定のパラメータである。一例では、各ステージングバッファが最大2つのロウの値を保持することができるように、この深度が2であると仮定する。これらのステージングバッファへの書き込みはロウ単位である。4つの単一値幅の読み出しポートがあり、それぞれが乗算器入力に直接提供される。図9Cが示すように、読み出しポートごとの接続性はスパースであり、各ポートは、ステージングバッファ内で、限定された1セットの値(この例では4つの値)から1つを読み出すことができる。場合によっては、各ポートが読み出すことができる1セットの値は異なるが、重複する可能性がある。
【0056】
一例では、スケジューラは、ビットベクトルを各ステージングバッファから受け入れて、どの値が非ゼロであるかを識別するハードウェアスケジューラであることができる。2深層ステージングバッファの場合、この例ではビットベクトルは8b幅になる。各サイクルのスケジューラはステージングバッファから最大4つの有効な対を選択する。読み出しポートの制御信号(この例ではポートごとに2b)を発生し、各ポートは、1セットの4つの候補値を有するため、対応する値が読み出される。同じ制御信号は2つのステージングバッファ内の対応するポート間で共有される。すなわち、同じ制御信号は水平方向及び垂直方向のステージングバッファ内のポートpに送られるため、両方のオペランドはタンデム(合計で4×2b個の制御信号)で移動する。
【0057】
図9Cは、システム100が、レーンごとに制限された1セットの値の移動のみを可能にするにもかかわらず、どのようにスパース性を有効に利用することができるかを示す。移動には、時間のみまたはルックアヘッドと、時空間またはルックアサイドとの2タイプがある。図9Cは、第三乗算器レーンについての1セットの可能な移動を示し、それは、元の密な値a か、同じレーン内のその次の値a (ルックアヘッド)か、その2つの隣接するレーンのうちの1つから時間内に1ステップ先から取ってくることができる値a またはa (ルックアサイド)かいずれかを処理することができる。その他の読み出しポートによって可能な移動は、それらのレーンと比較して構造上同一であり、これらのポートは、ポート0がポート3に隣接しているリング内に配置されているかのように処理される。各ポートは、異なる1セットの値にアクセスすることができるが、これらのセットは重複する場合がある。図9D及び9Eは、システム100が乗算器入力ごとに4入力マルチプレクサのみを使用して処理時間を最小の2つのサイクルに減少させる方法を示す。
【0058】
パフォーマンスを向上させるには、通常、ステージングバッファを可能な限りフルに保つ必要がある。したがって、A及びBバッファは、より高い読み出しスループットを維持するには、適宜にバンクされる必要がある。本例では、2つのバンクで十分である。一般に、ルックアヘッドと同数のバンクを有することで十二分であり、本発明者らは、経験的に、Tensorcore様ユニットには3つのルックアヘッドで十二分であると決定した。より多くのMACを備えたより幅広いユニットの場合、2つのバンクのルックアヘッドでも十分な場合がある。
【0059】
本例のハードウェアスケジューラの場合、各PEは4対(A、B)のFP16値を受け入れ、サイクルごとに4つのMACを実行する。場合によっては、各入力側に4深層ステージングバッファが追加される。図11の例が示すように、ステージングバッファは4つのロウを保持することができ、これら4つのロウのそれぞれは、時間内の現在のステップ(ステップ+0)及びその次の3つのステップ(+1、+2及び+3)の密なスケジュールに対応する4値幅である。レーンごとに、スパースな接続性パターンを実装するマルチプレクサがある。図11は、レーン1の接続を示す。元の「密な」スケジュール値に加えて、入力ごとに3つのルックアヘッドオプション及び4つのルックアサイドオプションがある。例えば、レーン1の乗算器は、現在のタイムスロットまたは最大3つ先までのタイムスロットからレーン1での値を与えられることができる。代替に、隣接するレーンからの値を「取ってくる」ことができる。例えば、1つ先のタイムステップのレーン2からの値、または2つ先のステップのレーン3からの値を取得することができる。各レーンは、その位置(サイドエッジの周りにラップする)に対して相対的にシフトされる同じ接続性パターンを有する。また、ステージングバッファは、A及びBステージングバッファに対してそれぞれZ及びZとして示される、4×4bビットベクトルを生成し、これらの値のうちのどれがゼロであるかを示す。ステージングバッファは、4つの書き込みポート(ロウごとに1つ)を有する。
【0060】
スケジューラは、A及びBステージングバッファから2つのビットベクトルZ及びZを受け入れ、2セットの信号を発生する。第一セットは、4つのMS(i=0...3)3ビット信号(入力レーンごとに1つ)である。これらは、レーンごとのマルチプレクサに選択信号として使用される。乗算器ごとに1つのMS信号は、存在し、そのレーンのA側とB側との両方の上のマルチプレクサによって使用される。また、スケジューラは、排出できたステージングバッファのロウ数を示す2ビットAS信号を生成するため、それらを、バッファをフルに保つためにバンクされるスクラッチパッドから補充することができる。
【0061】
及びZの4×4bビットベクトルが最初にビットごとにOR演算されると、4×4bビットベクトルZが生成される。これは、どの(A、B)値の対が少なくとも1つのゼロを有するかを示す。これらの対は、無効であり、スキップされることができる。スケジューラは、できるだけ多くの残りの有効な(A、B)対が1つのステップで処理されるように、合計4つの移動(MS信号)に対して、レーンごとに1つの移動を選択する。スケジューラが1つのタイムステップに対して行う移動の選択は、スケジュールと呼ばれることができる。
【0062】
レーンiごとに、スケジューラは静的優先度スキームを使用することができる。本例では、8つのオプションの中でも、次の順序で利用可能な最初のものを選択する(記号は図11に参照される(ステップ,レーン)である):(+0,i)(密なスケジュール)、(+1,i)ルックアヘッドの1つのステップ、(+2,i)ルックアヘッドの2つのステップ、(+3,i)ルックアヘッドの3つのステップ、ならびにルックアサイドオプション:(+1,i+1)、(+1,i-1)、(+2,i+2)及び(+3,i+3)。この例では、8b-to-3bプライオリティエンコーダの使用で十分である。ただし、すべてのレーンの選択を独立して行わせると、複数のレーンに対して同じ対が選択されることがあり、1回より多く乗算されて累算されることになり、無効なスケジュールになる場合がある。
【0063】
スケジューラが常に有効なスケジュール(各値対が1回選択されるスケジュール)を生成することを確保するために、図12の図解に例示されるように、スケジューリングが4つのレベルで行われる階層スキームを使用することができる。各レベルでは、1サブセットのレーン(この例では1つのレーン)は、それらの決定を、Zベクトルの現在の値を入力として使用して独立して行う。各レベルで割り当てられたレーンは、重複する選択を行うことができないような設計によって保証される。1つのレベルの複数のレーンがそれらの選択を行った後、これらのオプション(ORゲート)をZベクトルから「除去」してから、それをその次のレベルに渡す。最後にZで有効にしたままのビットがあれば、AS信号が発生することができる。上記はステップで説明されているが、スケジューラが組み合わせ可能であり、単一サイクルで動作することができることを理解する。
【0064】
上記の例では、単一の処理素子(PE)は、記述されており、両方のオペランドでスパース性を利用することができる。Tensorcoreは、それらのようなPEのタイル(例えば、4×4)として実装されることができる。PEは時間的にのみ再利用を利用することができるが、同じロウに沿ったPEに同じB入力を共有させ、同じカラムに沿ったPEに同じA入力を共有させることにより、空間データの再利用も可能になる。例えば、フォワードパス中で、かつ畳み込み層の場合、各ロウは異なるフィルタを処理していることができるが、カラムは異なるウィンドウを処理していることができる。この配置では、各PEは、B入力とA入力との一意の組み合わせを処理している。PEごとにスケジューラ及びステージングバッファが使用される場合、A側とB側との両方でゼロをスキップすることが引き続き可能である。
【0065】
本例では、3つの主な演算のそれぞれでのオペランドのうちの1つに十分なスパース性があるため、B側のみからスパース性が抽出され、有意な利点が抽出される。図13は、2×2タイル構成を有する単純化されたコアを示す。PEの各ロウは、共通のスケジューラを使用し、B側で同じステージングバッファ及びマルチプレクサブロックを共有する。A側には、カラムごとに単一のステージングバッファ、及びPEごとに専用のマルチプレクサブロックがある。ロウごとのA側のマルチプレクサブロックは、ロウスケジューラからの同じMS信号を共有する。各スケジューラは、ここでは、対応するB側のステージングバッファからのZベクトルのみを確認する必要がある。本発明者らは、主なビルディングブロックとして、TensorDashとTensorcoreとの両方(4×4タイルのPE)の構成を評価した。
【0066】
トレーニング中、各テンソルは1つより多い計算に使用されることができる。例えば、重みは、フォワードパスではアクティベーションで畳み込まれることができるが、バックワードパスでは出力勾配で畳み込まれることができる。各演算では、出力値に寄与する重み群は異なる。これは、重み、アクティベーション、及び勾配にも同様である。これは、メモリ階層に影響し、データを適切な順序でPEに提供する必要がある場合がある。テンソルが1つの方法でのみ使用される場合、その値は、メモリに静的にレイアウトされることができるため、オフチップ及びオンチップのワイドアクセスを使用して簡単に提供されることができる。ただし、トレーニング中に、計算のうちの1つを適切に提供するレイアウトは、その他の計算を適切に提供することができない場合がある。幸いなことに、必要に応じてテンソルを転置する機能を有することで、すべてのユースケースで簡単にフェッチされることができるように、メモリ内に値を配置することができる。場合によっては、値が4×4値群に格納されるテンソルレイアウトが使用される。群は、X次元に沿って隣接する値の4つのブロックを取得することによって形成される。これらのブロックのそれぞれは、チャネル次元に沿って4つの連続した値を含む。4×4値群ごとの開始座標は、X及びチャネル次元に沿って4つずつアライメントされる。最後に、テンソルを構成する群は、メモリ空間に、例えばチャネル、Y、Xの順に割り振られる。
【0067】
オフチップから値をフェッチする場合、各群をマルチバンクオンチップメモリに直接書き込むことができるため、各4値ブロックをバンクに直接コピーする。その結果、PEは、ここでは、単一ステップでチャネル次元に沿って連続した4つの値の任意のブロックに直接アクセスすることができる。転置が必要な場合、オンチップメモリバンクとタイルスクラッチパッドとの間でオンチップトランスポーザを使用することができる。トランスポーザの数は、メモリシステムがタイルをビジーに保つことができるように選択されることができる。各トランスポーザは、4値幅のアクセスを使用して、4つの4値ブロックをそれらのバンクから読み出し、それらをその内部の4×4バッファにコピーする。次に、トランスポーザは、4つの値の4つのブロックを提供することができ、それぞれは、テンソルを効率的に転置する、メモリから読み出された4つの元のブロックのそれぞれからの単一値から構成される。例えば、それは、元のブロック内で最初に現れるすべての値、または第三に現れるすべての値を含むブロックを提供することができる。この転置アプローチは、トレーニング中に含まれる3つの計算演算すべてに適用されることができる。
【0068】
図3は、一実施形態による、スパース性を使用して処理素子122の深層学習ネットワークを加速するための方法300のフローチャートを示す。
【0069】
ブロック302では、ステージングバッファ126のそれぞれは、複数の入力ストリーム124のうちのそれぞれ1つから入力テンソルを受信し、格納する。
【0070】
ブロック304では、スケジューラ128は、ビットベクトルを各ステージングバッファ126から受信して、それぞれのステージングバッファ126に格納されたどの値が非ゼロであるかを識別する。
【0071】
ブロック306では、スケジューラ128は、有効な対に達するためにMACユニット130に通信する必要がある値をレーンごとにステージングバッファ126に指示する。この指示は、レーンで現在の値を通信することと、同じレーンでのその次の値を、そのような値が非ゼロである場合に通信することと、時間内で1つ先のステップからの値を、そのような値が非ゼロである場合に通信することと、隣接するレーンからの値を、そのような値が非ゼロである場合に通信することと、のうちの1つのパフォーマンスを含む。
【0072】
ブロック308では、各ステージングバッファ126は、指示された値をMACユニット130に通信して、MAC演算を実行する。
【0073】
ブロック310では、MACユニット130は、MAC演算の値を、例えば、他の処理素子122、不揮発性ストレージ112、データベース116、ネットワークインタフェース110、または出力インタフェース108に出力する。
【0074】
本発明者らは、表1に示されるように、以下の広範囲の用途にわたる深層ニューラルネットワーク(DNN)モデル上で、本例の利点を評価するために例示的な実験を行った。
・ImageNet(SqueezeNet、VGG、及びResNet-50)でトレーニングされた画像クラス分類。
・Microsoft COCOデータセットでトレーニングされたimg2txtによるシーンの理解。
・GLUEデータセットでトレーニングされたGoogleのTransformerベースのモデルであるBERTと、スタンフォード自然言語推論コーパスでトレーニングされているSNLIとを含む自然言語モデリング。
・オブジェクト検出及びセグメント化:Microsoft COCOデータセットでトレーニングされたFacebookのDetectron2モデル。
・MovieLens 20Mの映画レーティングデータセットでトレーニングされたニューラル協調フィルタリング(NCF)を含む推奨システム。
【0075】
密なモデルのトレーニング中にプルーニングを組み込む技法の利点を説明するために、ResNet-50の2つのバリアントがトレーニングされた。これらのバリアントは、動的スパース再パラメータ化技法及びスパースモメンタム技法を含んだ。どちらの技法でも、90%のスパース性を標的とした。
【0076】
例示的な実験では、すべてのモデルは、PyTorch実装を使用してRTX 2080 Ti GPUでトレーニングされた。各モデルは、報告された最高の出力精度に収束するために必要なエポック数だけトレーニングされた。エポックごとに、ランダムに選択された1つのバッチはサンプリングされ、本明細書に記載の3つの演算のオペランドはトレースされた。GPUメモリ要件が異なるため、バッチサイズはモデルごとに異なった。1バッチあたり最小で64個から最大で143個までのサンプルの範囲であった。
【表1】
【0077】
パフォーマンスをモデル化するために、カスタムのサイクルアキュレートシミュレータが使用された。シミュレータの忠実度を妥当性確認するために、拡張性マイクロベンチマークストレステストが実行された。表1は、本実施形態の拡張を含むTensorcoreベースのベースラインのデフォルト構成を列挙する。面積及び消費電力をモデル化するために、すべての設計はVerilogで実装され、Synopsys Design Compilerで合成され、Cadence Innovusでレイアウトが作成された。電力は、Mentor GraphicsのModelSimを介して回路アクティビティをキャプチャした後、それをInnovusに渡したことによって推定された。CACTIは、オンチップ共有SRAMメモリの面積及びエネルギー消費をモデル化するために使用された。これらのメモリは、AM、BM、及びCMという3つに大きくバンクされたチャンクに分割される。CACTIは、SRAMスクラッチパッド(SP)の面積及びエネルギー消費をモデル化するためにも使用された。最後に、オフチップアクセスのエネルギー及びレイテンシは、MicronのDRAMモデルを介してモデル化された。ベースラインアーキテクチャと本実施形態のアーキテクチャとの両方は、CompressingDMAを使用してオフチップでゼロ値を圧縮する。
【表2】
【0078】
図14は、本システムをTensorcoreアーキテクチャに組み込むことにより達成された高速化をモデルごとに、そして(i)AW、(ii)AG、及び(iii)WGという3つの演算のそれぞれについて示すチャートである。テンソルのそれぞれでのスパース性の量とそのパターンは、モデル、層、及びトレーニングフェーズによって異なるため、高速化にはばらつきがある。平均して、本システムは実行を1.95×まで加速し、いかなる減速も決して導入しない。
【0079】
本実施形態がすべてのモデルに利益をもたらすと判断した。BERT及びDtctron2の利点は、それらのバックワードパスから得られる。Dtcron2は、1)事前トレーニング済みのResNet-50バックボーン、2)様々なスケールで高レベルのセマンティック特徴マップを抽出する特徴ピラミッドネットワーク(FPN)、3)候補オブジェクト境界ボックスを提案する領域提案ネットワーク(RPN)、4)境界ボックスの認識、クラス分類、及び回帰を実行するネットワークヘッド、ならびに5)対象となる各領域に別個に適用されるマスク予測用のネットワークヘッド、からなる。実行時間を支配するFPN及びRPNという2つのフロントエンド畳み込み層は、ごくわずかな入力アクティベーションのスパース性を示す。ただし、これらの支配層の直後にReLUを使用すると、システム100がバックワードパス中に利用するこれらの層の勾配では、有意な(73%~94%の)スパース性になる。BERTが全結合様層によって支配されることで、それらの重み及びアクティベーションでのスパース性がほとんど示されない。ただし、ReLUを使用していないにもかかわらず、バックワードパス中にその勾配でのスパース性は、そのエンコーダ層とデコーダ層とのアテンションメカニズムにより、ほとんどの層の勾配で約60%のスパース性になることが証明される。
【0080】
ResNet-50、VGG16、及びSQZNetは、ReLUを使用するモデルのうちの1つであるため、ReLUが生成するスパース性から利益を得る。ResNet-50では、バックワードパス中の利益は低くなる。これは主に、各畳み込み層と後続のReLU層との間にバッチ正規化(BatchNorm)層を使用することが原因である。BatchNorm層は、勾配でのほとんどすべてのスパース性を吸収する。ただし、幸いなことに、利用されるアクティベーションか重みかいずれかには、まだスパース性がある。トレーニング中のプルーニングの使用は、特にバックエンド層が小さくなる場合、システム100がWG演算中に利用する重みにかなりのスパース性を生じる。
【0081】
SNLIは、人間が書いた英文の対間のテキスト含意を認識することにより、自然言語推論タスクを実行する。これには、2つの全結合(FC)射影層、2つのLSTMエンコーダ、及び4つの全結合クラス分類子層が含まれる。勾配及びアクティベーションでは有意なスパース性が観察されたことで、本実施形態で観察された利益が説明される。勾配は、タスクの性質とReLUアクティベーションの使用とにより、95%を上回るスパース性を示す。入力アクティベーションのスパース性は、2つのフロントエンド射影層では63%及び60%、第一クラス分類層では0%、及びその他の層では94%超である。
【0082】
NCF推奨システムは4つのFC層からなり、第一層が最大である。勾配は、WG演算に利益を与える、83%のスパースである。場合によっては、第一層は、最も高価であり、アクティベーションのスパース性も示さないため、影響を与えない。
【0083】
図15は、第一エポックから収束までのトレーニング中のシステム100による実行時間の高速化を示す。一般に、システム100による改善はトレーニングプロセス全体を通してかなり安定していることで、システム100が利用する根本的な現象が過渡的なものでも、初期化によって引き起こされたものでもないことが示唆される。
【0084】
測定により、2つの傾向が明らかになる。トレーニング中のプルーニングアプローチを使用するResNet50の場合、高速化は、最初の数エポック中にわずかに高くなり、その後、低くなり、1.5×程度に安定する。同様に、その他の動的スパース再パラメータ化技法についても、わずかではあるが、より抑制された挙動が見られる。この挙動は、開始時に多くの重みを攻撃的にプルーニングすることから始まるプルーニングアルゴリズムによるものであり、その後、トレーニングプロセスはモデルの精度をリカバリするために「リクレーム」する。
【0085】
システム100が利用するスパース性のほとんどがアクティベーション及び勾配に由来した密な画像クラス分類モデルの場合、高速化は横倒しされたU字型曲線に従う傾向があった。この挙動は、VGG16モデルでより顕著であり、モデルのランダムな初期化により初期に利益が低くなる。その後、入力データのどの特徴がタスクに無関係であったかを学習することでモデルが急速に改善されたため、最初の数エポック中に利益が急速に増加した。これにより、アクティベーションと勾配との両方でスパース性が急速に増加することになった。その後、高速化は、トレーニングプロセスの40%~50%に達するまで安定した。次いで、トレーニングプロセスの後半に入り、精度を向上させるためにモデルが以前に破棄された重要性の低い特徴の一部を抽出し始めたため、徐々に低下した。トレーニングプロセスの最後の4分の1中に、モデルパラメータがそれらの最終値に非常に近くなったことで、アクティベーション及び勾配のスパース性が安定したため、高速化は安定した。
【0086】
表2は、面積及び消費電力の詳細を示す。オンチップ及びオフチップのメモリを考慮しなくても、システム100の面積及び電力のオーバーヘッドは小さく、14%の余分なシリコン面積及び9%の電力のみがスケジューラ及びバックエンドシャッフラには必要である。高速化を考慮に入れると、素のTensorcoreと比較して、計算ロジックだけで平均1.8×超のエネルギー効率になる。図16は、計算コアロジックとチップ全体とについてのモデルごとのエネルギー効率を示す。
【0087】
オンチップAM、BM及びCMのメモリチャンクのそれぞれは、58.6mmの面積を必要としたが、スクラッチパッドは、さらなるバンクが原因で、ベースラインに3.95mmと、システム100に5.9mmとの合計を必要とした。合計では、チップ全体の計算及びメモリ面積の両方を考慮すると、システム100の面積のオーバーヘッドはわずか4.8%であった。図16が示すように、オンチップメモリ、スクラッチパッド、及びオフチップDRAMへのアクセスを考慮すると、システム100はTensorcoreアーキテクチャの全体的なエネルギー効率を1.5×まで向上させた。
【0088】
図17は、ベースラインに対するシステム100で消費されたエネルギーを報告する。測定値は、オフチップデータ転送、コアロジック、及びオンチップメモリモジュールという3つの主なコンポーネントにわたって消費されたエネルギーの詳細も示す。システム100は、エネルギー消費全体を支配する計算コアのエネルギー消費を有意に削減した。
【0089】
一般に、ステージングバッファの深度は、一度にスキップされることができるタイムステップの最大数を制限するため、理論上ピークの高速化を決定することができる。N深層バッファの場合、最大高速化はN×である。ただし、ステージングバッファが深層になるにつれて、スケジューラと、対応するフロントエンド及びバックエンドのシャッフラとのハードウェアの複雑さが増す可能性がある。深度構成の影響を調べるために、例示的な実験では2から最大5までの深度を掃引した。2深層及び3深層の構成は、コスト対パフォーマンスのよりバランスの取れた実装のために、レーンごとに8つではなく4つの可能なプロモーションを実装する。図18では、平均高速化が1.5×(2深層)から2.05×(5深層)まで増え、リターンが4深層から5深層にテーパ状になることが示される。
【0090】
例示的な実験では、PEを使用してタイルを構成したときのPEのパフォーマンス挙動を調べた。この目的のために、タイルごとのPEのロウ及びカラムの数を変化させ、これがパフォーマンスにどのように影響するかを調べた。タイルジオメトリをスケールする場合、ストールは、PE間の同期が原因で発生し得、今度は作業不均衡によって起こる。
【0091】
図18は、カラム数を4に固定し、タイルごとのロウ数を1から最大16まで変化させる場合、システム100のパフォーマンスがどのように変化するかを示す。平均の高速化は、タイルが1個のロウを有する場合の2.2×から、タイルが16個のロウを有する場合の1.8×まで低下する。すべてのPEは最も遅いものを待機する必要があるため、ロウ数が増えると、作業不均衡が発生することが原因で、ストールの頻度が高くなる。タイルごとのロウ数がスケールアップされると、並行して処理されるデータ値は、ロウ間で密度不均衡を示す。これにより、すべてのロウが最も密な値のストリームを有するロウを待機する必要があるため、一部のロウがストールする可能性がある。実際には、ロウ数が増加するにつれて、そのような大きい値群をスケジュールすると、処理サイクル全体をスキップしてその次の群に進む可能性が低くなる。これが発生する主な理由は、非ゼロのアクティベーション及び勾配が特定の2D特徴マップにクラスタ化する傾向にあるが、その他の2Dマップがよりスパースになるためである。このクラスタ化現象は、一般にそれらのようなモデルでは、特に各フィルタが特定の高レベルの特徴を抽出するようにトレーニングされるより深層に向かって、基本的なものである。一般に、この現象は、アクティベーション及び勾配の2D特徴マップを畳み込む、第二バックワード畳み込みであるA×Gでより顕著である。
【0092】
Tensorcoreあたりのカラム数は4から16まで変化したが、ロウ数は4のままであった。スパース性がロウ側である1つの側でのみ利用されたため、カラム数が増加しても、同等にスケールされたベースラインと比較して、それほどパフォーマンスに影響しなかった。すべてのロウは、最も密なストリームを有するロウをまだ待機する必要があった。ただし、カラムを増加させると、ロウに沿って同じスケジュールを共有しながら、畳み込み層でより多くのウィンドウを並列処理することが可能になった。3%を上回らなかった一部のモデルの高速化では無視できる低下は、認められたが、層次元によって引き起こされたフラグメント化が主な原因のものであった。
【0093】
例示的な実験では、より多くの乗算器レーンを有したより幅広いTensorcore構成でも実験した。レーンごとに8つのプロモーションしかまだできないTensorDash設計が調査された。Tensorcoreの幅が広いほど、ステージングバッファが浅くなってもパフォーマンスが向上することで、ハードウェアオーバーヘッドが少なくなることがわかった。4深層のバッファを備えた狭いTensorcoreとほぼ同じパフォーマンス及びエネルギー効率を達成した。図19は、幅16のPEの最上部の上に3深層ステージングバッファを備えたTensorDashがパフォーマンスを平均で1.85×まで向上させることを示す。一方、面積のオーバーヘッドは、計算ロジック及びチップ全体でそれぞれ10%及び3.5%まで削減される。この構成に使用された専用のスパースな接続性パターンの結果として、重複しない接続性パターンを有するレーンは、群化されて、1つのレベルにスケジュールされることができ、この1つのレベルは、わずか6つのレベルで1つのスケジューラを可能にし、クリティカルパスにはない。
【0094】
TensorDashがスパース性構造に関係なく有効なままであるかどうかを決定するために、例示的な実験では、スパース性のレベルが10%から最大99.9%までに及んでいる状態で合成されたスパーステンソルを用いて実験した。SQZNetからの第三畳み込み層のアーキテクチャを使用したが、ランダムに生成された値を使用するテンソルを投入した。スパース性のレベルごとに、10個のテンソルサンプルを生成した。次に、これらの生成されたテンソルを使用して、サンプルごとに3つの演算すべてを実行した。スパース性レベルごとにすべてのサンプルにわたる平均を決定した(測定された速度での最大偏差は5%を下回った)。4深層ステージングバッファが与えられると、テンソルがゼロしか含まない場合でも、TensorDashで可能な最大高速化が4×であることを想起されたい。図20が示すように、TensorDashを用いたパフォーマンスは、入力でのスパース性の量に密接に追従した。図20は、理想的な高速化が4×を下回る場合、TensorDashが理想的にあり得る高速化に近づくことを示す。例えば、スパース性が20%である場合、最適なマシンは1.25×高速になる。TensorDashは、約1.23×高速になる。スパース性が90%である場合、理想的なマシンは10×高速になる。例示的な実験では、TensorDashがその理想的な4×の高速化に近づき、3.7×高速になり、99%のスパース性レベルで3.99×に達することが示される。
【0095】
深層ニューラルネットワークがbfloat16などの他の浮動小数点データ型を使用してトレーニングされることができたことを決定した。例示的な実験では、bfloat16演算を使用するTensorDash及びベースライン構成を実装した。実験で計算ロジックのみを考慮した場合でも、合成及びレイアウトの結果は、TensorDashの面積及び電力のオーバーヘッドがそれぞれ1.16×及び1.1×と低いままであることを示した。様々なコンポーネントは、データ型の変更に応じてスケーリングが異なる。例えば、スケジューラ及びシャッフラのハードウェアオーバーヘッドはFP16からbfloat16に移行しても変化しなかったが、乗算器はシュリンクする。オンチップメモリ構造を考慮すると、面積オーバーヘッドは4.9%である。エネルギー効率に関しては、TensorDashを用いた計算ロジックは、ベースラインよりも平均で1.76×超のエネルギー効率であった。オンチップ及びオフチップメモリへのアクセスを考慮した場合、TensorDashの導入により全体のエネルギー効率が1.48×までブーストされた。
【0096】
例示的な実験では、Wikitext-2データセットでトレーニングされた自然言語処理モデルであるGCNを用いて実験した。アクティベーション、勾配、及び重みに実質的にスパース性は見られなかった。それでも、数層が約5%のスパース性を示したことから、TensorDashはパフォーマンスを1%まで向上させた。TensorDashの全体的なエネルギー効率は、ベースラインより0.5%低くなった。
【0097】
本実施形態は、動的スパース性を利用し、処理タイルを構成するために使用されることができるプラグアンドプレイ素子を有利に提供する。一般に、DNNトレーニングはデータセンター及び「エッジ」で必要である。本実施形態は、いずれかのセグメントのアクセラレータを構築するのに価値のある可能性がある低レベルの処理素子を提供する。本実施形態は、トレーニングを加速するためのいくつかのアプローチとインタラクトすることができるが、非常に低レベルのMACユニットで演算するため、多くのものと一次補完的である。本実施形態が多くの既存のハードウェアアクセラレータの代替PEとして、またプルーニングなどのソフトウェアレベルのトレーニング加速技法と併せて価値がある可能性があると確信される。
【0098】
本実施形態は、データ並列MACユニットがそれらの入力オペランドストリームでのスパース性を利用することを可能にするハードウェアベースの技法を有利に提供する。深層学習用のハードウェアアクセラレータを構成するために使用される場合、本実施形態は、トレーニングプロセスを高速化すると同時に、エネルギー効率を向上させることができる。場合によっては、低コストのスパースな入力オペランドインターコネクトは、面積効率の高いハードウェアスケジューラと組み合わされる。スケジューラは、アクティベーション、重み及び勾配にスパース性が存在する場合にスパース性を有効に抽出することができる。様々な用途に及ぶ幅広い最新モデルのセットで、トレーニングプロセスは、5%未満の面積オーバーヘッドでTensorcoreベースのアクセラレータの最上部の上に組み込まれた場合、エネルギー効率が1.5×超でありながら、1.95×まで加速されることが証明された。ほとんどの場合、システム100はデータ型に依存せず、これはElectrical and Electronics Engineers(IEEE)規格の混合精度浮動小数点ユニットと、機械学習に最適化されたブレイン浮動小数点フォーマット(BFloat16)とで実証された。
【0099】
一例では、トレーニング加速に加えて、本実施形態は推論アクセラレータに使用されてもよい。特に、本明細書に記載のハードウェアスケジューラは、アクティベーションと重みとの間でフォワードパス畳み込みを実行しながら、アクティベーションに動的スパース性を利用することができる。したがって、本開示はトレーニング加速という面に焦点を当てているが、本実施形態は、アクティベーションに動的スパース性、及び重みに静的スパース性を利用することによって推論加速にも使用されることができる。さらに、本開示はメモリ内の入力テンソルを事前にスケジュールすることを具体的に説明しなかったが、トレーニング及び推論中のメモリのフットプリント、トラフィック、及びエネルギーをさらに削減するために、そうすることが可能である。事前にスケジュールされたテンソルは、ステージングバッファでは、最初に事前にスケジュールされた形式から、それらの対応する「密な」形式に展開されることができる。これは、有効なオペランドを選択するために、本明細書に記載のインターコネクトをミラーするスパースインターコネクトを使用して実装されることができる。重みの場合、事前スケジューリングは前もって実行されることができ、場合によっては、推論の場合にはソフトウェアで実行されることができる。アクティベーション及び勾配の場合、先行層の出力に事前スケジューリングを実行することができる。本明細書で説明したものと同一の別のハードウェアスケジューラは、値が層の出力で生成されるときに、それらの値を事前にスケジュールする。
【0100】
本発明は、特定の実施形態を参照して説明されたが、本明細書に添付の特許請求の範囲に記載された本発明の趣旨及び範囲から逸脱することなく、それらの様々な変更及び修正が当業者には明白となるであろう。

図1
図2
図3
図4
図5
図6
図7
図8
図9A
図9B
図9C
図9D
図9E
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
【国際調査報告】