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

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

▶ モフェット インターナショナル カンパニー,リミティドの特許一覧

特許7572753ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ
<>
  • 特許-ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ 図1
  • 特許-ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ 図2A
  • 特許-ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ 図2B
  • 特許-ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ 図3
  • 特許-ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ 図4
  • 特許-ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ 図5A
  • 特許-ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ 図5B
  • 特許-ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ 図6
  • 特許-ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ 図7
  • 特許-ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ 図8
  • 特許-ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-16
(45)【発行日】2024-10-24
(54)【発明の名称】ニューラルネットワークモデルのためのバンクバランストスパース活性化特徴マップ
(51)【国際特許分類】
   G06N 3/08 20230101AFI20241017BHJP
   G06N 3/0495 20230101ALI20241017BHJP
【FI】
G06N3/08
G06N3/0495
【請求項の数】 15
(21)【出願番号】P 2023520074
(86)(22)【出願日】2021-09-17
(65)【公表番号】
(43)【公表日】2023-10-20
(86)【国際出願番号】 US2021050764
(87)【国際公開番号】W WO2022072152
(87)【国際公開日】2022-04-07
【審査請求日】2023-05-26
(31)【優先権主張番号】17/038,557
(32)【優先日】2020-09-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】523062486
【氏名又は名称】モフェット インターナショナル カンパニー,リミティド
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100141553
【弁理士】
【氏名又は名称】鈴木 信彦
(74)【代理人】
【識別番号】100176418
【弁理士】
【氏名又は名称】工藤 嘉晃
(72)【発明者】
【氏名】ヤン エンシュ
(72)【発明者】
【氏名】シュ ドンクアン
(72)【発明者】
【氏名】リウ ジャチャオ
【審査官】山本 俊介
(56)【参考文献】
【文献】特表2018-514844(JP,A)
【文献】特表2018-527677(JP,A)
【文献】米国特許出願公開第2020/0279133(US,A1)
【文献】米国特許出願公開第2020/0134461(US,A1)
【文献】CAO, Shijie et al.,Efficient and Effective Sparse LSTM on FPGA with Bank-Balanced Sparsity,FPGA '19: Proceedings of the 2019 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays [online],2019年02月20日,pp.63-72,[2024年4月22日検索], https://dl.acm.org/doi/10.1145/3289602.3293898,DOI: https://doi.org/10.1145/3289602.3293898
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
1つまたは複数のプロセッサによって実行される、ディープニューラルネットワーク(DNN)モデルを生成するための方法であって、
1つまたは複数の隠れ層を有する第1のディープニューラルネットワーク(DNN)モデルを決定することと、
バンクサイズ、バンクレイアウト、およびターゲットスパース性を決定することと、
前記バンクサイズおよび前記バンクレイアウトに基づいて、複数の活性化特徴マップを複数のバンクにグループ化することと、
前記ターゲットスパース性に基づいて、活性化特徴マップの各バンクについてのスパース性を増大させることによって、第2のDNNモデルを生成することであって、前記第2のDNNモデルが推論のために使用されることと
を含む方法。
【請求項2】
前記第2のDNNモデルを生成することが、
前記活性化特徴マップの各バンクについて、活性化特徴マップの前記バンクが前記ターゲットスパース性に達するまで、前記活性化特徴マップの前記バンクについての前記スパース性を徐々に増大させることと、
活性化特徴マップの前記バンクについての前記スパース性を増大させることに応答して前記第2のDNNモデルが収束することを保証するように前記第2のDNNモデルを再トレーニングすることと
を含む、請求項1に記載の方法。
【請求項3】
前記活性化特徴マップをグループ化することが、
前記活性化テンソルが2次元(2D)テンソルである場合、前記第1のDNNモデルの層についての活性化テンソルの行次元または列次元に基づいて、前記活性化特徴マップを複数のバンクにグループ化すること、または
前記活性化テンソルが3次元以上のテンソルである場合、前記第1のDNNモデルの層についての活性化テンソルのチャネル次元、行次元、または列次元に基づいて、前記活性化特徴マップを複数のバンクにグループ化すること
を含む、請求項1に記載の方法。
【請求項4】
前記第2のDNNモデルを再トレーニングすることが、
順方向伝播によって目標関数についての出力を計算することと、
計算した出力に基づいて、逆方向伝播によって前記DNNモデルの各隠れ層についての重みパラメータを更新することと
を含む、請求項2に記載の方法。
【請求項5】
前記第2のDNNモデルがバンクバランストスパースDNNモデルである、請求項1に記載の方法。
【請求項6】
前記第2のDNNモデルが動的DNNモデルであり、第1の推論についての前記第2のDNNモデルの重みパラメータが、第2の推論についての重みパラメータとは異なる、請求項1に記載の方法。
【請求項7】
各活性化特徴マップブロックについての前記スパース性が、各バンクからの上位k個の値を保持することと、前記バンクについて残りの値を徐々にゼロにすることとによって徐々に増大し、ただしkは1以上である、請求項1に記載の方法。
【請求項8】
前記1つまたは複数のプロセッサによって実行されるとき、前記1つまたは複数のプロセッサに請求項1から7に記載のいずれかの方法を実施させる命令を記憶した非一時的機械可読媒体。
【請求項9】
入力層と、
1つまたは複数の隠れ層と、
出力層であって、前記1つまたは複数の隠れ層が、前記入力層と前記出力層との間に配設され、各隠れ層が、複数のバンクバランストスパース活性化特徴マップを出力することになる、出力層と
を備えるバンクバランストスパース活性化ディープニューラルネットワーク(DNN)モデルを、コンピュータに生成させるためのプログラムであって、
前記コンピュータの1つまたは複数のプロセッサに、
1つまたは複数の隠れ層を有する第1のDNNモデルを決定
バンクサイズ、バンクレイアウト、およびターゲットスパース性を決定
前記バンクサイズおよび前記バンクレイアウトに基づいて、複数の活性化特徴マップを複数のバンクにグループ化
前記ターゲットスパース性に基づいて、活性化特徴マップの各バンクについてのスパース性を増大させることによって、前記バンクバランストスパース活性化DNNモデルとして第2のDNNモデルを生成することであって、前記第2のDNNモデルが推論のために使用される動作を実行させることによって、前記バンクバランストスパース活性化DNNモデルが生成される、プログラム
【請求項10】
前記第2のDNNモデルを生成することが、
前記活性化特徴マップの各バンクについて、活性化特徴マップの前記バンクが前記ターゲットスパース性に達するまで、前記活性化特徴マップの前記バンクについての前記スパース性を徐々に増大させることと、
活性化特徴マップの前記バンクについての前記スパース性を増大させることに応答して前記第2のDNNモデルが収束することを保証するように前記第2のDNNモデルを再トレーニングすることと
を含む、請求項9に記載のプログラム
【請求項11】
前記活性化特徴マップをグループ化することが、
前記活性化テンソルが2次元(2D)テンソルである場合、前記第1のDNNモデルの層についての活性化テンソルの行次元または列次元に基づいて、前記活性化特徴マップを複数のバンクにグループ化すること、または
前記活性化テンソルが3次元以上のテンソルである場合、前記第1のDNNモデルの層についての活性化テンソルのチャネル次元、行次元、または列次元に基づいて、前記活性化特徴マップを複数のバンクにグループ化すること
を含む、請求項9に記載のプログラム
【請求項12】
前記第2のDNNモデルを再トレーニングすることが、
順方向伝播によって目標関数についての出力を計算することと、
計算した出力に基づいて、逆方向伝播によって前記DNNモデルの各隠れ層についての重みパラメータを更新することと
を含む、請求項10に記載のプログラム
【請求項13】
前記第2のDNNモデルがバンクバランストスパースDNNモデルである、請求項9に記載のプログラム
【請求項14】
第2のDNNモデルが動的DNNモデルであり、第1の推論についての前記第2のDNNモデルの重みパラメータが、第2の推論についての重みパラメータとは異なる、請求項9に記載のプログラム
【請求項15】
各活性化特徴マップブロックについての前記スパース性が、各バンクからの上位k個の値を保持することと、前記バンクについて残りの値を徐々にゼロにすることとによって徐々に増大し、ただしkは1以上である、請求項9に記載のプログラム
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2020年9月30日に出願された米国非仮特許出願第17/038,557号の優先権の利益を主張し、参照によりその開示全体が本明細書に組み込まれる。
【0002】
本開示の実施形態は、一般には人工知能に関する。より詳細には、本開示の実施形態は、ディープニューラルネットワークモデルについてのバンクバランストスパース活性化特徴マップのための方法およびシステムに関する。
【背景技術】
【0003】
ディープニューラルネットワーク(DNN)は、イメージ、ビデオ、オーディオ、テキストなどのより低レベルのデータから高レベル情報を抽出するための、人工知能(AI)で広く使用される手法となっている。しかしながら、DNNの計算コストが高いことによって、エネルギー消費、記憶空間、または待ち時間許容度に関する予算が厳しい適用分野、特に携帯電話や監視カメラなどのエッジデバイス上での使用が抑止される。
【0004】
DNNモデルの計算コストは様々な源から来る。第1に、DNNモデルパラメータが数百万または数千万程度となることがあり、その結果、記憶コストが莫大なものとなり、メモリ空間内のDNNモデルパラメータ記憶が抑止されることがある。第2に、DNNモデルでのニューロンの数が大量のメモリ空間を消費することがあり、実行中に数十億の算術演算を必要とし得る。第3に、顔比較エンジンなどの、ニューラルネットワークによって生成されるベクトル表現に基づく検索エンジンは、部分的にはDNNの高次元密ベクトル表現(埋込み)のために、計算コストが高いことがある。
【発明の概要】
【0005】
本開示の実施形態は、限定としてではなく、例として添付の図面の図に示され、図では同様の参照符号が同様の要素を示す。
【図面の簡単な説明】
【0006】
図1】一実施形態による、バンクバランストスパース活性化特徴マップを有する例示的ディープニューラルネットワーク(DNN)モデルを示すブロック図である。
図2A】一実施形態によるニューラルネットワークスパース化エンジンを示すブロック図である。
図2B】一実施形態によるニューラルネットワークスパース化エンジンを示すブロック図である。
図3】一実施形態によるDNNモデルの層を示すブロック図である。
図4】一実施形態による、DNNモデルの層についての重みを更新することによる活性化特徴マップスパース化を示すブロック図である。
図5A】一実施形態による、DNNの層についてのバンクバランストスパース活性化テンソルを示すブロック図である。
図5B】一実施形態による、DNNモデルの層についてのバンクバランストスパース活性化テンソルの別の例を示すブロック図である。
図6】一実施形態による、2次元の活性化テンソルを示すブロック図である。
図7】いくつかの実施形態による、3次元の活性化テンソルについてのバンク構成の3つの例を示すブロック図である。
図8】一実施形態による、バンクバランストスパースDNNを生成するためのプロセスを示す流れ図である。
図9】一実施形態による方法を示す流れ図である。
【発明を実施するための形態】
【0007】
本開示の様々な実施形態および態様が、以下で論じられる詳細を参照しながら説明され、添付の図面は様々な実施形態を示す。以下の説明および図面は、本開示を例示するものであり、本開示を限定するものと解釈されるべきではない。本開示の様々な実施形態の完全な理解を与えるために、多数の特定の詳細が説明される。しかしながら、いくつかの例では、本開示の実施形態の簡潔な議論を与えるために、周知の詳細または従来の詳細は説明されない。
【0008】
本明細書での「一実施形態」への参照は、実施形態と共に説明される特定の特徴、構造、または特性が、本開示の少なくとも1つの実施形態に含まれ得ることを意味する。本明細書の様々な場所での「一実施形態では」という語句の出現は、必ずしもすべて同一の実施形態を指すわけではない。
【0009】
以下の定義は、本明細書で説明される要素および演算に適用される。こうした定義は、本開示の実施形態を示す助けとなり、限定として解釈されることを意味するわけではない。
【0010】
加速-DNN関数を計算するのに必要とされる算術演算の数を削減するようにDNNを変更することを指す。
【0011】
バンクバランストスパース重み-各バンク内の非ゼロ重み要素の数が同一となるように、重みの1つまたは複数のバンク間でバランスされるスパースパターン。バンクバランストスパース性がDNNモデルの層の重みに適用される。
【0012】
バンクバランストスパース活性化-各バンク内の非ゼロ出力活性化要素の数が同一となるように、特徴マップの1つまたは複数のバンク間でバランスされるスパースパターン。バンクバランストスパース性が、DNNモデルの層の出力活性化特徴マップに適用される。
【0013】
ディープニューラルネットワーク(DNN)モデル-ディープニューラルネットワーク(DNN)モデルは、基本関数のいくつかの層から構成される複合関数であり、各関数は、前の層の出力を入力として取り、出力の新しいセットを計算する。各層の出力はニューロンと呼ばれ、ニューロンが非ゼロ値を有する場合、ニューロンは活性化され(またはアクティブであり)、そうでない場合、非活性化される(または非アクティブである)。
【0014】
目標関数-特定のトレーニングデータセットに関連してDNNが特定のタスクに対してどれほど機能するかを測定することによってトレーニング中に最適化される関数を指す。
【0015】
スパース化(スパース化する)-Activated Neuronの数がNeuronの総数よりも著しく小さくなる(すなわち、少なくとも2分の1未満、通常は4分の1未満となる)ようにDNNをトレーニングする(すなわち、DNNのパラメータを調整する)方法を指す。
【0016】
テンソル-ニューラルネットワークのパラメータを記憶するための、任意の次元のベクトルや行列などのデータ構造を指す。
【0017】
実施形態は、バンクバランストスパース活性化ニューラルネットワークモデル、およびバンクバランストスパース活性化ニューラルネットワークモデルを生成するための方法を開示する。一態様によれば、ニューラルネットワークスパース化エンジンが、2つ以上の隠れ層を有する第1のディープニューラルネットワーク(DNN)モデルを決定する。エンジンは、バンクサイズ、バンクレイアウト、およびターゲットスパース性を決定する。エンジンは、バンクサイズおよびバンクレイアウトに基づいて、活性化特徴マップを複数のバンクにセグメント化する。エンジンは、ターゲットスパース性に基づいて、活性化特徴マップの各バンクについてのスパース性を増大させることによって、第2のDNNモデルを生成し、第2のDNNモデルは推論のために使用される。
【0018】
第2の態様によれば、バンクバランストスパース活性化ディープニューラルネットワーク(DNN)モデルが開示される。バンクバランストスパース活性化DNNモデルは、入力層、1つまたは複数の隠れ層、および出力層を含み、1つまたは複数の隠れ層は、入力層と出力層との間に配設され、各隠れ層は、バンクバランストスパース活性化特徴マップを出力することになる。バンクバランストスパース活性化DNNモデルは、1つまたは複数の隠れ層を有する第1のDNNモデルを決定することと、バンクサイズ、バンクレイアウト、およびターゲットスパース性を決定することと、バンクサイズおよびバンクレイアウトに基づいて、活性化特徴マップを複数のバンクにセグメント化することと、ターゲットスパース性に基づいて、活性化特徴マップの各バンクについてのスパース性を増大させることによって、バンクバランストスパース活性化DNNモデルとして第2のDNNモデルを生成することであって、第2のDNNモデルが推論のために使用されることとによって生成される。
【0019】
図1は、一実施形態による、バンクバランストスパース活性化特徴マップを有する例示的ディープニューラルネットワーク(DNN)モデルを示すブロック図である。図1を参照すると、DNNモデル100は、入力層111と出力層113との間に配設された1つまたは複数の内部層/隠れ層101~103を有するディープニューラルネットワークモデルを含む。内部層101~103のそれぞれは、重み/バイアス(図示せず)および活性化関数(図示せず)の1つまたは複数のテンソルを有し得、1つまたは複数のテンソルは、入力特徴マップ111、123~125と乗算したとき、それぞれの層についての出力活性化特徴マップ123~125、113を生成する。ここでは、1つまたは複数の出力活性化特徴マップは、バンクバランストスパース特徴マップである(バンクバランストスパース特徴マップは以下でさらに論じられる)。DNNモデルのタイプには、限定はしないが、層のそれぞれが前の層および次の層に全結合される従来のNN、部分結合DNN、再帰型NN、長短期記憶(LSTM)DNNモデルなどが含まれる。いくつかの実施形態が図1のDNNと共に説明され得るが、DNNモデルのタイプの範囲が限定されると解釈されるべきではない。
【0020】
図2A~2Bは、一実施形態によるニューラルネットワークスパース化エンジンを示すブロック図である。図2A~2Bを参照すると、ニューラルネットワークスパース化エンジン200がバンクバランストスパースDNNモデルを生成し得る。一実施形態では、ニューラルネットワークスパース化エンジン200は、入力:トレーニングデータおよび評価メトリック(たとえば、目標関数)、事前トレーニング済みDNNモデル(任意選択)、バンク数、スパース率(sparsity rate)と、出力:バンクバランストスパース活性化特徴マップを有するDNNモデルとを含む。一実施形態では、エンジン200は、入力トレーニングデータおよび評価メトリック(たとえば、目標関数)に基づいて事前トレーニング済みDNNモデルを生成し得る。
【0021】
一実施形態では、バンクサイズ、バンクレイアウト、およびスパース率にデフォルト値または初期値が設定され、たとえば、バンクサイズ=2、4、8、16;バンクレイアウト=列、行、チャネル;スパース率=20%、40%、60%などである。別の実施形態では、バンクサイズ、バンクレイアウト、およびスパース率は、ユーザによって、エンジン200を有するデバイス/システムについて構成可能である。別の実施形態では、バンクサイズ/レイアウトおよびスパース率は、ニューラルネットワークのテンソルの1つまたは複数のハイパーパラメータ/タイプ/次元に基づいて自動構成可能である。たとえば、自然言語処理DNNでは、ニューラルネットワークのテンソルの次元は、単語埋込みによる文の長さ、すなわち関連する感情を伴う各単語のベクトルでよい。
【0022】
ここでは、第1の次元についてのバンク数は、バンク数=文の長さ div valなど、文の長さ次元に基づいて決定され得、ただしvalはバンクサイズを表す数値である。第2の次元についてのバンク数は、バンク数=単語埋込み div valなど、単語埋込み次元に基づいて決定され得、ただしvalはバンクサイズを表す数値である。バンクサイズ=4のバンクバランスト活性化の一例が図5Aに示されており、バンクサイズ=2のバンクバランスト活性化の一例が図5Bに示されている。スパース率はデフォルト値に設定され得る。たとえば、スパース率は50%パーセントに設定され得る。別の実施形態では、スパース率は、DNNモデルの重み/バイアスを調節することなく評価メトリック(目標関数)が収束する限り、たとえば、出力結果が所定の反復数についての所定のしきい値内にある限りは増加するように自動構成され得る。
【0023】
図2Bを参照すると、一実施形態では、ニューラルネットワークスパース化エンジン200は、データ処理システム、サーバ、コンピューティングシステム、エッジデバイスなどの部分として実装され得る。エンジン200は、図1のモデル100などのバンクバランストスパースディープニューラルネットワークモデルを生成し得る。図2Bを参照すると、エンジン200は、DNNジェネレータ201、バンク数決定器202、ターゲットスパース性決定器203、活性化バンク決定器204、DNNトレーナ205、スパース化器(sparsifier)206などのモジュールを含み得る。
【0024】
一実施形態では、DNNジェネレータ201は、1つまたは複数のトレーニングデータセットおよび目標関数に基づいてDNNモデルを生成し得る。トレーニングデータは、入力データと、特定のタスクについての出力ラベル(たとえば、分類、物体検出、顔認識、言語処理など)とを含み得る。一実施形態では、DNNジェネレータ201は、事前トレーニング済みDNNモデルに基づいてスパースDNNモデルを生成し得る。バンク数決定器202は、出力活性化特徴マップのバンクに基づくバンク値/番号を決定し得、したがってバンクはバンク数に基づいて検索可能である。ターゲットスパース性決定器203は、スパースDNNモデルについてのターゲットスパース性(20% 40%、60%、80%など)を決定し得る。活性化バンク決定器204は、バンクサイズ/レイアウトに基づいて、特徴マップをいくつかのバンクにグループ化/分割し得る。各ニューラルネットワーク層が活性化特徴マップを出力し、出力活性化特徴マップは次の層に対する入力であることに留意されたい。
【0025】
DNNトレーナ205は、順方向および逆方向伝播によってDNNモデルをトレーニングし、またはDNNモデルを再トレーニングし得る。スパース化器206は、DNNモデルの任意の層の重みまたは活性化特徴マップにスパース化を適用することによって、DNNモデルにスパース化を適用し得る。モジュール201~206の一部またはすべては、ソフトウェア、ハードウェア、またはそれらの組合せで実装され得ることに留意されたい。たとえば、こうしたモジュールは、記憶デバイス212内にインストールされ、メモリ211内にロードされ、1つまたは複数のプロセッサ210によって実行され得る。モジュール201~206の一部は、統合モジュールとして統合され得る。
【0026】
図3は、一実施形態によるDNNモデルの層を示すブロック図である。層300は、図1の層101などの、ディープニューラルネットワークからの層でよい。図3を参照すると、層300は、y=activation_fn(Wx+b)によって表され得、ただしxは入力テンソルを表し、yは出力テンソル(または出力活性化特徴マップ)を表し、Wは重みのテンソルを表し、bはバイアステンソルを表し、activation_fnは活性化関数を表す。活性化関数の例には、ReLU、Sigmoid、tanhなどが含まれる。
【0027】
図4は、一実施形態による、層の重みを更新することによる、DNNの層についての活性化特徴マップスパース化を示すブロック図である。層400は図3の層300を表し得るが、活性化プルーニング(または活性化スパース化)を伴う。図4を参照すると、活性化プルーニングのために、1つまたは複数の活性化特徴マップ(たとえば、出力y)が、ターゲットスパース性に基づいてゼロに設定される。たとえば、y=activation_fn(Wx+b)・t、ただしtは、層についてのactivation_fn(Wx+b)についての出力テンソルについてのマスクであり、「・」は数学的な要素ごとの積演算であり、yは出力である。ここでは、重み値401が更新され得、たとえばW-->W’、ただしW’は更新後の重みテンソルである。新しい重みテンソルに基づいて、活性化特徴マップは、y’=activation_fn(W’x+b)、ただしy’は出力活性化である。ここでは、活性化プルーニングされたDNNモデル、たとえば1つまたは複数の層についてのプルーニングされた活性化テンソル(すなわち特徴マップ)を有するDNNモデルが推論のために使用する計算(たとえば、乗算および/または加算)数はより少なくなり、より高速かつより効率的なDNNモデルが得られる。マスクtは、入力xおよびtに基づいて動的に導出されるバイナリベクトルであり、tはactivation_fn(Wx+b)の関数である。
【0028】
マスクtの一例は、テンソルactivation_fn(Wx+b)の各バンクの上位k個のエントリを選び、各バンクの上位k個に対応する要素を1に設定し、他に対応する要素を0に設定することによって取得され得る。この結果、総数k*number_of_banks個の非ゼロ要素が得られる。
【0029】
一実施形態では、出力特徴マップを有するL個の層を有するDNNモデルについて、i番目の層で
【数1】
である。一実施形態では、活性化プルーニングはマスクとして表され得る:
【数2】
、ただしi=1,...,L-1であり、ci、n、およびdiは、出力特徴マップが3Dテンソルであるとすると、3次元(3D)出力特徴マップの次元である。
【0030】
図5Aは、一実施形態による、DNNの層についてのバンクバランストスパース活性化テンソルを示すブロック図である。図5Aを参照すると、層500は図4の層400を表し得る。一実施形態では、層500は、活性化スパース化の前に、活性化特徴マップテンソル501を表す密活性化行列Y1を出力する。一例として、バンクサイズ=4、バンクレイアウト=行、およびターゲットスパース率=50%では、スパース化エンジン(図2A~2Bのエンジン200など)が、特徴マップ501に基づいてバンクバランストスパース特徴マップ502を生成し得る。スパース活性化がハードウェア加速を実現し得ることに留意されたい。
【0031】
一実施形態では、スパース化を適用するための次元を決定することによって、特徴マップ501が生成される。図5Aを参照すると、この例では、エンジン200が、バンクレイアウトとして行次元にスパース化を適用するように自動構成され得る。ここでは、エンジン200は、バンクサイズに従って特徴マップの各行を分割し、このケースでは、バンクサイズ=4により、バンク1およびバンク2が得られる。各バンクについて、エンジン200は、値を最大から最小まで順位付けする。たとえば、バンク1は、0.8、0.2、0.1、-0.4と順位付けされた値を有する。ターゲットスパース率に基づいて、最大値が活性化値として選択され、残りはゼロに設定される。ここでは、50%のターゲットスパース率について、0.8および0.2がバンク1についての活性化値として選択され、値の残りがゼロに設定される(すなわち、非活性化される)。
【0032】
エンジン200は、層500についての残りのバンクについての選択プロセスを適用し、特徴マップ502を生成する。一実施形態では、選択が徐々に、かつ/または反復的に実施され、たとえば単一の活性化値が、一度に単一のバンクからゼロにされる。別の実施形態では、しきい値に基づいて活性化値がゼロにされ、たとえば、しきい値未満である場合、バンク内の活性化値がゼロに設定される。一実施形態では、各バンクは別個のしきい値を有する。
【0033】
図5Bは、別の実施形態による、DNNの層についてのバンクバランストスパース活性化テンソルを示すブロック図である。図5Bを参照すると、テンソル503が、テンソル501の列次元に適用されるバンクバランストスパース化を示す(ここでは、エンジン200が、列次元にスパース化を適用するようにユーザによって構成され得る)。図5Bを参照すると、各列が、バンクサイズ=2およびバンクレイアウト=列などの、バンクサイズ/レイアウトに基づいて、上部バンク(バンク1)および下部バンク(バンク2)に分割される。各バンクについて、活性化値がソートされ、上位k個の活性化が保持され、残りはゼロに設定される。
【0034】
たとえば、50%のターゲットスパース率に基づいて、2つの活性化値を有する各バンクが、1つの活性化値(50%のターゲット率)に削減され、バンクバランストスパース特徴マップ503が生成される。一実施形態では、バンクサイズ/レイアウトをスパース化するための次元(または成分)、および/またはスパース率が、アクセラレータ/処理システム/サーバ/エッジデバイスのオペレータによって、エンジン200を使用して構成され得る。別の実施形態では、次元、バンクサイズ/レイアウト、および/またはスパース率が、テンソル501の次元/成分またはハイパーパラメータに基づいて自動構成可能であり得る。
【0035】
図6は、一実施形態による、2次元(2D)の活性化テンソルを示すブロック図である。図6を参照すると、層600が図5Aの層500を表し得、テンソル601が図5Aのテンソル501を表し得る。図6を参照すると、一実施形態では、層600は2D活性化テンソル601を出力する。このケースでは、テンソル601は、自然言語処理ディープニューラルネットワークについての活性化テンソルでよく、テンソル601は、文の長さおよび隠れdim(次元)という次元を含む。隠れdimは、単語埋込みについての次元、または自然言語処理ディープニューラルネットワークについての任意の他の次元値を含み得る。
【0036】
図7は、一実施形態による、3次元(3D)の活性化テンソルを示すブロック図である。図7を参照すると、層700が図5Aの層500を表し得、テンソル701が図5Aのテンソル501を表し得る。図7を参照すると、一実施形態では、層700は3D活性化テンソル701を出力する。このケースでは、テンソル701は、イメージ認識/分類ディープニューラルネットワークについての活性化テンソルでよく、テンソル701は、高さ、幅、およびチャネルという次元を含む。たとえば、赤-緑-青(RGB)イメージが、チャネル赤、緑、青を含み、各チャネルは、高さ×幅のサイズのイメージを含む。深さを有するRGBイメージでは、チャネルは、赤、緑、青、および深さを含み得る。ニューラルネットワークの異なる層は、異なる数のチャネル、高さ、および/または幅次元を有する活性化出力を生成し得る。
【0037】
図7を参照すると、一実施形態では、バンクが、それぞれの活性化特徴マップについてのカラーチャネルの数に基づいて自動構成され得る。ここでは、各チャネル(たとえば、チャネル711)はバンクと見なされ得、上位k個の値が、ターゲットスパース率に基づいて各バンクから選択され、バンクバランストスパース活性化が生成され得る。別の実施形態では、バンクは、自動構成され、またはオペレータによって構成され得る。別の実施形態では、チャネルはいくつかのバンクに分割され得る(たとえば、チャネル712は4つのバンクに分割される)。次に、上位k個の値が、ターゲットスパース率に基づいて各バンクから選択され、バンクバランストスパース活性化が生成され得る。別の実施形態では、いくつかのチャネルが1つのバンクとして組み合わされ得る(たとえば、バンク713が2つ以上のチャネルを含む)。同様に、上位k個の値が、ターゲットスパース率に基づいて各バンクから選択され、バンクバランストスパース活性化が生成され得る。2次元および3次元活性化テンソルが示されているが、活性化テンソルは任意の次元、たとえば4、5、6などでよい。
【0038】
図8は、一実施形態による、バンクバランストスパースDNNを生成するためのプロセスを示す流れ図である。プロセス800は、ソフトウェア、ハードウェア、またはそれらの組合せを含み得る処理ロジックによって実施され得る。たとえば、プロセス800は、エンジン200を有するアクセラレータ、プロセッサ、サーバ、エッジデバイス、ホストシステムなどの、図2Aのニューラルネットワークスパース化エンジン200によって実施され得る。図8を参照すると、ブロック801で、処理ロジックが、ニューラルネットワークモデルについてのトレーニングデータおよび目標関数を受け取る。トレーニングデータは、ニューラルネットワークトレーニングのための1つまたは複数のデータセットを含み得る。トレーニングデータは、ニューラルネットワークモデルパラメータ(たとえば、ニューラルネットワークモデルのニューロン間の重みおよびバイアス結合)をフィットするために使用される例のセットでよい。目標関数は推論目標(たとえば、分類、物体認識タスク)を記述し、ネットワークモデルパラメータが特定の目標のためのトレーニングデータにどれほどフィットするかを判定するための評価基準を含み得る。
【0039】
ブロック802で、処理ロジックは、DNNモデル(たとえば、第1のDNNモデル)およびチェックポイントを取得する。DNNモデルは、トレーニングデータを使用して目標関数に対するトレーニングを実施することによって取得され得、またはDNNモデルは事前トレーニング済みDNNモデルでよい。チェックポイントは、特定のトレーニングデータセットがDNNモデルに適用されるとき、特定のタスクについての精度パーセンテージ(たとえば、89%)を有するチェックポイントを含み得る。一実施形態では、ターゲットスパース率が、チェックポイントに基づいて自動的に再構成され得る。たとえば、ターゲットスパース率が当初は80%に設定され得、ターゲットスパース率を有するターゲットスパース性に基づいて生成された、スパース化されたDNNモデルが、特定のタスクについての精度パーセンテージを、チェックポイントに対する所定のしきい値以内に保持する場合、ターゲットスパース性が、次のスパース化されたDNNモデルを生成するために自動的に増大する。ターゲットスパース率の自動再構成は反復され得る。このようにして、ターゲットスパース性が、最適な加速のためにDNNについて自動的に選択され得る。
【0040】
ブロック803で、処理ロジックは、(バンク数を導出するために)1つまたは複数のバンクサイズ/レイアウトと、ターゲットスパース性値とを取得する。バンクサイズ/レイアウト/ターゲットスパース性は、DNNの各層について個々に指定され得、または同一のバンクサイズ/レイアウト/スパース性が、DNNモデルの各層に適用され得る。一実施形態では、バンクサイズ/レイアウトは、DNNモデルの活性化テンソルのテンソル次元で割り切れるいくつかのバンクを導出する。ターゲットスパース性値は、40%、50%、60%などのパーセンテージ値でよい。ブロック803では、処理ロジックは、バンクサイズ/レイアウトに基づいて、活性化特徴マップ(たとえば、層の出力)をいくつかのバンクにさらに分割する。次いで、処理ロジックは、各バンクについてのスパース率を決定する。
【0041】
ブロック804で、処理ロジックは、各バンクについてのスパース率に基づいてターゲットスパース性に達したかどうかを評価する。そうである場合、プロセスはブロック805に進み、DNNモデルをバンクバランストスパース活性化のDNNモデル(たとえば、第2のDNNモデル)として出力する。そうでない場合、処理ロジックはブロック806に進む。ブロック806で、処理ロジックは、目標関数が収束するかどうかを判定する。一実施形態では、最後の所定の反復数の変化が所定のしきい値以内にある場合、目標関数は収束する。たとえば、最後の10回の反復で、修正されたDNNモデルは、0.1%しきい値範囲内の出力を生成する。目標関数出力が所定のしきい値範囲内にある場合、たとえば収束する場合、処理ロジックはブロック807に進む。目標関数が収束することができない場合、処理ロジックはブロック808に進む。
【0042】
ブロック807で、処理ロジックは、それぞれの層について活性化特徴マップのスパース性を増大させる。ここでは、活性化値をゼロにし、またはバンクから活性化値を除去することによって活性化特徴マップスパース性が増大する。たとえば、図5Aを参照すると、バンク1の行1が、活性化値0.2、0.1、-0.4、および0.8を有する。75%のスパース率についての-0.4を除去することによってスパース性が増大する。一実施形態では、層をバンクバランスされた状態に保ちながら、活性化値が層のバンクから除去される。一実施形態では、バンクについてしきい値が設定され得、しきい値未満である活性化値を徐々に除去するために、しきい値が徐々に調節され得る。一実施形態では、DNNモデルの各層の各バンクから活性化値を除去することによってスパース性が増大する。スパース性が増大すると、次いで処理ロジックはブロック804に進み、層/DNNモデルについてターゲットスパース性に達したかどうかを判定する。
【0043】
ブロック808で、目標関数が収束することができない(たとえば、最後の所定の反復数の変化が所定のしきい値範囲外にある)場合、処理ロジックは、目標関数に基づいてDNNモデルを順方向伝播する。ここでは、入力データ(たとえば、トレーニングデータのサブセット)が、DNNモデルを通じて順方向に供給される。各隠れ層が入力データを受け入れ、入力データを処理して、次に続く層に出力を渡す。一実施形態では、各層について計算された重み/バイアスおよび出力が記憶され、逆方向伝播のために使用される。
【0044】
ブロック809で、処理ロジックはDNNモデルを逆方向伝播する。ここでは、処理ロジックは、勾配(たとえば、順方向伝播からの出力値についての違い)を計算するためにネットワークを通じて逆方向に層出力値を計算する。一実施形態では、処理ロジックは、各層に関する最終層出力の導関数を計算するために、最終層から開始して層にわたって逆トポロジカルにループする。このようにして、処理ロジックは、どの重み/バイアス値が大部分の誤りの原因であるかを判定し得、そのような判定に基づいて重み/バイアスが更新され得る。重み/バイアス値が更新されると、処理ロジックはブロック806に進む。一実施形態では、処理ロジックは、DNNモデルがターゲットスパース性に達するまで、ブロック804および806~809によって示されるようにDNNモデルを反復的に、または徐々に指定する。
【0045】
図9は、一実施形態による方法を示す流れ図である。プロセス900は、ソフトウェア、ハードウェア、またはそれらの組合せを含み得る処理ロジックによって実施され得る。たとえば、プロセス900は、図2Aのニューラルネットワークスパース化エンジン200、あるいはエンジン200を有するアクセラレータ、プロセッサ、サーバ、エッジデバイス、またはホストシステムによって実施され得る。図9を参照すると、ブロック901で、処理ロジックが、1つまたは複数の隠れ層を有する第1のディープニューラルネットワーク(DNN)モデルを決定する。ブロック902で、処理ロジックは、バンクサイズ、バンクレイアウト、およびターゲットスパース性を決定する。ブロック903で、処理ロジックは、バンクサイズおよびバンクレイアウトに基づいて、活性化特徴マップをいくつかのバンクにグループ化する。ブロック904で、処理ロジックは、ターゲットスパース性に基づいて、活性化特徴マップの各バンクについてのスパース性を増大させることによって、第2のDNNモデルを生成し、第2のDNNモデルは推論のために使用される。
【0046】
一実施形態では、第2のDNNモデルが、活性化特徴マップの各バンクについて、活性化特徴マップのバンクがターゲットスパース性に達するまで、活性化特徴マップのバンクについてのスパース性を徐々に増大させることと、活性化特徴マップのバンクについてのスパース性を増大させることに応答して第2のDNNモデルが収束することを保証するように第2のDNNモデルを再トレーニングすることとによって生成される。一実施形態では、活性化特徴マップをグループ化することは、バンクレイアウト、たとえば、活性化テンソルが2次元テンソルである場合、第1のDNNモデルの層についての活性化テンソルの行次元または列次元に基づいて、活性化特徴マップをいくつかのバンクにグループ化することと、活性化テンソルが3次元以上のテンソルである場合、第1のDNNモデルの層についての活性化テンソルのチャネル次元または行次元もしくは列次元(たとえば、バンクレイアウト)に基づいて、活性化特徴マップをいくつかのバンクにグループ化することとを含む。
【0047】
一実施形態では、第2のDNNモデルを再トレーニングすることは、順方向伝播によって目標関数についての出力を計算することと、計算した出力に基づいて、逆方向伝播によってDNNモデルの各隠れ層についての重みパラメータを更新することとを含む。一実施形態では、第2のDNNモデルはバンクバランストスパースDNNモデルである。
【0048】
一実施形態では、第2のDNNモデルは動的DNNモデルであり、第1の推論についての第2のDNNモデルの重みパラメータが、第2の推論についての重みパラメータとは異なる。一実施形態では、各活性化特徴マップブロックについてのスパース性が、各バンクからの上位k個の値を保持することと、バンクについて残りの値を徐々にゼロにすることとによって徐々に増大し、ただしkは1以上である。
【0049】
一実施形態では、バンクバランストスパース活性化ディープニューラルネットワーク(DNN)モデルが、入力層、1つまたは複数の隠れ層、および出力層を含む。1つまたは複数の隠れ層は、入力層と出力層との間に配設され、各隠れ層は、バンクバランストスパース活性化特徴マップを出力することになる。バンクバランストスパース活性化DNNモデルは、1つまたは複数の隠れ層を有する第1のDNNモデルを決定することと、バンクサイズ、バンクレイアウト、およびターゲットスパース性を決定することと、バンクサイズおよびバンクレイアウトに基づいて、活性化特徴マップを複数のバンクにグループ化することと、ターゲットスパース性に基づいて、活性化特徴マップの各バンクについてのスパース性を増大させることによって、バンクバランストスパース活性化DNNモデルとして第2のDNNモデルを生成することであって、第2のDNNモデルが推論のために使用されることとによって生成される。
【0050】
一実施形態では、第2のDNNモデルが、活性化特徴マップの各バンクについて、活性化特徴マップのバンクがターゲットスパース性に達するまで、活性化特徴マップのバンクについてのスパース性を徐々に増大させることと、活性化特徴マップのバンクについてのスパース性を増大させることに応答して第2のDNNモデルが収束することを保証するように第2のDNNモデルを再トレーニングすることとによって生成される。一実施形態では、活性化特徴マップをグループ化することは、活性化テンソルが2次元テンソルである場合、第1のDNNモデルの層についての活性化テンソルの行次元または列次元に基づいて、活性化特徴マップをいくつかのバンクにグループ化することと、活性化テンソルが3次元以上のテンソルである場合、第1のDNNモデルの層についての活性化テンソルのチャネル次元または行次元もしくは列次元に基づいて、活性化特徴マップをいくつかのバンクにグループ化することとを含む。
【0051】
一実施形態では、第2のDNNモデルを再トレーニングすることは、順方向伝播によって目標関数についての出力を計算することと、計算した出力に基づいて、逆方向伝播によってDNNモデルの各隠れ層についての重みパラメータを更新することとを含む。一実施形態では、第2のDNNモデルはバンクバランストスパースDNNモデルである。
【0052】
一実施形態では、第2のDNNモデルは動的DNNモデルであり、第1の推論についての第2のDNNモデルの重みパラメータが、第2の推論についての重みパラメータとは異なる。一実施形態では、各活性化特徴マップブロックについてのスパース性が、各バンクからの上位k個の値を保持することと、バンクについて残りの値を徐々にゼロにすることとによって徐々に増大し、ただしkは1以上である。
【0053】
上記で図示され、説明された構成要素の一部またはすべては、ソフトウェア、ハードウェア、またはそれらの組合せで実装され得ることに留意されたい。たとえば、そのような構成要素は、永続的記憶デバイス内にインストールされ、記憶されたソフトウェアとして実装され得、ソフトウェアは、本出願全体にわたって説明されるプロセスまたは演算を実施するために、プロセッサ(図示せず)によってメモリ内にロードされ、実行され得る。代替として、そのような構成要素は、集積回路(たとえば、特定用途向けICまたはASIC)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)などの専用ハードウェア内にプログラムされ、または組み込まれた実行可能コードとして実装され得、実行可能コードは、対応するドライバおよび/またはオペレーティングシステムを介してアプリケーションからアクセスされ得る。さらに、そのような構成要素は、1つまたは複数の特定の命令を介してソフトウェア構成要素によってアクセス可能な命令セットの部分として、プロセッサまたはプロセッサコア内の特定のハードウェアロジックとして実装され得る。
【0054】
先行する詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズムおよび記号表現によって提示された。こうしたアルゴリズムの説明および表現は、データ処理技術分野の当業者の作業の内容を他の当業者に最も効果的に伝達するために当業者によって用いられる方式である。アルゴリズムは、ここでは、かつ一般には、所望の結果に至る、演算の首尾一貫したシーケンスであると理解される。演算は、物理量の物理的操作を必要とするものである。
【0055】
しかしながら、こうした用語および類似の用語のすべては適切な物理量に関連付けられるべきであり、こうした量に適用される好都合な符号に過ぎないことに留意されたい。別段に明記されていない限り、上記の議論から明らかなように、説明全体にわたって、以下の特許請求の範囲に記載されているような用語を使用する議論は、コンピュータシステムのレジスタおよびメモリ内の物理(電子)量として表現されるデータを操作して、コンピュータシステムメモリまたはレジスタ、あるいは他のそのような情報ストレージ、送信デバイス、またはディスプレイデバイス内の物理量として同様に表現される他のデータに変換するコンピュータシステムまたは類似の電子コンピューティングデバイスの動作およびプロセスを指すことを理解されたい。
【0056】
本開示の実施形態はまた、本明細書の演算を実施するための装置に関する。そのようなコンピュータプログラムは非一時的コンピュータ可読媒体内に記憶される。機械可読媒体は、マシン(たとえば、コンピュータ)によって読取り可能な形式で情報を記憶するための任意の機構を含む。たとえば、機械可読(たとえば、コンピュータ可読)媒体は、マシン(たとえば、コンピュータ)可読記憶媒体(たとえば、読取り専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス)を含む。
【0057】
先行する図に示されるプロセスまたは方法は、ハードウェア(たとえば回路、専用ロジックなど)、(たとえば、非一時的コンピュータ可読媒体上で実施される)ソフトウェア、またはそれらの組合せを含む処理ロジックによって実施され得る。プロセスまたは方法がいくつかの順次的な演算によって上記で説明されるが、記載の演算の一部は異なる順序で実施され得ることを理解されたい。さらに、いくつかの演算は、順次的にではなく並列に実施され得る。
【0058】
本開示の実施形態は、何らかの特定のプログラミング言語を参照して説明されない。本明細書で説明される本開示の実施形態の教示を実装するために様々なプログラミング言語が使用され得ることを理解されよう。
【0059】
上記の明細書では、本開示の実施形態が、その特定の例示的実施形態を参照して説明された。以下の特許請求の範囲に記載の本開示のより広い趣旨および範囲から逸脱することなく、それに対して様々な修正が行われ得ることは明らかであろう。したがって、本明細書および図面は、制限的な意味ではなく、例示的な意味でとらえられるべきである。
図1
図2A
図2B
図3
図4
図5A
図5B
図6
図7
図8
図9