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

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

▶ 三星電子株式会社の特許一覧

特許7349438ニューラル・ネットワーク・アクセラレータ
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-13
(45)【発行日】2023-09-22
(54)【発明の名称】ニューラル・ネットワーク・アクセラレータ
(51)【国際特許分類】
   G06N 3/063 20230101AFI20230914BHJP
【FI】
G06N3/063
【請求項の数】 39
(21)【出願番号】P 2020543300
(86)(22)【出願日】2019-02-15
(65)【公表番号】
(43)【公表日】2021-06-17
(86)【国際出願番号】 CA2019050187
(87)【国際公開番号】W WO2019157599
(87)【国際公開日】2019-08-22
【審査請求日】2022-02-09
(31)【優先権主張番号】62/710,488
(32)【優先日】2018-02-16
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/664,190
(32)【優先日】2018-04-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】モショボス,アンドレアス
(72)【発明者】
【氏名】デルマス,ラスコルツ,アルバート
(72)【発明者】
【氏名】ポウロス,ジシス
(72)【発明者】
【氏名】マローン スチュアート,ダイラン
(72)【発明者】
【氏名】ジュド,パトリック
(72)【発明者】
【氏名】シャリフィモハダム,セイエ
(72)【発明者】
【氏名】マーモウド,モスタファ
(72)【発明者】
【氏名】ニコリク,ミロス
(72)【発明者】
【氏名】シウ,ケビン チョン マン
【審査官】児玉 崇晶
(56)【参考文献】
【文献】特開2018-026134(JP,A)
【文献】国際公開第2017/214728(WO,A1)
【文献】国際公開第2017/201627(WO,A1)
【文献】米国特許出願公開第2018/0046900(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063
(57)【特許請求の範囲】
【請求項1】
重みレーンのセットと活性化レーンのセットとを定義する、入力スパーシティを活用するニューラル・ネットワーク・アクセラレータ・タイルであって、各重みレーンは、活性化レーンに対応し、前記タイルは、
重みレーンの前記セットの各重みレーンに重みおよび重み選択メタデータを供給する重みメモリと、
各活性化レーンに再配置された活性化値のセットを供給するために、入力活性化値のセットを受け取り、入力活性化値の前記セットを再配置する活性化選択ユニットと、
マルチプレクサのセットであって、マルチプレクサの前記セットは、活性化レーンおよび重みレーンの対ごとに少なくとも1つのマルチプレクサを含み、各マルチプレクサは、前記重みレーン重み選択メタデータに基づいて、再配置された活性化値の前記活性化レーン・セットから前記活性化レーンの組合せ活性化値を選択するように構成される、マルチプレクサのセットと、
組合せユニットのセットであって、組合せユニットの前記セットは、マルチプレクサごとに少なくとも1つの組合せユニットを含み、各組合せユニットは、重みレーン積を出力するために、前記活性化レーン組合せ活性化値を前記重みレーンの重みと組み合わせるように構成される、組合せユニットのセットと
を含む、タイル。
【請求項2】
前記活性化選択ユニットに入力活性化値の前記セットを供給する活性化メモリをさらに含む、請求項1に記載のタイル。
【請求項3】
マルチプレクサの前記セットの各マルチプレクサは、再配置された活性化値の前記対応するセットからおよび追加レーン活性化値のセットから、前記組合せ活性化を選択するように構成され、追加レーン活性化値の前記セットは、少なくとも1つの追加の活性化レーンの少なくとも1つの再配置された活性化値から形成される、請求項1に記載のタイル。
【請求項4】
少なくとも2つの8つのレーン積を受け取る加算器ツリーをさらに含む、請求項1に記載のタイル。
【請求項5】
重みレーンの前記セットの前記重みレーン重みは、少なくとも1つのニューラル・ネットワーク・フィルタを定義する、請求項1に記載のタイル。
【請求項6】
前記組合せユニットは、乗算器、複数の乗算器又はシフタに接続された加算器、およびシフタのうちの1つである、請求項1に記載のタイル。
【請求項7】
請求項1に記載の少なくとも2つのタイルを含むニューラル・ネットワーク・アクセラレータ。
【請求項8】
再配置された活性化値の各セットは、標準重み活性化値と少なくとも1つのルックアヘッド活性化値とを含む、請求項1に記載のタイル。
【請求項9】
活性化効率を活用するアクセラレータ構造上で実施される、請求項1に記載のタイル。
【請求項10】
初期活性化値のセットの各活性化値は、16ビットである、請求項1に記載のタイル。
【請求項11】
初期活性化値のセットの各活性化値は、符号付きの2のべきである、請求項1に記載のタイル。
【請求項12】
マルチプレクサの前記セットは、均一なサイズのマルチプレクサのセットである、請求項3に記載のタイル。
【請求項13】
前記均一なサイズは、2のべきである、請求項12に記載のタイル。
【請求項14】
再配置された活性化値の前記セットのサイズは、追加レーン活性化値の前記セットのサイズより大きい、請求項13に記載のタイル。
【請求項15】
再配置された活性化値の前記セットおよび追加レーン活性化値の前記セットは、活性化値の組み合わされたセットを形成し、活性化値の前記組み合わされたセットは、8つの活性化を含む、請求項12に記載のタイル。
【請求項16】
追加レーン活性化値の前記セットは、少なくとも2つの追加活性化レーンのそれぞれからの少なくとも1つの再配置された活性化値から形成される、請求項3に記載のタイル。
【請求項17】
前記少なくとも2つの追加活性化レーンは、不連続活性化レーンである、請求項16に記載のタイル。
【請求項18】
前記タイルは、精度値によって定義される要求される精度までビット単位で記憶されたパックされた活性化値の少なくとも1つのセットとして入力活性化値の前記セットを受け取るように構成され、前記タイルは、パックされた活性化値の前記少なくとも1つのセットをアンパックするように構成される、請求項1に記載のタイル。
【請求項19】
パックされた活性化値の前記少なくとも1つのセットは、パックされた活性化値の第1のセットおよびパックされた活性化値の第2のセットを含み、パックされた活性化値の前記第1のセットは、第1の精度値によって定義される第1の要求される精度までビット単位で記憶され、パックされた活性化値の前記第2のセットは、第2の精度値によって定義される第2の要求される精度までビット単位で記憶され、前記第1の精度値は、前記第2の精度値と独立である、請求項18に記載のタイル。
【請求項20】
前記タイルは、入力活性化値の前記セットのパックされた活性化値の各セットに対応するビット・ベクトルを含むビット・ベクトルのセットを受け取るように構成され、前記タイルは、前記対応するビット・ベクトルによって示されるとおりに0値を挿入するためにパックされた活性化値の各セットをアンパックするように構成される、請求項18に記載のタイル。
【請求項21】
前記タイルは、精度値によって定義される要求される精度までビット単位で記憶されたパックされた重みレーン重みの少なくとも1つのセットとして重みレーンの前記セットの前記重みレーン重みを受け取るように構成され、前記タイルは、重みレーン重みの前記少なくとも1つのセットをアンパックするように構成される、請求項1に記載のタイル。
【請求項22】
活性化レーンの前記セットは、列活性化レーンの少なくとも2つのセットであり、列活性化レーンの各セットは、各活性化レーンが重みレーンに対応する列を形成し、前記タイルは、少なくとも1つの重みレーン積を少なくとも2つの列の間で転送するために前記列の間の少なくとも1つの接続を含む、請求項1に記載のタイル。
【請求項23】
ニューラル・ネットワーク内でのビット直列計算のシステムであって、
ニューラル・ネットワーク内でビット直列計算を実行するために請求項1に従って構成された1つまたは複数のビット直列タイルであって、各ビット直列タイルは、入力ニューロンおよびシナプスを受け取り、前記入力ニューロンは、入力活性化値の少なくとも1つのセットを含み、前記シナプスは、重みの少なくとも1つのセットと重み選択メタデータの少なくとも1つのセットとを含み、前記1つまたは複数のビット直列タイルは、出力ニューロンを生成し、各出力ニューロンは、少なくとも1つの重みレーン積を使用して形成される、1つまたは複数のビット直列タイルと、
ニューロンを記憶し、ディスパッチャおよび出力活性化バッファを介して前記1つまたは複数のビット直列タイルと通信している、活性化メモリと
を含み、前記ディスパッチャは、前記活性化メモリからニューロンを読み取り、第1のインターフェースを介して前記1つまたは複数のビット直列タイルに前記ニューロンを通信し、
前記ディスパッチャは、メモリからシナプスを読み取り、第2のインターフェースを介して前記1つまたは複数のビット直列タイルに前記シナプスを通信し、
前記出力活性化バッファは、前記1つまたは複数のビット直列タイルから前記出力ニューロンを受け取り、第3のインターフェースを介して前記活性化メモリに前記出力ニューロンを通信し、
前記第1のインターフェースおよび前記第2のインターフェースの一方は、前記1つまたは複数のビット直列タイルに前記ニューロンまたは前記シナプスをビット直列に通信し、前記第1のインターフェースおよび前記第2のインターフェースの他方は、前記1つまたは複数のビット直列タイルに前記ニューロンまたは前記シナプスをビット並列に通信する
システム。
【請求項24】
ニューラル・ネットワーク内での層の計算のシステムであって、
ニューラル・ネットワーク内で計算を実行するために請求項1に従って構成された1つまたは複数のタイルであって、各タイルは、入力ニューロンおよびシナプスを受け取り、前記入力ニューロンは、それぞれ、少なくとも1つのオフセットを含み、各オフセットは、少なくとも1つの活性化値を含み、前記シナプスは、重みの少なくとも1つのセットと重み選択メタデータの少なくとも1つのセットとを含み、前記1つまたは複数のタイルは、出力ニューロンを生成し、各出力ニューロンは、少なくとも1つの重みレーン積を使用して形成される、1つまたは複数のタイルと、
ニューロンを記憶し、ディスパッチャおよび符号器を介して前記1つまたは複数のタイルと通信している活性化メモリと
を含み、前記ディスパッチャは、前記活性化メモリからニューロンを読み取り、前記ニューロンを前記1つまたは複数のタイルに通信し、前記ディスパッチャは、メモリからシナプスを読み取り、前記シナプスを前記1つまたは複数のタイルに通信し、
前記符号器は、前記1つまたは複数のタイルから前記出力ニューロンを受け取り、それらを符号化し、前記出力ニューロンを前記活性化メモリに通信し、
前記オフセットは、非0ニューロンだけに対して計算を実行するために前記タイルによって処理される
システム。
【請求項25】
活性化値のセットを受け取り、活性化値の前記セットをマルチプレクサ入力値の少なくとも1つのセットに再配置する活性化選択ユニットと、
少なくとも1つの重みおよび少なくとも1つの重み選択メタデータを受け取る重み値レセプタのセットと、
マルチプレクサ入力値の前記少なくとも1つのセットと少なくとも1つの重み選択メタデータとのうちの少なくとも1つを受け取る少なくとも1つのマルチプレクサであって、前記少なくとも1つのマルチプレクサは、マルチプレクサ入力値の前記少なくとも1つのセットから少なくとも1つの組合せ活性化値を選択するために前記少なくとも1つの重み選択メタデータを適用するように構成される、少なくとも1つのマルチプレクサと、
少なくとも1つの積を作るために前記少なくとも1つの重みに前記少なくとも1つの組合せ活性化値を適用する少なくとも1つのコンビネータと、
前記少なくとも1つの積を出力する少なくとも1つの積出力ディスペンサと
を含むアクセラレータ・タイル。
【請求項26】
請求項25に記載のアクセラレータ・タイルを含むニューラル・ネットワーク・アクセラレータ。
【請求項27】
活性化値の前記セットを前記活性化選択ユニットに供給する活性化メモリをさらに含む、請求項25に記載のアクセラレータ・タイル。
【請求項28】
マルチプレクサ入力値の前記少なくとも1つのセットは、マルチプレクサ入力値の少なくとも2つのセットを含み、前記少なくとも1つのマルチプレクサは、マルチプレクサ入力値の前記少なくとも2つのセットのうちの少なくとも1つとマルチプレクサ入力値の少なくとも1つの他方のセットからの少なくとも1つの活性化値とを受け取るように構成される、請求項25に記載のアクセラレータ・タイル。
【請求項29】
前記コンビネータは、乗算器、複数の乗算器又はシフタに接続された加算器、およびシフタのうちの少なくとも1つである、請求項25に記載のアクセラレータ・タイル。
【請求項30】
マルチプレクサ入力値の各セットは、標準活性化値と少なくとも1つのルックアヘッド活性化値とを含む、請求項25に記載のアクセラレータ・タイル。
【請求項31】
活性化効率を活用するアクセラレータ構造上で実施される、請求項25に記載のアクセラレータ・タイル。
【請求項32】
活性化値の前記セットの各活性化値は、16ビットである、請求項25に記載のアクセラレータ・タイル。
【請求項33】
活性化値の前記セットの各活性化値は、符号付きの2のべきである、請求項25に記載のアクセラレータ・タイル。
【請求項34】
前記少なくとも1つのマルチプレクサの各マルチプレクサのサイズは、2のべきである、請求項25に記載のアクセラレータ・タイル。
【請求項35】
前記少なくとも1つのマルチプレクサの各マルチプレクサのサイズは、8である、請求項34に記載のアクセラレータ・タイル。
【請求項36】
スパーシティが存在するニューラル・ネットワークにおける重みの更新のトレーニングのための請求項1に記載のニューラル・ネットワーク・アクセラレータ・タイルの使用。
【請求項37】
スパーシティが存在するニューラル・ネットワークにおける重みの更新のトレーニングのための請求項25に記載のアクセラレータ・タイルの使用。
【請求項38】
前記重みレーン重み選択メタデータは、マルチプレクサ選択信号を指定するテーブルをインデクシングする、請求項1に記載のタイル。
【請求項39】
記重み選択メタデータは、マルチプレクサ選択信号を指定するテーブルをインデクシングする、請求項25に記載のアクセラレータ・タイル。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、全般的にはニューラル・ネットワークのハードウェア・アーキテクチャに関し、より具体的には、ニューラル・ネットワーク・ハードウェア・アクセラレータに関する。
【背景技術】
【0002】
深層学習ニューラル・ネットワーク(DNN)は、ハイエンド・サーバからモバイル・システムおよび組み込みシステムまでのさまざまなコンピューティング・プラットフォーム上で実行する増加する個数の応用例を見出してきた。DNN作業負荷の増加する重要性とその高い計算需要およびメモリ需要とを考慮して、特殊化されたハードウェア・アクセラレータが現れた。
【0003】
画像ベースの応用例を支配してきた畳み込みニューラル・ネットワーク(CNN)など、複数のタイプのDNNが存在する。たとえば、CNNは、画像またはビデオ・フレームの推論に使用される場合があり、CNN、特にCNNの実行時間を支配する傾向がある畳み込み層を用いる推論の加速が、しばしば望まれる。
【0004】
ニューラル・ネットワークの加速の分野での最近の開発は、ハードウェア実施態様に向かう推進を含む。たとえば、高いネットワーク接続性または他の特徴を有するなど、ニューロンの挙動をより密接にエミュレートするように設計された回路が開発された。
【発明の概要】
【0005】
本発明の一実施形態によれば、重みレーンのセットと活性化レーンのセットとを定義する、入力スパーシティを活用するニューラル・ネットワーク・アクセラレータ・タイルであって、各重みレーンは、活性化レーンに対応し、タイルは、重みレーンのセットの各重みレーンに重みおよび重み選択メタデータを供給する重みメモリと、各活性化レーンに再配置された活性化値のセットを供給するために、入力活性化値のセットを受け取り、入力活性化値のセットを再配置する活性化選択ユニットと、マルチプレクサのセットであって、マルチプレクサのセットは、活性化レーンおよび重みレーンの対ごとに少なくとも1つのマルチプレクサを含み、各マルチプレクサは、重みレーン重み選択メタデータに基づいて、再配置された活性化値の活性化レーン・セットから活性化レーンの組合せ活性化値を選択するように構成される、マルチプレクサのセットと、組合せユニットのセットであって、組合せユニットのセットは、マルチプレクサごとに少なくとも1つの組合せユニットを含み、各組合せユニットは、重みレーン積を出力するために、活性化レーン組合せ値を重みレーンと組み合わせるように構成される、組合せユニットのセットとを含む、タイルが提供される。
【0006】
本発明のさらなる実施形態によれば、活性化値のセットを受け取り、活性化値のセットをマルチプレクサ入力値の少なくとも1つのセットに再配置する活性化選択ユニットと、少なくとも1つの重みおよび少なくとも1つの重み選択メタデータを受け取る重み値レセプタのセットと、マルチプレクサ入力値の少なくとも1つのセットと重み選択メタデータの少なくとも1つのセットとのうちの少なくとも1つを受け取る少なくとも1つのマルチプレクサであって、少なくとも1つのマルチプレクサは、マルチプレクサ入力値の少なくとも1つのセットから少なくとも1つの組合せ活性化値を選択するために少なくとも1つの重み選択メタデータを適用するように構成される、少なくとも1つのマルチプレクサと、少なくとも1つの積を作るために少なくとも1つの重みに少なくとも1つの組合せ活性化値を適用する少なくとも1つのコンビネータと、少なくとも1つの積を出力する少なくとも1つの積出力ディスペンサとを含むアクセラレータ・タイルが提供される。
【0007】
本願による他の態様および特徴は、添付図面に関連して本発明の実施形態の以下の説明を再検討する時に、当業者に明白になる。
【0008】
本発明の原理は、本発明の原理および態様を組み込んだ1つまたは複数の例示的実施形態の実例として提供される添付図面を参照して、よりよく理解することができる。
【図面の簡単な説明】
【0009】
図1】例の畳み込み層を示す概略図である。
図2】例の擬似コード畳み込み層計算を示す図である。
図3】密ニューラル・ネットワーク・アクセラレータ・タイルを示す概略図である。
図4A-4B】CNN機能性を示す例の概略図である。
図5A-5C】一実施形態による、ルックアヘッド機能性を示す概略図である。
図6A-6B】一実施形態による、ルックアサイド機能性を示す概略図である。
図7A-7C】一実施形態による、重みスキップ(weight skipping)アクセラレータ・タイル・アーキテクチャを示す概略図である。
図8】一実施形態による、無効な活性化ビットをスキップする能力を追加したアクセラレータ・タイル・アーキテクチャを示す概略図である。
図9】一実施形態による、マルチタイル・アクセラレータを示す概略図である。
図10】3つの実施形態による、AlexNet-ESに対する性能改善を示す図である。
図11】3つの実施形態による、GoogLeNet-Esに対する性能改善を示す図である。
図12】重みスキップだけを有する実施形態による、スパース昇格ウィンドウを用いる性能を示す図である。
図13A-13B】2つの実施形態の構成のエネルギ効率を比較する図である。
図14】5つの圧縮方式実施形態の性能を示す図である。
図15】マルチプレクサ選択テーブル(MST)が各フィルタ・レーンに導入される実施形態を示す概略図である。
【発明を実施するための形態】
【0010】
図面では、同様の符号が、同様のまたは対応する要素を示す。
【0011】
以下の説明および本明細書で説明される実施形態は、本発明の原理の特定の実施形態の例として提供される。これらの例は、これらの原理および本発明の、限定ではなく例のために提供される。この説明では、同様の部分は、本明細書および図面の全体を通じて、同一のそれぞれの参照番号を用いてマークされる。図面は、必ずしも原寸通りではなく、いくつかの場合に、比率は、本発明のある特徴をより明瞭に示すために誇張されている場合がある。
【0012】
この説明は、ニューラル・ネットワークのハードウェア・アクセラレータに関し、畳み込みネットワーク(CNN)を用いる推論に使用される構成を特に参照して説明される。
【0013】
CNNは、しばしば、層の連鎖または有向非巡回グラフを含み、畳み込み層(CVL)が、多くの画像関連応用例で実行時間を支配する。図1に示された実施形態では、畳み込み層1000は、A×A×C活性化配列1100を受け取り、これが、K個の重みフィルタ配列のセット1200を用いて畳み込まれ、セット1200は、FからFK-1までのF×F×Cフィルタ配列であり、O×O×K出力活性化配列1300を作る。出力活性化配列1300の各出力活性化o(x,y,k)は、フィルタF<u>kと、入力活性化配列1100のF×F×C部分配列ウィンドウとのドット積である。ウィンドウは、ストライドSを使用して等しい間隔を設けられ、[A/S]×[A/S]=O×Oをもたらす。Rectifier Linear Unit(ReLU)などの活性化関数が、各出力活性化に適用される。しばしば、図1に示された実施形態などの層は、出力活性化配列を作るのにドット積計算の100秒から1000秒を必要とし、100秒から1000秒のそれぞれは、入力重み/活性化対のものである。
【0014】
図2に示されているように、一実施形態では、CVLを、6段にネストされたループとして実施することができる。いくつかの実施形態では、ループの乗算が独立であり、ループの異なる順列が同一の出力活性化配列を作り、いくつかの順列で、計算を並列に実行することができる。
【0015】
CVLは、しばしば、特定のタイプのニューラル・ネットワーク内の特定のタイプの層と考えられるが、他のタイプの層を、CVLの変形として実施することができる。たとえば、全結合層を、単一のウィンドウを有し、フィルタおよび入力が同一次元を有するCVLとして実施することができる。
【0016】
図2の6重にネストされたループによって実施されるCVLは、すべての重みおよび活性化を処理するので、密CNNを処理するかのように活性化および重みを処理した。しかし、実際には、一部の重みは0であり、一部の活性化は、0または0として扱うのに十分に0に近く、したがって無効である。多くのニューラル・ネットワークは、さまざまな理由からスパースであり、たとえば、しばしばCNNの再トレーニングを必要とする重み枝刈りも、重みスパーシティ(weight sparsity)に寄与する可能性がある。
【0017】
ハードウェア・アクセラレータの実施形態は、重みと活性化との一方または両方のスパーシティなどのスパーシティを活用する。本発明の実施形態では、重みスパーシティが直接に活用され、活性化スパーシティは間接に活用される。諸実施形態は、有効な活性化に関してさえ利益を生じることができる。
【0018】
図1に示されたCVLを処理するなど、密CNNを処理するデータ並列ハードウェア・アクセラレータ3000の例を、図3に示す。データ並列ハードウェア・アクセラレータ3000は、複数サイクルで重みおよび活性化を処理し、1サイクルあたりk個の出力活性化を作る。データ並列ハードウェア・アクセラレータ3000は、N個の活性化の同一のセットに対して並列に動作するk個の内積ユニット(IPU)3100を含む。各入力活性化は、次のように、フィルタのセット1200のフィルタあたり1つのk個の重みを乗算される。各IPU 3100は、1サイクルあたり、入力活性化あたり1つのN個の重みのベクトルを受け入れ、N個の積を計算し、加算器ツリーを介してこれらを縮小し、その結果を出力レジスタに蓄積する。通常は複数のサイクルにわたって、ウィンドウ全体が処理された後に、出力レジスタは、対応する出力活性化を含む。
【0019】
データ並列ハードウェア・アクセラレータ3000は、それぞれ重みおよび活性化をアクセラレータ3000に供給する重みメモリ3200および活性化メモリ3300を含む。Y.Chen,T.Luo,S.Liu,S.Zhang,L.He,J.Wang,L.Li,T.Chen,Z.Xu,N.Sun,およびO.Temam、“Dadiannao: A machine-learning supercomputer”、Microarchitecture(MICRO),2014 47th Annual IEEE/ACM International Symposium on,609~622頁、2014年12月で開示された実施形態に類似する図示の実施形態では、重みメモリ3200および活性化メモリ3300は、一時に層全体を保持するのに十分に大きく、重みメモリ3200は、単一の幅広い読取ポートを介して1サイクルあたりN×k個の重みを供給でき、活性化メモリ3300は、幅広い読取ポートを介して1サイクルあたりN個の活性化を供給でき、重みバッファおよび活性化バッファは、重みメモリ3200および活性化メモリ3300のレイテンシを隠蔽し、出力活性化バッファは、結果を収集した後に、ニューラル・ネットワーク内の次の層の活性化メモリ3300にそれらを書き戻す。図示されているように、アクセラレータ3000は、推論アクセラレータの多くの実施形態と同様に、活性化および重みを表すのに16ビット固定小数点フォーマットを使用する。図3に示された実施形態は、複数のタイルが存在する場合に、それらのすべてが同一の活性化メモリ3300に接続され、活性化メモリ3300が、すべてのタイルに1サイクルあたりN個の活性化のブロックをブロードキャストすることを前提とする。
【0020】
図4Aおよび図4Bは、図3のアクセラレータ3000のIPU 3100が活性化およびステップをどのように処理するのかの例を示し、ここで、Nは4にセットされ、kは1にセットされている。活性化は、
【数1】
と表され、重みは、
【数2】
と表され、ここで、laneは、それらが現れる活性化列および重み行を表し、stepは、それらが乗算される時間的な順序を表す。各ステップが単一のサイクルを要すると仮定すると、重みのセットが図4Aのように密であるのか図4Bのようにスパースであるのかにかかわりなく、アクセラレータ3000は、4サイクルで16個の積を作る。これは、積が自由にスケジューリングされる場合に、図4Bの例で要求される6つの積を2サイクルでおこなえるという事実にもかかわらず、そうである。本発明の実施形態は、重みおよび活性化の制限されないスケジューリングという複雑さを回避しながら、無効な重みを有する積を除去する。
【0021】
本発明の実施形態は、有効な重みを時間的に静的に昇格させ、そうでなければ無効な重みを処理しているはずの時にそれらを処理することによって、無効な重みを除去する。ソフトウェア・スケジューリング・パスは、処理の前に重みを再配置し、その結果、重みが、実行時にフェッチされる時に右のレーンおよびステップに現れるようにする。その結果、そのような実施形態のタイルは、関連する重みメモリへの単一の幅広いアクセスを用いて、1ステップあたりに、それが必要とするk×N個の重みのすべてにアクセスすることができる。各有効な重みは、実行時に適当な活性化とマッチングされ得るようにするために、元の密な重みスケジュール内での位置を識別する狭いメタデータを保持する。
【0022】
諸実施形態では、重みスケジューリング柔軟性は、2つのフィルタ間重み移動すなわちルックアヘッド移動およびルックアサイド移動だけが許容されるスケジューリングを可能にすることによるなど、エネルギおよび面積の効率とバランスをとられ得る。ルックアヘッド移動は、無効な重みw[lane,step-h]を置換するために有効な重みw[lane,step]を進める(hは、アクセラレータ・アーキテクチャ内で使用可能にされなければならない活性化値の個数にリンクされたルックアヘッド深さ)など、無効な重みを置換するために有効な重みがステップにおいて前進することを可能にする。ルックアサイド移動は、有効な重みが異なるレーン内の無効な重みを置換することを可能にし、たとえば、無効な重みw[(lane+d)MOD(N-1), tep-1]を置換するために、有効な重みw[lane,step]を1時間ステップ前進させ、dレーンだけシフトすることができる。
【0023】
図5A図5Cは、図4Bに示されたスパース・フィルタを適用するアクセラレータ5000のルックアヘッド重みスケジューリングの例の概略図を示す。図5A図5Cに示されているように、h=1をセットすることは、実行時間を4サイクルから3に短縮する。図4A図4Bのアクセラレータ実施形態と同様に、図5A図5Cのアクセラレータ5000は、1サイクルあたり4つの積を作ることができる。ルックアヘッドの使用は、その中で有効な重みが同一レーン内に現れる無効な重みより昇格され得るh+1のスライディング・ウィンドウをアクセラレータ5000が確立することを可能にする。
【0024】
図5Aに示されたサイクル0では、ルックアヘッド・ウィンドウ5100は、重みレーン2を利用できず、焦げる 重みw[2,2]は、ルックアヘッド距離2であり、hは1にセットされる。図5Bでは、サイクル1に、有効な重みw[1,1]が処理されており、したがって、ルックアヘッド・ウィンドウ5100は、アクセラレータ5000のリーチをステップ1=hまたは2に延長する。これは、アクセラレータ5000が、無効な重みw[2,1]を置換するために有効な重みw[2,2]を昇格することを可能にするが、重みw[3,3]は、ルックアヘッド・ウィンドウ5100の外のままである。しかし、ステップ3で処理されるべき重みがもはやないので、アクセラレータ5000は、図5Cに示されているように、サイクル2で重みw[3,3]が処理されるように、ステップ=3に2ステップだけ進む。
【0025】
図5A図5Cに示されているように、レーン内の重みの静的昇格は、アクセラレータ5000が対応する活性化へのアクセスを実行時に有することを必要とする。図示されているように、このペアリングを可能にするために、アクセラレータ5000は、ルックアヘッド・ウィンドウ5100全体のすべての活性化へのアクセスを有する。hが1にセットされているので、各サイクルにアクセラレータ5000から使用可能にされる2つの活性化レーンがある。アクセラレータ5000は、重みレーンごとの2対1マルチプレクサを介して適当な活性化を選択し、このマルチプレクサの制御信号は、重みスケジュールがルックアヘッド機能のために変更される時に静的に決定され、制御信号は、対応する重みと一緒に記憶される。
【0026】
アクセラレータ5000は、hのルックアヘッド・ウィンドウの適当な活性化を選択するために(h+1)対1マルチプレクサごとにh個の余分の活性化レーンを使用し、図示のhは、1にセットされている。さまざまな実施形態では、活性化のより幅広いグループのサポートは、コストおよび特にアクセラレータの構成の変動につながる。活性化レーンが、アクセラレータの他の実施形態では1タイルあたりk個のフィルタの間で共有されるので、活性化レーンを含めることのコストは、しばしば、複数の重みレーンにまたがって償却され得る。多くの場合に、アクセラレータにルックアヘッド構造を適用することの利益は、2以下のhを用いて入手可能である。
【0027】
図6A図6Bは、ルックアサイド構造を使用するアクセラレータ6000の概略図である。アクセラレータ5000のルックアヘッド構造によって可能にされるサイクル削減は、最多の有効な重みを有するレーン内の有効な重みの個数までに制限される。アクセラレータ6000のルックアサイド構造は、アクセラレータ6000があるレーン内で別のレーンの重みを処理することを可能にし、アクセラレータ6000が、隣接する、よりスパースに投入されたレーンの時間およびレーン・ステップで、元の重み構造のより密に投入されたレーンの重みを処理することを可能にする。
【0028】
アクセラレータ6000は、dが1にセットされたルックアサイド構造を使用する。図6Aに示されているように、サイクル0で、レーン2は、レーン1からの重みw[1,1]を処理し、アクセラレータ6000のレーン2が、ステップ0でアイドルのままになるのではなく重みを処理することを可能にする。これは、アクセラレータ6000が、2ステップで重みのセットを処理することをも可能にする。というのは、h=1のルックアヘッドをも使用する時に、サイクル1で、ステップ2に進み、重みw[2,2]と重みw[3,3]との両方を処理することができるからである。したがって、アクセラレータ6000は、ルックアヘッド構造およびルックアサイド構造を使用し、h=d=1をセットすることによって、最小のサイクル数で図4Bの重みのセットを処理することができる。
【0029】
アクセラレータ6000は、h=1のルックアヘッド構造を使用したので、各時間ステップに各重みレーンから使用可能な2つの活性化レーンを有する。その結果、d=1のルックアサイド構造の使用は、アクセラレータ6000が追加の活性化レーンを提供されることを必要とせず、アクセラレータ6000は、より多くの入力を有する活性化マルチプレクサだけを必要とする。アクセラレータ6000は、hにセットされたルックアサイドおよびdにセットされたルックアヘッドのために(h+d+1)対1マルチプレクサを使用する。これらのマルチプレクサのデータ入力接続は、静的に決定され、規則的である。アクセラレータ5000と同様に、アクセラレータ6000のマルチプレクサの制御信号は、静的に決定され、重みと一緒に記憶され、lg(h+d+1)ビットを必要とする。アクセラレータ変形形態では、高められたd値は、より高いスケジューリング柔軟性を可能にする可能性があるが、高められた相互接続コストを犠牲にする可能性がある。
【0030】
図7A図7Cは、重みスキップ・アクセラレータ・タイル7000の構造を示す。アクセラレータ・タイル7000は、k個のフィルタについて並列に1フィルタあたりN個の結果を処理する。タイル7000は、活性化が活性化メモリ7200によって供給される時にこれをバッファリングする活性化選択ユニット(ASU)7100を含む。ASU 7100は、活性化を再配置し、その結果、重みスキップ・ユニット(WSU)7300が、適当な活性化を簡単に選択できるようになる。
【0031】
WSU 7300のWSUスライス7310を、図7Bにさらに詳細に示す。WSU 7300は、1フィルタあたり1つのスライスを含み、1タイルあたり合計k個のスライスを含む。アクセラレータ7000のWSUスライス7310は、単一の重みメモリ7400ポートを介して、事前にスケジューリングされた重みの列を、そのマルチプレクサ選択メタデータと一緒に読み取る。WSU 7300は、1アクセスあたり、N×k重み/メタデータ対と活性化レーン制御(ALC)フィールドとを読み取る。図示されているように、アクセラレータ・タイル7000は、WSUスライス7310あたりN個の重みを処理し、すべての重みは、1ステップで処理される。
【0032】
WSUスライス7310は、N個の重みwからwをとり、これらのそれぞれは、乗算器7311の入力の1つに供給する別々の重みレーンにマップする。(h+d+1)対1マルチプレクサが、乗算器7311への第2の入力を選択する。マルチプレクサ制御信号は、WSU 7300が重みメモリ7400から読み取る重み選択(ws)メタデータ7312に由来する。(h+d+1)対1マルチプレクサ7313は、十分な活性化値の入力が、可能な活性化への乗算器7311アクセスを可能にすることを可能にする。
【0033】
タイル7000によって処理される重みwごとに、h個の活性化のルックアヘッド・ウィンドウに対応するh+1個の活性化Ai,0からAi,hがある。たとえば、wについて、A1,2が、ルックアヘッド2にある活性化であるが、wについて、AN,hが、ルックアヘッドhにある活性化である。ASU 7200は、論理ルックアヘッド順序と一致するように活性化を順序付け、Ai,j信号をマルチプレクサ入力に静的に割り当てることによって、WSU 7300がルックアヘッドおよびルックアサイドを実施することを可能にする。たとえば、wのルックアサイド1接続は、A3,1であり、そのルックアヘッド2接続は、A2,2である。すべてのWSUスライス7310が、同一の(h+1)×N活性化を共有する。
【0034】
図7Bに示されているように、アクセラレータ・タイル7000のWSUスライス7310は、1サイクルあたりN個の16b×16b積を作り、tから
【数3】
として出力する。これらの積は、その出力が複数のサイクルにわたって出力活性化に蓄積する加算器ツリーに供給する。いくつかの実施形態で、本アクセラレータ・タイル7000の変形形態は、活性化の特性を利用するために、乗算器7311がANDゲートまたはシフタに置換されてもよい。
【0035】
図7Cに示されているように、ASU 7200は、WSU 7300が使用する
【数4】
信号を生成する。ASU 7200は、対応する重みレーンおよびステップ距離ルックアヘッドによって必要とされる入力活性化を乗算器7311に供給するために設けられる。ASU 7200は、それぞれがN個の入力活性化を保持するh+1個の活性化ブロック・レジスタ(ABR)7210を含む。各ABR 7210は、ある特定のルックアヘッド距離l=0からhですべての重みレーンによって必要とされるN個の活性化を保持する。ABR 7210は、論理的には循環キューとして動作し、ヘッド・レジスタは、ルックアヘッド=l=0の活性化を保持するABRをポイントする。それぞれ(h+1)対1マルチプレクサであるh+1個のマルチプレクサ7220の配列が、ABR出力を適当な順序にシャッフルして、図7Cの最下部付近に示されているように重み列に沿って分布する
【数5】
信号を生成する。WSU 7300が各N×k重み列と一緒にWM 7400から読み取るALCメタデータは、ヘッド・レジスタを進め、スライディング・ルックアヘッド・ウィンドウを実施するのに使用される。
【0036】
活性化バッファ(AB)7230は、活性化が活性化メモリ(AM)7100から読み取られる時に活性化をバッファリングする。AB 7230は、それぞれ専用の単一読取ポートを介して1つのABR 7210に接続されたh+1個のバンクを有する。この形で、任意の個数のABR 7210を、サイクルごとに並列に更新し、効果的に、ALCメタデータによる指示に従ってルックアヘッド・ウィンドウを進めることができる。この配置は、アクセラレータ・タイル7000が、無効な重みだけを含む列をスキップすることをも可能にする。
【0037】
重みスキップは、重みスパーシティを活用するが、入力活性化の潜在的に貴重な特性のいずれをも活用しない。本発明のいくつかの実施形態では、アクセラレータまたはアクセラレータ・タイルは、入力活性化の特性を利用し、または入力活性化と重みとの両方の特性を利用するように構造化され得る。本発明の実施形態は、異なる面積、性能、およびエネルギ効率のトレードオフを提供する。いくつかの実施形態は、活性化の有効ビット内容を活用し、性能を優先する。いくつかの実施形態は、細粒度動的活性化精度可変性を活用し、エネルギ効率を優先する。いくつかの実施形態は、無効であろうとなかろうと、すべての活性化について利益を提供する。下で詳細に議論する実施形態は、無効な活性化の除去を追求せず、両方の実施形態が、無効な活性化を活用する。
【0038】
ニューラル・ネットワークの層への入力活性化の平均的セットの多くの活性化ビットは、非0である活性化の分数のものであっても、0であり、したがって乗算中には無効である。本発明の実施形態は、別々にまたは重みスパーシティの活用と組み合わせてのいずれかで、無効な活性化ビットを活用する。
【0039】
図8に示されているように、アクセラレータ8000は、経時的に、活性化の有効なビットだけをビット直列に処理するように構造化される。たとえば、アクセラレータ8000は、3つのサイクルにわたって活性化値{0000 0000 1000 1111b}を処理し、それぞれ対応する重みに符号付きの2のべき、{+2,-2,+2}を乗算する。これらのべきは、活性化値のブース符号化された表現である。この構造は、アクセラレータ8000が、有効な活性化ビットの個数に比例する実行時間で入力活性化を処理することを可能にする。しかし、活性化が、現在はビット直列で処理されるので、アクセラレータ8000が、1サイクルあたりN×N個の重み/活性化対のみを処理する場合に、全体的なスループットが下がる。アクセラレータ8000は、16個の活性化ウィンドウを並列に処理し、したがって全体的なスループットを高めることによって、スループットのこの消失を補償する。その結果、同一の重みを、16個のウィンドウにわたって再利用することができ、WMインターフェースは、前の実施形態のままになる。しかし、アクセラレータ8000は、活性化グループにまたがって同期化された共通の加算器ツリーに供給するすべてのレーンを維持する、すなわち、活性化値の次のグループに進行する前に、1つの処理 最多の有効なビットを有する活性化 が完了するのを待つ。設計者は、所望の性能、面積、エネルギ効率ターゲットを達成するために、異なる個数の活性化ウィンドウを並列に処理することを選択することができる。
【0040】
設計において、図8のアクセラレータ8000は、活性化を処理するプラグマティック・アクセラレータ(Pragmatic Accelerator、PRA)の要素の多数を反映する(PRA設計の議論に関しては、これによって参照によって組み込まれている、J.Albericio,A.Delmas,P.Judd,S.Sharify,G.O’Leary,R.Genov,およびA.Moshovos、“Bit-pragmatic deep neural network computing”、Proceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitecture,MICRO-50’17,382~394頁、2017年を参照されたい)。PRA設計は、密CNNをターゲットとし、有効な活性化ビット内容に比例する実行時間を提供するために無効な活性化ビットを活用する。PRA設計は、一時に1つの有効なビットずつ、活性化をビット直列に処理する。タイルごとのユニットが、修正ブース符号化を適用した後に、活性化を2の有効なべきのストリームすなわちオネフセット(oneffset)に変換する。PRA設計は、各サイクルに2のべきで重みを乗算するので、その代わりにシフタが十分である。オネフセット符号は、加算器ツリーを介してシフトされた重みを加算しまたは減算するのに使用される。同等のビット並列設計のスループットを維持するために、PRA設計は、複数の活性化ウィンドウを並列に処理し、この設計がウィンドウ処理にまたがって同一の重みを再利用することを可能にする。
【0041】
プラグマティック・アクセラレータ(PRA)設計のバックエンドは、いくつかのアクセラレータ実施形態では変更されてもよい。PRAなどのいくつかの実施形態では、アクセラレータ実施形態は、一時に1つの有効なべきずつ、活性化をビット直列に処理する。ABRごとのユニットが、修正ブース符号化を適用した後に、活性化を2の有効なべきのストリームすなわちオネフセットに変換する。いくつかの実施形態では、本発明のアクセラレータは、オネフセットに重みを乗算するのにシフタを使用し、結果は、オネフセット符号に従って加算器ツリーを介して加算されまたは減算される。本発明のアクセラレータが、同等のビット並列設計のスループットと一致しまたはこれを超えることを保証するために、これらのアクセラレータは、16個の活性化ウィンドウを並列に処理することができる。これは、これらのアクセラレータが、16個のIPユニットにまたがって同一の重みを再利用することを可能にする。
【0042】
図8は、アクセラレータ8000のタイルを示す。図3のk個の内積(IP)ユニットが、16×k個のより単純なIPユニット8100のグリッドに拡張されている。プラグマティック設計の主要な変更は、WSUスライスおよびASUスライスの包含と、行ごとのリングを使用して部分和を1列だけ移動する能力とである。具体的には、図7A図7Cに関して議論したオリジナルWSUは、k個のIP 8100の列ごとに1つの、16個の列8200、WSU/0からWSU/15にスライスされる。これらの16個の列のそれぞれが、異なるウィンドウに対応する。各IP 8100は、16入力加算器ツリーを有し、N個の乗算器の代わりにN個のシフタを有する。これらのそれぞれが、活性化オネフセット入力による指示通りに16b重み入力をシフトする。同一の行に沿ったすべてのIP 8100が、同一のw(重み)信号およびws(重み選択)信号を共有し、すべてが正確に同一のルックアヘッド活性化選択およびルックアサイド活性化選択を実行する。図6とは異なって、ここでのマルチプレクサは、4b活性化オネフセットを選択し、面積を大幅に削減する。これらのオネフセットは、3位置までのシフトと符号およびイネーブルとを符号化する。列ごとに、ASU 8300の対応するASUスライス、ASU/0からASU/15は、前と同様に、それぞれがルックアヘッドをサポートするためにh活性化のデータを含む、重みレーンごとに1つの、N個の活性化グループのデータを提供する。図6とは異なって、ASUは、4bオネフセットを提供する。すべてのWSU列8200が同一の重みスケジュールを実行するので、16個のASUスライスのすべてが、相前後して活性化バッファにアクセスし、同一の活性化選択論理および活性化選択信号を共有する。
【0043】
プラグマティック・アクセラレータ設計では、各列が異なるウィンドウを計算するので、ウィンドウがオーバーラップする場合に、各入力活性化は、最終的に異なる列に現れなければならない。その結果、プラグマティック・アクセラレータ設計を単純に拡大することは、AMと各タイルの活性化バッファとの間にクロスバを必要とするはずである。TCLは、入力活性化空間を16個のIP列に静的にインターリーブし、その結果、クロスバが不要になる。具体的には、すべての活性化a(c,x,y)は、列(x×S)MOD 16にマップする。この変更を用いると、各出力活性化をIPで完全に計算することは、もはや不可能である。アクセラレータ実施形態は、図8に示されたリング8400を使用して、部分和を水平に1列スライドさせる。プラグマティック・アクセラレータ設計は、完了した結果を読み出し、少数のチャネルを有する層の利用度を高めるのに使用される、隣接する列IPの間の接続をすでに含む。部分和は、列にマップする活性化に関するすべての和を蓄積するのに必要である限り、その列に留まる。その後、すべての部分和は、相前後して次の列に進む。表1は、処理がJaZeでどのように進行するのかの例を示す。
【表1】
【0044】
いくつかの実施形態では、無効な活性化または活性化ビットを、異なる形で活用することができる。たとえば、いくつかの実施形態で、活性化の有効なビット内容を、精度要件を活用することによって活用することができる。高精度な活性化の必要は、ネットワークにまたがって、および層にまたがって変化し、プロファイリングなどを介して判定され得る。一実施形態では、16bのベースライン精度と比較して、実行時間を16/p倍削減することができ、pは、高精度活性化使用である。 たとえば、Stripes(STR)アクセラレータ・タイル設計を使用することができる。STRアクセラレータ・タイル設計は、P.Judd,J.Albericio,T.Hetherington,T.Aamodt,およびA.Moshovos、“Stripes: Bit-serial Deep Neural Network Computing”、Proceedings of the 49th Annual IEEE/ACM International Symposium on Microarchitecture,MICRO-49、2016年と、トロント大学のGoverning Councilへの米国特許公告第US 2017/0357891 A1号、名称「Accelerator for Deep Neural Networks」(発明人、Patrick Judd、Jorge Albericio、Alberto Delmas Lascorz、Andreas Moshovos、およびSayeh Sharify)に開示されており、この両方が、これによって参照によって組み込まれている。
【0045】
STR設計は、活性化をビット直列に処理し、したがって、pビットで表された活性化を処理するのにpサイクルを要する。PRA設計と同様に、ビット並列設計と比較した計算帯域幅の消失を補償するために、STR設計を使用する実施形態は、16個のウィンドウを並列に処理するなど、複数のウィンドウを並列に処理する。STR設計は、乗算器ではなくANDゲートを使用する。STR設計のブロック・レベルの説明は、図8に示したPRA設計のそれに類似する。しかし、STR設計は、一時に単一のオネフセットではなく一時に単一のビットだけ活性化を送るASUを使用し、オネフセットとして活性化を符号化する必要がない。通常のSTR設計では、1活性化あたり、PRA設計より少数のワイヤが必要であり、シフタがなく、加算器ツリーの入力幅は16bである。
【0046】
入力活性化を活用するアクセラレータ構造の使用は、重みスパーシティを活用する構造を用いるすべての情況で望まれるとは限らない。たとえば、STRは、プロファイルから導出された精度要件を使用したが、精度が、すべての可能な入力に対処しなければならず、精度が、ある層のすべての活性化に対処しなければならないので、その層の、プロファイルから導出された精度が悲観的であることが観察された。しかし、実際には、いくつかの実施形態で、ある特定の入力の活性化の制限されたセットだけが、実行時に並列に処理される。さらに、いくつかの実施形態で、ほとんどの活性化が0に近いので、この手法は、並列に処理される活性化のグループあたりに必要な精度を大幅に削減する。活性化グループごとに必要な精度は、精度が活性化メモリから読み取られ、活性化値と一緒に通信される時に検出される。代替案では、活性化グループごとの精度を、メモリに記憶する前に出力で検出することができる。精度要件は、ReLU以外の重み関数および活性化関数に対処するために、符号なし数および符号なし数について検出され得る。STR構造を使用する上の実施形態に関して、動的精度減少は、実行時間を減らすが、STR構造を使用する上の実施形態とPRA構造を使用する実施形態との両方に関して、動的精度は、活性化メモリから活性化を読み取った後に送る必要のあるビット数を減らす。PRA構造を使用する上の実施形態が、各タイルでローカルにオネフセットを生成することを想起されたい。
【0047】
ニューラル・ネットワークが正しく動作する必要がある数値精度が、ネットワークにまたがっておよび同一ネットワークの層にまたがってかなり変化することがわかった。たとえば、これによって参照によって組み込まれている、P.Judd,J.Albericio,T.H.Hetherington,T.M.Aamodt,N.D.Enright Jerger,R.Urtasun,およびA.Moshovos、“Reduced-Precision Strategies for Bounded Memory in Deep Neural Nets”、CoRR abs/1511.05236(2015年)(「Judd他」)では、 プロファイリングを使用して層ごとの数値精度を判定する方法が提案された。しかし、これによって参照によって組み込まれている、A.Delmas,P.Judd,S.Sharify,およびA.Moshovos、“Dynamic Stripes: Exploiting the Dynamic Precision Requirements of Activation Values in Neural Networks”、CoRR abs/1706.00504(2017年)(「Delmas他」)では、精度のこの可変性が、層粒度より小さい粒度で、より顕著になることが観察された。数値精度は、数を安全に表すのに必要なビット数を指す。固定小数点表現の場合に、これは、正確には数全体のビット・カウントである。他の表現に関して、浮動小数点数の指数または仮数など、表現の異なる構成要素の別々のビット・カウントが必要になる場合がある。
【0048】
説明されたアクセラレータの実施形態は、精度要件を活用して、乗算を処理するのに必要なサイクル数を削減する。しかし、計算に加えて、通信およびストレージも、深層学習コンピューティングの主要な課題である。したがって、活性化および重みの精度要件の可変性を活用する方法が、ストレージおよび通信の必要を削減するために提示される。特定の実施態様を、下で説明する。まず、Delmas他の動的精度検出方法が、負の数にもあてはまり、ここで、先頭の1を探すのではなく、先頭の0を探し、最終精度位置に1を追加しなければならないことに留意されたい。代替案では、負の数を、符号-大きさ表現に変換することができ、符号ビットを、最下位位置に置くことができる。この第2の手法は、すべての負の値を0および重みに変換するのではない活性化関数に対処する。
【0049】
以下の説明では、すべての数に関して16ビット固定小数点表現を仮定するが、説明される機構は、他の表現の長さおよびタイプに簡単に適用される。圧縮方式は、入力値すなわち重みまたは活性化を、たとえば16個または256個などの固定された個数の要素のグループに考慮する。その後、各グループ内で、すべての値にまたがって最上位1ビットの位置をスキャンすることによって、最大の必要な精度を判定する。負の値は、符号-大きさ表現に変換される。重みの処理は、オフラインで行うことができるが、活性化は、各層の出力で処理される。その後、4ビットを使用して必要な精度を、その後にグループの精度と等しい複数のビットを使用して各値を記憶することによって、値をパックする。本明細書で説明するアクセラレータに関して、グループ化は、重みレーンおよび活性化レーンに従って行われ、データは、Judd他の仮想列手法を使用してメモリに記憶される。データ経路へのアンパックは、たとえば、Judd他の方法を使用して、重みに関して16b対16bクロスバを用いて行うことができる。活性化を、メモリ内のビット・プレーンに沿って記憶することができ、クロスバの必要がなくなる。下の表2は、仮想列ごとのグループ記憶フォーマットを示す。精度を、メモリ内で別々に、最もよく記憶することができる。いくつかの実施形態で、複数の連続するグループの精度が、一緒に単一のメモリ・ブロックに記憶され、したがって、複数のグループにわたるこの余分なメモリ・アクセスのコストを償却する。
【表2】
【0050】
代替の方式は、表3に示されているように、グループ内の値が0と等しいのか異なるのかを各ビットが表すビットマップを含む。値が0と等しい場合には、その値は全くコーディングされない。したがって、グループあたりのコーディングされる要素の個数は、異なる。これは、多数の0を有するデータに関して、より高い圧縮率を与える。アンパックは、パックされたグループを読み取ることと、必要な場合に0を挿入するために必要に応じてビット・ベクトルを使用してグループを順次展開することとによって行われる。十分な個数のグループを並列にフェッチし、アンパックすることによって、アクセラレータの帯域幅要件を維持することができる。
【表3】
【0051】
図14は、固定された層ごとのビット数を使用して達成可能な比率を一緒に表示する、上で説明した0強化手法を伴うおよび伴わない、AlexNet-ESとGoogLeNet-ESとの両方での、重みデータと活性化データとの両方の両方の圧縮方式の有効性を示す。2の値は、オリジナル・サイズの半分の削減を示す。両方のグループごとの方式が、重みおよび活性化に関して層ごとの圧縮方式をしのぐ。0強化圧縮方式は、特に重みに関して圧縮率をさらに改善する。これは、ネットワークがスパースである時に特に期待され得る。
【0052】
重み特性を活用する構造を、活性化特性を活用する構造と組み合わせる際に、アクセラレーション・タイルは、増加したルックアヘッド構造に伴う活性化最適化の有効性の低下を経験する場合がある。具体的には、STR構造とPRA構造との両方で、並列に処理される活性化のグループは、次のグループに進む前に、最も遅い活性化が処理されるのを待たなければならない。たとえば、PRA構造では、グループ全体に何サイクルが必要なのかを決定するのは、最大個数のオネフセットを有する活性化である。ルックアヘッドの度合が高まるにつれて、STAまたはPRAのいずれかの活性化特性を活用する構造を使用する本発明の実施形態は、ルックアヘッド・ウィンドウ内のすべての活性化を考慮しなければならない。多くの実施形態では、ルックアヘッド・ウィンドウが広ければ広いほど、そのような「ボトルネック」活性化の影響が大きくなる。一般に、ルックアサイドは、さらなる影響を有しない。というのは、上で説明したように、ルックアサイドが、ルックアヘッドが少なくとも1である時に同期化グループ内に含まれる1のルックアヘッド距離の活性化を使用するからである。
【0053】
他の実施形態では、活性化特性を活用する構造は、STR構造またはPRA構造のいずれをも使用しないものとすることができる。たとえば、STA構造とPRA構造との両方が、正面から無効な活性化を攻撃せず、これは、しばしばCNN内の活性化のほぼ半数が無効になる傾向があることが示されたので、直観と相容れない可能性がある。それでも、STR構造とPRA構造との両方が、無効な活性化と有効な活性化との両方に関して利益を提供し、そのような構造は、しばしば、無効な活性化だけを正面から攻撃する構造より改善された機能を提供することができる。具体的には、STR構造またはPRA構造を使用するアクセラレータ構造は、有効な活性化に関して有利であるが、無効な活性化をスキップできる構造は、無効な活性化に関して有利であり、しかし、STA構造またはPRA構造を使用するアクセラレータの機会損失は、通常、無効化活性化あたり1よりはるかに小さい。
【0054】
たとえば、PRA構造を使用するアクセラレータによってグループとして処理されるすべての活性化がたまたま0である場合に、アクセラレータは、無効な活性化をスキップできるアクセラレータと比較して、わずかに1/16の機会損失を表す単一のサイクルでそれらを処理する。というのは、PRA構造を使用するアクセラレータが、各活性化をビット並列ではなくビット直列に処理するからである。一般に、PRA構造を使用するアクセラレータが、pサイクルにわたって無効な活性化を処理する時に、機会損失はp/16であり、平均してビットの10%未満が有効であることを考慮すると、無効な活性化を完全にはスキップしないことの機会損失は、低いと期待される。同様の推理が、STR構造を使用するアクセラレータにあてはまる。
【0055】
通常、無効な活性化、動的精度可変性、および無効な活性化ビットは、CNNなどのネットワーク内の活性化値の分布の結果であり、しばしば、ほとんどの活性化は、0の付近に密集し、少数の活性化が、0から離れた値を伴って突き出す。画像分類CNNに関して、しばしば、活性化の約45%が、層ごとの精度を削減した後であっても0であるが、しばしば、活性化ビットの90%超が、0であるとわかり、これは、無効なビット内容をターゲットにする場合に、性能改善の可能性がはるかに高いことを暗示する。したがって、本発明の多くの実施形態は、無効なビット内容を直接または間接に利用する技法を使用することができる。
【0056】
図9に示されているように、アクセラレータ9000は、複数のタイル9100を含む。各タイル9100は、AM 9110のそれ自体のローカル・スライス、ローカルWM(図示せず)、入力活性化バッファ(図示せず)、および出力活性化バッファ(図示せず)を有する。AMスライス9110ごとのディスパッチャ9120が、STR構造およびPRA構造のように適当な活性化を読み取ると同時に、本発明のルックアヘッド実施形態の構造のルックアヘッド必要に対処する。いくつかの実施形態では、エネルギ要件および帯域幅要件を削減するために、ディスパッチャ9120は、AM 9110から必要なだけ多数の活性化ビットのみを読み取るために、プロファイルから導出された層ごとの精度を使用する。各活性化グループをすべてのタイルにブロードキャストする前に、ディスパッチャ9110は、活性化の値を考慮して必要な精度を動的に検出することによって、活性化をさらにトリミングする。各タイル9100は、ローカルにそれ自体のペースでその活性化を消費する。バッファは、タイルが活性化空間内でどれほど離れ得るのかを決定する。各タイル9100は、ローカルにさらなる処理を実行することができ、たとえば、PRAアーキテクチャを使用する構造に関して、タイルは、2のべきへの符号化を行うことができる。
【0057】
いくつかの実施形態では、各タイルは、AMのそれ自体のローカル・スライス、ローカルWM、入力活性化バッファ、および出力活性化バッファを有する。AMおよびWMは、コンピュート・コアによって必要とされる帯域幅を維持するためにバンク化される。データは、オフチップ・メモリからロードされ、個々のAMタイルまたはWMタイルにコピーされるか、複数のAMタイルまたはWMタイルにマルチキャストされる。諸実施形態は、オフチップ・トラフィックおよびオンチップ・トラフィックを低減するために圧縮を使用する。オンチップ・データ転送とオフチップ・データ転送との両方に関して、アクセラレータ実施形態は、前の層の出力で動的に検出される(活性化)か静的に検出される(重み)かのいずれかであるグループごとの精度を使用して、活性化および重みを符号化する。重みは、メモリおよびWM内で、重みレーンと一致する仮想列にパックされる。さらに、0値は記憶されず、代わりに、グループごとのビット・ベクトルが、非0値の位置を識別する。いくつかの実施形態では、16個の活性化または重みのグループを、圧縮率とメタデータ・オーバーヘッドとの間のよいバランスを提供するものとして使用することができる。グループごとに、彼 精度は、ビットおよび0値ビット・ベクトルに記憶され、オーバーヘッドは、256ビット非圧縮活性化または重みであったものに関してそれぞれ4ビットおよび16ビットである。活性化をコピーする前に、活性化バッファが、値を圧縮解除する。
【0058】
表4は、本明細書で調査される構成を報告するものである。表4は、例のアクセラレータ実施形態の構成の例を与える。
【表4】
【0059】
実際には、上で説明したアーキテクチャのさまざまな態様および特徴を使用するアクセラレータ実施形態が、実行利益を提供することが示された。
【0060】
サイクル・レベル・シミュレータを使用して、畳み込みおよび全結合層の実行時間をモデル化することによって、少数の実施形態の相対性能を評価した。表5は、スパース化された、使用されたCNNを報告するものである(これらのさらなる議論に関しては、これによって参照によって組み込まれている、Yang,Tien-JuおよびChen、Yu-HsinおよびSze、Vivienne、“Designing Energy-Efficient Convolutional Neural Networks using Energy-Aware Pruning”、IEEE Conference on Computer Vision and Pattern Recognition(CVPR)、2017年を参照されたい)。すべての面積測定およびエネルギ測定は、データ入力を表す回路アクティビティを使用してレイアウト上で行われた。レイアウトは、Synopsys Design Compilerを用いる合成の後にCadence Innovusを使用してTMSC 65mmテクノロジに関して生成された。通常のcase設計ライブラリは、試験される設計に関してより悲観的な結果を生じるので、これを使用した。すべての試験される設計は、1GHzで動作した。SRAMは、CACTIを介してモデル化され(さらなる議論に関しては、これによって参照によって組み込まれている、J.Park,S.Li,W.Wen,P.T.P.Tang,H.Li,Y.Chen,およびP.Dubey、“Faster CNNs with Direct Sparse Convolutions and Guided Pruning”、5th International Conference on Learning Representations(ICLR)、2017年を参照されたい)、eDRAMは、Destinyを介してモデル化された(さらなる議論に関しては、これによって参照によって組み込まれている、N.MuralimanoharおよびR.Balasubramonian、“Cacti 6.0: A tool to understand large caches”、HP technical report HPL-2009-85、http://www.hpl.hp.com/techreports/2009/HPL-2009-85.htmlを参照されたい)。
【表5】
【0061】
以下は、重みおよび活性化の活用と比較した重みスキップの議論を含む。以下は、さまざまな実施形態の性能、エネルギ効率、および面積の評価を含む。
【0062】
試験される実施形態では、さまざまなルックアヘッド値およびルックアサイド値が試験され、性能が、基準構造と比較された。結果は、ルックアヘッドおよびルックアサイドの混合にかかわりなく、より大きいマルチプレクサの使用が、よりよい性能をもたらすことを示す。下で議論する実施形態では、ルックアヘッドhおよびルックアサイドdの組合せは、h+d+1=2、n={8}になると考えられる。図10および図11は、重みスキップを使用せず、活性化値の特性を活用するように構造化されていないアクセラレータ構造に対するスピードアップを示す。図10および図11は、グラフ化された結果の各セットの基部に示されているように、(lookahead,lookaside)または(h,d)にセットされたルックアヘッドおよびルックアサイドに関するスピードアップを示す。図10は、ES-AlexNetを処理する時のスピードアップを示し、図11は、ES-GoogLeNetを処理する間のスピードアップを示す。図示されているように、3つのアクセラレータ構造実施形態すなわち、重みスキップ構造だけを使用する構造、重みスキップおよびSTR構造を使用する構造、および重みスキップおよびPRA構造を使用する構造を試験した。
【0063】
図10および図11に示されているように、ルックアヘッド入力を犠牲にすることによって少数のルックアサイド入力を追加することは、(7,0)から(4,3)への遷移からわかるように、重みスキップ構造だけを使用する実施形態の試験で、性能のかなりの差益を提供する。たとえば、(7,0)すなわちルックアサイドなし)でのスピードアップは、図10に示されているようにAlexNet-ESに関して2.3倍であり、(4,3)では2.7倍である。
【0064】
図10および図11は、ルックアサイド値またはルックアヘッド値を0にセットすることと比較して、これらの値の変化に伴って観察された傾向の一部を示す。概念上、ルックアサイドは、有効な重みを大量に投入されている重みレーンの負荷を隣接する重みレーンに分配することを可能にし、したがって重みレーンのアンバランスを軽減する。さらに、一部の重みレーンが、複数の隣接する大量に投入されたレーンを有することは、一般にありそうにない。したがって、ルックアサイド・ウィンドウを任意に広げることは、減少する再発につながると期待することができ、これは、所与の実施形態について図示された結果と一致する。同様に、大きいルックアヘッドの追加は、上で議論したように活性化処理バックエンドの有効性に影響すると理解することができる。結果は、同一の総数の複数入力(h+d+1)に関して、いくつかのルックアサイド・オプションがある限り、性能は、より多くのルックアヘッドに伴ってよくなる。
【0065】
全体として、差は、相対的に抑制されていると思われるが、図に示されているように、利益は、STR構造またはPRA構造の使用など、活性化特性を活用する構造と組みわされた時に大きく増加する。したがって、諸実施形態では、重みスキップだけからの性能の相対的に小さい差が、最終設計のはるかに大きい利益をもたらす。
【0066】
異なる構成は、異なる利益をももたらす。面積に関して、構成の間の差は小さいが、ルックアヘッドが小さければ小さいほど、一般に、重みスキップ構造を実施するためのワイヤ・カウントが少なくなる。したがって、ルックアヘッド/ルックアサイド対を(2,5)または(4,3)にセットすることは、多数の実施形態および状況に関する穏当な妥協構成である可能性がある。
【0067】
図10および図11に示されているように、活性化特性を活用する構造の追加は、重みスキップ構造の利益を増加させる。活性化メモリおよび相互接続の設計などで、さまざまな構成を設計して、コストと所望の性能とのバランスをとることができる。
【0068】
図10および図11に示されているように、精度可変性を活用する能力の追加は、主として、無効重みスキップを増補する。図示の最も能力の低い構成(1,6)でさえ、それぞれAlexNet-ESおよびGoogLeNet-ESに関して7.2倍および4.3倍だけ性能を改善する。Alexnet-ESセットは、GoogLeNet-ESと比較してより大きい、少数の層だけを有する。図示されているように、PRA構造など、無効な活性化ビット内容を活用する、活性化特性を活用する構造の使用は、STR構造など、精度を活用する活性化特性を活用する構造の使用よりよい性能をもたらす。全体的な性能利益が、無効なビット内容が暗示するものより小さい場合に、問題の原因は、活性化レーンにまたがる同期化である可能性がある。というのは、ルックアヘッド・ウィンドウ内のすべての活性化レーンが、次のルックアヘッド・ウィンドウに進む前に、最大のオネフセットを有する活性化レーンが完了するのを待たなければならないからである。図示されているように、試験された最良の構成は、(4,3)にセットされたルックアヘッドおよびルックアサイドを有し、これは、それぞれAlexNet-ESおよびGoogLeNet-ESに関して15.8倍および8.4倍だけ性能を改善する。
【0069】
上の説明は、ルックアヘッド・パターンおよびルックアサイド・パターンが時間方向およびレーン方向で連続ウィンドウを構成しなければならないと仮定した重み昇格に焦点を合わせたが、フィルタ内重み昇格の概念は、ルックアヘッド方向およびルックアサイド方向での連続ウィンドウに限定されるのではなく、ルックアヘッドとルックアサイドとの両方の組合せである任意の座標に由来してよい。すなわち、hのルックアヘッド距離を考慮すると、このウィンドウ内の16×h個の位置の任意のサブセットからの昇格を可能にするルックアサイド・パターンを実施することが可能であり、16は、フィルタ・レーン幅である。
【0070】
そのような構成の変形形態では、重みストリーム内の任意の位置からの重み昇格を可能にするスパース昇格パターンを使用することができる。用語「スパース」は、ここでは、位置[lane+d,step+h]からこっそり動くことのできる重みw[lane,step]が、必ずしも、たとえば位置[lane+d-1,step+h]または[lane+d,step+h-1]からこっそり動くための接続を有しないという顔を指す。
【0071】
図12で比較される3つの構成のセットでは、基礎構成が左に提示され、ここで、(2,5)重みスキップ構成が、上で説明したように使用された。他の2つの構成は、ルックアヘッドが2にセットされ、ルックアサイドが5にセットされ、ルックアサイドが7レーンの距離に制限される(合計2+2×7=16個の可能な昇格サイト)、オリジナル構成から作成されたスパース構成である。電力および面積の考慮事項に起因して、全接続性は、h+d=7個の昇格サイトに削減され、左側の基礎設計として同一サイズの8入力マルチプレクサをもたらした。右のネットワーク最適化された設計に関して、接続サイトは、所与のネットワークの最小の性能劣化をもたらすように反復して除去され、2つの試験されるネットワークの各ネットワークに調整された接続性パターンをもたらした。図12の中央に提示されたCheckers構成に関して、固定されたチェッカーボード様接続パターンが、除去すべき接続の反復選択なしで、直接に使用された。図示のように、Checkers構成は、ネットワークごとの最適化されたパターンのスピードアップ利益の多くを提供する。下の説明から期待されるように、活性化特性を活用する構造の追加は、スピードアップ利益を増加させると期待することができる。
【0072】
さまざまな要因が、全体的な好ましい構造の判定を駆り立てる可能性がある。たとえば、PRA構造の使用は、多くの実施形態でSTR構造の使用をしのぐと思われるが、1活性化あたりにより多数のワイヤを必要とすることに起因して、より高価になる可能性がある。たとえば、相対面積およびエネルギ効率の考慮事項を、性能利益が価値のあるものであるかどうかを判断する際に考慮することができる。
【0073】
図13Aおよび図13Bは、重みスキップまたは活性化特性を活用するアーキテクチャを使用しないアクセラレータと比較した、STRアーキテクチャを有する重みスキップおよびPRAアーキテクチャを有する重みスキップのエネルギ効率を示す。図13Aは、AlexNet-ES上で走行する時のエネルギ効率を示し、図13Bは、GoogLeNet-ES上で走行する時のエネルギ効率を示す。図示されているように、どちらの場合でも、性能利益が追加のハードウェア電力コストより重要なので、設計は、ベースラインよりエネルギ効率がよい。(1,6)構成が使用される場合を除いて、STR構造の使用は、PRA構造の使用よりエネルギ効率がよく、これは、文脈にかかわりなく、より低コストの設計と一致する。試験された最もエネルギ効率のよい設計は、STR構造を含み、(4,3)構成を使用する実施形態であり、これは、それぞれAlexNet-ESおよびGoogLeNet-ESに関して5.6倍および2.9倍の相対エネルギ効率をもたらした。
【0074】
表6は、さまざまなアクセラレータ実施形態の面積を示し、(1,6)構成を詳細に示す。面積対性能トレードオフは、劣線形であり、これは、重みスキップまたは活性化特性を活用する構造を使用しないベースラインに関して性能が線形にスケールできる場合であっても、面積あたりの性能において徐々に小さくなることを意味する。試験結果は、通常のフィルタ・カウント、フィルタの通常の寸法、および入出力が、ベースライン構造のより幅広い構成に関してより不十分な利用をもたらすので、ベースライン構造の性能が面積に伴って劣線形にスケールすることを示す。ルックアヘッドおよびルックアサイドの和が、下の3つの構成(1,6)、(2,5)、(4,3)のそれぞれで同一なので、構成の間の面積差は、無視できる。全体的に、これらの実施形態の面積の多くは、メモリである。
【表6】
【0075】
下の表7は、本明細書で開示される重みスキップおよび活性化特性を活用するアクセラレータの実施形態を他の入手可能なアクセラレータと比較するものである。表7は、これらの設計の複数の関連する特性すなわち、1)それに関して積和計算をスキップする入力データ、2)それに関してメモリ参照を回避する入力データ、3)それに関してコストを下げられた積和を実行する入力データ、4)それに関してコストを下げられたメモリ・アクセスを実行する入力データ、5)入力データが適当なコンピュート・ユニットまたはストレージ・ユニットにどのようにルーティングされるのか、および6)内積を計算するのに使用される順序付けを強調するものである。
【0076】
Cnvlutin(両方がこれによって参照によって組み込まれている、J.Albericio,P.Judd,T.Hetherington,T.Aamodt,N.Enright Jerger,およびA.Moshovos、“Cnvlutin: Ineffectual-neuron-free deep neural network computing”、2016 IEEE/ACM International Conference on Computer Architecture(ISCA)、2016年およびトロント大学のGoverning CouncilのPCT特許出願公告第WO 2017/214728 A1号(発明人、Patrick Judd,Jorge Albercio,Andreas Moshovos,Sayeh SharifyおよびAlberto Delmas Lascorz)、名称Accelerator for Deep Neural Networksを参照されたい)は、無効な活性化(IA)に関して計算とメモリ・アクセスとの両方をスキップする。Cnvlutinは、各活性化と対になる重みのグループごとの独立の重みポート以外の特殊な入力ルーティング機構または出力ルーティング機構を必要としない。
【0077】
Cambricon-X(これによって参照によって組み込まれている、S.Zhang,Z.Du,L.Zhang,H.Lan,S.Liu,L.Li,Q.Guo,T.Chen,およびY.Chen、“Cambricon-x: An accelerator for sparse neural networks”、49th Annual IEEE/ACM International Symposium on Microarchitecture,MICRO 2016、台湾、台北、2016年10月15日~19日、1~12頁、2016年を参照されたい)は、内積ベースのアクセラレータ内で無効な重み(IW)を活用する。非0重みは、メモリ内でコンパクト化され、デルタ(重みの間の距離)を用いてタグ付けされる。各サイクルに、1つのPE(我々の内積ユニットと同等)が、16個の重みをフェッチし、256のベクトルから対応する16個の活性化を選択する。連鎖された加算器が、デルタを絶対オフセットに復号するのに使用される。活性化を対応する重みと対にするのに、256幅入力活性化クロスバを使用する。この手法は、16x16ルックアヘッド・ウィンドウおよび符号化されたマルチプレクサ選択を用いる、本発明の重みスキップ・アクセラレータに類似する。これは、256個の活性化のメモリ・インターフェースを必要とする。著者は、この活性化帯域幅が、スケーラブル・アクセラレータに関して彼らの手法を非実用的にすると論じている。
【0078】
SCNN(これによって参照によって組み込まれている、A.Parashar,M.Rhu,A.Mukkara,A.Puglielli,R.Venkatesan,B.Khailany,J.Emer,S.W.Keckler,およびW.J.Dally、“Scnn: An accelerator for compressed-sparse convolutional neural networks”、Proceedings of the 44th Annual International Symposium on Computer Architecture,ISCA’17、(米国ニューヨーク州ニューヨーク)、27~40頁、ACM、2017年を参照されたい)は、無効な重みと無効な活性化との両方に関して計算およびメモリ・アクセスをスキップする。SCNNは、重みおよび活性化をメモリ内でコンパクト化し、有効な要素だけが記憶され、そのそれぞれに、省略された無効な要素の個数が続く。16×32出力クロスバが、乗算結果を32個のアキュムレータ・バンクにルーティングする。SCNNは、入力読取帯域幅を最小化するように設計されている。SCNNは、4x4デカルト積を使用するので、FCL用の16個の乗算器のうちの4つを使用することだけができ、重み再利用を有しない。
【0079】
本発明の重みスキップ・アクセラレータは、SCNNまたはCambricon-Xとは異なる度合で、無効な重みの計算およびメモリ・アクセスをスキップする。これは、無効な活性化と有効な活性化(EA)との両方に関するメモリ・アクセスの帯域幅およびエネルギ・コストを削減する。これは、入力活性化にスパース・シャッフル・ネットワークを、重みに制限された静的スケジューリングを利用するので、ハイブリッド入力重み的静/活性化動的手法を使用して活性化と重みとをマッチングする。
【0080】
スパーシティを取り込むために、SCNNおよびCambricon-Xは、密ハードウェア相互接続を使用する。SCNNは出力クロスバを使用し、Cambricon-Xは入力クロスバを使用する。本発明の重みスキップ・アクセラレータは、十分な個数の無効な重みを取り込むのにスパース入力相互接続を使用し、その代わりにすべての活性化をターゲットにすることによって機会の損失を補償する。
【表7】
【0081】
図7Bの実施形態に提示されているように、フロントエンドは、重みごとのマルチプレクサ信号(図7Bではws)を使用し、これは、重みレーンが、他の重みレーンとは独立に重み昇格を実行することを可能にする。しかし、これらの信号は、メモリ・オーバーヘッドを表す。このオーバーヘッドの削減が好ましく、重みデータ幅が狭ければ狭いほどそうである。このために、我々は、1)PEごとのすべてのws信号を考慮する時に、すべての組合せが有効とは限らないので、重みごとのws信号の使用は、過剰プロビジョニングになり、2)有効な組合せの一部(たとえば、絶対に発生しない組合せまたは低頻度の組合せ)の除去は、十分なスパーシティを活用するTCLの能力に悪影響しない可能性があるという観察を行う。したがって、我々は、TCLフロントエンドがサポートする重み移動の組合せを制限し、したがって、すべてのステップで使用すべきスケジュールを指定するのに必要なビット数を削減することができる。たとえば、我々は、重みのグループごとのスケジュール選択フィールド(SS)を記憶することができる。TCLは、タイル内でSSを重みごとのws信号に展開することができ、これは、設計に対する外科的変更である。たとえば、16個の重みのグループごとの4ビットSSフィールドは、16個のws信号を含む3b 16=48bのベクトルにそれぞれマップする2S S=16個の異なるスケジュール・パターンをサポートすることができる。wsへのNSS信号のマッピングは、静的またはプログラム可能とすることができる。後者の場合に、マッピングは、フィルタごとまたは層ごとなど、適当な粒度で提供され得る。我々の例に関して、16x48bテーブルが、これらのSS信号をフィルタあたり16個のスケジュール・ステップのセットにマッピングすることができる。プロファイリングは、そのような配置が、調査されるネットワークに関して性能に大きくは影響しないことを示す(たとえば、GoogleNet-ESですべてのスケジューリング・ステップの96%をカバーする)。
【0082】
図15は、前述の手法の実施態様を示す。この実施態様1500では、マルチプレクサ選択テーブル(MST)1520が、各フィルタ・レーン1540に導入される。代替案では、MSTを複数のレーンの間で共有することができる。MSTを使用して、マルチプレクサ選択信号の最も頻繁に使用される組合せの一部だけをロードすることができる。ロードは、フィルタごとに層ごとに1回、少数の層ごとに、またはサブフィルタ粒度でなど、便利なインターバルで行うことができる。この実施態様では、重みの行ごとの小さいwSフィールドが、各ステップに使用されるスケジュール 固有に使用され得る。その結果、選択信号のオーバーヘッドを大幅に削減することができる。
【0083】
フロントエンド実施形態を使用して、スパーシティが存在する限り、トレーニングをも加速することができる。これは、たとえば、更新の一部だけが実行される、選択的バックプロパゲーション方法にあてはまる。そのような方法は、重み更新値の一部を効果的に0に変換し、したがって、バックプロパゲーション・フェーズ中にスパーシティを導入する。バックプロパゲーション中に、各層の出力では、スケジューラの軽量実装、最も好ましくは貪欲なハードウェアでの実装が、更新を処理要素に送る前に更新を再配置することができる。フロントエンドは、データタイプにとらわれず、したがって、順方向フェーズ中およびバックプロパゲーション・フェーズ中に浮動小数点表現、固定小数点表現、または混合表現と共に同様に使用され得る。
【0084】
動作中に、前述の構成要素をコントローラによって制御することができ、このコントローラは、たとえば、機能ユニットとしてアクセラレータを制御することのできる、プログラム可能有限状態機械またはプログラム可能プロセッサとすることができることが、当業者によって了解されよう。一実施形態によれば、プログラム可能有限状態機械は、複数の制御レジスタおよびデータ・レジスタと、おそらくはプログラム・メモリおよびデータ・メモリとを有することができ、ニューラル・ネットワーク・システム内の本明細書で説明した他の構成要素にさまざまな制御信号を出力する。
【0085】
本発明の趣旨または本質的特性から逸脱せずに、本発明を他の特定の形態で実施することができる。本発明のある種の適合および変更は、当業者に明白である。したがって、現在議論されている実施形態は、例示的であって制限的ではないと考えられ、本発明の範囲は、前述の説明ではなく添付の特許請求の範囲によって示され、したがって、特許請求の範囲の同等物の意味および範囲に含まれるすべての変更は、本発明の範囲に包含されることが意図されている。
図1
図2
図3
図4
図5A
図5B
図5C
図6A
図6B
図7A
図7B
図7C
図8
図9
図10
図11
図12
図13A
図13B
図14
図15