(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-08-08
(54)【発明の名称】深層学習ネットワークのトレーニングを加速させるためのシステム及び方法
(51)【国際特許分類】
G06N 3/0495 20230101AFI20230801BHJP
G06N 3/06 20060101ALI20230801BHJP
G06F 17/10 20060101ALI20230801BHJP
G06G 7/60 20060101ALI20230801BHJP
G06F 7/485 20060101ALI20230801BHJP
G06F 7/487 20060101ALI20230801BHJP
【FI】
G06N3/0495
G06N3/06
G06F17/10 S
G06G7/60
G06F7/485
G06F7/487
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023504147
(86)(22)【出願日】2021-07-19
(85)【翻訳文提出日】2023-02-15
(86)【国際出願番号】 CA2021050994
(87)【国際公開番号】W WO2022016261
(87)【国際公開日】2022-01-27
(32)【優先日】2020-07-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】522443372
【氏名又は名称】ザ ガバニング カウンシル オブ ザ ユニバーシティ オブ トロント
(74)【代理人】
【識別番号】100114775
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100202751
【氏名又は名称】岩堀 明代
(74)【代理人】
【識別番号】100208580
【氏名又は名称】三好 玲奈
(74)【代理人】
【識別番号】100191086
【氏名又は名称】高橋 香元
(72)【発明者】
【氏名】モハメド アワド,オマル
(72)【発明者】
【氏名】マームード,モスタファ
(72)【発明者】
【氏名】モショヴォス,アンドレアス
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB71
5B056CC01
(57)【要約】
深層学習ネットワークのトレーニング中に、積和(MAC)浮動小数点ユニットを加速させるシステム及び方法が開示される。方法は、第1の入力データストリームA及び第2の入力データストリームBを受信することと、第1のデータストリームA及び第2のデータストリームBの指数のペアを加算して、積指数を生成することと、比較器を使用して最大指数を特定することと、累積の前に、第2のデータストリームの各仮数のシフトするべきビット数を、第1のデータストリームの対応項に積指数デルタを加算することにより特定し、加算器ツリーを使用して第2のデータストリームのオペランドを単一の部分和に削減することと、最大指数を使用して対応する桁揃え値に部分和を加算し、累積値を特定することと、累積値を出力することと、を含む。
【選択図】
図3
【特許請求の範囲】
【請求項1】
深層学習ネットワークのトレーニング中または推論中に積和(MAC)浮動小数点ユニットを加速させる方法であって、
第1の入力データストリームA及び第2の入力データストリームBを受信することと、
前記第1のデータストリームA及び前記第2のデータストリームBの指数のペアを加算して、積指数を生成することと、
比較器を使用して最大指数を特定することと、
累積の前に、前記第2のデータストリームの各仮数のシフトするべきビット数を、前記第1のデータストリームの対応項に積指数デルタを加算することにより特定し、加算器ツリーを使用して前記第2のデータストリームのオペランドを単一の部分和に削減することと、
前記最大指数を使用して対応する桁揃え値に前記部分和を加算し、累積値を特定することと、
前記累積値を出力することと、
を含む、前記方法。
【請求項2】
累積の前に、前記第2のデータストリームの各仮数のシフトするべき前記ビット数を特定することは、定義されたアキュムレータ幅の外側にマッピングされた効果のない項をスキップすることを含む、請求項1に記載の方法。
【請求項3】
各仮数は、符号付きの2の累乗を含む、請求項1に記載の方法。
【請求項4】
前記指数を加算して前記最大指数を特定することは、複数のMAC浮動小数点ユニットの間で共有される、請求項1に記載の方法。
【請求項5】
前記指数は、固定値に設定される、請求項1に記載の方法。
【請求項6】
浮動小数点値をグループで格納することをさらに含み、
前記指数デルタは、ベース指数との差としてエンコードされる、請求項1に記載の方法。
【請求項7】
前記ベース指数は、前記グループ内の第1の指数である、請求項6に記載の方法。
【請求項8】
前記比較器を使用することは、前記最大指数をアキュムレータビット幅の閾値と比較することを含む、請求項1に記載の方法。
【請求項9】
前記閾値は、確実にモデルが収束するように設定される、請求項8に記載の方法。
【請求項10】
前記閾値は、トレーニング精度の0.5%以内に設定される、請求項9に記載の方法。
【請求項11】
深層学習ネットワークのトレーニング中または推論中に積和(MAC)浮動小数点ユニットを加速させるシステムであって、前記システムは、データメモリと通信する1つ以上のプロセッサを備え、前記プロセッサは、
入力モジュールにより、第1の入力データストリームA及び第2の入力データストリームBを受信することと、
指数モジュールにより、前記第1のデータストリームA及び前記第2のデータストリームBの指数のペアを加算して積指数を生成し、比較器を使用して最大指数を特定することと、
削減モジュールにより、累積の前に、前記第2のデータストリームの各仮数のシフトするべきビット数を、前記第1のデータストリームの対応項に積指数デルタを加算することにより特定し、加算器ツリーを使用して前記第2のデータストリームのオペランドを単一の部分和に削減することと、
累積モジュールにより、前記最大指数を使用して対応する桁揃え値に前記部分和を加算して累積値を特定し、前記累積値を出力することと、
を実行する、前記システム。
【請求項12】
累積の前に、前記第2のデータストリームの各仮数のシフトするべき前記ビット数を特定することは、定義されたアキュムレータ幅の外側にマッピングされた効果のない項をスキップすることを含む、請求項11に記載のシステム。
【請求項13】
各仮数は、符号付きの2の累乗を含む、請求項11に記載のシステム。
【請求項14】
前記指数モジュール、前記削減モジュール、及び前記累積モジュールは、処理ユニットに配置され、
前記指数を加算すること及び前記最大指数を特定することは、複数の処理ユニット間で共有される、請求項11に記載のシステム。
【請求項15】
前記複数の処理ユニットは、タイル配置で構成される、請求項14に記載のシステム。
【請求項16】
同じ列の処理ユニットは、前記指数モジュールからの同じ出力を共有し、同じ行の処理ユニットは、前記入力モジュールからの同じ出力を共有する、請求項15に記載のシステム。
【請求項17】
前記指数は、固定値に設定される、請求項11に記載のシステム。
【請求項18】
浮動小数点値をグループで格納することをさらに含み、
前記指数デルタは、ベース指数との差としてエンコードされ、
前記ベース指数は、前記グループ内の第1の指数である、請求項11に記載のシステム。
【請求項19】
前記比較器を使用することは、前記最大指数をアキュムレータビット幅の閾値と比較することを含み、
前記閾値は、確実にモデルが収束するように設定される、請求項11に記載のシステム。
【請求項20】
前記閾値は、トレーニング精度の0.5%以内に設定される、請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
下記は、概して深層学習ネットワークに関し、より具体的には深層学習ネットワークのトレーニングを加速させるためのシステム及び方法に関する。
【背景技術】
【0002】
深層学習の適用の普及及びデナードスケーリング則の終焉により、深層学習の推論及びトレーニングを加速させるための取り組みが推進されている。これらの取り組みは、アルゴリズムからミドルウェアアーキテクチャ及びハードウェアアーキテクチャまで、全システムスタックに及ぶ。トレーニングは、サブタスクとして推論を含むタスクである。トレーニングは、計算負荷及びメモリ負荷の高いタスクであり、多くの場合、数週間の計算時間を要する。
【発明の概要】
【0003】
一態様では、深層学習ネットワークのトレーニング中または推論中に積和(MAC)浮動小数点ユニットを加速させる方法が提供され、方法は、第1の入力データストリームA及び第2の入力データストリームBを受信することと、第1のデータストリームA及び第2のデータストリームBの指数のペアを加算して、積指数を生成することと、比較器を使用して最大指数を特定することと、累積の前に、第2のデータストリームの各仮数のシフトするべきビット数を、第1のデータストリームの対応項に積指数デルタを加算することにより特定し、加算器ツリーを使用して第2のデータストリームのオペランドを単一の部分和に削減することと、最大指数を使用して対応する桁揃え値(aligned value)に部分和を加算し、累積値を特定することと、累積値を出力することと、を含む。
【0004】
方法の具体的な事例では、累積の前に、第2のデータストリームの各仮数のシフトするべきビット数を特定することは、定義されたアキュムレータ幅の外側にマッピングされた効果のない項をスキップすることを含む。
【0005】
方法の別の事例では、各仮数は、符号付きの2の累乗を含む。
【0006】
方法のさらに別の事例では、指数を加算して最大指数を特定することは、複数のMAC浮動小数点ユニットの間で共有される。
【0007】
方法のさらに別の事例では、指数は、固定値に設定される。
【0008】
方法のさらに別の事例では、方法はさらに、浮動小数点値をグループで格納することを含み、指数デルタは、ベース指数との差としてエンコードされる。
【0009】
方法のさらに別の事例では、ベース指数は、グループ内の第1の指数である。
【0010】
方法のさらに別の事例では、比較器を使用することは、最大指数をアキュムレータビット幅の閾値と比較することを含む。
【0011】
方法のさらに別の事例では、閾値は、確実にモデルが収束するように設定される。
【0012】
方法のさらに別の事例では、閾値は、トレーニング精度の0.5%以内に設定される。
【0013】
別の態様では、深層学習ネットワークのトレーニング中または推論中に積和(MAC)浮動小数点ユニットを加速させるシステムが提供され、システムは、データメモリと通信する1つ以上のプロセッサを備え、プロセッサは、入力モジュールにより、第1の入力データストリームA及び第2の入力データストリームBを受信することと、指数モジュールにより、第1のデータストリームA及び第2のデータストリームBの指数のペアを加算して積指数を生成し、比較器を使用して最大指数を特定することと、削減モジュールにより、累積の前に、第2のデータストリームの各仮数のシフトするべきビット数を、第1のデータストリームの対応項に積指数デルタを加算することにより特定し、加算器ツリーを使用して第2のデータストリームのオペランドを単一の部分和に削減することと、累積モジュールにより、最大指数を使用して対応する桁揃え値に部分和を加算して累積値を特定し、累積値を出力することと、を実行する。
【0014】
システムの具体的な事例では、累積の前に、第2のデータストリームの各仮数のシフトするべきビット数を特定することは、定義されたアキュムレータ幅の外側にマッピングされた効果のない項をスキップすることを含む。
【0015】
システムの別の事例では、各仮数は、符号付きの2の累乗を含む。
【0016】
システムのさらに別の事例では、指数モジュール、削減モジュール、及び累積モジュールは、処理ユニットに配置され、指数を加算すること及び最大指数を特定することは、複数の処理ユニット間で共有される。
【0017】
システムのさらに別の事例では、複数の処理ユニットは、タイル配置で構成される。
【0018】
システムのさらに別の事例では、同じ列の処理ユニットは、指数モジュールからの同じ出力を共有し、同じ行の処理ユニットは、入力モジュールからの同じ出力を共有する。
【0019】
システムのさらに別の事例では、指数は、固定値に設定される。
【0020】
システムのさらに別の事例では、システムはさらに、浮動小数点値をグループで格納することを含み、指数デルタは、ベース指数との差としてエンコードされ、ベース指数は、グループ内の第1の指数である。
【0021】
システムのさらに別の事例では、比較器を使用することは、最大指数をアキュムレータビット幅の閾値と比較することを含み、閾値は、確実にモデルが収束するように設定される。
【0022】
システムのさらに別の事例では、閾値は、トレーニング精度の0.5%以内に設定される。
【0023】
これらの態様及び他の態様が企図され、本明細書に記載される。当業者が下記の発明を実施するための形態を理解することを支援するために、前述の発明の概要は、実施形態の代表的な態様を提示していることが理解されよう。
【0024】
図面を参照することにより、実施形態のより深い理解がもたらされるであろう。
【図面の簡単な説明】
【0025】
【
図1】実施形態による、深層学習ネットワークのトレーニングを加速させるためのシステムの概略図である。
【
図2】
図1のシステム及び例示的な動作環境を示す概略図である。
【
図3】実施形態による、深層学習ネットワークのトレーニングを加速させるための方法のフローチャートである。
【
図4】ゼロ項及び及び範囲外項の例示的な実施例を示す。
【
図5】
図1のシステムによる、指数モジュール、削減モジュール、及び累積モジュールを含む処理要素の実施例を示す。
【
図6】ImageNetでのトレーニングResNet34のエポック0及び89における層Conv2d_8の指数分布の実施例を示す。
【
図7】
図1のシステムによる、処理要素の別の実施形態を示す。
【
図8】
図1のシステムによる、処理要素の2×2タイルの実施例を示す。
【
図9】チャネルごとにブロック化される値の実施例を示す。
【
図10】ベースラインに対する
図1のシステムによるパフォーマンス向上を示す。
【
図11】モデルごとにベースラインアーキテクチャに対する
図1のシステムの総エネルギー効率を示す。
【
図12】ベースラインに正規化された
図1のシステムの消費エネルギーを、計算ロジック、オフチップデータ転送、及びオンチップデータ転送の3つの主要構成要素にわたる内訳で示す。
【
図13】
図1のシステムがスキップできる項の内訳を示す。
【
図14】トレーニングの3つのフェーズのそれぞれの加速化を示す。
【
図15】ベースラインに対する
図1のシステムの加速化を、経時的かつトレーニングプロセス全体を通して示す。
【
図16】タイルあたりの行数を変化させた場合のベースラインに対する
図1のシステムの加速化を示す。
【
図17】サイクルごとに行数を変化させた場合の効果を示す。
【
図18】PlaidMLで
図1のシステムをエミュレートすることによるトレーニングResNet18の精度を示す。
【
図19】層ごとにプロファイルされたアキュムレータ幅と固定されたアキュムレータ幅による、
図1のシステムのパフォーマンスを示す。
【発明を実施するための形態】
【0026】
ここで、図面を参照して実施形態が説明される。説明を簡潔かつ明瞭にするために、適切と考えられる場合、図面間で参照番号を繰り返し使用して、対応する要素または類似の要素が示され得る。さらに、本明細書で説明される実施形態の完全な理解をもたらすために、多数の具体的な詳細が明記される。しかしながら、本明細書で説明される実施形態はこれらの具体的な詳細がなくとも実践できることが、当業者には理解されよう。他の例では、本明細書で説明される実施形態を不明瞭にしないために、周知の方法、手順、及び構成要素は、詳細に説明されていない。また、本説明は、本明細書で説明される実施形態の範囲を限定するものと見なされるべきではない。
【0027】
本明細書に例示される、命令を実行するモジュール、ユニット、コンポーネント、サーバ、コンピュータ、端末、またはデバイスはいずれも、記憶媒体、コンピュータ記憶媒体、またはデータ記憶デバイス(リムーバブル及び/または非リムーバブル)、例えば磁気ディスク、光ディスク、またはテープなどのコンピュータ可読媒体を含み得る、あるいはコンピュータ可読媒体にアクセスし得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実施される揮発性及び不揮発性のリムーバブル媒体及び非リムーバブル媒体が含まれ得る。コンピュータ記憶媒体の例として、RAM、ROM、EEPROM、フラッシュメモリ、もしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用可能であり、アプリケーション、モジュール、もしくはその両方によりアクセス可能である任意の他の媒体が挙げられる。このようなコンピュータ記憶媒体はいずれも、デバイスの一部であってもよく、またはデバイスにアクセス可能もしくは接続可能であってもよい。本明細書で説明されるアプリケーションまたはモジュールはいずれも、このようなコンピュータ可読媒体により格納あるいは保持され得るコンピュータ可読/実行可能命令を使用して、実施され得る。
【0028】
いくつかの深層学習ネットワークのトレーニング中に、望ましい出力が分かっている注釈付き入力のセットが、フォワードパス及びバックワードパスを繰り返し実行することにより、処理される。フォワードパスは、出力が最初は不正確である推論を実行する。しかし、望ましい出力がわかっているならば、トレーニングでは、出力が望ましい出力からどれだけ離れているかを示すメトリックである損失を、計算することができる。バックワードパス中に、この損失を使用して、ネットワークのパラメータが調整され、ネットワークのパラメータは最良の精度にゆっくりと収束される。
【0029】
トレーニングを加速させるために数多くのアプローチが開発されており、幸いにも多くの場合、これらのアプローチを組わせて使用することができる。分散トレーニングでは、データ、モデル、またはパイプラインの並列処理を利用して、トレーニングのワークロードは、複数のコンピューティングノードに分割される。タイミング通信及び計算により、トレーニング時間はさらに短縮され得る。データブロック化を促進し、データの再利用を最大化するためのデータフロー最適化により、ノード内のオンチップアクセス及びオフチップアクセスのコストが削減され、メモリ階層の低コストコンポーネントからの再利用が最大化される。別の方法群により、トレーニング中に必要な中間データのフットプリントが削減される。例えば、トレーニングの最も単純な形態において、フォワードパス中に生成されたすべてのニューロン値は、バックプロパゲーション中に使用されるように保持される。代わりに、1つまたは少数のサンプルのみをバッチ処理して保持することにより、このコストは削減される。可逆圧縮法及び非可逆圧縮法により、このようなデータのフットプリントはさらに削減される。最後に、選択的バックプロパゲーション法では、バックワードパスは、ニューロンの一部にのみ損失をプロパゲーションするように変更され、よって作業が削減される。
【0030】
一方、推論中のエネルギー効率を高める必要性から、トレーニング中の計算及びメモリの必要性が高い技法が生まれた。これには、トレーニング中にネットワークのプルーニング及び量子化を実行する作業が含まれる。プルーニングは、重みをゼロにするので、推論中の作業及びモデルサイズを削減する機会を生み出す。量子化は、16b、8b、または4bの固定小数点値などのデータ型で計算する、より短くよりエネルギー効率の高いモデルを生み出す。パラメータ効率トレーニング(Parameter Efficient Training)及び記憶されたスパースバックプロパゲーション(Memorized Sparse Backpropagation)は、プルーニング方法の実施例である。PACT及び異常値認識量子化は、トレーニング時間量子化方法である。ネットワークアーキテクチャ検索技法も、モデルのアーキテクチャを調整するため、トレーニング時間が増える。
【0031】
上記にもかかわらず、データセンタ及びエッジの両方でトレーニングをさらに加速させる必要性は、弱まることなく存続している。運用コスト、メンテナンスコスト、レイテンシ、スループット、及びノード数は、データセンタの主要な考慮事項である。既にトレーニング済みのモデルを改良または強化するためにトレーニングが主に使用され得るエッジでは、エネルギー及びレイテンシが主要な考慮事項である。ターゲットのアプリケーションに関係なく、ノードのパフォーマンスを向上させることは、非常に有利である。したがって、本実施形態は、既存のトレーニング加速方法を補足することができる。一般に、トレーニング中の計算及びデータ転送の大部分は、フォワードパス中及びバックワードパス中の積和演算(MAC)を実行するためのものである。上記のように、圧縮法を使用すると、データ転送のコストを大幅に削減することができる。本開示の実施形態は、これらの演算のための処理要素をターゲットとし、トレーニング中に自然に発生する効果のない作業を利用し、その頻度は、量子化、プルーニング、及び選択的バックプロパゲーションにより拡大される。
【0032】
いくつかのアクセラレータは、多くのモデルの活性化において、特にReLUを使用する場合、自然にゼロが発生することに依存する。プルーニングされたモデルをターゲットとするアクセラレータがいくつか存在する。別のクラスの設計は、値の範囲の縮小が自然発生であるか、量子化の結果であるかにかかわらず、値の範囲が縮小されることにより恩恵を受ける。これには、ビットシリアル設計、及びBitFusionなどの数多くの異なるデータ型に対応する設計が含まれる。最後に、別のクラスの設計は、ビットスパース性をターゲットとし、乗算をシフト加算演算の級数に分解することにより、ビットレベルで効果のない作業を明らかにする。
【0033】
上記は、推論では加速するが、トレーニングでは、実質的に様々な課題が提示される。1つ目は、データ型である。推論中のモデルは、比較的限定された範囲の固定小数点値で作業するが、トレーニングが作動する値は、広範囲にわたって分布する傾向がある。したがって、トレーニングの実施態様では、浮動小数点演算が使用され、実質的にすべてのモデルには単精度IEEE浮動小数点演算(FP32)で十分である。数多くのモデルのトレーニングでは、FP32と比べてエネルギー効率及び面積効率のより高い積和ユニットの使用を促進する他のデータ型が、使用され成功している。これらには、bfloat16、及び8b以下の浮動小数点フォーマットが含まれる。さらに、浮動小数点演算は、整数演算よりもはるかにコストがかかるため、混合データ型のトレーニング法では、浮動小数点演算は控えめにしか使用されない。これらの提案にもかかわらず、FP32は、特に大規模で困難なデータセットのトレーニングでは、標準のフォールバックフォーマットのままである。推論中に使用される固定小数点表現は、その限定された範囲及び指数の欠如の結果、ゼロ値(表現するには小さすぎる値)、ゼロビットプレフィックス(表現できる小さな値)、及び前述の推論アクセラレータが依存するビットスパース性(ほとんどの値は小さい傾向があり、大きい値はわずかである)を生じる。FP32は、はるかに小さい値を表すことができ、その仮数部は正規化され、ビットスパース性が存在するか否かは一般的に実証されていない。
【0034】
さらに、課題として、計算構造がある。推論は、重み及び活性化の2つのテンソルで作動し、層ごとに行列/行列もしくは行列/ベクトルの乗算、またはペアワイズベクトル演算を実行して、フィードフォワード方式で次の層の活性化を生じる。トレーニングには、この計算がフォワードパスとして含まれ、その後に、第3のテンソルである勾配を含むバックワードパスが続く。最も重要なことは、バックワードパスは、活性化テンソル及び重みテンソルをフォワードパスとは異なる方法で使用するため、これらをメモリに効率的にパックすることが難しくなり、スパース性をターゲットとする推論アクセラレータにより行われるゼロ削除はさらに難しくなることである。さらに、計算構造に関連するのは、値の可変性及び値の内容である。推論では重みは静的であるが、トレーニング中はそうではない。さらに、トレーニングは、ネットワークをランダムな値で初期化し、その後ゆっくりと調整する。したがって、トレーニング中に処理された値がスパース性やビットスパース性などの同様のビヘイビアを示すとは、必ずしも見込むことはできない。推論中に全く現れない値である勾配に関しては、さらにそのようなことを見込むことはできない。
【0035】
本発明者らは、トレーニング中に実行される作業の大部分は効果がないと見なされ得ることを実証した。この効果のない作業を明らかにするために、各乗算は、単一ビット積和演算の級数に分解された。これにより、効果のない作業の2つの原因が明らかとなった。第1に、入力のうちの1つがゼロであることにより、計算のうち60%を超える計算は、効果がなくなる。第2に、拡張精度を使用している(例えば2-64を264に累積するように試みる)場合でも、高ダイナミックレンジ(指数部)及び限定された精度(仮数部)の組み合わせは、非ゼロであるが累積結果に影響するには小さすぎる値を生じる場合が多い。
【0036】
上記の観察により、本発明者らは、これらの2つのビヘイビアを利用するために、ビットスキップ(ゼロビットがスキップされるビットシリアル)処理が使用可能か否かを検討するようになった。推論では、Bit-Pragmaticは、片側のオペランドにこのようなビットスキップを実行するデータパラレル処理要素であり、一方で、Laconicは、両側に対してこのようなビットスキップを実行する。これらの方法は、推論のみをターゲットとしているため、固定小数点値で作動する。トレーニング中の重みにはビットスパース性がほとんどないため、固定小数点設計を浮動小数点に変換することは、簡単なタスクではない。Bit-Pragmaticを浮動小数点に単純に変換すると、ISO計算面積制約下でパフォーマンスが低下した、面積コストの高いユニットとなった。具体的には、8つのMAC演算を実行する最適化されたBfloat16処理要素と比較して、ISO計算制約下では、Bfloat16 Bit-Pragmatic PEを使用する最適化されたアクセラレータ構成は、平均で1.72倍遅く、エネルギー効率が1.96倍低い。最悪の事例では、Bfloat16 Bit-Pragmatic PEは、2.86倍遅く、エネルギー効率が3.2倍低くなった。Bfloat16 BitPragmatic PEは、ビットパラレルPEよりも2.5倍小さく、同じ面積でより多くのBfloat16 BitPragmatic PEを使用することができるが、すべてのビットシリアル設計及びビットスキップ設計で必要とされる並列処理によりパフォーマンスを向上させるのに十分な数のBfloat16 BitPragmatic PEを収めることはできない。
【0037】
本実施形態(略式でFPRakerと称される)は、ビットスパース性計算及び範囲外計算の両方を活用するトレーニングアクセラレータのために、処理タイルを提供する。FPRakerは、いくつかの事例では、空間及び時間の両方においてデータの再利用を活用できるように、グリッドに編成されたいくつかの加算器ツリーベースの処理要素を備える。処理要素は、複数の値のペアを同時に乗算し、これらの積を出力アキュムレータに累積する。処理要素は、乗算ごとの入力オペランドのうちの1つを、符号付き2の累乗の級数として処理し、これはこれまで項と称された。このオペランドの2の累乗への変換は、オンザフライで実行され得、すべてのオペランドは、メモリに浮動小数点フォーマットで格納される。処理要素は、ゼロである仮数部ビットに起因する、または現在のアキュムレータ値を考慮すると範囲外である乗算に起因する、効果のない作業を利用する。タイルは、面積効率を考慮して設計される。タイルのいくつかの事例では、処理要素は、同時に処理できる2の累乗の範囲を限定し、これにより、そのシフト加算コンポーネントのコストは、大幅に削減される。さらに、タイルのいくつかの事例では、複数の処理要素間で時間多重化される共通指数処理ユニットが使用される。さらに、タイルのいくつかの事例では、行に沿って2の累乗のエンコーダが共有される。さらに、タイルのいくつかの事例では、処理要素ごとに、バッファにより、処理要素間の作業不均衡の影響が軽減される。さらに、タイルのいくつかの事例では、PEは、範囲外の中間値を排除する低コスト機構を実装する。
【0038】
さらに、いくつかの事例では、本実施形態は、以下の特徴のうちの少なくともいくつかを有利に提供することができる。
・生成される数値精度の結果に影響を与えず、トレーニング中に使用される浮動小数点演算を順守する。
・ゼロの仮数部ビットに起因する効果のない演算、及び範囲外の中間値に起因する効果のない演算をスキップする。
・面積ごとの処理要素がはるかに小さいことを考慮すると、複数のサイクルの個々のMAC演算にもかかわらず、他の浮動小数点ユニットと比較して、計算スループットが高い。
・通常、トレーニングはすべてのモデルに普遍的に適用可能である必要はなく、より短い仮数部の長さに対応し、よって混合または短いデータ型を使用することで、トレーニングの利点が向上する。
・層ごとにシリアル方式で処理するためにテンソル入力を選択することが可能となり、層及びパス(フォワードまたはバックワード)に応じて、よりスパース性の高いテンソルをターゲットにすることが可能となる。
【0039】
本実施形態はまた、浮動小数点値の低オーバーヘッドメモリエンコーディングを有利に提供し、これは、深層学習トレーニングに典型的である値分布に依存する。本発明者らは、チャネルにわたる連続値が、同様の値、よって指数を有することを観察した。したがって、このような値のグループのデルタとして、指数がエンコードされ得る。これらのエンコーディングは、チップの値を保存及び読み取る時に使用できるため、メモリ転送のコストをさらに削減する。
【0040】
例示的な実験を通じて、本発明者らは、以下の実験観察を特定した。
・いくつかのニューラルネットワークは、トレーニング中に自然にゼロ値(スパース性)を示すが、プルーニングが使用されない限り、これは通常、活性化及び勾配に限定される。
・項スパース性は、重みを含むすべてのテンソルに通常存在し、スパース性よりもはるかに高い。
・最適化されたビットパラレルFP32処理要素を使用し、サイクルごとに4K bfloat16 MACを実行できるアクセラレータと比較すると、同じ計算面積を使用して本実施形態のPEを配備した構成は、1.5倍速く、エネルギー効率が1.4倍高い。
・本実施形態によるパフォーマンスの利点として、3つの主要な演算すべてのトレーニングプロセスを通して、概して安定していることが挙げられる。
・層ごとに異なる使用アキュムレータ精度を指定するトレーニング方法と併せて、本実施形態を使用することができる。ResNet18では、仮数が固定幅のアキュムレータを使用する場合と比較して、パフォーマンスが38%向上し得る。
【0041】
本発明者らは、以下の2つの関連アプローチにより理論的に可能であった作業削減を測定した。
1)オペランドの少なくとも1つがゼロであるすべてのMACを削除するアプローチ(値スパース性、または単にスパース性)。
2)オペランドのうちの1つのオペランドに関して、仮数部の非ゼロビットのみを処理するアプローチ(ビットスパース性)。
【0042】
異なるアプリケーションでの本実施形態のパフォーマンスを調べるために、例示的な実験が行われた。表1では、例示的な実験で研究されたモデルがリスト表示される。ResNet18-Qは、PACTを使用してトレーニングされたResNet18のバリアントであり、トレーニング中に、活性化及び重みの両方を4ビット(4b)に小さく量子化する。ResNet50-S2は、動的スパース再パラメータ化を使用してトレーニングされたResNet50のバリアントであり、ベースライントレーニングに匹敵する精度レベルを達成しながら、トレーニングプロセスを通して高い重みスパース性を維持するスパース学習をターゲットとする。SNLIは、自然言語推論を実行し、全結合層、LSTMエンコーダ層、ReLU層、及びドロップアウト層で構成される。Image2Textは、画像からマークアップを生成するためのエンコーダ‐デコーダモデルである。MLPerfトレーニングベンチマークから、異なるタスクの3つのモデル、1)Detectron2:Mask R-CNNに基づいたオブジェクト検出モデル、2)NCF:協調フィルタリングのモデル、及び3)Bert:Attentionを使用したTransformerベースのモデル、以上が実験された。測定では、ネットワークの本来報告されている精度までネットワークをトレーニングするのに必要な数のエポックに関して(すべてのネットワークで最大90エポックで十分であった)、エポックごとにランダムに選択された1つのバッチがサンプリングされた。
【表1】
【0043】
概して、トレーニング中の計算作業の大部分は、層ごとの主要な3つの演算に起因する。
【数1】
【0044】
畳み込み層の場合、上記の式(1)は、活性化(I)及び重み(W)の畳み込みを表し、これは、フォワードプロパゲーション中の出力活性化(Z)を生成する。出力Zは、次の層への入力として使用される前に、活性化関数を通過する。上記の式(1)及び式(3)は、バックワードプロパゲーションにおける活性化(∂E/∂I)勾配及び重み(∂E/∂W)勾配の計算をそれぞれ表す。活性化勾配のみが、層間でバックプロパゲーションされる。重み勾配は、バッチごとに層の重みを1回更新する。全結合層の場合、式は、いくつかの行列ベクトル演算を表す。他の演算では、式は、ベクトル演算または行列ベクトル演算を表す。明確にするために、本開示では、勾配をGと称する。これらの測定では、ブースエンコーディングの変形である正準エンコーディングを使用して、仮数部が最初に符号付きの2の累乗にエンコードされることを表すために、本明細書では項スパース性という用語が使用される。これは、仮数部に対してビットスキップ処理が行われるからである。
【0045】
実施例では、画像分類ネットワークの活性化により、すべての事例で35%を超えるスパース性が示される。これらのネットワークは通常、負の値をゼロにクリップするReLU活性化関数を使用するため、このような結果は予期されることである。しかし、重みスパース性は通常低く、分類モデルのうちのいくつかのみが、それらの勾配でスパース性を示す。しかし、自然言語処理のモデルなどの残りのモデルでは、3つのテンソルすべてで値スパース性が非常に低くあり得る。それにもかかわらず、モデルは通常いくらかのスパース性を示すことから、本発明者らは、そのようなスパース性をトレーニング中に利用できるか否かを調査した。トレーニングは、推論とは異なり、すべてのテンソルで動的スパースパターンを示し、バックワードパス中に異なる計算構造を示すため、これは簡単なタスクではない。通常、3つのテンソルすべてが、ターゲットアプリケーションに関係なく、すべてのモデルで高い項スパース性を示すことがわかった。項スパース性は値スパース性よりも一般的であり、すべてのモデルに存在することを考慮すると、本実施形態は、トレーニング中にこのようなスパース性を利用して、モデルのトレーニング効率を高める。
【0046】
シリアル入力のゼロ項をスキップすることにより、乗算作業の削減に起因した理想的な潜在的加速化が実現され得る。ベースラインを超える潜在的加速化は、次のように特定され得る。
【数2】
【0047】
本実施形態は、トレーニング中に実行される3つの演算(上記の式(1)~(3))で使用されるオペランドのうちの1つのオペランドのビットスパース性を利用し、3つの演算のすべては、数多くのMAC演算で構成される。MAC演算をシフト加算演算の級数に分解することにより、効果のない作業が明らかとなり、エネルギー及び時間を節約する機会を得ることができる。
【0048】
MAC演算中の効果のない作業を明らかにするために、演算は、「シフト加算」演算の級数に分解され得る。乗算の場合、A=2
Ae×A
m及びB=2
Be×B
mは、浮動小数点の2つの値であり、両方とも指数(A
e及びB
e)及び仮数(A
m及びB
m)で表され、仮数は正規化され、暗黙の「1」を含む。従来の浮動小数点ユニットは、この乗算を単一ステップで実行する(符号ビットはXOR演算される)。
【数3】
【0049】
A
mを符号付き2の累乗A
m
pの級数pに分解することにより、A=Σ
pA
m
p及びA
m
p=±2
iである場合、乗算は次のように実行され得る。
【数4】
【0050】
例えば、Am=1.0000001b、Ae=10b、Bm=1.1010011b、及びBe=11bである場合、A×Bは、Bm≪(10b+11b-0)及びBm≪(10b+11b-111b)の2つのシフト加算演算として実行され得る。従来の乗算器は、ゼロである6ビットの効果のない作業を実行するにもかかわらず、Amのすべてのビットを処理する。
【0051】
しかし、浮動小数点が高ダイナミックレンジの値を表現しようとする結果、従来のユニットはさらなる効果のない作業を実行することが、上記の分解により明らかになる。略式に言えば、乗算中に行われる作業の一部は、アキュムレータ値を考慮すると範囲外の値になる。このようになる理由を理解するには、乗算だけでなく累積も考慮する必要がある。積A×Bが現行の和Sに累積され、S
eは、A
e+B
eよりはるかに大きいと仮定する。仮数部の限定された精度を考慮すると、S+A×Bの和を表すことは不可能である。他の事例では、丸め、すなわち部分的スワンピングを実行するために使用される増加された仮数部の長さを考慮しても、「シフト及び加算」演算のうちのいくつかは、仮数部外に含まれることが保証される。
図4は、ゼロ項及び及び範囲外項の例示的な実施例を示す。従来のパイプライン化されたMACユニットは、最善でも、指数を比較した後で乗算結果全体が範囲外になった場合にのみ、乗算器及びアキュムレータをパワーゲーティングすることができる。しかし、この機会を利用してサイクル数を減らすことはできない。乗算をいくつかのより単純な演算に分解することにより、本実施形態は、ビットが最上位から最下位へと処理されるならば、単一サイクルで演算を終了し、よって、別のMACをより早く開始することでパフォーマンスを高めることができる。加算器ツリー処理要素で複数のA×B積を並列に処理する場合も、同じことが当てはまる。従来の加算器ツリーベースのMACユニットは、範囲外になる積に対応する乗算器及び加算器ツリーブランチを、潜在的にパワーゲーティングすることができる。サイクルはまだ消費され得る。有利なことに、本実施形態では、シフト加算ベースのアプローチにより、このような積を単一サイクルで終了させ、代わりに他の積を進めることができる。
【0052】
ここで
図1及び
図2を参照すると、一実施形態による、深層学習ネットワークのトレーニングを加速させるためのシステム100(略式でFPRakerと称される)が示される。この実施形態では、システム100は、コンピューティングデバイス26上で実行され、インターネットなどのネットワーク24を介してサーバ32上にあるコンテンツにアクセスする。さらなる実施形態では、システム100は、デバイス26上でのみ、またはサーバ32上でのみ、実行され得、あるいは任意の他のコンピューティングデバイス上、例えばデスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、タブレットコンピュータ、サーバ、スマートウォッチ、または分散コンピューティングデバイス(複数可)もしくはクラウドコンピューティングデバイス(複数可)などで、実行及び/または分散され得る。いくつかの実施形態では、システム100のコンポーネントは、単一のコンピュータシステムにより格納され、単一のコンピュータシステム上で実行される。他の実施形態では、システム100のコンポーネントは、ローカルまたはリモートに分散され得る2つ以上のコンピュータシステム間に分散される。
【0053】
図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に配置され得る。
【0054】
実施形態では、システム100は、1つ以上のモジュール及び1つ以上の処理要素(PE)122を含む。いくつかの事例では、PEを組み合わせてタイルにすることができる。実施形態では、システム100は、入力モジュール120、圧縮モジュール130、及びトランスポーザモジュール132を含む。各処理要素122は、複数のモジュールを含み、これには、指数モジュール124、削減モジュール126、及び累積モジュール128が含まれる。いくつかの事例では、上記のモジュールのうちのいくつかは、専用ハードウェアまたは別個のハードウェアで少なくとも部分的に実行され得、一方、他の事例では、モジュールのうちのいくつかにおける機能のうちの少なくともいくつかは、処理ユニット102で実行される。
【0055】
入力モジュール120は、MAC演算を行うAデータ及びBデータの2つの入力データストリームをそれぞれ受信する。
【0056】
PE122は、8つのBfloat16(A、B)値ペアの乗算を実行し、同時に結果を累積モジュール128に累積する。Bfloat16フォーマットは、符号ビット、続いてバイアスされた8b指数、及び正規化された7b仮数(仮数部)で構成される。
図5は、指数モジュール124、削減モジュール126、及び累積モジュール128の3つのブロックで計算を行うPE122設計のベースラインを示す。いくつかの事例では、1回のサイクルで3つのブロックが実行され得る。PE122を組み合わせて、いくつかのPE122を含むより面積効率の高いタイルを構築することができる。Aのオペランドのそれぞれにおける仮数は、正準エンコーディングを使用して項(符号付き2の累乗)の級数にオンザフライで変換され、例えば、A=(1.1110000)は、(+2
+1、-2
-4)にエンコードされる。このエンコーディングは、PE122への入力の直前に行われる。すべての値は、メモリ内に存在する間は、bfloat16フォーマットで維持される。PE122は、Aの値を、項シリアル方式で処理する。累積モジュール128は、拡張された13b(13ビット)の仮数部を有し、これには、先頭の1(隠しビット)に1b、チャンクサイズが64のチャンクベース累積スキームに従った拡張精度に9b、さらに、最も近い偶数への丸めに3bが含まれる。累積モジュール128は、隠しビットの後にさらなる整数部を3ビット有するため、8つの積を累積することから起こる最悪の事例にも適合できる。全体として、累積モジュール128は、16b、4ビットの整数部、及び12ビットの小数部を有する。
【0057】
PE122は、
図6に示されるように、8つの8ビットA指数A
e0、・・・、A
e7、これらの対応する8つの3ビット仮数項t
0、・・・、t
7(正準エンコーディング後)、及び符号ビットA
s0、・・・、A
s7、これら共に、8つの8ビットB指数B
e0、・・・、B
e7、これらの仮数B
m0、・・・、B
m7(現状)、及びこれらの符号ビットB
s0、・・・、B
s7を受け入れる。
図6は、ImageNetでのトレーニングResNet34のエポック0及び89における層Conv2d_8の指数分布の実施例を示す。
図6は、8b指数の全範囲[-127:128]のうちの使用部分のみを示す。
【0058】
指数モジュール124は、Aの指数及びBの指数のペアを加算して、対応する積の指数ABe
iを生成する。比較器ツリーは、これらの積指数とアキュムレータの指数を用いて、最大指数e
maxを計算する。すべての積が正しく合計され得るように、最大指数を使用してすべての積の桁が揃えられる。積ごとの適切な桁揃えを決定するために、指数モジュール124は、すべての積指数をe
maxから減算して、桁揃えオフセットδe
iを計算する。累積すると範囲外になる項を破棄するためにも、最大指数は使用される。PE122は、e
max-12の範囲外になるすべての項をスキップする。いずれにせよ、8つのMACを処理するための最小サイクル数は、値に関係なく1サイクルになる。結果の積のうちの1つが現在のアキュムレータ指数よりも大きい指数を有する場合、累積モジュール128は、累積の前に適宜シフトされる(acc shift信号)。指数モジュール124の実施例は、
図5の第1のブロックに示される。
【0059】
項による乗算はシフトすることになるため、削減モジュール126は、累積の前に、各B仮数のシフトするべきビット数を特定する。これらは、4ビットの項K
0、・・・、K
7である。K
iを計算するために、削減モジュール126は、積指数デルタ(δe
i)を、対応するAの項t
iに加算する。範囲外項をスキップするために、削減モジュール126は、各K項の前に比較器を配置し、比較器は、各K項を、利用可能なアキュムレータビット幅の閾値と比較する。モデルがImageNetデータセットでFP32トレーニング精度の0.5%以内に確実に収束するように、閾値は設定され得る。また一方、閾値は、動的ビット幅アキュムレータを実施して効果的に制御することができ、動的ビット幅アキュムレータは、スキップする「範囲外」ビットの数を増やすことで、パフォーマンスを向上させることができる。Aの符号ビットは、これらの対応するBの符号ビットとXOR演算され、積P
s0、・・・、P
s7の符号が特定される。Bの仮数は、これらの対応する積符号に従って補足され、次いでオフセットK
0、・・・、K
7を使用してシフトされる。削減モジュール126は、Bの仮数ごとにシフタを使用して、乗算を実施する。対照的に、従来の浮動小数点ユニットは、乗算器の出力にシフタを要する。よって、削減モジュール126は、乗算器のコストを効果的に削減する。いくつかの事例では、各Bオペランドから、アキュムレータの範囲外にシフトされるビットは、最近接偶数への丸め(round-to-nearest-even、RNE)アプローチを使用して丸められ得る。加算器ツリーは、8つのBオペランドを、1つの部分和に削減する。削減モジュール126の実施例は、
図5の第2のブロックに示される。
【0060】
累積モジュール128では、削減モジュール126から得られた部分和が、累積レジスタの正しく桁が揃えられた値に追加される。各累積ステップで、アキュムレータレジスタは、正規化され、最近接偶数への丸め(RNE)スキームを使用して丸められる。正規化ブロックにより、アキュムレータの指数が更新される。アキュムレータの値が読み出されると、仮数の7bのみが抽出され、bfloat16に変換される。累積モジュール128の実施例は、
図5の第3のブロックに示される。
【0061】
最悪の場合、
図5の実施例の累積モジュール128は、12ビットの小数部を有することから、2つのK
iオフセットは、最大で12異なり得る。これは、ベースラインPE122が比較的大きなシフタと、幅広い入力を受け入れるアキュムレータツリーを要することを意味する。具体的には、PE122には、8b(7bの仮数+隠しビット)の値を最大12ポジションまでシフトできるシフタが必要である。これが整数演算であった場合、12+8=20b幅を累積する必要がある。しかし、これは浮動小数点ユニットであるため、最上位14ビット(1bの隠しビット、12bの小数部ビット、及び符号ビット)のみが累積される。この範囲を下回るビットはいずれも、各入力オペランドの最下位ビットであるスティッキービットに含まれる。予期される指数分布を利用することにより、このコストを大幅に削減することが可能である。ResNet34の層の指数分布では、入力の指数、重み、及び出力勾配の大部分が、狭い範囲内に存在する。これは、一般的な事例では、指数デルタが比較的小さいことを示唆している。さらに、活性化のMSBは、1であることが保証されている(非正規数に対応していないことを所与として)。これは、K
0、・・・、K
7オフセットが狭い範囲内に存在することが非常に多いことを示す。システム100は、このビヘイビアを利用して、PE122面積を縮小する。例示的な構成では、単一サイクルで処理できるK
iオフセット間の最大差は、最大3に制限されている。その結果、シフタは、最大3bのシフトに対応する必要があり、そこで加算器は、12b入力(1bの隠しビット、7b+3bの仮数部ビット、及び符号ビット)を処理する必要がある。この事例では、項エンコーダユニットは、最大差が3であるAの項のグループを送信するように変更される。
【0062】
いくつかの事例では、Aの値のグループを処理することは、これらのうちのいくつかは複数の項に変換されるため、複数のサイクルが必要になる。この間、指数モジュール124への入力は変化しない。さらに面積を削減するために、システム100は、この予期されるビヘイビアを利用して、複数のPE122にわたり指数ブロックを共有することができる。指数モジュール124を共有するPE122の数は、予期されるビットスパース性に基づいて決定され得る。ビットスパース性が低いほど、PE122あたりの処理時間が長くなり、指数の新たなセットが必要になる頻度は少なくなる。ゆえに、指数モジュール124を共有できるPE122が多くなる。いくつかのモデルはスパース性が高いため、このような状況では、2つのPE122ごとに1つの指数モジュール124を共有することが最適であり得る。
図7は、PE122の別の実施形態を示す。PE122は全体で、8つのAの入力の1セットと、Bの入力の2セット、B及びB’を入力として受け入れる。指数モジュール124は、一度に(A、B)または(A、B’)のうちの1つを処理することができる。指数モジュール124が(A、B)を処理するサイクル中、PE#1用のマルチプレクサは、e
max及び指数デルタを、直接PE122に渡す。同時に、これらの値は、PE122が入力Aのすべての項を処理している間、これら値が一定に保たれるように、PE122の前のレジスタにラッチされる。指数ブロックが(A、B’)を処理する時、前述のプロセスは、PE#2に進む。この構成では、両方のPE122は、すべてのAの項の処理を終了しなければ、Aの値の別のセットの処理に進むことはできない。指数モジュール124は共有されるので、8つのAの値の各セットは、処理するのに少なくとも2サイクルかかる(セットがゼロ項を含んでいても)。
【0063】
PE122ごとにバッファを利用することで、データの再利用を時間的に活用することができる。データの再利用を空間的に活用するために、システム100は、いくつかのPE122をタイルに配置し得る。
図8は、PE122の2×2タイルの実施例を示し、各PE122は、8つのMAC演算を並列に実行する。列ごとのPE122の各ペアは、上述のように指数モジュール124を共有する。B及びB’の入力は、同じ行のPE122にわたり共有される。例えば、フォワードパス中に、各行で処理される異なるフィルタと、列にわたり処理される異なるウィンドウとが存在し得る。B及びB’の入力は共有されるため、すべての列は、B及びB’の入力の次のセットに進む前に、Aiの項が最も多い列が終了するのを待機する必要がある。これらのストールを減らすために、タイルは、B及びB’ごとにバッファを含み得る。PE122ごとにこのようなバッファをN個有することにより、列は最大で値のNセット分、先に進めることが可能になる。
【0064】
本発明者らは、トレーニング中に値の空間相関を研究し、チャネルにわたり連続する値が同様の値を有することを発見した。これは、活性化、重み、及び出力勾配に当てはまる。浮動小数点の同様の値は、同様の指数を有し、システム100は、ベースデルタ圧縮スキームを介して、この特性を活用することができる。
図9の実施例に示されるように、いくつかの事例では、値は、チャネルごとにそれぞれ32個の値のグループにブロック化され得、グループ内の第1の値の指数がベースとなり、グループ内の残りの値のデルタ指数がベースに対して計算される。デルタ指数のビット幅(δ)は、グループごとに動的に特定され、グループごとの結果のデルタ指数の最大精度に設定される。デルタ指数のビット幅(3b)は、メタデータとして各グループのヘッダーに付加される。
【0065】
図10は、ベースデルタ圧縮後の正規化された指数フットプリントの合計メモリ節約を示す。圧縮モジュール130は、この圧縮スキームを使用して、オフチップメモリ帯域幅を削減する。値は、各層の出力で、オフチップに書き込む前に圧縮され、オンチップで読み戻される時に復元される。
【0066】
本発明者らは、範囲外項をスキップすることは低コストになり得ると判断した。処理要素122は、レーンごとに比較器を使用して、レーンの現在のK項がアキュムレータ精度値の閾値内にあるかをチェックし得る。比較器は、定数と比較するための合成ツールにより最適化され得る。処理要素122は、現在のe_acc値を考慮すると、同じ入力ペアに由来する後続の項はいずれも効果のない(範囲外である)ことが保証されることを示す信号を、対応する項エンコーダにフィードバックし得る。よって、システム100は、後続の範囲外項の処理をスキップすることにより、そのパフォーマンス及びエネルギー効率を向上させることができる。同じタイル列のPEにわたる特定レーンの範囲外項を示すフィードバック信号は、一緒に同期化され得る。
【0067】
通常、深層学習では、データ転送がかなりの部分を占め、多くの場合、エネルギー消費の大半を占める。したがって、実行ユニットをビジー状態に保つためにメモリ階層は何をする必要があるかを検討することが有用である。トレーニングの課題は、3つの配列I、W、及びGを処理する間、要素がグループ化される順序が3つの主要な計算(上記の式1~3)で異なることである。しかし、配列がオフチップから読み出される時に配列を再配置することは可能である。この目的のために、システム100は、32×32のbfloat16値の「正方形」のコンテナを使用して、配列をメモリに格納し得る。これは、DDR4メモリの典型的な行サイズに通常合うサイズであり、このサイズにより、システム100は、オフチップから値を読み出す時に高帯域幅を達成することが可能となる。コンテナには、座標(c、r、k)(チャネル、行、列)~(c+31、r、k+31)の値が含まれ、c及びkは32で割り切れる(必要に応じてパディングを使用する)。コンテナは、チャネル、列、行の順に格納される。オフチップメモリから読み出される時、コンテナの値は、まったく同じ順序でマルチバンクのオンチップバッファに格納され得る。その後、タイルは、直接データにアクセスして、アクセスごとに8つのbfloat16値を読み出すことができる。重み及び活性化勾配は、実行される演算に応じて異なる順序で処理される必要があり得る。通常、それぞれの配列は、演算のうちの1つの演算中に、必ず転置順序でアクセスされる。このために、システム100は、トランスポーザモジュール132をオンチップで含み得る。例では、トランスポーザモジュール132は、オンチップメモリから8つのbfloat16値の8つのブロックを読み込む。これらの8つの読み取りのそれぞれは、8つの値の幅の読み取りを使用し、ブロックは、トランスポーザバッファの内部に行として書き込まれる。これらのブロックは集合的に、値の8×8ブロックを形成する。トランスポーザモジュール132は、それぞれ8つの値の8つのブロックを読み出し、これらをPE122に送信し得る。これらのブロックのそれぞれは、その内部バッファから列として読み出され得る。このようにして、8×8値グループは、効果的に転置される。
【0068】
本発明者らは、従来の浮動小数点ユニットを使用する同等のベースラインアーキテクチャと比較して、システム100の利点を評価するために例示的な実験を実施した。
【0069】
システム100(略式でFPRakerと称される)及びベースラインアーキテクチャの実行時間をモデル化するために、カスタムサイクルアキュレートシミュレータが開発された。シミュレータは、タイミングビヘイビアのモデル化に加えて、時間内の値の転送及び計算を忠実にモデル化し、生成された値が黄金値に対して正確であることを確認した。シミュレータは、マイクロベンチマークにより検証された。面積及び消費電力の分析には、システム100設計及びベースライン設計の両方がVerilogで実装され、Synopsys社のDesign Compilerを使用してTSMC社の65nm技術と、所与の技術の商用ライブラリと合成された。レイアウト生成には、Cadence社のInnovusが使用された。Intel社のPSG ModelSimを使用してデータ駆動型のアクティビティ係数が形成され、これはInnovusに供給され、電力が推定された。ベースラインMACユニットは、面積、エネルギー、及びレイテンシに関して最適化された。通常、3つすべてを最適化することは不可能であるが、しかしMACユニットの場合は可能である。効率的なビットパラレル融合MACユニットが、ベースラインPEとして使用された。構成要素である乗算器は、面積及びレイテンシの両方で効率的であり、Synopsys社が開発したDesignWare IPライブラリから取得される。さらに、ベースラインユニットは、そのI/Oオペランドの精度をbfloat16に低減し、低減した精度でチャンクベース累積により累積を行うことにより、深層学習トレーニングのために最適化された。オンチップSRAMグローバルバッファ(GB)の面積及びエネルギー消費は、CACTIを使用してモデル化された活性化メモリ、重みメモリ、及び勾配メモリに分割される。グローバルバッファは奇数のバンクを有し、ストライドが1より大きい層のバンク競合を減らす。システム100(FPRaker)及びベースラインの両方の構成が、表2に示される。
【表2】
【0070】
システム100を評価するために、トレーニングの各エポックにおけるフォワードパス中及びバックワードパス中に、1つのランダムミニバッチのトレースが収集された。すべてのモデルは、報告されている最大トップ1精度を達成するのに十分な時間、トレーニングされた。トレースを収集するために、各モデルは、NVIDIA社のRTX 2080 Ti GPUでトレーニングされ、Pytorchのフォワードフック及びバックワードフックを使用して、各層の入力及び出力のすべてが保存された。BERTの場合、GLUEタスクに関するBERTベーストレーニング及び微調整トレーニングが追跡された。シミュレータはトレースを使用して実行時間をモデル化し、エネルギーをモデル化できるようにアクティビティ統計を収集した。
【0071】
システム100の実施形態は、入力のうちの1つを項シリアル方式で処理するので、システム100は、並列処理を使用して、より多くのパフォーマンスを抽出する。1つのアプローチでは、ISO計算面積制約(iso-compute area constraint)を使用して、ベースラインタイルと同一面積に適合できるPE122タイル数が特定され得る。
【0072】
比較された従来のPEは、8ペアのbfloat16値を同時に処理し、これらの合計を累積した。入力(A及びB)と出力のためにバッファを含めることができるため、データの再利用を時間的に活用することができる。データの再利用を空間的に活用するためにも、複数のPE122は、グリッド状に配置され、行及び列にわたりバッファ及び入力が共有され得る。システム100及びベースラインの両方は、8×8ベクトル行列乗算を実行する拡張されたGPU Tensor-Core的タイルを有するように構成され、64個のPE122が8×8のグリッド状に編成され、各PEが8つのMAC演算を並列に実行する。
【0073】
レイアウト後、計算面積のみを考慮すると、システム100の実施形態のタイルは、ベースラインタイルに対して、0.22%の面積を占める。表3は、タイルごとの対応する面積及び電力を報告する。したがって、ISO計算面積比較を実行するには、ベースラインアクセラレータは8タイルで構成される必要があり、システム100は36タイルで構成される必要がある。オンチップSRAMグローバルバッファの面積は、活性化、重み、及び勾配に関してそれぞれ、344mm
2、93.6mm
2、及び334mm
2である。
【表3】
【0074】
図10は、ベースラインに対するシステム100によるパフォーマンス向上を示す。平均して、システム100は、ベースラインの1.5倍のパフォーマンスを示す。研究された畳み込みベースのモデルでは、ResNet18-Qがシステム100から最も恩恵を受けており、ベースラインの2.04倍、パフォーマンスが向上している。このネットワークのトレーニングには、PACT量子化が組み込まれており、その結果、トレーニングプロセスを通した活性化及び重みのほとんどが、4b以下に収まり得る。これにより、項スパース性が高くなり、システム100により利用される。この結果は、システム100が特殊な量子化方法で利益をもたらすことができ、この目的のためにハードウェアも特殊化される必要はないことを示す。
【0075】
SNLI、NCF、及びBertは、全結合層で大半が占められる。全結合層では、異なる出力活性化間での重みの再利用はないが、トレーニングは、バッチ処理を利用して、同じ入力文の複数の入力(例えば単語)にわたる重みの再利用を最大化することができ、これにより、タイルPEの使用率が高まる。ビットスパース性の結果、加速化が生じる。例えば、SNLIの場合、そのビットスパース性が高いため、システム100は、ベースラインの1.8倍の加速化を達成する。
【0076】
図11は、研究されたモデルのそれぞれに関して、ベースラインアーキテクチャに対するシステム100の総エネルギー効率を示す。平均してシステム100は、計算ロジックのみを考慮すると、ベースラインと比べて1.4倍エネルギー効率が高く、すべてを考慮すると、1.36倍エネルギー効率が高い。エネルギー効率の改善は、パフォーマンス利益に密接に追随する。例えば、利益は、SNLI及びDetectron2では、約1.7倍高くなる。ResNet18-Qの量子化により、計算ロジックのエネルギー効率は、1.97倍高くなる。
図12は、ベースラインに正規化されたシステム100の消費エネルギーを、計算ロジック、オフチップデータ転送、及びオンチップデータ転送の3つの主要構成要素にわたる内訳で示す。システム100は、指数ベースデルタ圧縮に伴い、計算ロジック及びオフチップメモリのエネルギー消費が大幅に削減される。
【0077】
図13は、システム100がスキップする項の内訳を示す。これには、1)ゼロ項をスキップする場合と、2)浮動小数点表現の精度が限定されているため、範囲外となった非ゼロ項をスキップする場合と、の2つの場合がある。範囲外項をスキップすることにより、ResNet50-S2及びDetectron2の項スパース性が、それぞれ約10%及び約5.1%増加する。VGG16及びSNLIなどのスパース性の高い(ゼロ値を有する)ネットワークは、項スパース性の大部分がゼロ項に由来することから、範囲外項をスキップすることによる利益が最も少ない。これは、開始する項が少ないためである。ResNet18-Qでは、活性化及び重みが4bの値に効果的に量子化されるため、ほとんどの利益が、ゼロ項をスキップすることに由来する。
【0078】
図14は、トレーニングの3つのフェーズのそれぞれの加速化を示し、A×Wは、フォワードプロパゲーションであり、A×G及びG×Wは、バックプロパゲーションの重み勾配及び入力勾配をそれぞれ計算する。システム100は、3つのフェーズすべてに関して一貫してベースラインをパフォーマンスで上回っている。加速化は、項スパース性の量と、モデル、層、及びトレーニングフェーズにわたるA、W、及びGの値分布とに依存する。値が有する項が少ないほど、システム100がパフォーマンスを向上させる可能性は高くなる。しかし、PE122がサイクルごとに実行できるシフトは制限されているため(最大3ポジション)、値の内で項がどのように分散されるかが、値の処理に必要なサイクル数に影響する。このビヘイビアは、レーンにわたり同じPE122に、及び同じタイル内のPE122にわたり、当てはまる。通常、同時に処理される値のセットは、特定の項スパースパターンに変換される。いくつかの事例では、システム100は、項が互いに数値的に近いパターンを好み得る。
【0079】
図15は、研究されたすべてのネットワークに関して、ベースラインに対するシステム100の加速化を、経時的かつトレーニングプロセス全体を通して示す。測定は、3つの異なる傾向を示す。VGG16の場合、加速化は、最初の30エポックでより高く、その後は約15%低下して横ばいになる。ResNet18-Qの場合、加速化は、エポック30後に約12.5%増加し、安定する。これは、活性化及び重みを4ビット以下に量子化するようにPACTクリッピングハイパーパラメータが最適化されていることに起因し得る。残りのネットワークの場合、加速化は、トレーニングプロセス全体を通して安定した状態が維持される。概して、システム100のパフォーマンスは堅固であり、これによりすべてのトレーニングエポックにわたりパフォーマンス向上がもたらされることが、測定により示される。タイル編成の効果では、
図16に示されるように、タイルごとの行数を増やすと、平均6%パフォーマンスが低下する。このパフォーマンスの低下は、列あたりの多数のPE122間の同期が原因である。行数が増えると、より多くのPE122が、Aの値の同じセットを共有する。他よりも多くの項を有するAの値は、多数のPE122に影響を与えることとなり、処理が完了するまで待機する必要がある。各PE122は異なる組み合わせの入力ベクトルを処理するため、各PE122は、「項なし」ストールまたは「制限されたシフト」ストールなどのPE122内ストールにより、異なる影響を受け得る。
図17は、各構成における時間経過の内訳を示す。PE122間同期のストールが増加することにより、他のレーンのストール(「項なし」)も増加することがわかる。
【0080】
図3は、実施形態による、深層学習ネットワークのトレーニング中に積和ユニット(MAC)を加速するための方法300のフローチャートを示す。
【0081】
ブロック302にて、入力モジュール120は、MAC演算を行うAデータ及びBデータの2つの入力データストリームをそれぞれ受信する。
【0082】
ブロック304にて、指数モジュール124は、Aデータ及びBデータの指数のペアを加算して積指数を生成し、比較器を使用して最大指数を決定する。
【0083】
ブロック306にて、削減モジュール126は、累積の前に、Bの各仮数のシフトするべきビット数を、Aデータの対応項に積指数デルタを加算することにより特定し、加算器ツリーを使用してBのオペランドを単一の部分和に削減する。
【0084】
ブロック308にて、累積モジュール128は、最大指数を使用して対応する桁揃え値に部分和を加算し、累積値を特定する。
【0085】
ブロック310にて、累積モジュール128は、累積値を出力する。
【0086】
FPRakerによるトレーニングが精度に及ぼす効果を研究するために、例示的な実験では、バックエンドのOpenCLコンパイラに基づく機械学習フレームワークであるPlaidMLでのエンドツーエンドトレーニングの間、PE122のビットシリアル処理がエミュレートされた。PlaidMLは、トレーニング中、乗加算ごとに、強制的にmad()関数を使用させられた。PEの処理をエミュレートするために、mad()関数は、本開示の実施態様でオーバーライドされた。ResNet18は、CIFAR-10及びCIFAR-100のデータセットでトレーニングされた。第1の線は、PlaidMLにおいてFP32精度でネイティブにトレーニングした場合のトップ1検証精度を示す。ベースラインは、ビットパラレルMACをbfloat16のI/Oオペランド精度で実行し、これは、収束することが知られており、当技術分野で対応されている。
図18は、エミュレートされた両バージョンが、両データセットに関して、エポック60で、ネイティブトレーニングバージョンに対して0.1%以内の精度差で、収束することを示す。システム100は効果のない作業、すなわちベースラインMAC処理の最終結果に影響を与えない作業をスキップするため、このような結果は予期されることである。
【0087】
従来、トレーニングではすべての計算にbfloat16が使用される。いくつかの事例では、混合データ型122演算が使用され得、計算のうちのいくつかでは、固定小数点が代わりに使用される。その他の事例では、浮動小数点が使用され得、仮数部で使用されるビット数が、演算ごと及び層ごとで異なる。いくつかの事例では、ImagenetでAlexNet及びResNet18をトレーニングする際は、推奨される仮数部精度が使用され得る。
図19は、このアプローチに従うシステム100のパフォーマンスを示す。システム100は、層ごとに可変アキュムレータ幅を動的に利用して、アキュムレータ外にマッピングされた効果のない項をスキップして、全体のパフォーマンスを向上させ得る。層ごとにプロファイルされたアキュムレータ幅を使用してImageNetでResNet18をトレーニングすると、システム100の加速化は、A×W、G×W、A×Gに関して、それぞれ1.51倍、1.45倍、及び1.22倍向上する。固定アキュムレータ幅を使用したトレーニングで可能な1.13倍と比較して、これは、ベースラインに対し1.56倍の全体的な加速化を達成する。bfloat16コンテナの使用中に仮数部の長さを調整すると、仮数部にゼロビットのサフィックスが表示される。
【0088】
有利なことに、システム100は、複数の積和浮動小数点演算を実行することができ、これらすべては、単一の最終値に寄与する。処理要素122は、ニューラルネットワークをトレーニングするためのアクセラレータの構築ブロックとして使用され得る。システム100は、トレーニング中にすべての値が示す比較的高い項レベルスパース性を利用する。本実施形態は、システム100をトレーニングに使用することを説明したが、推論にも使用できることを理解されたい。システム100は、浮動小数点を使用するモデル、例えば言語システムまたは推奨システムを処理するモデルに、特に有利であり得る。
【0089】
有利なことに、システム100により、効率的な精密トレーニングが可能となる。量子化に対する層の感度に応じて、トレーニング中、各層に異なる精度が割り当てられ得る。さらに、トレーニングでは、低い精度から開始し、変換(conversion)付近のエポックごとの精度は高くすることができる。システム100により、異なる精度に対する動的適応が可能となり得、パフォーマンス及びエネルギー効率が向上し得る。
【0090】
システム100を使用して、固定小数点演算を実行することもできる。よって、浮動小数点を使用して演算のうちのいくつかが実行され、固定小数点を使用して演算のうちのいくつかが実行されるトレーニングを、システム100を使用して実施することができる。固定小数点演算を実行するために、(1)指数は、既知の固定値、通常はゼロに相当する値に設定され、(2)外部上書き信号は、1である暗黙の先頭ビットを仮数が含まないことを示す。さらに、トレーニング中に実行される演算は、推論中に実行される演算のスーパーセットであり得るため、システム100は、推論に使用することができる。
【0091】
本発明は、特定の具体的な実施形態を参照して説明されたが、これらの様々な変更は、本明細書に添付の特許請求の範囲に概説される本発明の趣旨及び範囲から逸脱することなく、当業者には明白であろう。
【国際調査報告】