(57)【要約】  入力スパーシティを活用するニューラル・ネットワーク・アクセラレータ・タイルを説明する。このタイルは、各重みレーンに重みおよび重み選択メタデータを供給する重みメモリと、各活性化レーンに再配置された活性化値のセットを供給するために、入力活性化値のセットを受け取り、入力活性化値のセットを再配置する活性化選択ユニットと、活性化レーンおよび重みレーンの対ごとに少なくとも１つのマルチプレクサを含むマルチプレクサのセットであって、各マルチプレクサは、重みレーン重み選択メタデータに基づいて、再配置された活性化値の活性化レーン・セットから活性化レーンの組合せ活性化値を選択するように構成される、マルチプレクサのセットと、マルチプレクサごとに少なくとも１つの組合せユニットを含む組合せユニットのセットであって、各組合せユニットは、重みレーン積を出力するために、活性化レーン組合せ値を重みレーン重みと組み合わせるように構成される、組合せユニットのセットとを含む。【選択図】図８
2021515300.tif 000002
【特許請求の範囲】
【請求項１】
重みレーンのセットと活性化レーンのセットとを定義する、入力スパーシティを活用するニューラル・ネットワーク・アクセラレータ・タイルであって、各重みレーンは、活性化レーンに対応し、前記タイルは、
重みレーンの前記セットの各重みレーンに重みおよび重み選択メタデータを供給する重みメモリと、
各活性化レーンに再配置された活性化値のセットを供給するために、入力活性化値のセットを受け取り、入力活性化値の前記セットを再配置する活性化選択ユニットと、
マルチプレクサのセットであって、マルチプレクサの前記セットは、活性化レーンおよび重みレーンの対ごとに少なくとも１つのマルチプレクサを含み、各マルチプレクサは、前記重みレーン重み選択メタデータに基づいて、再配置された活性化値の前記活性化レーン・セットから前記活性化レーンの組合せ活性化値を選択するように構成される、マルチプレクサのセットと、
組合せユニットのセットであって、組合せユニットの前記セットは、マルチプレクサごとに少なくとも１つの組合せユニットを含み、各組合せユニットは、重みレーン積を出力するために、前記活性化レーン組合せ値を前記重みレーンと組み合わせるように構成される、組合せユニットのセットと
を含む、タイル。
【請求項２】
前記活性化選択ユニットに入力活性化値の前記セットを供給する活性化メモリをさらに含む、請求項１に記載のタイル。
【請求項３】
マルチプレクサの前記セットの各マルチプレクサは、再配置された活性化値の前記対応するセットからおよび追加レーン活性化値のセットから、前記組合せ活性化を選択するように構成され、追加レーン活性化値の前記セットは、少なくとも１つの追加の活性化レーンの少なくとも１つの再配置された活性化値から形成される、請求項１に記載のタイル。
【請求項４】
少なくとも２つの８つのレーン積を受け取る加算器ツリーをさらに含む、請求項１に記載のタイル。
【請求項５】
重みレーンの前記セットの前記重みレーン重みは、少なくとも１つのニューラル・ネットワーク・フィルタを定義する、請求項１に記載のタイル。
【請求項６】
前記組合せユニットは、乗算器、加算器、およびシフタのうちの１つである、請求項１に記載のタイル。
【請求項７】
請求項１に記載の少なくとも２つのタイルを含むニューラル・ネットワーク・アクセラレータ。
【請求項８】
再配置された活性化値の各セットは、標準重み活性化値と少なくとも１つのルックアヘッド活性化値とを含む、請求項１に記載のタイル。
【請求項９】
活性化効率を活用するアクセラレータ構造上で実施される、請求項１に記載のタイル。
【請求項１０】
初期活性化値のセットは、活性化ビットである、請求項１に記載のタイル。
【請求項１１】
初期活性化値のセットは、符号付きの２のべきである、請求項１に記載のタイル。
【請求項１２】
マルチプレクサの前記セットは、均一なサイズのマルチプレクサのセットである、請求項３に記載のタイル。
【請求項１３】
前記均一なサイズは、２のべきである、請求項１２に記載のタイル。
【請求項１４】
再配置された活性化値の前記セットのサイズは、追加レーン活性化値の前記セットのサイズより大きい、請求項１３に記載のタイル。
【請求項１５】
再配置された活性化値の前記セットおよび追加レーン活性化値の前記セット  活性化値の組み合わされたセット、活性化値の前記組み合わされたセットは、８つの活性化を含む、請求項１２に記載のタイル。
【請求項１６】
追加レーン活性化値の前記セットは、少なくとも２つの追加活性化レーンのそれぞれからの少なくとも１つの再配置された活性化値から形成される、請求項３に記載のタイル。
【請求項１７】
前記少なくとも２つの追加活性化レーンは、不連続活性化レーンである、請求項１６に記載のタイル。
【請求項１８】
前記タイルは、精度値によって定義される要求される精度までビット単位で記憶されたパックされた活性化値の少なくとも１つのセットとして入力活性化値の前記セットを受け取るように構成され、前記タイルは、パックされた活性化値の前記少なくとも１つのセットをアンパックするように構成される、請求項１に記載のタイル。
【請求項１９】
パックされた活性化値の前記少なくとも１つのセットは、パックされた活性化値の第１のセットおよびパックされた活性化値の第２のセットを含み、パックされた活性化値の前記第１のセットは、第１の精度値によって定義される第１の要求される精度までビット単位で記憶され、パックされた活性化値の前記第２のセットは、第２の精度値によって定義される第２の要求される精度までビット単位で記憶され、前記第１の精度値は、前記第２の精度値と独立である、請求項１８に記載のタイル。
【請求項２０】
前記タイルは、入力活性化値の前記セットのパックされた活性化値の各セットに対応するビット・ベクトルを含むビット・ベクトルのセットを受け取るように構成され、前記タイルは、前記対応するビット・ベクトルによって示されるとおりに０値を挿入するためにパックされた活性化値の各セットをアンパックするように構成される、請求項１８に記載のタイル。
【請求項２１】
前記タイルは、精度値によって定義される要求される精度までビット単位で記憶されたパックされた重みレーン重みの少なくとも１つのセットとして重みレーンの前記セットの前記重みレーン重みを受け取るように構成され、前記タイルは、重みレーン重みの前記少なくとも１つのセットをアンパックするように構成される、請求項１に記載のタイル。
【請求項２２】
活性化レーンの前記セットは、列活性化レーンの少なくとも２つのセットであり、列活性化レーンの各セットは、各活性化レーンが重みレーンに対応する列を形成し、前記タイルは、少なくとも１つの重みレーン積を少なくとも２つの列の間で転送するために前記列の間の少なくとも１つの接続を含む、請求項１に記載のタイル。
【請求項２３】
ニューラル・ネットワーク内でのビット直列計算のシステムであって、
ニューラル・ネットワーク内でビット直列計算を実行するために請求項１に従って構成された１つまたは複数のビット直列タイルであって、各ビット直列タイルは、入力ニューロンおよびシナプスを受け取り、前記入力ニューロンは、入力活性化値の少なくとも１つのセットを含み、前記シナプスは、重みの少なくとも１つのセットと重み選択メタデータの少なくとも１つのセットとを含み、前記１つまたは複数のビット直列タイルは、出力ニューロンを生成し、各出力ニューロンは、少なくとも１つの重みレーン積を使用して形成される、１つまたは複数のビット直列タイルと、
ニューロンを記憶し、ディスパッチャおよびリデューサを介して前記１つまたは複数のビット直列タイルと通信している、活性化メモリと
を含み、前記ディスパッチャは、前記活性化メモリからニューロンを読み取り、第１のインターフェースを介して前記１つまたは複数のビット直列タイルに前記ニューロンを通信し、
前記ディスパッチャは、メモリからシナプスを読み取り、第２のインターフェースを介して前記１つまたは複数のビット直列タイルに前記シナプスを通信し、
前記レデューサは、前記１つまたは複数のビット直列タイルから前記出力ニューロンを受け取り、第３のインターフェースを介して前記活性化メモリに前記出力ニューロンを通信し、
前記第１のインターフェースおよび前記第２のインターフェースの一方は、前記１つまたは複数のビット直列タイルに前記ニューロンまたは前記シナプスをビット直列に通信し、前記第１のインターフェースおよび前記第２のインターフェースの他方は、前記１つまたは複数のビット直列タイルに前記ニューロンまたは前記シナプスをビット並列に通信する
システム。
【請求項２４】
ニューラル・ネットワーク内での層の計算のシステムであって、
ニューラル・ネットワーク内で計算を実行するために請求項１に従って構成された１つまたは複数のタイルであって、各タイルは、入力ニューロンおよびシナプスを受け取り、前記入力ニューロンは、それぞれ、少なくとも１つのオフセットを含み、各オフセットは、少なくとも１つの活性化値を含み、前記シナプスは、重みの少なくとも１つのセットと重み選択メタデータの少なくとも１つのセットとを含み、前記１つまたは複数のタイルは、出力ニューロンを生成し、各出力ニューロンは、少なくとも１つの重みレーン積を使用して形成される、１つまたは複数のタイルと、
ニューロンを記憶し、ディスパッチャおよび符号器を介して前記１つまたは複数のタイルと通信している活性化メモリと
を含み、前記ディスパッチャは、前記活性化メモリからニューロンを読み取り、前記ニューロンを前記１つまたは複数のタイルに通信し、前記ディスパッチャは、メモリからシナプスを読み取り、前記シナプスを前記１つまたは複数のタイルに通信し、
前記符号器は、前記１つまたは複数のタイルから前記出力ニューロンを受け取り、それらを符号化し、前記出力ニューロンを前記活性化メモリに通信し、
前記オフセットは、非０ニューロンだけに対して計算を実行するために前記タイルによって処理される
システム。
【請求項２５】
活性化値のセットを受け取り、活性化値の前記セットをマルチプレクサ入力値の少なくとも１つのセットに再配置する活性化選択ユニットと、
少なくとも１つの重みおよび少なくとも１つの重み選択メタデータを受け取る重み値レセプタのセットと、
マルチプレクサ入力値の前記少なくとも１つのセットと重み選択メタデータの少なくとも１つのセットとのうちの少なくとも１つを受け取る少なくとも１つのマルチプレクサであって、前記少なくとも１つのマルチプレクサは、マルチプレクサ入力値の前記少なくとも１つのセットから少なくとも１つの組合せ活性化値を選択するために前記少なくとも１つの重み選択メタデータを適用するように構成される、少なくとも１つのマルチプレクサと、
少なくとも１つの積を作るために前記少なくとも１つの重みに前記少なくとも１つの組合せ活性化値を適用する少なくとも１つのコンビネータと、
前記少なくとも１つの積を出力する少なくとも１つの積出力ディスペンサと
を含むアクセラレータ・タイル。
【請求項２６】
請求項２５に記載のタイルのうちの少なくとも１つを含むニューラル・ネットワーク・アクセラレータ。
【請求項２７】
活性化値の前記セットを前記活性化選択ユニットに供給する活性化メモリをさらに含む、請求項２５に記載のアクセラレータ・タイル。
【請求項２８】
マルチプレクサ入力値の前記少なくとも１つのセットは、マルチプレクサ入力値の少なくとも２つのセットであり、前記少なくとも１つのマルチプレクサは、マルチプレクサ入力値の前記少なくとも２つのセットのうちの少なくとも１つとマルチプレクサ入力値の少なくとも１つの他方のセットからの少なくとも１つの活性化値とを受け取るように構成される、請求項２５に記載のアクセラレータ・タイル。
【請求項２９】
前記コンビネータは、乗算器、加算器、およびシフタのうちの少なくとも１つである、請求項２５に記載のアクセラレータ・タイル。
【請求項３０】
マルチプレクサ入力値の各セットは、標準活性化値と少なくとも１つのルックアヘッド活性化値とを含む、請求項２５に記載のアクセラレータ・タイル。
【請求項３１】
活性化効率を活用するアクセラレータ構造上で実施される、請求項２５に記載のアクセラレータ・タイル。
【請求項３２】
活性化値の前記セットは、活性化ビットである、請求項２５に記載のアクセラレータ・タイル。
【請求項３３】
活性化値の前記セットは、符号付きの２のべきである、請求項２５に記載のアクセラレータ・タイル。
【請求項３４】
前記少なくとも１つのマルチプレクサの各マルチプレクサのサイズは、２のべきである、請求項２５に記載のアクセラレータ・タイル。
【請求項３５】
前記少なくとも１つのマルチプレクサの各マルチプレクサのサイズは、８である、請求項３４に記載のアクセラレータ・タイル。
【請求項３６】
トレーニングのための請求項１に記載のニューラル・ネットワーク・アクセラレータ・タイルの使用。
【請求項３７】
トレーニングのための請求項２５に記載のアクセラレータ・タイルの使用。
【請求項３８】
前記重みレーン重み選択メタデータは、マルチプレクサ選択信号を指定するテーブルをインデクシングする、請求項１に記載のタイル。
【請求項３９】
前記重みレーン重み選択メタデータは、マルチプレクサ選択信号を指定するテーブルをインデクシングする、請求項２５に記載のアクセラレータ・タイル。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的にはニューラル・ネットワークのハードウェア・アーキテクチャに関し、より具体的には、ニューラル・ネットワーク・ハードウェア・アクセラレータに関する。
【背景技術】
【０００２】
深層学習ニューラル・ネットワーク（ＤＮＮ）は、ハイエンド・サーバからモバイル・システムおよび組み込みシステムまでのさまざまなコンピューティング・プラットフォーム上で実行する増加する個数の応用例を見出してきた。ＤＮＮ作業負荷の増加する重要性とその高い計算需要およびメモリ需要とを考慮して、特殊化されたハードウェア・アクセラレータが現れた。
【０００３】
画像ベースの応用例を支配してきた畳み込みニューラル・ネットワーク（ＣＮＮ）など、複数のタイプのＤＮＮが存在する。たとえば、ＣＮＮは、画像またはビデオ・フレームの推論に使用される場合があり、ＣＮＮ、特にＣＮＮの実行時間を支配する傾向がある畳み込み層を用いる推論の加速が、しばしば望まれる。
【０００４】
ニューラル・ネットワークの加速の分野での最近の開発は、ハードウェア実施態様に向かう推進を含む。たとえば、高いネットワーク接続性または他の特徴を有するなど、ニューロンの挙動をより密接にエミュレートするように設計された回路が開発された。
【発明の概要】
【０００５】
本発明の一実施形態によれば、重みレーンのセットと活性化レーンのセットとを定義する、入力スパーシティを活用するニューラル・ネットワーク・アクセラレータ・タイルであって、各重みレーンは、活性化レーンに対応し、タイルは、重みレーンのセットの各重みレーンに重みおよび重み選択メタデータを供給する重みメモリと、各活性化レーンに再配置された活性化値のセットを供給するために、入力活性化値のセットを受け取り、入力活性化値のセットを再配置する活性化選択ユニットと、マルチプレクサのセットであって、マルチプレクサのセットは、活性化レーンおよび重みレーンの対ごとに少なくとも１つのマルチプレクサを含み、各マルチプレクサは、重みレーン重み選択メタデータに基づいて、再配置された活性化値の活性化レーン・セットから活性化レーンの組合せ活性化値を選択するように構成される、マルチプレクサのセットと、組合せユニットのセットであって、組合せユニットのセットは、マルチプレクサごとに少なくとも１つの組合せユニットを含み、各組合せユニットは、重みレーン積を出力するために、活性化レーン組合せ値を重みレーンと組み合わせるように構成される、組合せユニットのセットとを含む、タイルが提供される。
【０００６】
本発明のさらなる実施形態によれば、活性化値のセットを受け取り、活性化値のセットをマルチプレクサ入力値の少なくとも１つのセットに再配置する活性化選択ユニットと、少なくとも１つの重みおよび少なくとも１つの重み選択メタデータを受け取る重み値レセプタのセットと、マルチプレクサ入力値の少なくとも１つのセットと重み選択メタデータの少なくとも１つのセットとのうちの少なくとも１つを受け取る少なくとも１つのマルチプレクサであって、少なくとも１つのマルチプレクサは、マルチプレクサ入力値の少なくとも１つのセットから少なくとも１つの組合せ活性化値を選択するために少なくとも１つの重み選択メタデータを適用するように構成される、少なくとも１つのマルチプレクサと、少なくとも１つの積を作るために少なくとも１つの重みに少なくとも１つの組合せ活性化値を適用する少なくとも１つのコンビネータと、少なくとも１つの積を出力する少なくとも１つの積出力ディスペンサとを含むアクセラレータ・タイルが提供される。
【０００７】
本願による他の態様および特徴は、添付図面に関連して本発明の実施形態の以下の説明を再検討する時に、当業者に明白になる。
【０００８】
本発明の原理は、本発明の原理および態様を組み込んだ１つまたは複数の例示的実施形態の実例として提供される添付図面を参照して、よりよく理解することができる。
【図面の簡単な説明】
【０００９】
【図１】例の畳み込み層を示す概略図である。
【図２】例の擬似コード畳み込み層計算を示す図である。
【図３】密ニューラル・ネットワーク・アクセラレータ・タイルを示す概略図である。
【図４Ａ−４Ｂ】ＣＮＮ機能性を示す例の概略図である。
【図５Ａ−５Ｃ】一実施形態による、ルックアヘッド機能性を示す概略図である。
【図６Ａ−６Ｂ】一実施形態による、ルックアサイド機能性を示す概略図である。
【図７Ａ−７Ｃ】一実施形態による、重みスキップ（ｗｅｉｇｈｔ  ｓｋｉｐｐｉｎｇ）アクセラレータ・タイル・アーキテクチャを示す概略図である。
【図８】一実施形態による、無効な活性化ビットをスキップする能力を追加したアクセラレータ・タイル・アーキテクチャを示す概略図である。
【図９】一実施形態による、マルチタイル・アクセラレータを示す概略図である。
【図１０】３つの実施形態による、ＡｌｅｘＮｅｔ−ＥＳに対する性能改善を示す図である。
【図１１】３つの実施形態による、ＧｏｏｇＬｅＮｅｔ−Ｅｓに対する性能改善を示す図である。
【図１２】重みスキップだけを有する実施形態による、スパース昇格ウィンドウを用いる性能を示す図である。
【図１３Ａ−１３Ｂ】２つの実施形態の構成のエネルギ効率を比較する図である。
【図１４】５つの圧縮方式実施形態の性能を示す図である。
【図１５】マルチプレクサ選択テーブル（ＭＳＴ）が各フィルタ・レーンに導入される実施形態を示す概略図である。
【発明を実施するための形態】
【００１０】
図面では、同様の符号が、同様のまたは対応する要素を示す。
【００１１】
以下の説明および本明細書で説明される実施形態は、本発明の原理の特定の実施形態の例として提供される。これらの例は、これらの原理および本発明の、限定ではなく例のために提供される。この説明では、同様の部分は、本明細書および図面の全体を通じて、同一のそれぞれの参照番号を用いてマークされる。図面は、必ずしも原寸通りではなく、いくつかの場合に、比率は、本発明のある特徴をより明瞭に示すために誇張されている場合がある。
【００１２】
この説明は、ニューラル・ネットワークのハードウェア・アクセラレータに関し、畳み込みネットワーク（ＣＮＮ）を用いる推論に使用される構成を特に参照して説明される。
【００１３】
ＣＮＮは、しばしば、層の連鎖または有向非巡回グラフを含み、畳み込み層（ＣＶＬ）が、多くの画像関連応用例で実行時間を支配する。図１に示された実施形態では、畳み込み層１０００は、Ａｘ×Ａｙ×Ｃ活性化配列１１００を受け取り、これが、Ｋ個の重みフィルタ配列のセット１２００を用いて畳み込まれ、セット１２００は、Ｆ０からＦＫ−１までのＦｘ×Ｆｙ×Ｃフィルタ配列であり、Ｏｘ×Ｏｙ×Ｋ出力活性化配列１３００を作る。出力活性化配列１３００の各出力活性化ｏ（ｘ，ｙ，ｋ）は、フィルタＦ＜ｕ＞ｋと、入力活性化配列１１００のＦｘ×Ｆｙ×Ｃ部分配列ウィンドウとのドット積である。ウィンドウは、ストライドＳを使用して等しい間隔を設けられ、［Ａｘ／Ｓ］×［Ａｙ／Ｓ］＝Ｏｘ×Ｏｙをもたらす。Ｒｅｃｔｉｆｉｅｒ  Ｌｉｎｅａｒ  Ｕｎｉｔ（ＲｅＬＵ）などの活性化関数が、各出力活性化に適用される。しばしば、図１に示された実施形態などの層は、出力活性化配列を作るのにドット積計算の１００秒から１０００秒を必要とし、１００秒から１０００秒のそれぞれは、入力重み／活性化対のものである。
【００１４】
図２に示されているように、一実施形態では、ＣＶＬを、６段にネストされたループとして実施することができる。いくつかの実施形態では、ループの乗算が独立であり、ループの異なる順列が同一の出力活性化配列を作り、いくつかの順列で、計算を並列に実行することができる。
【００１５】
ＣＶＬは、しばしば、特定のタイプのニューラル・ネットワーク内の特定のタイプの層と考えられるが、他のタイプの層を、ＣＶＬの変形として実施することができる。たとえば、全結合層を、単一のウィンドウを有し、フィルタおよび入力が同一次元を有するＣＶＬとして実施することができる。
【００１６】
図２の６重にネストされたループによって実施されるＣＶＬは、すべての重みおよび活性化を処理するので、密ＣＮＮを処理するかのように活性化および重みを処理した。しかし、実際には、一部の重みは０であり、一部の活性化は、０または０として扱うのに十分に０に近く、したがって無効である。多くのニューラル・ネットワークは、さまざまな理由からスパースであり、たとえば、しばしばＣＮＮの再トレーニングを必要とする重み枝刈りも、重みスパーシティ（ｗｅｉｇｈｔ  ｓｐａｒｓｉｔｙ）に寄与する可能性がある。
【００１７】
ハードウェア・アクセラレータの実施形態は、重みと活性化との一方または両方のスパーシティなどのスパーシティを活用する。本発明の実施形態では、重みスパーシティが直接に活用され、活性化スパーシティは間接に活用される。諸実施形態は、有効な活性化に関してさえ利益を生じることができる。
【００１８】
図１に示されたＣＶＬを処理するなど、密ＣＮＮを処理するデータ並列ハードウェア・アクセラレータ３０００の例を、図３に示す。データ並列ハードウェア・アクセラレータ３０００は、複数サイクルで重みおよび活性化を処理し、１サイクルあたりｋ個の出力活性化を作る。データ並列ハードウェア・アクセラレータ３０００は、Ｎ個の活性化の同一のセットに対して並列に動作するｋ個の内積ユニット（ＩＰＵ）３１００を含む。各入力活性化は、次のように、フィルタのセット１２００のフィルタあたり１つのｋ個の重みを乗算される。各ＩＰＵ  ３１００は、１サイクルあたり、入力活性化あたり１つのＮ個の重みのベクトルを受け入れ、Ｎ個の積を計算し、加算器ツリーを介してこれらを縮小し、その結果を出力レジスタに蓄積する。通常は複数のサイクルにわたって、ウィンドウ全体が処理された後に、出力レジスタは、対応する出力活性化を含む。
【００１９】
データ並列ハードウェア・アクセラレータ３０００は、それぞれ重みおよび活性化をアクセラレータ３０００に供給する重みメモリ３２００および活性化メモリ３３００を含む。Ｙ．Ｃｈｅｎ，Ｔ．Ｌｕｏ，Ｓ．Ｌｉｕ，Ｓ．Ｚｈａｎｇ，Ｌ．Ｈｅ，Ｊ．Ｗａｎｇ，Ｌ．Ｌｉ，Ｔ．Ｃｈｅｎ，Ｚ．Ｘｕ，Ｎ．Ｓｕｎ，およびＯ．Ｔｅｍａｍ、“Ｄａｄｉａｎｎａｏ：  Ａ  ｍａｃｈｉｎｅ−ｌｅａｒｎｉｎｇ  ｓｕｐｅｒｃｏｍｐｕｔｅｒ”、Ｍｉｃｒｏａｒｃｈｉｔｅｃｔｕｒｅ（ＭＩＣＲＯ），２０１４  ４７ｔｈ  Ａｎｎｕａｌ  ＩＥＥＥ／ＡＣＭ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ，６０９〜６２２頁、２０１４年１２月で開示された実施形態に類似する図示の実施形態では、重みメモリ３２００および活性化メモリ３３００は、一時に層全体を保持するのに十分に大きく、重みメモリ３２００は、単一の幅広い読取ポートを介して１サイクルあたりＮ×ｋ個の重みを供給でき、活性化メモリ３３００は、幅広い読取ポートを介して１サイクルあたりＮ個の活性化を供給でき、重みバッファおよび活性化バッファは、重みメモリ３２００および活性化メモリ３３００のレイテンシを隠蔽し、出力活性化バッファは、結果を収集した後に、ニューラル・ネットワーク内の次の層の活性化メモリ３３００にそれらを書き戻す。図示されているように、アクセラレータ３０００は、推論アクセラレータの多くの実施形態と同様に、活性化および重みを表すのに１６ビット固定小数点フォーマットを使用する。図３に示された実施形態は、複数のタイルが存在する場合に、それらのすべてが同一の活性化メモリ３３００に接続され、活性化メモリ３３００が、すべてのタイルに１サイクルあたりＮ個の活性化のブロックをブロードキャストすることを前提とする。
【００２０】
図４Ａおよび図４Ｂは、図３のアクセラレータ３０００のＩＰＵ  ３１００が活性化およびステップをどのように処理するのかの例を示し、ここで、Ｎは４にセットされ、ｋは１にセットされている。活性化は、
【数１】
2021515300.tif 000003
と表され、重みは、
【数２】
2021515300.tif 000004
と表され、ここで、ｌａｎｅは、それらが現れる活性化列および重み行を表し、ｓｔｅｐは、それらが乗算される時間的な順序を表す。各ステップが単一のサイクルを要すると仮定すると、重みのセットが図４Ａのように密であるのか図４Ｂのようにスパースであるのかにかかわりなく、アクセラレータ３０００は、４サイクルで１６個の積を作る。これは、積が自由にスケジューリングされる場合に、図４Ｂの例で要求される６つの積を２サイクルでおこなえるという事実にもかかわらず、そうである。本発明の実施形態は、重みおよび活性化の制限されないスケジューリングという複雑さを回避しながら、無効な重みを有する積を除去する。
【００２１】
本発明の実施形態は、有効な重みを時間的に静的に昇格させ、そうでなければ無効な重みを処理しているはずの時にそれらを処理することによって、無効な重みを除去する。ソフトウェア・スケジューリング・パスは、処理の前に重みを再配置し、その結果、重みが、実行時にフェッチされる時に右のレーンおよびステップに現れるようにする。その結果、そのような実施形態のタイルは、関連する重みメモリへの単一の幅広いアクセスを用いて、１ステップあたりに、それが必要とするｋ×Ｎ個の重みのすべてにアクセスすることができる。各有効な重みは、実行時に適当な活性化とマッチングされ得るようにするために、元の密な重みスケジュール内での位置を識別する狭いメタデータを保持する。
【００２２】
諸実施形態では、重みスケジューリング柔軟性は、２つのフィルタ間重み移動すなわちルックアヘッド移動およびルックアサイド移動だけが許容されるスケジューリングを可能にすることによるなど、エネルギおよび面積の効率とバランスをとられ得る。ルックアヘッド移動は、無効な重みｗ［ｌａｎｅ，ｓｔｅｐ−ｈ］を置換するために有効な重みｗ［ｌａｎｅ，ｓｔｅｐ］を進める（ｈは、アクセラレータ・アーキテクチャ内で使用可能にされなければならない活性化値の個数にリンクされたルックアヘッド深さ）など、無効な重みを置換するために有効な重みがステップにおいて前進することを可能にする。ルックアサイド移動は、有効な重みが異なるレーン内の無効な重みを置換することを可能にし、たとえば、無効な重みｗ［（ｌａｎｅ＋ｄ）ＭＯＤ（Ｎ−１），  ｔｅｐ−１］を置換するために、有効な重みｗ［ｌａｎｅ，ｓｔｅｐ］を１時間ステップ前進させ、ｄレーンだけシフトすることができる。
【００２３】
図５Ａ〜図５Ｃは、図４Ｂに示されたスパース・フィルタを適用するアクセラレータ５０００のルックアヘッド重みスケジューリングの例の概略図を示す。図５Ａ〜図５Ｃに示されているように、ｈ＝１をセットすることは、実行時間を４サイクルから３に短縮する。図４Ａ〜図４Ｂのアクセラレータ実施形態と同様に、図５Ａ〜図５Ｃのアクセラレータ５０００は、１サイクルあたり４つの積を作ることができる。ルックアヘッドの使用は、その中で有効な重みが同一レーン内に現れる無効な重みより昇格され得るｈ＋１のスライディング・ウィンドウをアクセラレータ５０００が確立することを可能にする。
【００２４】
図５Ａに示されたサイクル０では、ルックアヘッド・ウィンドウ５１００は、重みレーン２を利用できず、焦げる  重みｗ［２，２］は、ルックアヘッド距離２であり、ｈは１にセットされる。図５Ｂでは、サイクル１に、有効な重みｗ［１，１］が処理されており、したがって、ルックアヘッド・ウィンドウ５１００は、アクセラレータ５０００のリーチをステップ１＝ｈまたは２に延長する。これは、アクセラレータ５０００が、無効な重みｗ［２，１］を置換するために有効な重みｗ［２，２］を昇格することを可能にするが、重みｗ［３，３］は、ルックアヘッド・ウィンドウ５１００の外のままである。しかし、ステップ３で処理されるべき重みがもはやないので、アクセラレータ５０００は、図５Ｃに示されているように、サイクル２で重みｗ［３，３］が処理されるように、ステップ＝３に２ステップだけ進む。
【００２５】
図５Ａ〜図５Ｃに示されているように、レーン内の重みの静的昇格は、アクセラレータ５０００が対応する活性化へのアクセスを実行時に有することを必要とする。図示されているように、このペアリングを可能にするために、アクセラレータ５０００は、ルックアヘッド・ウィンドウ５１００全体のすべての活性化へのアクセスを有する。ｈが１にセットされているので、各サイクルにアクセラレータ５０００から使用可能にされる２つの活性化レーンがある。アクセラレータ５０００は、重みレーンごとの２対１マルチプレクサを介して適当な活性化を選択し、このマルチプレクサの制御信号は、重みスケジュールがルックアヘッド機能のために変更される時に静的に決定され、制御信号は、対応する重みと一緒に記憶される。
【００２６】
アクセラレータ５０００は、ｈのルックアヘッド・ウィンドウの適当な活性化を選択するために（ｈ＋１）対１マルチプレクサごとにｈ個の余分の活性化レーンを使用し、図示のｈは、１にセットされている。さまざまな実施形態では、活性化のより幅広いグループのサポートは、コストおよび特にアクセラレータの構成の変動につながる。活性化レーンが、アクセラレータの他の実施形態では１タイルあたりｋ個のフィルタの間で共有されるので、活性化レーンを含めることのコストは、しばしば、複数の重みレーンにまたがって償却され得る。多くの場合に、アクセラレータにルックアヘッド構造を適用することの利益は、２以下のｈを用いて入手可能である。
【００２７】
図６Ａ〜図６Ｂは、ルックアサイド構造を使用するアクセラレータ６０００の概略図である。アクセラレータ５０００のルックアヘッド構造によって可能にされるサイクル削減は、最多の有効な重みを有するレーン内の有効な重みの個数までに制限される。アクセラレータ６０００のルックアサイド構造は、アクセラレータ６０００があるレーン内で別のレーンの重みを処理することを可能にし、アクセラレータ６０００が、隣接する、よりスパースに投入されたレーンの時間およびレーン・ステップで、元の重み構造のより密に投入されたレーンの重みを処理することを可能にする。
【００２８】
アクセラレータ６０００は、ｄが１にセットされたルックアサイド構造を使用する。図６Ａに示されているように、サイクル０で、レーン２は、レーン１からの重みｗ［１，１］を処理し、アクセラレータ６０００のレーン２が、ステップ０でアイドルのままになるのではなく重みを処理することを可能にする。これは、アクセラレータ６０００が、２ステップで重みのセットを処理することをも可能にする。というのは、ｈ＝１のルックアヘッドをも使用する時に、サイクル１で、ステップ２に進み、重みｗ［２，２］と重みｗ［３，３］との両方を処理することができるからである。したがって、アクセラレータ６０００は、ルックアヘッド構造およびルックアサイド構造を使用し、ｈ＝ｄ＝１をセットすることによって、最小のサイクル数で図４Ｂの重みのセットを処理することができる。
【００２９】
アクセラレータ６０００は、ｈ＝１のルックアヘッド構造を使用したので、各時間ステップに各重みレーンから使用可能な２つの活性化レーンを有する。その結果、ｄ＝１のルックアサイド構造の使用は、アクセラレータ６０００が追加の活性化レーンを提供されることを必要とせず、アクセラレータ６０００は、より多くの入力を有する活性化マルチプレクサだけを必要とする。アクセラレータ６０００は、ｈにセットされたルックアサイドおよびｄにセットされたルックアヘッドのために（ｈ＋ｄ＋１）対１マルチプレクサを使用する。これらのマルチプレクサのデータ入力接続は、静的に決定され、規則的である。アクセラレータ５０００と同様に、アクセラレータ６０００のマルチプレクサの制御信号は、静的に決定され、重みと一緒に記憶され、ｌｇ（ｈ＋ｄ＋１）ビットを必要とする。アクセラレータ変形形態では、高められたｄ値は、より高いスケジューリング柔軟性を可能にする可能性があるが、高められた相互接続コストを犠牲にする可能性がある。
【００３０】
図７Ａ〜図７Ｃは、重みスキップ・アクセラレータ・タイル７０００の構造を示す。アクセラレータ・タイル７０００は、ｋ個のフィルタについて並列に１フィルタあたりＮ個の結果を処理する。タイル７０００は、活性化が活性化メモリ７２００によって供給される時にこれをバッファリングする活性化選択ユニット（ＡＳＵ）７１００を含む。ＡＳＵ  ７１００は、活性化を再配置し、その結果、重みスキップ・ユニット（ＷＳＵ）７３００が、適当な活性化を簡単に選択できるようになる。
【００３１】
ＷＳＵ  ７３００のＷＳＵスライス７３１０を、図７Ｂにさらに詳細に示す。ＷＳＵ  ７３００は、１フィルタあたり１つのスライスを含み、１タイルあたり合計ｋ個のスライスを含む。アクセラレータ７０００のＷＳＵスライス７３１０は、単一の重みメモリ７４００ポートを介して、事前にスケジューリングされた重みの列を、そのマルチプレクサ選択メタデータと一緒に読み取る。ＷＳＵ  ７３００は、１アクセスあたり、Ｎ×ｋ重み／メタデータ対と活性化レーン制御（ＡＬＣ）フィールドとを読み取る。図示されているように、アクセラレータ・タイル７０００は、ＷＳＵスライス７３１０あたりＮ個の重みを処理し、すべての重みは、１ステップで処理される。
【００３２】
ＷＳＵスライス７３１０は、Ｎ個の重みｗ１からｗＮをとり、これらのそれぞれは、乗算器７３１１の入力の１つに供給する別々の重みレーンにマップする。（ｈ＋ｄ＋１）対１マルチプレクサが、乗算器７３１１への第２の入力を選択する。マルチプレクサ制御信号は、ＷＳＵ  ７３００が重みメモリ７４００から読み取る重み選択（ｗｓ）メタデータ７３１２に由来する。（ｈ＋ｄ＋１）対１マルチプレクサ７３１３は、十分な活性化値の入力が、可能な活性化への乗算器７３１１アクセスを可能にすることを可能にする。
【００３３】
タイル７０００によって処理される重みｗｉごとに、ｈ個の活性化のルックアヘッド・ウィンドウに対応するｈ＋１個の活性化Ａｉ，０からＡｉ，ｈがある。たとえば、ｗ１について、Ａ１，２が、ルックアヘッド２にある活性化であるが、ｗＮについて、ＡＮ，ｈが、ルックアヘッドｈにある活性化である。ＡＳＵ  ７２００は、論理ルックアヘッド順序と一致するように活性化を順序付け、Ａｉ，ｊ信号をマルチプレクサ入力に静的に割り当てることによって、ＷＳＵ  ７３００がルックアヘッドおよびルックアサイドを実施することを可能にする。たとえば、ｗ２のルックアサイド１接続は、Ａ３，１であり、そのルックアヘッド２接続は、Ａ２，２である。すべてのＷＳＵスライス７３１０が、同一の（ｈ＋１）×Ｎ活性化を共有する。
【００３４】
図７Ｂに示されているように、アクセラレータ・タイル７０００のＷＳＵスライス７３１０は、１サイクルあたりＮ個の１６ｂ×１６ｂ積を作り、ｔ１から
【数３】
2021515300.tif 000005
として出力する。これらの積は、その出力が複数のサイクルにわたって出力活性化に蓄積する加算器ツリーに供給する。いくつかの実施形態で、本アクセラレータ・タイル７０００の変形形態は、活性化の特性を利用するために、乗算器７３１１がＡＮＤゲートまたはシフタに置換されてもよい。
【００３５】
図７Ｃに示されているように、ＡＳＵ  ７２００は、ＷＳＵ  ７３００が使用する
【数４】
2021515300.tif 000006
信号を生成する。ＡＳＵ  ７２００は、対応する重みレーンおよびステップ距離ルックアヘッドによって必要とされる入力活性化を乗算器７３１１に供給するために設けられる。ＡＳＵ  ７２００は、それぞれがＮ個の入力活性化を保持するｈ＋１個の活性化ブロック・レジスタ（ＡＢＲ）７２１０を含む。各ＡＢＲ  ７２１０は、ある特定のルックアヘッド距離ｌ＝０からｈですべての重みレーンによって必要とされるＮ個の活性化を保持する。ＡＢＲ  ７２１０は、論理的には循環キューとして動作し、ヘッド・レジスタは、ルックアヘッド＝ｌ＝０の活性化を保持するＡＢＲをポイントする。それぞれ（ｈ＋１）対１マルチプレクサであるｈ＋１個のマルチプレクサ７２２０の配列が、ＡＢＲ出力を適当な順序にシャッフルして、図７Ｃの最下部付近に示されているように重み列に沿って分布する
【数５】
2021515300.tif 000007
信号を生成する。ＷＳＵ  ７３００が各Ｎ×ｋ重み列と一緒にＷＭ  ７４００から読み取るＡＬＣメタデータは、ヘッド・レジスタを進め、スライディング・ルックアヘッド・ウィンドウを実施するのに使用される。
【００３６】
活性化バッファ（ＡＢ）７２３０は、活性化が活性化メモリ（ＡＭ）７１００から読み取られる時に活性化をバッファリングする。ＡＢ  ７２３０は、それぞれ専用の単一読取ポートを介して１つのＡＢＲ  ７２１０に接続されたｈ＋１個のバンクを有する。この形で、任意の個数のＡＢＲ  ７２１０を、サイクルごとに並列に更新し、効果的に、ＡＬＣメタデータによる指示に従ってルックアヘッド・ウィンドウを進めることができる。この配置は、アクセラレータ・タイル７０００が、無効な重みだけを含む列をスキップすることをも可能にする。
【００３７】
重みスキップは、重みスパーシティを活用するが、入力活性化の潜在的に貴重な特性のいずれをも活用しない。本発明のいくつかの実施形態では、アクセラレータまたはアクセラレータ・タイルは、入力活性化の特性を利用し、または入力活性化と重みとの両方の特性を利用するように構造化され得る。本発明の実施形態は、異なる面積、性能、およびエネルギ効率のトレードオフを提供する。いくつかの実施形態は、活性化の有効ビット内容を活用し、性能を優先する。いくつかの実施形態は、細粒度動的活性化精度可変性を活用し、エネルギ効率を優先する。いくつかの実施形態は、無効であろうとなかろうと、すべての活性化について利益を提供する。下で詳細に議論する実施形態は、無効な活性化の除去を追求せず、両方の実施形態が、無効な活性化を活用する。
【００３８】
ニューラル・ネットワークの層への入力活性化の平均的セットの多くの活性化ビットは、非０である活性化の分数のものであっても、０であり、したがって乗算中には無効である。本発明の実施形態は、別々にまたは重みスパーシティの活用と組み合わせてのいずれかで、無効な活性化ビットを活用する。
【００３９】
図８に示されているように、アクセラレータ８０００は、経時的に、活性化の有効なビットだけをビット直列に処理するように構造化される。たとえば、アクセラレータ８０００は、３つのサイクルにわたって活性化値｛００００  ００００  １０００  １１１１ｂ｝を処理し、それぞれ対応する重みに符号付きの２のべき、｛＋２７，−２４，＋２０｝を乗算する。これらのべきは、活性化値のブース符号化された表現である。この構造は、アクセラレータ８０００が、有効な活性化ビットの個数に比例する実行時間で入力活性化を処理することを可能にする。しかし、活性化が、現在はビット直列で処理されるので、アクセラレータ８０００が、１サイクルあたりＮ×Ｎ個の重み／活性化対のみを処理する場合に、全体的なスループットが下がる。アクセラレータ８０００は、１６個の活性化ウィンドウを並列に処理し、したがって全体的なスループットを高めることによって、スループットのこの消失を補償する。その結果、同一の重みを、１６個のウィンドウにわたって再利用することができ、ＷＭインターフェースは、前の実施形態のままになる。しかし、アクセラレータ８０００は、活性化グループにまたがって同期化された共通の加算器ツリーに供給するすべてのレーンを維持する、すなわち、活性化値の次のグループに進行する前に、１つの処理  最多の有効なビットを有する活性化  が完了するのを待つ。設計者は、所望の性能、面積、エネルギ効率ターゲットを達成するために、異なる個数の活性化ウィンドウを並列に処理することを選択することができる。
【００４０】
設計において、図８のアクセラレータ８０００は、活性化を処理するプラグマティック・アクセラレータ（Ｐｒａｇｍａｔｉｃ  Ａｃｃｅｌｅｒａｔｏｒ、ＰＲＡ）の要素の多数を反映する（ＰＲＡ設計の議論に関しては、これによって参照によって組み込まれている、Ｊ．Ａｌｂｅｒｉｃｉｏ，Ａ．Ｄｅｌｍaｓ，Ｐ．Ｊｕｄｄ，Ｓ．Ｓｈａｒｉｆｙ，Ｇ．Ｏ’Ｌｅａｒｙ，Ｒ．Ｇｅｎｏｖ，およびＡ．Ｍｏｓｈｏｖｏｓ、“Ｂｉｔ−ｐｒａｇｍａｔｉｃ  ｄｅｅｐ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ  ｃｏｍｐｕｔｉｎｇ”、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ５０ｔｈ  Ａｎｎｕａｌ  ＩＥＥＥ／ＡＣＭ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｍｉｃｒｏａｒｃｈｉｔｅｃｔｕｒｅ，ＭＩＣＲＯ−５０’１７，３８２〜３９４頁、２０１７年を参照されたい）。ＰＲＡ設計は、密ＣＮＮをターゲットとし、有効な活性化ビット内容に比例する実行時間を提供するために無効な活性化ビットを活用する。ＰＲＡ設計は、一時に１つの有効なビットずつ、活性化をビット直列に処理する。タイルごとのユニットが、修正ブース符号化を適用した後に、活性化を２の有効なべきのストリームすなわちオネフセット（ｏｎｅｆｆｓｅｔ）に変換する。ＰＲＡ設計は、各サイクルに２のべきで重みを乗算するので、その代わりにシフタが十分である。オネフセット符号は、加算器ツリーを介してシフトされた重みを加算しまたは減算するのに使用される。同等のビット並列設計のスループットを維持するために、ＰＲＡ設計は、複数の活性化ウィンドウを並列に処理し、この設計がウィンドウ処理にまたがって同一の重みを再利用することを可能にする。
【００４１】
プラグマティック・アクセラレータ（ＰＲＡ）設計のバックエンドは、いくつかのアクセラレータ実施形態では変更されてもよい。ＰＲＡなどのいくつかの実施形態では、アクセラレータ実施形態は、一時に１つの有効なべきずつ、活性化をビット直列に処理する。ＡＢＲごとのユニットが、修正ブース符号化を適用した後に、活性化を２の有効なべきのストリームすなわちオネフセットに変換する。いくつかの実施形態では、本発明のアクセラレータは、オネフセットに重みを乗算するのにシフタを使用し、結果は、オネフセット符号に従って加算器ツリーを介して加算されまたは減算される。本発明のアクセラレータが、同等のビット並列設計のスループットと一致しまたはこれを超えることを保証するために、これらのアクセラレータは、１６個の活性化ウィンドウを並列に処理することができる。これは、これらのアクセラレータが、１６個のＩＰユニットにまたがって同一の重みを再利用することを可能にする。
【００４２】
図８は、アクセラレータ８０００のタイルを示す。図３のｋ個の内積（ＩＰ）ユニットが、１６×ｋ個のより単純なＩＰユニット８１００のグリッドに拡張されている。プラグマティック設計の主要な変更は、ＷＳＵスライスおよびＡＳＵスライスの包含と、行ごとのリングを使用して部分和を１列だけ移動する能力とである。具体的には、図７Ａ〜図７Ｃに関して議論したオリジナルＷＳＵは、ｋ個のＩＰ  ８１００の列ごとに１つの、１６個の列８２００、ＷＳＵ／０からＷＳＵ／１５にスライスされる。これらの１６個の列のそれぞれが、異なるウィンドウに対応する。各ＩＰ  ８１００は、１６入力加算器ツリーを有し、Ｎ個の乗算器の代わりにＮ個のシフタを有する。これらのそれぞれが、活性化オネフセット入力による指示通りに１６ｂ重み入力をシフトする。同一の行に沿ったすべてのＩＰ  ８１００が、同一のｗ（重み）信号およびｗｓ（重み選択）信号を共有し、すべてが正確に同一のルックアヘッド活性化選択およびルックアサイド活性化選択を実行する。図６とは異なって、ここでのマルチプレクサは、４ｂ活性化オネフセットを選択し、面積を大幅に削減する。これらのオネフセットは、３位置までのシフトと符号およびイネーブルとを符号化する。列ごとに、ＡＳＵ  ８３００の対応するＡＳＵスライス、ＡＳＵ／０からＡＳＵ／１５は、前と同様に、それぞれがルックアヘッドをサポートするためにｈ活性化のデータを含む、重みレーンごとに１つの、Ｎ個の活性化グループのデータを提供する。図６とは異なって、ＡＳＵは、４ｂオネフセットを提供する。すべてのＷＳＵ列８２００が同一の重みスケジュールを実行するので、１６個のＡＳＵスライスのすべてが、相前後して活性化バッファにアクセスし、同一の活性化選択論理および活性化選択信号を共有する。
【００４３】
プラグマティック・アクセラレータ設計では、各列が異なるウィンドウを計算するので、ウィンドウがオーバーラップする場合に、各入力活性化は、最終的に異なる列に現れなければならない。その結果、プラグマティック・アクセラレータ設計を単純に拡大することは、ＡＭと各タイルの活性化バッファとの間にクロスバを必要とするはずである。ＴＣＬは、入力活性化空間を１６個のＩＰ列に静的にインターリーブし、その結果、クロスバが不要になる。具体的には、すべての活性化ａ（ｃ，ｘ，ｙ）は、列（ｘ×Ｓ）ＭＯＤ  １６にマップする。この変更を用いると、各出力活性化をＩＰで完全に計算することは、もはや不可能である。アクセラレータ実施形態は、図８に示されたリング８４００を使用して、部分和を水平に１列スライドさせる。プラグマティック・アクセラレータ設計は、完了した結果を読み出し、少数のチャネルを有する層の利用度を高めるのに使用される、隣接する列ＩＰの間の接続をすでに含む。部分和は、列にマップする活性化に関するすべての和を蓄積するのに必要である限り、その列に留まる。その後、すべての部分和は、相前後して次の列に進む。表１は、処理がＪａＺｅでどのように進行するのかの例を示す。
【表１】
2021515300.tif 000008
【００４４】
いくつかの実施形態では、無効な活性化または活性化ビットを、異なる形で活用することができる。たとえば、いくつかの実施形態で、活性化の有効なビット内容を、精度要件を活用することによって活用することができる。高精度な活性化の必要は、ネットワークにまたがって、および層にまたがって変化し、プロファイリングなどを介して判定され得る。一実施形態では、１６ｂのベースライン精度と比較して、実行時間を１６／ｐ倍削減することができ、ｐは、高精度活性化使用である。 たとえば、Ｓｔｒｉｐｅｓ（ＳＴＲ）アクセラレータ・タイル設計を使用することができる。ＳＴＲアクセラレータ・タイル設計は、Ｐ．Ｊｕｄｄ，Ｊ．Ａｌｂｅｒｉｃｉｏ，Ｔ．Ｈｅｔｈｅｒｉｎｇｔｏｎ，Ｔ．Ａａｍｏｄｔ，およびＡ．Ｍｏｓｈｏｖｏｓ、“Ｓｔｒｉｐｅｓ：  Ｂｉｔ−ｓｅｒｉａｌ  Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ  Ｃｏｍｐｕｔｉｎｇ”、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ４９ｔｈ  Ａｎｎｕａｌ  ＩＥＥＥ／ＡＣＭ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｍｉｃｒｏａｒｃｈｉｔｅｃｔｕｒｅ，ＭＩＣＲＯ−４９、２０１６年と、トロント大学のＧｏｖｅｒｎｉｎｇ  Ｃｏｕｎｃｉｌへの米国特許公告第ＵＳ  ２０１７／０３５７８９１  Ａ１号、名称「Ａｃｃｅｌｅｒａｔｏｒ  ｆｏｒ  Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ」（発明人、Ｐａｔｒｉｃｋ  Ｊｕｄｄ、Ｊｏｒｇｅ  Ａｌｂｅｒｉｃｉｏ、Ａｌｂｅｒｔｏ  Ｄｅｌｍａｓ  Ｌａｓｃｏｒｚ、Ａｎｄｒｅａｓ  Ｍｏｓｈｏｖｏｓ、およびＳａｙｅｈ  Ｓｈａｒｉｆｙ）に開示されており、この両方が、これによって参照によって組み込まれている。
【００４５】
ＳＴＲ設計は、活性化をビット直列に処理し、したがって、ｐビットで表された活性化を処理するのにｐサイクルを要する。ＰＲＡ設計と同様に、ビット並列設計と比較した計算帯域幅の消失を補償するために、ＳＴＲ設計を使用する実施形態は、１６個のウィンドウを並列に処理するなど、複数のウィンドウを並列に処理する。ＳＴＲ設計は、乗算器ではなくＡＮＤゲートを使用する。ＳＴＲ設計のブロック・レベルの説明は、図８に示したＰＲＡ設計のそれに類似する。しかし、ＳＴＲ設計は、一時に単一のオネフセットではなく一時に単一のビットだけ活性化を送るＡＳＵを使用し、オネフセットとして活性化を符号化する必要がない。通常のＳＴＲ設計では、１活性化あたり、ＰＲＡ設計より少数のワイヤが必要であり、シフタがなく、加算器ツリーの入力幅は１６ｂである。
【００４６】
入力活性化を活用するアクセラレータ構造の使用は、重みスパーシティを活用する構造を用いるすべての情況で望まれるとは限らない。たとえば、ＳＴＲは、プロファイルから導出された精度要件を使用したが、精度が、すべての可能な入力に対処しなければならず、精度が、ある層のすべての活性化に対処しなければならないので、その層の、プロファイルから導出された精度が悲観的であることが観察された。しかし、実際には、いくつかの実施形態で、ある特定の入力の活性化の制限されたセットだけが、実行時に並列に処理される。さらに、いくつかの実施形態で、ほとんどの活性化が０に近いので、この手法は、並列に処理される活性化のグループあたりに必要な精度を大幅に削減する。活性化グループごとに必要な精度は、精度が活性化メモリから読み取られ、活性化値と一緒に通信される時に検出される。代替案では、活性化グループごとの精度を、メモリに記憶する前に出力で検出することができる。精度要件は、ＲｅＬＵ以外の重み関数および活性化関数に対処するために、符号なし数および符号なし数について検出され得る。ＳＴＲ構造を使用する上の実施形態に関して、動的精度減少は、実行時間を減らすが、ＳＴＲ構造を使用する上の実施形態とＰＲＡ構造を使用する実施形態との両方に関して、動的精度は、活性化メモリから活性化を読み取った後に送る必要のあるビット数を減らす。ＰＲＡ構造を使用する上の実施形態が、各タイルでローカルにオネフセットを生成することを想起されたい。
【００４７】
ニューラル・ネットワークが正しく動作する必要がある数値精度が、ネットワークにまたがっておよび同一ネットワークの層にまたがってかなり変化することがわかった。たとえば、これによって参照によって組み込まれている、Ｐ．Ｊｕｄｄ，Ｊ．Ａｌｂｅｒｉｃｉｏ，Ｔ．Ｈ．Ｈｅｔｈｅｒｉｎｇｔｏｎ，Ｔ．Ｍ．Ａａｍｏｄｔ，Ｎ．Ｄ．Ｅｎｒｉｇｈｔ  Ｊｅｒｇｅｒ，Ｒ．Ｕｒｔａｓｕｎ，およびＡ．Ｍｏｓｈｏｖｏｓ、“Ｒｅｄｕｃｅｄ−Ｐｒｅｃｉｓｉｏｎ  Ｓｔｒａｔｅｇｉｅｓ  ｆｏｒ  Ｂｏｕｎｄｅｄ  Ｍｅｍｏｒｙ  ｉｎ  Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｓ”、ＣｏＲＲ  ａｂｓ／１５１１．０５２３６（２０１５年）（「Ｊｕｄｄ他」）では、 プロファイリングを使用して層ごとの数値精度を判定する方法が提案された。しかし、これによって参照によって組み込まれている、Ａ．Ｄｅｌｍａｓ，Ｐ．Ｊｕｄｄ，Ｓ．Ｓｈａｒｉｆｙ，およびＡ．Ｍｏｓｈｏｖｏｓ、“Ｄｙｎａｍｉｃ  Ｓｔｒｉｐｅｓ：  Ｅｘｐｌｏｉｔｉｎｇ  ｔｈｅ  Ｄｙｎａｍｉｃ  Ｐｒｅｃｉｓｉｏｎ  Ｒｅｑｕｉｒｅｍｅｎｔｓ  ｏｆ  Ａｃｔｉｖａｔｉｏｎ  Ｖａｌｕｅｓ  ｉｎ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ”、ＣｏＲＲ  ａｂｓ／１７０６．００５０４（２０１７年）（「Ｄｅｌｍａｓ他」）では、精度のこの可変性が、層粒度より小さい粒度で、より顕著になることが観察された。数値精度は、数を安全に表すのに必要なビット数を指す。固定小数点表現の場合に、これは、正確には数全体のビット・カウントである。他の表現に関して、浮動小数点数の指数または仮数など、表現の異なる構成要素の別々のビット・カウントが必要になる場合がある。
【００４８】
説明されたアクセラレータの実施形態は、精度要件を活用して、乗算を処理するのに必要なサイクル数を削減する。しかし、計算に加えて、通信およびストレージも、深層学習コンピューティングの主要な課題である。したがって、活性化および重みの精度要件の可変性を活用する方法が、ストレージおよび通信の必要を削減するために提示される。特定の実施態様を、下で説明する。まず、Ｄｅｌｍａｓ他の動的精度検出方法が、負の数にもあてはまり、ここで、先頭の１を探すのではなく、先頭の０を探し、最終精度位置に１を追加しなければならないことに留意されたい。代替案では、負の数を、符号−大きさ表現に変換することができ、符号ビットを、最下位位置に置くことができる。この第２の手法は、すべての負の値を０および重みに変換するのではない活性化関数に対処する。
【００４９】
以下の説明では、すべての数に関して１６ビット固定小数点表現を仮定するが、説明される機構は、他の表現の長さおよびタイプに簡単に適用される。圧縮方式は、入力値すなわち重みまたは活性化を、たとえば１６個または２５６個などの固定された個数の要素のグループに考慮する。その後、各グループ内で、すべての値にまたがって最上位１ビットの位置をスキャンすることによって、最大の必要な精度を判定する。負の値は、符号−大きさ表現に変換される。重みの処理は、オフラインで行うことができるが、活性化は、各層の出力で処理される。その後、４ビットを使用して必要な精度を、その後にグループの精度と等しい複数のビットを使用して各値を記憶することによって、値をパックする。本明細書で説明するアクセラレータに関して、グループ化は、重みレーンおよび活性化レーンに従って行われ、データは、Ｊｕｄｄ他の仮想列手法を使用してメモリに記憶される。データ経路へのアンパックは、たとえば、Ｊｕｄｄ他の方法を使用して、重みに関して１６ｂ対１６ｂクロスバを用いて行うことができる。活性化を、メモリ内のビット・プレーンに沿って記憶することができ、クロスバの必要がなくなる。下の表２は、仮想列ごとのグループ記憶フォーマットを示す。精度を、メモリ内で別々に、最もよく記憶することができる。いくつかの実施形態で、複数の連続するグループの精度が、一緒に単一のメモリ・ブロックに記憶され、したがって、複数のグループにわたるこの余分なメモリ・アクセスのコストを償却する。
【表２】
2021515300.tif 000009
【００５０】
代替の方式は、表３に示されているように、グループ内の値が０と等しいのか異なるのかを各ビットが表すビットマップを含む。値が０と等しい場合には、その値は全くコーディングされない。したがって、グループあたりのコーディングされる要素の個数は、異なる。これは、多数の０を有するデータに関して、より高い圧縮率を与える。アンパックは、パックされたグループを読み取ることと、必要な場合に０を挿入するために必要に応じてビット・ベクトルを使用してグループを順次展開することとによって行われる。十分な個数のグループを並列にフェッチし、アンパックすることによって、アクセラレータの帯域幅要件を維持することができる。
【表３】
2021515300.tif 000010
【００５１】
図１４は、固定された層ごとのビット数を使用して達成可能な比率を一緒に表示する、上で説明した０強化手法を伴うおよび伴わない、ＡｌｅｘＮｅｔ−ＥＳとＧｏｏｇＬｅＮｅｔ−ＥＳとの両方での、重みデータと活性化データとの両方の両方の圧縮方式の有効性を示す。２の値は、オリジナル・サイズの半分の削減を示す。両方のグループごとの方式が、重みおよび活性化に関して層ごとの圧縮方式をしのぐ。０強化圧縮方式は、特に重みに関して圧縮率をさらに改善する。これは、ネットワークがスパースである時に特に期待され得る。
【００５２】
重み特性を活用する構造を、活性化特性を活用する構造と組み合わせる際に、アクセラレーション・タイルは、増加したルックアヘッド構造に伴う活性化最適化の有効性の低下を経験する場合がある。具体的には、ＳＴＲ構造とＰＲＡ構造との両方で、並列に処理される活性化のグループは、次のグループに進む前に、最も遅い活性化が処理されるのを待たなければならない。たとえば、ＰＲＡ構造では、グループ全体に何サイクルが必要なのかを決定するのは、最大個数のオネフセットを有する活性化である。ルックアヘッドの度合が高まるにつれて、ＳＴＡまたはＰＲＡのいずれかの活性化特性を活用する構造を使用する本発明の実施形態は、ルックアヘッド・ウィンドウ内のすべての活性化を考慮しなければならない。多くの実施形態では、ルックアヘッド・ウィンドウが広ければ広いほど、そのような「ボトルネック」活性化の影響が大きくなる。一般に、ルックアサイドは、さらなる影響を有しない。というのは、上で説明したように、ルックアサイドが、ルックアヘッドが少なくとも１である時に同期化グループ内に含まれる１のルックアヘッド距離の活性化を使用するからである。
【００５３】
他の実施形態では、活性化特性を活用する構造は、ＳＴＲ構造またはＰＲＡ構造のいずれをも使用しないものとすることができる。たとえば、ＳＴＡ構造とＰＲＡ構造との両方が、正面から無効な活性化を攻撃せず、これは、しばしばＣＮＮ内の活性化のほぼ半数が無効になる傾向があることが示されたので、直観と相容れない可能性がある。それでも、ＳＴＲ構造とＰＲＡ構造との両方が、無効な活性化と有効な活性化との両方に関して利益を提供し、そのような構造は、しばしば、無効な活性化だけを正面から攻撃する構造より改善された機能を提供することができる。具体的には、ＳＴＲ構造またはＰＲＡ構造を使用するアクセラレータ構造は、有効な活性化に関して有利であるが、無効な活性化をスキップできる構造は、無効な活性化に関して有利であり、しかし、ＳＴＡ構造またはＰＲＡ構造を使用するアクセラレータの機会損失は、通常、無効化活性化あたり１よりはるかに小さい。
【００５４】
たとえば、ＰＲＡ構造を使用するアクセラレータによってグループとして処理されるすべての活性化がたまたま０である場合に、アクセラレータは、無効な活性化をスキップできるアクセラレータと比較して、わずかに１／１６の機会損失を表す単一のサイクルでそれらを処理する。というのは、ＰＲＡ構造を使用するアクセラレータが、各活性化をビット並列ではなくビット直列に処理するからである。一般に、ＰＲＡ構造を使用するアクセラレータが、ｐサイクルにわたって無効な活性化を処理する時に、機会損失はｐ／１６であり、平均してビットの１０％未満が有効であることを考慮すると、無効な活性化を完全にはスキップしないことの機会損失は、低いと期待される。同様の推理が、ＳＴＲ構造を使用するアクセラレータにあてはまる。
【００５５】
通常、無効な活性化、動的精度可変性、および無効な活性化ビットは、ＣＮＮなどのネットワーク内の活性化値の分布の結果であり、しばしば、ほとんどの活性化は、０の付近に密集し、少数の活性化が、０から離れた値を伴って突き出す。画像分類ＣＮＮに関して、しばしば、活性化の約４５％が、層ごとの精度を削減した後であっても０であるが、しばしば、活性化ビットの９０％超が、０であるとわかり、これは、無効なビット内容をターゲットにする場合に、性能改善の可能性がはるかに高いことを暗示する。したがって、本発明の多くの実施形態は、無効なビット内容を直接または間接に利用する技法を使用することができる。
【００５６】
図９に示されているように、アクセラレータ９０００は、複数のタイル９１００を含む。各タイル９１００は、ＡＭ  ９１１０のそれ自体のローカル・スライス、ローカルＷＭ（図示せず）、入力活性化バッファ（図示せず）、および出力活性化バッファ（図示せず）を有する。ＡＭスライス９１１０ごとのディスパッチャ９１２０が、ＳＴＲ構造およびＰＲＡ構造のように適当な活性化を読み取ると同時に、本発明のルックアヘッド実施形態の構造のルックアヘッド必要に対処する。いくつかの実施形態では、エネルギ要件および帯域幅要件を削減するために、ディスパッチャ９１２０は、ＡＭ  ９１１０から必要なだけ多数の活性化ビットのみを読み取るために、プロファイルから導出された層ごとの精度を使用する。各活性化グループをすべてのタイルにブロードキャストする前に、ディスパッチャ９１１０は、活性化の値を考慮して必要な精度を動的に検出することによって、活性化をさらにトリミングする。各タイル９１００は、ローカルにそれ自体のペースでその活性化を消費する。バッファは、タイルが活性化空間内でどれほど離れ得るのかを決定する。各タイル９１００は、ローカルにさらなる処理を実行することができ、たとえば、ＰＲＡアーキテクチャを使用する構造に関して、タイルは、２のべきへの符号化を行うことができる。
【００５７】
いくつかの実施形態では、各タイルは、ＡＭのそれ自体のローカル・スライス、ローカルＷＭ、入力活性化バッファ、および出力活性化バッファを有する。ＡＭおよびＷＭは、コンピュート・コアによって必要とされる帯域幅を維持するためにバンク化される。データは、オフチップ・メモリからロードされ、個々のＡＭタイルまたはＷＭタイルにコピーされるか、複数のＡＭタイルまたはＷＭタイルにマルチキャストされる。諸実施形態は、オフチップ・トラフィックおよびオンチップ・トラフィックを低減するために圧縮を使用する。オンチップ・データ転送とオフチップ・データ転送との両方に関して、アクセラレータ実施形態は、前の層の出力で動的に検出される（活性化）か静的に検出される（重み）かのいずれかであるグループごとの精度を使用して、活性化および重みを符号化する。重みは、メモリおよびＷＭ内で、重みレーンと一致する仮想列にパックされる。さらに、０値は記憶されず、代わりに、グループごとのビット・ベクトルが、非０値の位置を識別する。いくつかの実施形態では、１６個の活性化または重みのグループを、圧縮率とメタデータ・オーバーヘッドとの間のよいバランスを提供するものとして使用することができる。グループごとに、彼  精度は、ビットおよび０値ビット・ベクトルに記憶され、オーバーヘッドは、２５６ビット非圧縮活性化または重みであったものに関してそれぞれ４ビットおよび１６ビットである。活性化をコピーする前に、活性化バッファが、値を圧縮解除する。
【００５８】
表４は、本明細書で調査される構成を報告するものである。表４は、例のアクセラレータ実施形態の構成の例を与える。
【表４】
2021515300.tif 000011
【００５９】
実際には、上で説明したアーキテクチャのさまざまな態様および特徴を使用するアクセラレータ実施形態が、実行利益を提供することが示された。
【００６０】
サイクル・レベル・シミュレータを使用して、畳み込みおよび全結合層の実行時間をモデル化することによって、少数の実施形態の相対性能を評価した。表５は、スパース化された、使用されたＣＮＮを報告するものである（これらのさらなる議論に関しては、これによって参照によって組み込まれている、Ｙａｎｇ，Ｔｉｅｎ−ＪｕおよびＣｈｅｎ、Ｙｕ−ＨｓｉｎおよびＳｚｅ、Ｖｉｖｉｅｎｎｅ、“Ｄｅｓｉｇｎｉｎｇ  Ｅｎｅｒｇｙ−Ｅｆｆｉｃｉｅｎｔ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  ｕｓｉｎｇ  Ｅｎｅｒｇｙ−Ａｗａｒｅ  Ｐｒｕｎｉｎｇ”、ＩＥＥＥ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  ａｎｄ  Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ（ＣＶＰＲ）、２０１７年を参照されたい）。すべての面積測定およびエネルギ測定は、データ入力を表す回路アクティビティを使用してレイアウト上で行われた。レイアウトは、Ｓｙｎｏｐｓｙｓ  Ｄｅｓｉｇｎ  Ｃｏｍｐｉｌｅｒを用いる合成の後にＣａｄｅｎｃｅ  Ｉｎｎｏｖｕｓを使用してＴＭＳＣ  ６５ｍｍテクノロジに関して生成された。通常のｃａｓｅ設計ライブラリは、試験される設計に関してより悲観的な結果を生じるので、これを使用した。すべての試験される設計は、１ＧＨｚで動作した。ＳＲＡＭは、ＣＡＣＴＩを介してモデル化され（さらなる議論に関しては、これによって参照によって組み込まれている、Ｊ．Ｐａｒｋ，Ｓ．Ｌｉ，Ｗ．Ｗｅｎ，Ｐ．Ｔ．Ｐ．Ｔａｎｇ，Ｈ．Ｌｉ，Ｙ．Ｃｈｅｎ，およびＰ．Ｄｕｂｅｙ、“Ｆａｓｔｅｒ  ＣＮＮｓ  ｗｉｔｈ  Ｄｉｒｅｃｔ  Ｓｐａｒｓｅ  Ｃｏｎｖｏｌｕｔｉｏｎｓ  ａｎｄ  Ｇｕｉｄｅｄ  Ｐｒｕｎｉｎｇ”、５ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｌｅａｒｎｉｎｇ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎｓ（ＩＣＬＲ）、２０１７年を参照されたい）、ｅＤＲＡＭは、Ｄｅｓｔｉｎｙを介してモデル化された（さらなる議論に関しては、これによって参照によって組み込まれている、Ｎ．ＭｕｒａｌｉｍａｎｏｈａｒおよびＲ．Ｂａｌａｓｕｂｒａｍｏｎｉａｎ、“Ｃａｃｔｉ  ６．０：  Ａ  ｔｏｏｌ  ｔｏ  ｕｎｄｅｒｓｔａｎｄ  ｌａｒｇｅ  ｃａｃｈｅｓ”、ＨＰ  ｔｅｃｈｎｉｃａｌ  ｒｅｐｏｒｔ  ＨＰＬ−２００９−８５、ｈｔｔｐ：／／ｗｗｗ．ｈｐｌ．ｈｐ．ｃｏｍ／ｔｅｃｈｒｅｐｏｒｔｓ／２００９／ＨＰＬ−２００９−８５．ｈｔｍｌを参照されたい）。
【表５】
2021515300.tif 000012
【００６１】
以下は、重みおよび活性化の活用と比較した重みスキップの議論を含む。以下は、さまざまな実施形態の性能、エネルギ効率、および面積の評価を含む。
【００６２】
試験される実施形態では、さまざまなルックアヘッド値およびルックアサイド値が試験され、性能が、基準構造と比較された。結果は、ルックアヘッドおよびルックアサイドの混合にかかわりなく、より大きいマルチプレクサの使用が、よりよい性能をもたらすことを示す。下で議論する実施形態では、ルックアヘッドｈおよびルックアサイドｄの組合せは、ｈ＋ｄ＋１＝２ｎ、ｎ＝｛８｝になると考えられる。図１０および図１１は、重みスキップを使用せず、活性化値の特性を活用するように構造化されていないアクセラレータ構造に対するスピードアップを示す。図１０および図１１は、グラフ化された結果の各セットの基部に示されているように、（ｌｏｏｋａｈｅａｄ，ｌｏｏｋａｓｉｄｅ）または（ｈ，ｄ）にセットされたルックアヘッドおよびルックアサイドに関するスピードアップを示す。図１０は、ＥＳ−ＡｌｅｘＮｅｔを処理する時のスピードアップを示し、図１１は、ＥＳ−ＧｏｏｇＬｅＮｅｔを処理する間のスピードアップを示す。図示されているように、３つのアクセラレータ構造実施形態すなわち、重みスキップ構造だけを使用する構造、重みスキップおよびＳＴＲ構造を使用する構造、および重みスキップおよびＰＲＡ構造を使用する構造を試験した。
【００６３】
図１０および図１１に示されているように、ルックアヘッド入力を犠牲にすることによって少数のルックアサイド入力を追加することは、（７，０）から（４，３）への遷移からわかるように、重みスキップ構造だけを使用する実施形態の試験で、性能のかなりの差益を提供する。たとえば、（７，０）すなわちルックアサイドなし）でのスピードアップは、図１０に示されているようにＡｌｅｘＮｅｔ−ＥＳに関して２．３倍であり、（４，３）では２．７倍である。
【００６４】
図１０および図１１は、ルックアサイド値またはルックアヘッド値を０にセットすることと比較して、これらの値の変化に伴って観察された傾向の一部を示す。概念上、ルックアサイドは、有効な重みを大量に投入されている重みレーンの負荷を隣接する重みレーンに分配することを可能にし、したがって重みレーンのアンバランスを軽減する。さらに、一部の重みレーンが、複数の隣接する大量に投入されたレーンを有することは、一般にありそうにない。したがって、ルックアサイド・ウィンドウを任意に広げることは、減少する再発につながると期待することができ、これは、所与の実施形態について図示された結果と一致する。同様に、大きいルックアヘッドの追加は、上で議論したように活性化処理バックエンドの有効性に影響すると理解することができる。結果は、同一の総数の複数入力（ｈ＋ｄ＋１）に関して、いくつかのルックアサイド・オプションがある限り、性能は、より多くのルックアヘッドに伴ってよくなる。
【００６５】
全体として、差は、相対的に抑制されていると思われるが、図に示されているように、利益は、ＳＴＲ構造またはＰＲＡ構造の使用など、活性化特性を活用する構造と組みわされた時に大きく増加する。したがって、諸実施形態では、重みスキップだけからの性能の相対的に小さい差が、最終設計のはるかに大きい利益をもたらす。
【００６６】
異なる構成は、異なる利益をももたらす。面積に関して、構成の間の差は小さいが、ルックアヘッドが小さければ小さいほど、一般に、重みスキップ構造を実施するためのワイヤ・カウントが少なくなる。したがって、ルックアヘッド／ルックアサイド対を（２，５）または（４，３）にセットすることは、多数の実施形態および状況に関する穏当な妥協構成である可能性がある。
【００６７】
図１０および図１１に示されているように、活性化特性を活用する構造の追加は、重みスキップ構造の利益を増加させる。活性化メモリおよび相互接続の設計などで、さまざまな構成を設計して、コストと所望の性能とのバランスをとることができる。
【００６８】
図１０および図１１に示されているように、精度可変性を活用する能力の追加は、主として、無効重みスキップを増補する。図示の最も能力の低い構成（１，６）でさえ、それぞれＡｌｅｘＮｅｔ−ＥＳおよびＧｏｏｇＬｅＮｅｔ−ＥＳに関して７．２倍および４．３倍だけ性能を改善する。Ａｌｅｘｎｅｔ−ＥＳセットは、ＧｏｏｇＬｅＮｅｔ−ＥＳと比較してより大きい、少数の層だけを有する。図示されているように、ＰＲＡ構造など、無効な活性化ビット内容を活用する、活性化特性を活用する構造の使用は、ＳＴＲ構造など、精度を活用する活性化特性を活用する構造の使用よりよい性能をもたらす。全体的な性能利益が、無効なビット内容が暗示するものより小さい場合に、問題の原因は、活性化レーンにまたがる同期化である可能性がある。というのは、ルックアヘッド・ウィンドウ内のすべての活性化レーンが、次のルックアヘッド・ウィンドウに進む前に、最大のオネフセットを有する活性化レーンが完了するのを待たなければならないからである。図示されているように、試験された最良の構成は、（４，３）にセットされたルックアヘッドおよびルックアサイドを有し、これは、それぞれＡｌｅｘＮｅｔ−ＥＳおよびＧｏｏｇＬｅＮｅｔ−ＥＳに関して１５．８倍および８．４倍だけ性能を改善する。
【００６９】
上の説明は、ルックアヘッド・パターンおよびルックアサイド・パターンが時間方向およびレーン方向で連続ウィンドウを構成しなければならないと仮定した重み昇格に焦点を合わせたが、フィルタ内重み昇格の概念は、ルックアヘッド方向およびルックアサイド方向での連続ウィンドウに限定されるのではなく、ルックアヘッドとルックアサイドとの両方の組合せである任意の座標に由来してよい。すなわち、ｈのルックアヘッド距離を考慮すると、このウィンドウ内の１６×ｈ個の位置の任意のサブセットからの昇格を可能にするルックアサイド・パターンを実施することが可能であり、１６は、フィルタ・レーン幅である。
【００７０】
そのような構成の変形形態では、重みストリーム内の任意の位置からの重み昇格を可能にするスパース昇格パターンを使用することができる。用語「スパース」は、ここでは、位置［ｌａｎｅ＋ｄ，ｓｔｅｐ＋ｈ］からこっそり動くことのできる重みｗ［ｌａｎｅ，ｓｔｅｐ］が、必ずしも、たとえば位置［ｌａｎｅ＋ｄ−１，ｓｔｅｐ＋ｈ］または［ｌａｎｅ＋ｄ，ｓｔｅｐ＋ｈ−１］からこっそり動くための接続を有しないという顔を指す。
【００７１】
図１２で比較される３つの構成のセットでは、基礎構成が左に提示され、ここで、（２，５）重みスキップ構成が、上で説明したように使用された。他の２つの構成は、ルックアヘッドが２にセットされ、ルックアサイドが５にセットされ、ルックアサイドが７レーンの距離に制限される（合計２＋２×７＝１６個の可能な昇格サイト）、オリジナル構成から作成されたスパース構成である。電力および面積の考慮事項に起因して、全接続性は、ｈ＋ｄ＝７個の昇格サイトに削減され、左側の基礎設計として同一サイズの８入力マルチプレクサをもたらした。右のネットワーク最適化された設計に関して、接続サイトは、所与のネットワークの最小の性能劣化をもたらすように反復して除去され、２つの試験されるネットワークの各ネットワークに調整された接続性パターンをもたらした。図１２の中央に提示されたＣｈｅｃｋｅｒｓ構成に関して、固定されたチェッカーボード様接続パターンが、除去すべき接続の反復選択なしで、直接に使用された。図示のように、Ｃｈｅｃｋｅｒｓ構成は、ネットワークごとの最適化されたパターンのスピードアップ利益の多くを提供する。下の説明から期待されるように、活性化特性を活用する構造の追加は、スピードアップ利益を増加させると期待することができる。
【００７２】
さまざまな要因が、全体的な好ましい構造の判定を駆り立てる可能性がある。たとえば、ＰＲＡ構造の使用は、多くの実施形態でＳＴＲ構造の使用をしのぐと思われるが、１活性化あたりにより多数のワイヤを必要とすることに起因して、より高価になる可能性がある。たとえば、相対面積およびエネルギ効率の考慮事項を、性能利益が価値のあるものであるかどうかを判断する際に考慮することができる。
【００７３】
図１３Ａおよび図１３Ｂは、重みスキップまたは活性化特性を活用するアーキテクチャを使用しないアクセラレータと比較した、ＳＴＲアーキテクチャを有する重みスキップおよびＰＲＡアーキテクチャを有する重みスキップのエネルギ効率を示す。図１３Ａは、ＡｌｅｘＮｅｔ−ＥＳ上で走行する時のエネルギ効率を示し、図１３Ｂは、ＧｏｏｇＬｅＮｅｔ−ＥＳ上で走行する時のエネルギ効率を示す。図示されているように、どちらの場合でも、性能利益が追加のハードウェア電力コストより重要なので、設計は、ベースラインよりエネルギ効率がよい。（１，６）構成が使用される場合を除いて、ＳＴＲ構造の使用は、ＰＲＡ構造の使用よりエネルギ効率がよく、これは、文脈にかかわりなく、より低コストの設計と一致する。試験された最もエネルギ効率のよい設計は、ＳＴＲ構造を含み、（４，３）構成を使用する実施形態であり、これは、それぞれＡｌｅｘＮｅｔ−ＥＳおよびＧｏｏｇＬｅＮｅｔ−ＥＳに関して５．６倍および２．９倍の相対エネルギ効率をもたらした。
【００７４】
表６は、さまざまなアクセラレータ実施形態の面積を示し、（１，６）構成を詳細に示す。面積対性能トレードオフは、劣線形であり、これは、重みスキップまたは活性化特性を活用する構造を使用しないベースラインに関して性能が線形にスケールできる場合であっても、面積あたりの性能において徐々に小さくなることを意味する。試験結果は、通常のフィルタ・カウント、フィルタの通常の寸法、および入出力が、ベースライン構造のより幅広い構成に関してより不十分な利用をもたらすので、ベースライン構造の性能が面積に伴って劣線形にスケールすることを示す。ルックアヘッドおよびルックアサイドの和が、下の３つの構成（１，６）、（２，５）、（４，３）のそれぞれで同一なので、構成の間の面積差は、無視できる。全体的に、これらの実施形態の面積の多くは、メモリである。
【表６】
2021515300.tif 000013
【００７５】
下の表７は、本明細書で開示される重みスキップおよび活性化特性を活用するアクセラレータの実施形態を他の入手可能なアクセラレータと比較するものである。表７は、これらの設計の複数の関連する特性すなわち、１）それに関して積和計算をスキップする入力データ、２）それに関してメモリ参照を回避する入力データ、３）それに関してコストを下げられた積和を実行する入力データ、４）それに関してコストを下げられたメモリ・アクセスを実行する入力データ、５）入力データが適当なコンピュート・ユニットまたはストレージ・ユニットにどのようにルーティングされるのか、および６）内積を計算するのに使用される順序付けを強調するものである。
【００７６】
Ｃｎｖｌｕｔｉｎ（両方がこれによって参照によって組み込まれている、Ｊ．Ａｌｂｅｒｉｃｉｏ，Ｐ．Ｊｕｄｄ，Ｔ．Ｈｅｔｈｅｒｉｎｇｔｏｎ，Ｔ．Ａａｍｏｄｔ，Ｎ．Ｅｎｒｉｇｈｔ  Ｊｅｒｇｅｒ，およびＡ．Ｍｏｓｈｏｖｏｓ、“Ｃｎｖｌｕｔｉｎ：  Ｉｎｅｆｆｅｃｔｕａｌ−ｎｅｕｒｏｎ−ｆｒｅｅ  ｄｅｅｐ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ  ｃｏｍｐｕｔｉｎｇ”、２０１６  ＩＥＥＥ／ＡＣＭ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＣＡ）、２０１６年およびトロント大学のＧｏｖｅｒｎｉｎｇ  ＣｏｕｎｃｉｌのＰＣＴ特許出願公告第ＷＯ  ２０１７／２１４７２８  Ａ１号（発明人、Ｐａｔｒｉｃｋ  Ｊｕｄｄ，Ｊｏｒｇｅ  Ａｌｂｅｒｃｉｏ，Ａｎｄｒｅａｓ  Ｍｏｓｈｏｖｏｓ，Ｓａｙｅｈ  ＳｈａｒｉｆｙおよびＡｌｂｅｒｔｏ  Ｄｅｌｍａｓ  Ｌａｓｃｏｒｚ）、名称Ａｃｃｅｌｅｒａｔｏｒ  ｆｏｒ  Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓを参照されたい）は、無効な活性化（ＩＡ）に関して計算とメモリ・アクセスとの両方をスキップする。Ｃｎｖｌｕｔｉｎは、各活性化と対になる重みのグループごとの独立の重みポート以外の特殊な入力ルーティング機構または出力ルーティング機構を必要としない。
【００７７】
Ｃａｍｂｒｉｃｏｎ−Ｘ（これによって参照によって組み込まれている、Ｓ．Ｚｈａｎｇ，Ｚ．Ｄｕ，Ｌ．Ｚｈａｎｇ，Ｈ．Ｌａｎ，Ｓ．Ｌｉｕ，Ｌ．Ｌｉ，Ｑ．Ｇｕｏ，Ｔ．Ｃｈｅｎ，およびＹ．Ｃｈｅｎ、“Ｃａｍｂｒｉｃｏｎ−ｘ：  Ａｎ  ａｃｃｅｌｅｒａｔｏｒ  ｆｏｒ  ｓｐａｒｓｅ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋｓ”、４９ｔｈ  Ａｎｎｕａｌ  ＩＥＥＥ／ＡＣＭ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｍｉｃｒｏａｒｃｈｉｔｅｃｔｕｒｅ，ＭＩＣＲＯ  ２０１６、台湾、台北、２０１６年１０月１５日〜１９日、１〜１２頁、２０１６年を参照されたい）は、内積ベースのアクセラレータ内で無効な重み（ＩＷ）を活用する。非０重みは、メモリ内でコンパクト化され、デルタ（重みの間の距離）を用いてタグ付けされる。各サイクルに、１つのＰＥ（我々の内積ユニットと同等）が、１６個の重みをフェッチし、２５６のベクトルから対応する１６個の活性化を選択する。連鎖された加算器が、デルタを絶対オフセットに復号するのに使用される。活性化を対応する重みと対にするのに、２５６幅入力活性化クロスバを使用する。この手法は、１６ｘ１６ルックアヘッド・ウィンドウおよび符号化されたマルチプレクサ選択を用いる、本発明の重みスキップ・アクセラレータに類似する。これは、２５６個の活性化のメモリ・インターフェースを必要とする。著者は、この活性化帯域幅が、スケーラブル・アクセラレータに関して彼らの手法を非実用的にすると論じている。
【００７８】
ＳＣＮＮ（これによって参照によって組み込まれている、Ａ．Ｐａｒａｓｈａｒ，Ｍ．Ｒｈｕ，Ａ．Ｍｕｋｋａｒａ，Ａ．Ｐｕｇｌｉｅｌｌｉ，Ｒ．Ｖｅｎｋａｔｅｓａｎ，Ｂ．Ｋｈａｉｌａｎｙ，Ｊ．Ｅｍｅｒ，Ｓ．Ｗ．Ｋｅｃｋｌｅｒ，およびＷ．Ｊ．Ｄａｌｌｙ、“Ｓｃｎｎ：  Ａｎ  ａｃｃｅｌｅｒａｔｏｒ  ｆｏｒ  ｃｏｍｐｒｅｓｓｅｄ−ｓｐａｒｓｅ  ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋｓ”、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ４４ｔｈ  Ａｎｎｕａｌ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ，ＩＳＣＡ’１７、（米国ニューヨーク州ニューヨーク）、２７〜４０頁、ＡＣＭ、２０１７年を参照されたい）は、無効な重みと無効な活性化との両方に関して計算およびメモリ・アクセスをスキップする。ＳＣＮＮは、重みおよび活性化をメモリ内でコンパクト化し、有効な要素だけが記憶され、そのそれぞれに、省略された無効な要素の個数が続く。１６×３２出力クロスバが、乗算結果を３２個のアキュムレータ・バンクにルーティングする。ＳＣＮＮは、入力読取帯域幅を最小化するように設計されている。ＳＣＮＮは、４ｘ４デカルト積を使用するので、ＦＣＬ用の１６個の乗算器のうちの４つを使用することだけができ、重み再利用を有しない。
【００７９】
本発明の重みスキップ・アクセラレータは、ＳＣＮＮまたはＣａｍｂｒｉｃｏｎ−Ｘとは異なる度合で、無効な重みの計算およびメモリ・アクセスをスキップする。これは、無効な活性化と有効な活性化（ＥＡ）との両方に関するメモリ・アクセスの帯域幅およびエネルギ・コストを削減する。これは、入力活性化にスパース・シャッフル・ネットワークを、重みに制限された静的スケジューリングを利用するので、ハイブリッド入力重み的静／活性化動的手法を使用して活性化と重みとをマッチングする。
【００８０】
スパーシティを取り込むために、ＳＣＮＮおよびＣａｍｂｒｉｃｏｎ−Ｘは、密ハードウェア相互接続を使用する。ＳＣＮＮは出力クロスバを使用し、Ｃａｍｂｒｉｃｏｎ−Ｘは入力クロスバを使用する。本発明の重みスキップ・アクセラレータは、十分な個数の無効な重みを取り込むのにスパース入力相互接続を使用し、その代わりにすべての活性化をターゲットにすることによって機会の損失を補償する。
【表７】
2021515300.tif 000014
【００８１】
図７Ｂの実施形態に提示されているように、フロントエンドは、重みごとのマルチプレクサ信号（図７Ｂではｗｓ）を使用し、これは、重みレーンが、他の重みレーンとは独立に重み昇格を実行することを可能にする。しかし、これらの信号は、メモリ・オーバーヘッドを表す。このオーバーヘッドの削減が好ましく、重みデータ幅が狭ければ狭いほどそうである。このために、我々は、１）ＰＥごとのすべてのｗｓ信号を考慮する時に、すべての組合せが有効とは限らないので、重みごとのｗｓ信号の使用は、過剰プロビジョニングになり、２）有効な組合せの一部（たとえば、絶対に発生しない組合せまたは低頻度の組合せ）の除去は、十分なスパーシティを活用するＴＣＬの能力に悪影響しない可能性があるという観察を行う。したがって、我々は、ＴＣＬフロントエンドがサポートする重み移動の組合せを制限し、したがって、すべてのステップで使用すべきスケジュールを指定するのに必要なビット数を削減することができる。たとえば、我々は、重みのグループごとのスケジュール選択フィールド（ＳＳ）を記憶することができる。ＴＣＬは、タイル内でＳＳを重みごとのｗｓ信号に展開することができ、これは、設計に対する外科的変更である。たとえば、１６個の重みのグループごとの４ビットＳＳフィールドは、１６個のｗｓ信号を含む３ｂ  １６＝４８ｂのベクトルにそれぞれマップする２Ｓ  Ｓ＝１６個の異なるスケジュール・パターンをサポートすることができる。ｗｓへのＮＳＳ信号のマッピングは、静的またはプログラム可能とすることができる。後者の場合に、マッピングは、フィルタごとまたは層ごとなど、適当な粒度で提供され得る。我々の例に関して、１６ｘ４８ｂテーブルが、これらのＳＳ信号をフィルタあたり１６個のスケジュール・ステップのセットにマッピングすることができる。プロファイリングは、そのような配置が、調査されるネットワークに関して性能に大きくは影響しないことを示す（たとえば、ＧｏｏｇｌｅＮｅｔ−ＥＳですべてのスケジューリング・ステップの９６％をカバーする）。
【００８２】
図１５は、前述の手法の実施態様を示す。この実施態様１５００では、マルチプレクサ選択テーブル（ＭＳＴ）１５２０が、各フィルタ・レーン１５４０に導入される。代替案では、ＭＳＴを複数のレーンの間で共有することができる。ＭＳＴを使用して、マルチプレクサ選択信号の最も頻繁に使用される組合せの一部だけをロードすることができる。ロードは、フィルタごとに層ごとに１回、少数の層ごとに、またはサブフィルタ粒度でなど、便利なインターバルで行うことができる。この実施態様では、重みの行ごとの小さいｗＳフィールドが、各ステップに使用されるスケジュール  固有に使用され得る。その結果、選択信号のオーバーヘッドを大幅に削減することができる。
【００８３】
フロントエンド実施形態を使用して、スパーシティが存在する限り、トレーニングをも加速することができる。これは、たとえば、更新の一部だけが実行される、選択的バックプロパゲーション方法にあてはまる。そのような方法は、重み更新値の一部を効果的に０に変換し、したがって、バックプロパゲーション・フェーズ中にスパーシティを導入する。バックプロパゲーション中に、各層の出力では、スケジューラの軽量実装、最も好ましくは貪欲なハードウェアでの実装が、更新を処理要素に送る前に更新を再配置することができる。フロントエンドは、データタイプにとらわれず、したがって、順方向フェーズ中およびバックプロパゲーション・フェーズ中に浮動小数点表現、固定小数点表現、または混合表現と共に同様に使用され得る。
【００８４】
動作中に、前述の構成要素をコントローラによって制御することができ、このコントローラは、たとえば、機能ユニットとしてアクセラレータを制御することのできる、プログラム可能有限状態機械またはプログラム可能プロセッサとすることができることが、当業者によって了解されよう。一実施形態によれば、プログラム可能有限状態機械は、複数の制御レジスタおよびデータ・レジスタと、おそらくはプログラム・メモリおよびデータ・メモリとを有することができ、ニューラル・ネットワーク・システム内の本明細書で説明した他の構成要素にさまざまな制御信号を出力する。
【００８５】
本発明の趣旨または本質的特性から逸脱せずに、本発明を他の特定の形態で実施することができる。本発明のある種の適合および変更は、当業者に明白である。したがって、現在議論されている実施形態は、例示的であって制限的ではないと考えられ、本発明の範囲は、前述の説明ではなく添付の特許請求の範囲によって示され、したがって、特許請求の範囲の同等物の意味および範囲に含まれるすべての変更は、本発明の範囲に包含されることが意図されている。
【図１】
2021515300.tif 000015
【図２】
2021515300.tif 000016
【図３】
2021515300.tif 000017
【図４】
2021515300.tif 000018
【図５Ａ】
2021515300.tif 000019
【図５Ｂ】
2021515300.tif 000020
【図５Ｃ】
2021515300.tif 000021
【図６Ａ】
2021515300.tif 000022
【図６Ｂ】
2021515300.tif 000023
【図７Ａ】
2021515300.tif 000024
【図７Ｂ】
2021515300.tif 000025
【図７Ｃ】
2021515300.tif 000026
【図８】
2021515300.tif 000027
【図９】
2021515300.tif 000028
【図１０】
2021515300.tif 000029
【図１１】
2021515300.tif 000030
【図１２】
2021515300.tif 000031
【図１３Ａ】
2021515300.tif 000032
【図１３Ｂ】
2021515300.tif 000033
【図１４】
2021515300.tif 000034
【図１５】
2021515300.tif 000035
【国際調査報告】
2021515300.tif 000036
2021515300.tif 000037