(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-24
(45)【発行日】2024-08-01
(54)【発明の名称】ニューラルネットワークのトレーニング中のデータスパース性の監視
(51)【国際特許分類】
G06N 3/08 20230101AFI20240725BHJP
G06N 3/0495 20230101ALI20240725BHJP
【FI】
G06N3/08
G06N3/0495
(21)【出願番号】P 2023139625
(22)【出願日】2023-08-30
(62)【分割の表示】P 2021536382の分割
【原出願日】2020-04-29
【審査請求日】2023-08-31
(32)【優先日】2019-04-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】シ ドン
(72)【発明者】
【氏名】ダニエル ロウェル
【審査官】大倉 崚吾
(56)【参考文献】
【文献】国際公開第2019/008661(WO,A1)
【文献】米国特許出願公開第2018/0181864(US,A1)
【文献】米国特許出願公開第2019/0108436(US,A1)
【文献】特開2014-199545(JP,A)
【文献】特表2017-520824(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02- 3/10
G06N 20/00-99/00
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークのトレーニングプロセス中にトレーニング反復を実行するように構成されたプロセッサであって、各トレーニング反復は、前記ニューラルネットワークを介してトレーニングデータの個別のインスタンスを処理することを含む、プロセッサと、
スパース性監視装置と、を備え、
前記スパース性監視装置は、
アクティブモード又はハイバネーションモードで動作し、その間に、前記ニューラルネットワークの少なくともいくつかの中間ノードによって出力された中間データのスパース性特性に基づいて、監視期間の長さを動的に調整することと、
1つ以上の監視期間の各々における監視間隔中に、各監視間隔中に発生するトレーニング反復中に前記ニューラルネットワークの少なくともいくつかの中間ノードによって出力された中間データを取得することと、
前記中間データに少なくとも部分的に基づいて、前記中間データについてのスパース性特性を表す1つ以上の値を生成することと、
前記スパース性特性を表す1つ以上の値を、前記スパース性特性を表す1つ以上の値に少なくとも部分的に基づいて後続のトレーニング反復を実行する1つ以上の態様を制御するように構成された前記プロセッサに送信することと、
を行うように構成されている、
電子デバイス。
【請求項2】
前記スパース性監視装置は、前記アクティブモードで動作している間、
前記中間ノードのうち少なくともいくつかの中間ノード毎に、2つ以上の監視間隔からの前記スパース性特性を表す1つ以上の値に基づいて、前記スパース性特性が前記2つ以上の監視間隔の間でアクティブモード閾値量を上回って変化したかどうかを判別することと、
前記スパース性特性が前記閾値量を上回って変化しておらず、これにより前記スパース性が安定である場合に、その中間ノードについての後続の監視期間についての監視期間の長さを増加させることであって、前記監視期間の長さは、ハイバネーションモード監視期間の最大の長さまで増加される、ことと、
を行うように構成されている、
請求項1の電子デバイス。
【請求項3】
前記スパース性特性が、中間ノードについて前記閾値量を上回って変化しており、これにより前記スパース性が不安定である場合に、前記監視期間の現在の長さを保持すること、又は、その中間ノードについての後続の監視期間についての監視期間の長さを減少させることであって、前記監視期間の長さは、最小のアクティブモード初期値まで減少される、ことを行うように構成されている、
請求項2の電子デバイス。
【請求項4】
前記後続の監視期間についての監視期間の長さを増加させることは、異なる中間ノードが前記アクティブモードにおいて異なる監視期間を有することができるように、前記ニューラルネットワーク内の個々の中間ノードについての監視期間の長さを個別に増加させることを含む、
請求項2の電子デバイス。
【請求項5】
前記スパース性監視装置は、前記アクティブモードで動作している間に、
前記監視期間の長さが、前記中間ノードのうち少なくともいくつかの全てについて前記ハイバネーションモード監視期間の長さに増加されており、前記中間ノードのうち少なくともいくつかの各々によって出力された中間データが中間データスパース性閾値未満である場合に、前記スパース性監視装置をハイバネーションモードに遷移させることを行うように構成されており、
前記スパース性監視装置は、前記ハイバネーションモードにおいて、全ての中間ノードについての監視期間の長さを、前記ハイバネーションモード監視期間の長さに留める、
請求項2の電子デバイス。
【請求項6】
前記スパース性監視装置は、前記ハイバネーションモードで動作している間に、
前記中間ノードのうち少なくともいくつかの中間ノード毎に、2つ以上の監視間隔からの前記スパース性特性を表す1つ以上の値に基づいて、前記スパース性特性が前記2つ以上の監視間隔の間で前記アクティブモード閾値量を上回って変化したかどうかを判別することと、
前記スパース性特性が、特定数の中間ノードについて前記閾値量を上回って変化しており、これにより前記スパース性が不安定である場合に、前記スパース性監視装置を前記アクティブモードに遷移させることであって、前記遷移させることは、前記監視期間の長さを、前記ハイバネーションモード監視期間よりも短いアクティブモード初期値に減少させることを含む、ことと、
を行うように構成されている、
請求項5の電子デバイス。
【請求項7】
前記スパース性監視装置は、
前記中間ノードのうち少なくともいくつかの中間ノードについて、前記スパース性特性を表す値のうち1つ以上がスパース性閾値未満であり、これにより前記中間データがスパースではない場合に、その中間ノードについての現在の監視間隔を早期に終了させることによって、前記現在の監視間隔中に発生する前記トレーニング反復のうち少なくともいくつかの間にその中間ノードによって出力された前記中間データを取得しないように構成されている、
請求項1の電子デバイス。
【請求項8】
前記中間データについてのスパース性特性を表す1つ以上の値を生成することは、1つ以上の監視間隔中に発生する2つ以上のトレーニング反復から取得された中間データを平均化することを含む、
請求項1の電子デバイス。
【請求項9】
前記後続のトレーニング反復を実行する1つ以上の態様を制御することは、
前記スパース性特性を表す1つ以上の値がより高いスパース性を示す場合に、中間データを含む動作のために簡略化された計算を使用するように前記後続のトレーニング反復を構成することを含む、
請求項1の電子デバイス。
【請求項10】
前記後続のトレーニング反復を実行する1つ以上の態様を制御することは、
前記スパース性特性を表す1つ以上の値がより高いスパース性を示す場合に、トレーニング反復中に前記中間データをメモリに記憶するために縮小又は圧縮データフォーマットを使用するように前記プロセッサを構成することを含む、
請求項1の電子デバイス。
【請求項11】
前記中間データのスパース性特性を表す1つ以上の値は、複数のステージから選択された1つ以上のステージを含み、
前記複数のステージの各ステージは、前記中間データについての可能なスパース性値の範囲の対応する異なる部分を示す、
請求項1の電子デバイス。
【請求項12】
前記スパース性特性を表す1つ以上の値は、2つ以上のトレーニングインスタンスについての前記中間データのスパース性の傾向又はパターンを含む、
請求項1の電子デバイス。
【請求項13】
前記スパース性特性を表す1つ以上の値は、1つ以上のトレーニングインスタンスについての前記中間データのゼロブロック比を含む、
請求項1の電子デバイス。
【請求項14】
ニューラルネットワークのトレーニングプロセス中にトレーニング反復を実行するように構成されたプロセッサであって、各トレーニング反復は、前記ニューラルネットワークを介してトレーニングデータの個別のインスタンスを処理することを含む、プロセッサと、スパース性監視装置と、を備える電子デバイスにおいて、中間データ内のスパース性を監視するための方法であって、
前記スパース性監視装置が、アクティブモード又はハイバネーションモードで動作し、その間に、前記ニューラルネットワークの少なくともいくつかの中間ノードによって出力された中間データのスパース性特性に基づいて、監視期間の長さを動的に調整することと、
前記スパース性監視装置が、1つ以上の監視期間の各々における監視間隔中に、各監視間隔中に発生するトレーニング反復中に前記ニューラルネットワークの少なくともいくつかの中間ノードによって出力された中間データを取得することと、
前記スパース性監視装置が、前記中間データに少なくとも部分的に基づいて、前記中間データについてのスパース性特性を表す1つ以上の値を生成することと、
前記スパース性監視装置が、前記スパース性特性を表す1つ以上の値を、前記スパース性特性を表す1つ以上の値に少なくとも部分的に基づいて後続のトレーニング反復を実行する1つ以上の態様を制御するように構成された前記プロセッサに送信することと、を含む、
方法。
【請求項15】
前記スパース性監視装置が、前記アクティブモードで動作している間に、
前記中間ノードのうち少なくともいくつかの中間ノード毎に、2つ以上の監視間隔からの前記スパース性特性を表す1つ以上の値に基づいて、前記スパース性特性が前記2つ以上の監視間隔の間でアクティブモード閾値量を上回って変化したかどうかを判別することと、
前記スパース性特性が前記閾値量を上回って変化しておらず、これにより前記スパース性が安定である場合に、その中間ノードについての後続の監視期間についての監視期間の長さを増加させることであって、前記監視期間の長さは、ハイバネーションモード監視期間の最大の長さまで増加される、ことと、を行う、ことをさらに含む、
請求項14の方法。
【請求項16】
前記後続の監視期間についての監視期間の長さを増加させることは、異なる中間ノードが前記アクティブモードにおいて異なる監視期間を有することができるように、前記ニューラルネットワーク内の個々の中間ノードについての監視期間の長さを個別に増加させることを含む、
請求項15の方法。
【請求項17】
前記スパース性監視装置が、前記アクティブモードで動作している間に、
前記監視期間の長さが、前記中間ノードのうち少なくともいくつかの全てについて前記ハイバネーションモード監視期間の長さに増加されており、前記中間ノードのうち前記少なくともいくつかの各々によって出力された中間データが中間データスパース性閾値未満である場合に、前記スパース性監視装置をハイバネーションモードに遷移させることをさらに含み、
前記スパース性監視装置は、全ての中間ノードについての監視期間の長さを、前記ハイバネーションモード監視期間の長さに留める、
請求項15の方法。
【請求項18】
前記スパース性監視装置が、前記ハイバネーションモードで動作している間に、
前記中間ノードのうち少なくともいくつかの中間ノード毎に、2つ以上の監視間隔からの前記スパース性特性を表す1つ以上の値に基づいて、前記スパース性特性が前記2つ以上の監視間隔の間で前記アクティブモード閾値量を上回って変化したかどうかを判別することと、
前記スパース性特性が、特定数の中間ノードについて前記閾値量を上回って変化しており、これにより前記スパース性が不安定である場合に、前記スパース性監視装置を前記アクティブモードに遷移させることであって、前記遷移させることは、前記監視期間の長さを、前記ハイバネーションモード監視期間よりも短いアクティブモード初期値に減少させることを含む、ことと、をさらに含む、
請求項17の方法。
【請求項19】
前記スパース性監視装置が、
前記中間ノードのうち少なくともいくつかの中間ノードについて、前記スパース性特性を表す値のうち1つ以上がスパース性閾値未満であり、これにより前記中間データがスパースではない場合に、その中間ノードについての現在の監視間隔を早期に終了させることによって、前記現在の監視間隔中に発生する前記トレーニング反復のうち少なくともいくつかの間にその中間ノードによって出力された前記中間データを取得しないことをさらに含む、
請求項14の方法。
【請求項20】
前記中間データについてのスパース性特性を表す1つ以上の値を生成することは、1つ以上の監視間隔中に発生する2つ以上のトレーニング反復から取得された中間データを平均化することを含む、
請求項14の方法。
【請求項21】
前記後続のトレーニング反復を実行する1つ以上の態様を制御することは、
前記スパース性特性を表す1つ以上の値がより高いスパース性を示す場合に、中間データを含む動作のために簡略化された計算を使用するように前記後続のトレーニング反復を構成することを含む、
請求項14の方法。
【請求項22】
前記後続のトレーニング反復を実行する1つ以上の態様を制御することは、
前記スパース性特性を表す1つ以上の値がより高いスパース性を示す場合に、トレーニング反復中に前記中間データをメモリに記憶するために縮小又は圧縮データフォーマットを使用するように前記プロセッサを構成することを含む、
請求項14の方法。
【請求項23】
前記中間データのスパース性特性を表す1つ以上の値は、複数のステージから選択された1つ以上のステージを含み、
前記複数のステージの各ステージは、前記中間データについての可能なスパース性値の範囲の対応する異なる部分を示す、
請求項14の方法。
【発明の詳細な説明】
【背景技術】
【0001】
いくつかの電子デバイスは、人工ニューラルネットワーク、より簡潔に言えば「ニューラルネットワーク」の演算を実施する。一般に、ニューラルネットワークは、生物の脳のニューラルネットワーク等の生物学的なニューラルネットワークと類似性を有する内部要素を含む計算構造である。ニューラルネットワークは、ニューラルネットワークの内部要素を構成するために、トレーニング(訓練)データの既知のインスタンスを使用することによって、特定のタスクを実施するようにトレーニングすることができ、それにより、ニューラルネットワークは、入力データの未知のインスタンスに対して特定のタスクを実施することができる。例えば、ニューラルネットワークによって実施された1つの特定のタスクは、画像が顔又は車両等の画像要素を含むかどうかを識別することである。画像識別を実施するようにニューラルネットワークをトレーニングする場合、画像要素を含む(又は、含まない)ことが既知である画像を、ニューラルネットワークを介して処理することによって、画像要素が未知の画像に存在するかどうかを識別するために未知の画像を後に処理するときに適切な出力を生成するように内部要素が構成される。
【0002】
ニューラルネットワークは、その内部要素内に、生物の脳内でシナプスを介してニューロンが相互接続される態様に類似した構成で互いに相互接続される一組の人工ニューロン、すなわち「ノード」を含む。基本的なニューラルネットワークは、ノードが入力ノード、中間ノード及び出力ノードを含む重み付きグラフ構造の形として視覚化することができる。ニューラルネットワーク内では、出力ノード以外の各ノードは、関連する重みを有する有向エッジを介して1つ以上の下流ノードに接続される。動作中、ニューラルネットワークの第1層の入力ノードは、外部ソースからの入力を受信し、その入力を処理して入力値を生成する。入力ノードは、入力値を、ニューラルネットワークの次の層の中間ノードに転送する。受信した中間ノードは、対応する有向エッジの重みに基づいて受信入力を重み付けし、すなわち、重み付け値を乗算する等によって受信入力を調整する。各中間ノードは、対応する重み付けされた受信入力と、場合によってはバイアス値と、を合計して内部値を生成し、その内部値を使用して中間ノードの活性化関数を評価して結果値を生成する。次に、中間ノードは、結果値をニューラルネットワークの次の層の中間ノードの入力値として転送する。入力値は、上述したように内部値を生成し、活性化関数を評価するために使用される。このようにして、値は、中間ノードの最終層が結果値をニューラルネットワーク用の出力ノードに転送するまでニューラルネットワークの層内の中間ノードを通じて進行し、それによって、ニューラルネットワーク用の出力が生成される。上記の例を続けると、出力ノードによって生成された出力、したがってニューラルネットワークからの出力は、画像が指定の画像要素を含む(又は、含まない)可能性があるか否かを示す、例えば、0と1との間の数の形態にすることができる。
【0003】
上述したように、ニューラルネットワーク内のノード間の有向エッジに沿って転送される値は、各有向エッジに関連する重みに従って重み付けされる。所望の出力がニューラルネットワークによって生成されるようにトレーニングプロセス中に有向エッジに関連する重みを設定することによって、上述した画像内の画像要素の識別等の所望の出力を生成するようにニューラルネットワークをトレーニングすることができる。ニューラルネットワークをトレーニングする場合、期待出力又は所望出力を有するトレーニングデータの多数のインスタンスがニューラルネットワーク内で処理され、実際の出力が出力ノードから生成される。上記のニューラルネットワークの例を続けると、トレーニングデータのインスタンスは、特定の画像要素を含む(又は、含まない)ことが既知であり、したがって、画像要素が画像内に存在する(又は、存在しない)可能性があることを示す出力をニューラルネットワークが生成することが予想されるデジタル画像を含む。トレーニングデータの各インスタンスがニューラルネットワーク内で処理されて実際の出力が生成された後に、実際の出力と対応する予想出力との間のエラー値又は「損失」が二乗平均誤差、対数損失又は別のアルゴリズムを使用して計算される。次に、損失がニューラルネットワークを介して逆方向に処理され、すなわち、ニューラルネットワークを介して「逆伝播する(backpropagated)」ことにより、トレーニングデータのインスタンスのエラーを低減するために、ニューラルネットワーク内の有向エッジに関連する重みが調整される。それにより、トレーニングデータのその特定のインスタンス、及び、入力データの全ての後続のインスタンスに対するニューラルネットワークの応答が調整される。例えば、ある逆伝播技術では、ニューラルネットワーク内の各有向エッジの重みに関する損失の勾配を計算することを含む。次に、各勾配にトレーニング係数又は「学習率」を乗算して重み調整値を計算する。次に、重み調整値は、対応する重みの更新値を計算する際に使用され、例えば、対応する重みの既存の値に加算される。
【0004】
いくつかのニューラルネットワーク、特に多数の中間ノードを有するニューラルネットワークの場合、大量の中間データが中間ノードから出力として生成される可能性がある。したがって、トレーニングプロセス中(すなわち、トレーニングデータのインスタンスがニューラルネットワークを介して処理され、損失が逆伝播されるとき)に上述した計算を実施することにより、ニューラルネットワークをトレーニングするために使用されるデバイス内のプロセッサ及び他の機能ブロックにかなりの計算負荷がかかる。また、トレーニングプロセス中に中間データを記憶し、読み出すことにより、大量のメモリが必要になり、トレーニングプロセスに遅延が加わる。したがって、設計者は、中間データの特性を使用して中間データを必要とする計算の効率及び中間データの記憶を改善するための複数の技術を提案してきた。例えば、あるシステム設計者は、複数の中間ノードからの中間データ内のゼロ、すなわち、これらの中間ノードからの中間データの「スパース性」を検出すること、及び、データのスパース性がこのような計算の使用を許容する場合により効率的な計算(例えば、スパース行列演算)を使用することを提案した。別の例として、設計者は、中間データのスパース性に基づいて中間データをメモリに記憶するための圧縮記憶形式を使用することを提案した。残念なことに、トレーニングプロセス中に中間データのスパース性を検出することは面倒であり、データ集約的である。このことは、トレーニング(訓練)反復中に中間データのスパース性を利用する技術の広範囲な採用を制限するように作用している。
【図面の簡単な説明】
【0005】
【
図1】いくつかの実施形態による、ニューラルネットワークを示すブロック図である。
【
図2】いくつかの実施形態による、電子デバイスを示すブロック図である。
【
図3】いくつかの実施形態による、スパース性監視装置を示すブロック図である。
【
図4】いくつかの実施形態による、監視周期及び監視期間を示すタイムライン図である。
【
図5】いくつかの実施形態による、スパース性監視装置との間のデータ及び情報の流れを示すブロック図である。
【
図6】いくつかの実施形態による、スパース性監視装置における様々な動作モード間の遷移を示す状態図である。
【
図7】いくつかの実施形態による、アクティブモードでスパース性監視装置の監視周期を動的に調整する擬似コードの例を示す図である。
【
図8】いくつかの実施形態による、アクティブモードからハイバネーションモードへの遷移及びその逆の遷移の擬似コードの例を示す図である。
【
図9】いくつかの実施形態による、ニューラルネットワークのためのトレーニングプロセスのトレーニング反復中に中間データ内のスパース性を監視するためのプロセスを示すフローチャートである。
【
図10A】いくつかの実施形態による、スパース性監視装置においてアクティブモード及びハイバネーションモードを使用するためのプロセスを示すフローチャートの一部を示す図である。
【
図10B】いくつかの実施形態による、スパース性監視装置においてアクティブモード及びハイバネーションモードを使用するためのプロセスを示すフローチャートの一部を示す図である。
【
図11】いくつかの実施形態による、スパース性監視装置による監視期間の高速終了のためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【0006】
図面及び説明全体に亘って、同じ符号は、同一の図要素を指す。
【0007】
以下の説明は、当業者が、説明する実施形態を作成及び使用することを可能にするために提示され、特定の用途及びその要件に照らして提供される。説明する実施形態に対する様々な変更は、当業者には容易に明らかであり、本明細書で定義される一般的な原理は、他の実施形態及び用途に適用されてもよい。したがって、説明する実施形態は、示された実施形態に限定されず、本明細書で開示される原理及び特徴と一致する最も広い範囲が与えられるべきである。
【0008】
(用語)
以下の説明では、様々な用語が、実施形態を説明するために使用される。以下に、これらの用語のいくつかを簡単且つ一般的に説明する。用語は、明確さ及び簡潔さのために、本明細書に記載されていない重要な追加的態様を有してもよい。したがって、説明は、用語を限定することを意図しないことに留意されたい。
【0009】
機能ブロック:機能ブロックは、集積回路要素、ディスクリート回路要素等の1つ以上の相互に関連する回路要素のグループ、集合、及び/又は、セットを指す。回路要素は、回路要素が少なくとも1つの特性を共有するという点で「相互に関連」している。例えば、相互に関連する回路要素は、特定の集積回路チップ又はその一部に含まれていてもよいし、その上に製造されてもよいし、他の方法で結合されてもよいし、所定の機能(計算又は処理機能、メモリ機能等)の実行に関与してもよいし、共通の制御要素によって制御されてもよい。機能ブロックは、単一の回路要素(例えば、単一の集積回路論理ゲート)から数百万又は数十億の回路要素(例えば、集積回路メモリ)までの任意の数の回路要素を含むことができる。
【0010】
スパース性:ニューラルネットワーク内の中間(又は、「隠れ」)ノードによって出力された中間データ内に見られるゼロ(及び/又は、他の指定値)の数及び/又は配置である。例えば、ゼロは、ゼロの結果を生成する活性化関数(例えば、正規化線形ユニット(ReLU)活性化関数等)に起因して中間ノードによって出力され得る。スパース性の1つの簡単な計算は割合である。この場合、中間データ内のゼロに基づいてスパース性が決定される場合、100個の中間ノードを仮定すると、25%のスパース性は、25個の中間ノードがゼロを出力し、残りの75個の中間ノードが他の値を出力するときに存在する。
【0011】
トレーニング反復:トレーニング反復は、ニューラルネットワークトレーニングプロセス中にニューラルネットワークを介してトレーニングデータの単一のインスタンスを処理するための動作の一部又は全てを含む。トレーニング反復の動作は、ニューラルネットワークの中間ノードからの中間データに加えて、ニューラルネットワークの出力ノードからの出力を生成するために、ニューラルネットワークを通じてトレーニングデータの所定のインスタンスを処理することを含む。また、トレーニング反復の動作は、ニューラルネットワーク内の重みを設定するためのトレーニングデータの所定のインスタンスに関連する損失値の逆伝播等を含み得る。
【0012】
(ニューラルネットワーク)
上述したように、ニューラルネットワークは、特定のタスクを実施するようにトレーニングされた内部要素(すなわち、ノード及び有向エッジ)を含む計算構造である。
図1は、いくつかの実施形態による、入力ノード102と、層110,112内の中間ノード104と、出力ノード106と、有向エッジ108と、を含むニューラルネットワーク100を示すブロック図である(分かりやすくするために、2つの有向エッジ及び層のみにラベル付けされている)。
【0013】
ニューラルネットワーク100の内部要素の性質に応じて、ニューラルネットワーク100は、「判別可能な(discriminative)」ネットワーク、または「生成的な(generative)」ネットワークとすることができる。判別可能なネットワークは、入力データのインスタンスを処理し、特定のパターンが入力データのインスタンスに存在する可能性があるかどうかを示す結果を出力するように構成された、すなわち、入力データのインスタンスを分類するように構成されたニューラルネットワークである。例えば、判別可能なネットワークは、顔や道路標識等の画像要素がデジタル画像に存在する可能性があるかどうか、特定の音や言葉がデジタルオーディオに存在する可能性があるかどうか等を示す結果を出力するように構成され得る。生成的なネットワークは、特定のパターンに類似するパターンを含む出力データのインスタンスを生成するように構成されたニューラルネットワークである。例えば、生成的なネットワークは、顔や道路標識に類似するパターンを含むデジタル画像、特定の音又は言葉に類似するパターンを含むオーディオ等を生成するように構成され得る。
【0014】
説明する実施形態は、ニューラルネットワークのためのトレーニングプロセスを実施する。トレーニングプロセス中、ニューラルネットワークを後で使用して特定のタスクを実施することができるように、有向エッジ及び他の値に関連する重みが設定される。いくつかの実施形態では、ニューラルネットワークをトレーニングする場合、複数のトレーニング反復の各々の間に、予想出力又は所望の出力を有するトレーニングデータの個別のインスタンスがニューラルネットワークを介して処理され、出力ノードから実際の出力を生成する。これらの実施形態では、トレーニングデータの各インスタンスがニューラルネットワークを介して処理され実際の出力を生成した後に、トレーニングデータのそのインスタンスについての実際の出力と予想出力との間のエラー値又は「損失」が、二乗平均誤差、対数損失又は別のアルゴリズムを使用して計算される。次に、損失がニューラルネットワークを介して逆方向に処理され、すなわち、ニューラルネットワークを介して「逆伝播する」ことにより、トレーニングデータのインスタンスのエラーを低減するために、ニューラルネットワーク内の有向エッジに関連する重みが調整される。それにより、トレーニングデータのインスタンス及び入力データの後続のインスタンスに対するニューラルネットワークの応答が調整される。例えば、いくつかの実施形態では、逆伝播は、ニューラルネットワーク内の各有向エッジに対する重みに関する損失の勾配を計算することを含む。次に、各勾配にトレーニング係数又は「学習率」を乗算して重み調整値を計算する。次に、重み調整値は、対応する重みの更新値を計算する際に使用され、例えば、対応する重みの既存の値に加算される。
【0015】
ニューラルネットワークの例が
図1に示されているが、いくつかの実施形態では、ノード及び/又は層の異なる配置がニューラルネットワークに存在する。例えば、ニューラルネットワークは、多数の層に配置された多数(場合によっては、数十万又は数百万)の中間ノードを含むことができ、中間ノードの各層は、入力値を受信し、生成された結果値を次の層内の中間ノード又は出力ノードに転送する。別の例として、いくつかの実施形態では、ノードの異なるトポグラフィ又は接続性が使用され、及び/又は、畳み込みネットワーク、ラジアルベースのネットワーク、リカレントニューラルネットワーク、自動エンコーダ、マルコフ連鎖、信頼ネットワーク、残差ネットワーク等を含むニューラルネットワークにおいて使用されるノードの配置及びタイプ等の異なるタイプのノードが使用される。一般に、説明する実施形態は、本明細書で説明するように、中間データ内のスパース性を検出し、使用することができるニューラルネットワークの任意の構成を用いて実施可能である。
【0016】
(概要)
説明する実施形態では、電子デバイス内のスパース性監視装置は、ニューラルネットワークのトレーニングプロセスのトレーニング反復中に、ニューラルネットワーク内の中間ノードによって出力された中間データ内のスパース性を監視する。監視のために、スパース性監視装置は、ニューラルネットワーク内の中間ノードの少なくとも一部から出力された中間データを取得する。次に、スパース性監視装置は、取得された中間データを分析して、スパース性、すなわち、ゼロ(又は、別の特定の値)に等しい中間データを決定する。分析の一部として、スパース性監視装置は、中間データのスパース性特性を表す値を生成する。例えば、スパース性監視装置は、スパース性特性を表す値として、特定の数のトレーニング反復等に対して1つ以上の中間ノードからの中間データの現在のスパース性、平均又は中央のスパース性を表す値を生成し得る。次に、スパース性監視装置は、スパース性特性を表す値を電子デバイス内のプロセッサに送信する。プロセッサは、スパース性特性を表す値に少なくとも部分的に基づいて、後続のトレーニング反復を実行する1つ以上の態様を制御する。例えば、プロセッサは、スパース性特性に基づいて、後続のトレーニング反復に対して実施される計算のタイプ、後続のトレーニング反復に対して中間データを圧縮してメモリに記憶するために使用される圧縮のタイプ等を決定し、構成し得る。
【0017】
いくつかの実施形態では、「監視期間」内の「監視間隔」中に、説明するように中間ノードから中間データが取得される。例えば、いくつかの実施形態では、監視間隔は、Mms(例えば、1s、2s等)の監視期間のうちNms(例えば、50ms、100ms等)であり、Mms>Nmsである。別の例として、いくつかの実施形態では、監視期間及び/又は監視間隔は、特定の数のトレーニング反復を含み、例えば、監視間隔はK回のトレーニング反復(例えば、25回、50回等)であり、監視期間はZ回のトレーニング反復(例えば、500回、1000回等)であり、Z>Kである。これらの実施形態では、監視間隔及び監視期間は、時間に関して計算されなくてもよい(実際には、トレーニング反復にかかる時間に応じて可変の時間であり得る)。これらの実施形態のうちいくつかでは、監視期間及び対応する監視間隔が繰り返され、トレーニングプロセスが続く限り繰り返され得る。例えば、Nms(例えば、60ms)の監視間隔は、Mms(例えば、250ms)の監視期間毎に発生してもよく、Z回のトレーニング反復(例えば、20回のトレーニング反復)の監視間隔は、Xs(例えば、2s)毎に発生してもよい等である。
【0018】
これらの実施形態では、スパース性監視装置は、ハイバネーションモード及びアクティブモードのうち一方で動作する。一般に、スパース性監視装置は、アクティブモードで開始し、及び/又は、監視間隔間のスパース性が「不安定」である場合、すなわち、監視間隔の間で特定の量を上回って変化している場合に、ハイバネーションモードからアクティブモードに遷移する。スパース性監視装置は、監視間隔間のスパース性が「安定」である場合、すなわち、監視間隔の間で特定の量を下回って変化している場合に、アクティブモードからハイバネーションモードに遷移する。
【0019】
スパース性監視装置がアクティブモード(例えば、起動時、ニューラルネットワークのトレーニングプロセス中にスパース性を最初に監視する場合、ハイバネーションモードから遷移する場合等)で動作を始動する場合、監視期間は、全ての中間ノードについてアクティブモード初期値に設定され、アクティブモード初期値は、スパース性監視装置によって使用される最も短い監視期間である。次に、スパース性監視装置は、対応するトレーニング間隔からの中間データのスパース性が安定であるかどうかを周期的に判別し、安定している場合、監視期間の長さを長くする(例えば、監視期間の長さを2倍又はそれ以外に長くする)。いくつかの実施形態では、スパース性監視装置は、個々の中間ノード及び/又は中間ノードの異なるグループ(例えば、ニューラルネットワークの層内の中間ノード、ニューラルネットワークの領域等)について中間データ内のスパース性を監視し、個々の中間ノード及び/又は中間ノードのグループについて監視期間を個別に調整してもよい。スパース性監視装置は、引き続き、スパース性が安定であるかどうかを周期的に判別し、監視期間が最大の長さ、すなわち、ハイバネーションモード監視期間に増加するまで、このようにして中間ノードについての監視期間の長さを長くする(スパース性が不安定であることが判明した場合、監視期間を徐々に短くして、アクティブモード初期値と同程度に短くなるように戻す場合もある)。アクティブモードでは、監視された各中間ノードについて監視期間をハイバネーションモード監視期間まで増加した場合であって、スパース性が依然として安定である場合に、スパース性監視装置は、ハイバネーションモードに遷移する。
【0020】
スパース性監視装置がハイバネーションモードで動作する場合、監視期間は、全ての中間ノードについてハイバネーションモード監視期間に固定され、したがって監視期間は、各中間ノードについて最大長である。特定の数の中間ノードのスパース性がハイバネーションモードで不安定であると判別された場合に、スパース性監視装置は、ハイバネーションモードからアクティブモードに遷移する。アクティブモードに遷移する場合、監視期間がアクティブモード初期値に低減され、上述したようにスパース性監視装置が動作する。
【0021】
いくつかの実施形態では、スパース性監視装置は、中間ノードの監視間隔中にスパース性の監視の「高速」終了をサポートする。これらの実施形態では、1つ以上のトレーニング反復からの中間データが特定のスパース性(例えば、5%、10%等)未満を有することが判明し、したがって、データが比較的フルである/スパース性をそれほど有しない場合に、スパース性監視装置は、監視間隔内の残りのトレーニング反復についての中間データの取得及び処理を停止する。これらの実施形態では、スパース性特性を表す値は、通常の監視間隔内の全てよりも少ないトレーニング反復からの中間データに基づいて生成され得る。
【0022】
いくつかの実施形態では、中間データのスパース性特性を表す上述した値は、2つ以上のトレーニング反復に対する1つ以上の中間ノードについての中間データ内のスパース性の傾向又はパターンであるか、これらを含む。例えば、傾向は、特定の数のトレーニング反復にわたる1つ以上の中間ノードについてのスパース性の値の傾向(例えば、増加、減少、増加又は減少の割合等)を含むことができる。別の例として、パターンは、ゼロ(又は、別の値)を出力する中間ノードのグループ化、ゼロ(又は、別の値)を出力した所定の数を超える中間ノードを有する中間ノードの層、ブロック比(例えば、スパース性が値ゼロを有する中間データに基づく場合には、ゼロのブロック比)等のパターンを含み得る。
【0023】
いくつかの実施形態では、スパース性特性を表す値は、ヒストグラムのビンに類似する複数の「ステージ」に編成され、各ステージは、スパース性特性の値の各々の値又は範囲を示す。例えば、いくつかの実施形態では、ステージは、10%~0%のスパース性(その結果、ゼロ又は別の指定値が、1つ以上のトレーニング反復に対して1つ以上の中間ノードについて中間データの10%以下で発生する)に関連する第1のステージ、20%~11%のスパース性に関連する第2のステージ、30%~21%のスパース性に関連する第3のステージ等を含む。これらの実施形態では、スパース性監視装置は、スパース性特性を表す値として、ステージ値(例えば、第1のステージについては1の値、第2のステージについては2の値等)をプロセッサに戻し得る。
【0024】
説明するように、スパース性監視装置を使用して、中間ノードによって出力された中間データ内のスパース性を追跡することにより、説明する実施形態は、プロセッサが、ニューラルネットワーク内の中間ノードのデータ出力に関する現在のリアルタイム情報に基づいて、後続のトレーニング反復に対する中間データの処理を制御することを可能にする。これは、プロセッサが、ニューラルネットワークを介してトレーニングデータのインスタンスをより効率的に処理するのに役立つことができ、これにより、電力の節約、処理動作の速度向上等が可能になる。トレーニングデータの個々のインスタンスをより効率的に処理することにより、トレーニングプロセスをより高速にすることができ、必要な電力をより少なくすることができる。これによって、電子デバイスの性能が改善され、結果として、電子デバイスに対するユーザの満足がより高まる。また、ハイバネーションモード及びアクティブモードと、これらに関連する動的に調整可能な監視期間と、を使用することにより、スパース性監視装置は、電子デバイス内の計算リソース、通信インターフェース等に必要以上に負荷をかけることなくスパース性を監視することができる。
【0025】
(電子デバイス)
説明する実施形態では、電子デバイスは、特に、ニューラルネットワークのためのトレーニングプロセスのトレーニング反復中に中間データ内のスパース性を決定するための動作を実施する。
図2は、いくつかの実施形態による、電子デバイス200を示すブロック図である。
図2から分かるように、電子デバイス200は、プロセッサ202と、メモリ204と、スパース性監視装置206と、を含む。一般に、プロセッサ202、メモリ204及びスパース性監視装置206は、ハードウェアにおいて、すなわち、様々な回路要素及びデバイスを使用して実装される。例えば、プロセッサ202、メモリ204及びスパース性監視装置206は、例えば、1つ以上の個別の半導体チップ等のように、1つ以上の半導体チップ上に全体的に製造することができ、ディスクリート回路要素と組み合わせて半導体チップから製造することができ、ディスクリート回路要素のみから製造することができる等である。本明細書で説明するように、プロセッサ202、メモリ204及びスパース性監視装置206のうち一部又は全ては、中間データのスパース性を決定することに関連する動作を実施する。
【0026】
プロセッサ202は、電子デバイス200において計算動作を実施する機能ブロックである。例えば、プロセッサ202は、1つ以上の中央処理ユニット(CPU)コア、グラフィックス処理ユニット(GPU)コア、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)等であってもよく、これらを含んでもよい。いくつかの実施形態では、プロセッサ202は、回路要素/機能ブロックに関連する動作を実施させるプログラムコードを実行するパイプライン、実行ユニット、計算ユニット等の回路要素又は機能ブロックを含む。いくつかの実施形態では、プロセッサ202は、特定の処理動作を実施するように専用化され、場合によってはそのような特定の目的用のハードウェア回路を含む。
【0027】
メモリ204は、電子デバイス200用のメモリ(例えば、「メイン」メモリ)の動作を実施する電子デバイス200内の機能ブロックである。メモリ204は、第4世代ダブルデータレート同期ダイナミックランダムアクセスメモリ(DDR4 SDRAM)、スタティックランダムアクセスメモリ(SRAM)、及び/又は、電子デバイス200内の機能ブロックによる使用のためにデータ及び命令を記憶するための他のタイプのメモリ回路等のメモリ回路と、メモリ回路に記憶されたデータ及び命令へのアクセスを処理し、他の制御又は構成動作を実施するための制御回路と、を含む。いくつかの実施形態では、ニューラルネットワークトレーニングプロセスのトレーニング反復に対する中間データは、メモリ204に記憶され、そこから読み出される。
【0028】
スパース性監視装置206は、ニューラルネットワークのためのトレーニングプロセスのトレーニング反復中に中間ノードから出力された中間データのスパース性を追跡し、分析し、報告するための動作を実施する機能ブロックである。一般に、スパース性を追跡することは、ニューラルネットワークの少なくともいくつかの中間ノードについて中間データを取得することと、場合によってはスパース性のレコードを生成/記憶することと、を含む。スパース性を分析することは、取得された中間データに基づいて、特定のトレーニング反復に対する1つ以上の中間ノードについての中間データのスパース性を表す値及び/又は2つ以上のトレーニング反復の組み合わせに対する1つ以上の中間ノードについてのスパース性を表す値(例えば、スパース性の平均、傾向又はパターン)等のように、スパース性のスパース性特性を表す値を決定することを含む。スパース性を報告することは、ファイル、メッセージ等を介して、スパース性のスパース性特性を表す値を、1つ以上の他の機能ブロック(例えば、プロセッサ202等)に送信することを含む。
【0029】
図3は、いくつかの実施形態による、スパース性監視装置206を示すブロック図である。
図2から分かるように、スパース性監視装置206は、スパース性情報(INFO)リスト300と、スパース性プロセッサ302と、スパース性ステージ計算機(CALC)304と、スケジューラ306と、を含む。スパース性情報リスト300は、1つ以上のトレーニング反復に対してニューラルネットワーク内の1つ以上の中間ノードから取得された中間データ、及び/又は、1つ以上のトレーニング反復に対する中間データに基づいて計算された値を記憶する機能ブロックである。例えば、いくつかの実施形態では、スパース性情報リスト300は、1つ以上のトレーニング反復の各々の間に中間ノードから取得された(例えば、キャプチャされたか、読み出された)1つ以上の中間ノード(及び、場合によっては複数の中間ノードの各々)についての中間データの実際の値を含む/記憶する。別の例として、いくつかの実施形態では、スパース性情報リスト300は、中間データの又は中間データ内のスパース性の平均、合計、パターン識別子等のような実際の中間データから計算又は導出された値を含む。また、スパース性情報リスト300は、トレーニング反復(複数可)の識別子、中間データが取得されたときの監視期間及び/又は監視間隔、中間データが取得された中間ノードの識別子、並びに、中間データ及び/又はスパース性のソースを識別するための他の情報等のメタデータを内部に記憶し得る。
【0030】
スパース性プロセッサ302は、1つ以上のトレーニング反復、監視間隔及び/又は監視期間中に取得された中間データを分析するための動作を実施して、中間データのスパース性特性を表す値を決定する機能ブロックである。換言すれば、スパース性プロセッサ302は、1つ以上のトレーニング反復、監視期間及び/又は監視間隔について個々の中間ノード及び/又はそのグループ(例えば、ニューラルネットワークの1つ以上の層又は領域内の中間ノード等)についてのスパース性特性を表す値を計算又は決定する。例えば、スパース性プロセッサ302は、個々の中間ノード及び/又はそのグループについての実際のスパース性(すなわち、ゼロ及び/又は別の値を出力する中間ノード)を決定し得る。別の例として、スパース性プロセッサ302は、1つ以上のトレーニング反復について、個々の中間ノード及び/又はそのグループについての中間データのスパース性の平均値、中央値又は標準値を計算し得る。上述したように、スパース性プロセッサ302は、平均値、中央値又は標準値、及び、スパース性のスパース性特性を表す他の値を計算するために使用される複数のトレーニング反復、監視期間及び/又は監視間隔に対する履歴又は過去の中間データ及び/又はこれらの中間データから計算された値をスパース性情報リスト300において維持し得る。さらに別の例として、スパース性プロセッサ302は、1つ以上のトレーニング反復、監視期間又は監視間隔中に中間データ内にゼロを出力したノードのグループ又はエリア等のスパース性のパターンを計算又は決定し得る。さらに別の例として、スパース性プロセッサ302は、2つ以上のトレーニング反復、監視期間又は監視間隔中に1つ以上の中間ノードについてのスパース性の傾向を計算又は決定し得る。さらに別の例として、スパース性プロセッサ302は、1つ以上のトレーニング反復、監視期間又は監視間隔に対して、中間ノードのグループについての中間データ内のゼロブロック比を計算又は決定し得る。
【0031】
中間データを分析することに加えて、いくつかの実施形態では、スパース性プロセッサ302は、スパース性特性を表す値を含む出力を生成する。例えば、スパース性プロセッサ302は、スパース性特性及び/又はそれに基づく情報を表す値を含む1つ以上の電子ファイル、メッセージ等を生成し得る。いくつかの実施形態では、スパース性プロセッサ302は、出力を、電子デバイス200(例えば、プロセッサ202)内の1つ以上の他の機能ブロックに通信する。
【0032】
スパース性ステージ計算機304は、1つ以上のトレーニング反復、監視期間及び/又は監視間隔に対して1つ以上の中間ノードについてのスパース性の「ステージ」を計算するための動作を実施する機能ブロックである。いくつかの実施形態では、各ステージは、可能なスパース性値のセットの中からスパース性特性の各々の値又は値の範囲を示す。例えば、いくつかの実施形態では、ステージは、10%~0%のスパース性(その結果、ゼロ又は別の特定の値が、1つ以上のトレーニング反復に対して1つ以上の中間ノードについて中間データの10%以下で発生する)に関連する第1のステージ、20%~11%のスパース性に関連する第2のステージ、30%~21%のスパース性に関連する第3のステージ等を含む。これらの実施形態では、1つ以上のトレーニング反復、監視期間又は監視間隔に対する1つ以上の中間ノードからの中間データのセットが与えられると、スパース性ステージ計算機304は、スパース性特性を表す値としてステージ値(例えば、第1のステージについては1の値、第2のステージについては2の値等)を計算することができる。したがって、いくつかの実施形態では、トレーニング反復、監視期間又は監視間隔に対するスパース性値を簡略化された値として(例えば、少ないビットで)表すことにより、スパース性を表す値の通信をより効率的にすることができる。いくつかの実施形態では、使用されるステージの数は、プロセッサ202によって利用可能な、スパース計算機構/カーネル、データ圧縮バージョン等のようなトレーニングデータの後続のインスタンスを処理する際にプロセッサ202によって生成され得る複数の変更に基づいている。
【0033】
スケジューラ306は、スパース性監視装置206が中間データをいつ/どのように取得及び/又は分析するかを制御するための動作を実施する機能ブロックである。いくつかの実施形態では、スケジューラ306は、スパース性監視装置206が動作する動作モードを決定する。これらの実施形態では、スパース性が不安定である場合、すなわち、監視期間若しくは監視間隔の間で所定量を上回って変化している場合、スケジューラ306は、アクティブモードを選択することができる。このアクティブモード中、監視期間の長さは、スパース性の連続した安定性(又は、不安定性)に基づいて動的に調整される。対照的に、スパース性が安定である場合、すなわち、監視期間又は監視間隔の間で所定量を下回って変化している場合、スケジューラ306はハイバネーションモードを選択することができる。このハイバネーションモード中、監視期間の長さが最大値に維持される。アクティブモード及びハイバネーションモードについては、以下により詳細に説明する。
【0034】
スパース性監視装置206は、
図3において機能ブロックの特定の構成を用いて示されているが、いくつかの実施形態では、スパース性監視装置206は、異なる数及び/又は構成の機能ブロックを含む。例えば、いくつかの実施形態では、スパース性プロセッサ302は、スパース性ステージ計算機304やスケジューラ306等の要素を含む。通常、スパース性監視装置206は、本明細書で説明する動作を実施するのに十分な機能ブロックを含む。
【0035】
プロセッサ202及びスパース性監視装置206は
図2において別々のものとして示されているが、いくつかの実施形態では、プロセッサ202は、スパース性監視装置206を含む。例えば、いくつかの実施形態では、プロセッサ202は、ニューラルネットワークアクセラレータ、すなわち、ニューラルネットワーク動作を効率的に実施するように設計され、スパース性監視装置206を含むプロセッサである。一般に、説明する実施形態では、本明細書で説明する動作を実施する任意の構成のプロセッサ202及び/又はスパース性監視装置206を使用することができる。
【0036】
ハードウェアエンティティであるスパース性監視装置206は、特定の動作を実施するものとして説明されているが、いくつかの実施形態では、異なるエンティティが動作を実施する。例えば、いくつかの実施形態では、プロセッサ202は、スパース性監視装置206(及び、これに含まれる機能ブロック)に起因する動作のうち一部又は全てを実施する。これらの実施形態では、プロセッサ202は、プロセッサ202に動作を実施させるプログラムコードを実行し得る。
【0037】
電子デバイス200は、特定の機能ブロック及び回路要素を含むものとして示されているが、電子デバイス200は、説明の便宜上簡略化されている。いくつかの実施形態では、電子デバイス200は、追加の若しくは異なる機能ブロック、サブシステム及び/若しくは回路要素を含み、又は、追加の若しくは異なる機能ブロック、サブシステム及び/若しくは回路要素を有するデバイスに含まれる。例えば、電子デバイス200又はデバイスは、表示サブシステム、電力サブシステム、入出力(I/O)サブシステム等を含み得る。一般に、電子デバイス200は、本明細書で説明する動作を実施するのに十分な機能ブロック等を含む。
【0038】
電子デバイス200は、コンピュータ動作を実施する任意のデバイスとすることができ、又は、そのようなデバイスに含めることができる。例えば、電子デバイス200は、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、ウェアラブルコンピューティングデバイス、タブレットコンピュータ、仮想現実若しくは拡張現実機器、スマートフォン、人工知能(AI)若しくは機械学習デバイス、ネットワークアプライアンス、玩具、視聴覚機器、家電製品、車両等、及び/又は、これらの組み合わせとすることができ若しくはこれらに含めることができる。
【0039】
(監視期間及び監視間隔)
説明する実施形態では、スパース性監視装置(例えば、スパース性監視装置206)は、「監視期間」及び「監視間隔」を使用して、ニューラルネットワークのためのトレーニング反復に対して中間データ内のスパース性を監視する。
図4は、いくつかの実施形態による、監視期間400及び監視間隔402を示すタイムライン図である。スケジューラ306は、アクティブモード中に、個々の中間ノード又はそのグループについて
図4に示す監視期間及び監視間隔に類似する監視期間及び監視間隔を使用し得る。その場合、監視期間は、中間データのスパース性の安定性に基づいて動的に調整される。対照的に、ハイバネーションモード中、監視期間は、全ての中間ノードについて全て同じ長さである。
【0040】
発生する複数回のトレーニング反復の各々に対し、対応する監視期間400の「アクティブ」部分中に発生する各監視間隔402(
図4においてクロスハッチで示されている)中、スケジューラ306は、本明細書で説明するように、スパース性プロセッサ302に、最終的な分析のために1つ以上の中間ノードから中間データを取得させる。例えば、監視間隔がAmsである場合、スパース性プロセッサ302は、Ams内に発生するB回のトレーニング反復に対して1つ以上の中間ノードから中間データを取得し得る(ただし、本明細書の他の箇所で説明するように、高速終了によってこれを早く終了させてもよい)。監視期間400の残り(
図4において白で示されている)について、すなわち、監視期間の「アイドル」部分中、スケジューラ306は、スパース性プロセッサ302に、中間ノードからの中間データの取得をスキップさせる。いくつかの実施形態では、スケジューラ306は、スパース性プロセッサ302及び/又はスパース性監視装置206内の他の機能ブロックに、監視期間のアイドル部分中に電力を節約し、熱の発生等を回避するために低電力動作状態に移行させる。
【0041】
図4において、監視期間400 1~N-1では、例えば1s又は250回のトレーニング反復等のような、同じ長さの時間及び/又は同じ数のトレーニング反復であり、各監視期間400の開始時に発生する監視間隔402では、例えば100ms又は50回のトレーニング反復等のような、特定の長さの時間及び/又は特定の数の反復である。他の/過去の監視期間(図示省略)に続き得る監視期間1~N-1中、スパース性プロセッサ302は、スパース性が安定しており、したがって監視期間を増加させることができると決定する。例えば、スパース性プロセッサ302は、監視期間1~N-1中に発生するトレーニング反復に対する1つ以上の中間ノードからの中間データに基づいて、スパース性が、監視期間1~N-1(及び、場合によってはより早い監視期間(図示省略))の間で所定量(例えば、5%、10%又は別の値)を下回って変化しており、したがってスパース性が安定であると判別することができる。したがって、スケジューラ306は、監視期間Nで示すように、1つ以上の中間ノードについての監視期間400の長さを増加させることができる。
図4では、監視期間Nは、監視期間1~N-1の約2倍の長さであるが、最大の監視期間値まで任意に増加した長さが使用されてもよい。
【0042】
特定の監視期間400及び監視間隔402が
図4に示されているが、いくつかの実施形態では、異なる構成の監視期間及び/又は監視間隔が使用される。例えば、監視間隔402が監視期間400の開始時以外のときに発生し得る、2つ以上の監視間隔402が監視期間400毎に発生し得る等である。一般に、説明する実施形態では、本明細書で説明する動作を実施するのに十分な監視期間400及び監視間隔402が使用される。
【0043】
(データ及び情報の流れ)
説明する実施形態では、スパース性監視装置(例えば、スパース性監視装置206)は、中間データ内のスパース性を監視するための様々なデータ及び情報を受信し、生成する。
図5は、いくつかの実施形態による、スパース性監視装置との間のデータ及び情報の流れを示すブロック図である。
図5は、いくつかの実施形態の一例として示されており、他の実施形態では、異なる機能ブロックが、データ及び情報の一部又は全てを受信及び生成することに留意されたい。加えて、ニューラルネットワーク502は、ニューラルネットワーク100の表現に類似する簡略的な表現を使用して
図5に示されているが、ニューラルネットワーク502は、対応するタイプ及び接続性のノードを備えた、畳み込みニューラルネットワーク、ラジアルベースのネットワーク、リカレントニューラルネットワーク等の異なる構成及び/又はタイプのノードを含み得る。
【0044】
図5から分かるように、プロセッサ202は、ニューラルネットワーク502のためのトレーニングプロセス中、ニューラルネットワーク502を介してトレーニングデータ500のインスタンスを処理するための動作を実施する。例えば、ニューラルネットワーク502が、特定の画像要素を含む(又は、含まない)ものとして画像を分類すると仮定すると、プロセッサ202は、ニューラルネットワークを介して画像(例えば、画像データを含むデジタルファイル)を処理して、画像要素が所定の画像内に存在するかどうかを示す出力を生成し得る。ニューラルネットワーク502を介してトレーニングデータ500のインスタンスを処理することにより、プロセッサ202は、ニューラルネットワーク内の1つ以上の中間ノード(及び、場合によっては他のノード(例えば、入力ノード))からの又はそれに関連する中間データ504を生成する。例えば、正規化線形ユニット(ReLU)等の活性化関数を有する中間ノードの場合、プロセッサは、中間ノードからの出力を生成するために、中間ノードへの対応する重み付きの入力に基づいて活性化関数を評価し得る(すなわち、活性化関数の結果を計算する)。中間ノードからの出力は、それらのノードからの又はそれらのノードに関連する中間データとして機能する。
【0045】
中間データ504は、プロセッサ202からスパース性監視装置206に直接通信されることにより、又は、プロセッサ202による計算中にメモリに記憶された後にスパース性監視装置206によってメモリ204から読み出されること等によって、スパース性監視装置206によって取得される。さらに、スパース性監視装置206は、プロセッサ202(又は、電子デバイス200内の別のエンティティ)から、ニューラルネットワーク情報(INFO)508を取得する。この情報は、スパース性の計算において使用することができるニューラルネットワークに関する情報である。ニューラルネットワーク情報508は、ニューラルネットワーク502のタイプに関する情報、ニューラルネットワーク502内のノードのうち一部又は全ての数、構成/接続性及び/又は特性、ニューラルネットワーク502によって実施される特定のタスク、実施されるトレーニング反復の数、何れのトレーニングデータのインスタンスが処理されるか等の情報を含む。
【0046】
スパース性監視装置206は、1つ以上のトレーニング反復、監視期間又は監視間隔に対する中間データ504、及び、ニューラルネットワーク情報508を使用して、中間データ504についてのスパース性特性510を表す値を決定する。スパース性特性を表す値を決定するために、スパース性監視装置206は、1つ以上のトレーニング反復、監視期間又は監視間隔に対し、1つ以上の中間ノードについての現在のスパース性(例えば、ゼロ若しくは別の値を出力したノード)、1つ以上の中間ノードについての平均、中央又は標準のスパース性、1つ以上の中間ノードについてのスパース性の傾向、1つ以上の中間ノードについてのスパース性のパターン、ゼロブロック比等の値を計算することができる。いくつかの実施形態では、スパース性監視装置206は、個々の中間ノード、ニューラルネットワークの層内の中間ノード等の1つ以上の中間ノードの特定のセットについてのスパース性を表す値を決定する。
【0047】
スパース性監視装置206によって決定されたスパース性特性を表す特定の値は、スパース性が決定される中間ノード及び/又はトレーニング反復、監視期間若しくは監視間隔に依存する。例えば、いくつかの実施形態では、スパース性特性510を表す値は、数字(割合、平均等)、パターン識別子、傾向インジケータ等である。別の例として、いくつかの実施形態では、スパース性特性510を表す値は、トレーニング反復のシーケンスを示す0/1の文字列等の文字列である。この場合、1つ以上の中間ノードの各々は、ゼロ又は他の値を出力する。別の例として、いくつかの実施形態では、スパース性特性510を表す値はステージである。このステージを介して、スパース性の対応する範囲が、1つ以上の各桁によって表される。
【0048】
スパース性監視装置206は、(例えば、スパース性情報リスト300を)例えば、メモリ204及び/若しくはスパース性監視装置206内のローカルメモリに記憶することができ、並びに/又は、スパース性特性を表す情報を電子デバイス200内の1つ以上の他の機能ブロックに出力することができる。例えば、いくつかの実施形態では、スパース性監視装置206は、スパース性特性を表す値を含むファイルを生成し、そのファイルを(メモリ204内の共有メモリ位置に記憶すること等によって)プロセッサ202に提供する。次に、プロセッサ202は、スパース性特性を表す1つ以上の値に少なくとも部分的に基づいて、後続のトレーニング反復を実行する1つ以上の態様を制御する。例えば、プロセッサ202は、後続のトレーニング反復に対して実施される特定のタイプの計算(例えば、もしあれば、何れのスパース性計算メカニズム/カーネル及び/又は簡略的な計算が使用されるか)を選択してもよく、後続のトレーニング反復に対してメモリ204に中間データを記憶するときに使用される圧縮を選択してもよい等である。
【0049】
いくつかの実施形態では、プロセッサ202は、何れのタイプの計算が使用中であるかに応じて、少なくともいくつかの計算回路及び/又は他の機能ブロック(若しくは、それ以外)の性能レベル(例えば、電圧及び/又は制御クロック)を使用不可、パワーダウン又は他の方法で低減する。例えば、スパース性がより高く、したがって、より多くのスパース行列計算が後続のトレーニング反復に対して使用される場合、プロセッサ202は、計算ユニット、パイプライン、メモリインターフェース要素、コントローラ及び/又は計算を実施するために使用されない他の機能ブロックを使用不可にしてもよい。
【0050】
(アクティブモード及びハイバネーションモード)
いくつかの実施形態では、スパース性監視装置(例えば、スパース性監視装置206)は、ニューラルネットワークのトレーニングプロセスのトレーニング反復中に中間データのスパース性を監視する場合に、アクティブモード及びハイバネーションモードのうち一方で動作する。
図6は、いくつかの実施形態による、様々な動作モード間の遷移を示す状態図である。
図6から分かるように、スパース性監視装置が動作することができる状態には、オフ600、アクティブモード602及びハイバネーションモード604が含まれる。オフ600では、スパース性監視装置は、電子デバイス200がトレーニングデータのインスタンスを処理しない場合、シャットダウンされている場合、及び/又は、スパース性監視装置が低電力モード(ただし、スパース性監視装置は、少なくともいくつかの機能を保持し得る)にある場合等に、中間データ内のスパース性を監視しない。スパース性監視装置は、スパース性監視装置に電力が印加される場合等に「オン」信号を受信した場合に、スパース性の監視を始動/再始動するためにプロセッサ(例えば、プロセッサ202)から要求を受信した場合、プロセッサによってトレーニングデータのインスタンス/トレーニング反復の処理を検出した場合等に、オフ600からアクティブモード602に(又は、代替的に、いくつかの実施形態ではハイバネーションモード604に)遷移する。スパース性監視装置は、スパース性監視装置への電力がシャットオフされた場合等に「オフ」信号を受信した場合、スパース性の監視を停止させるためにプロセッサ(例えば、プロセッサ202)から要求を受信した場合、プロセッサによってトレーニングデータのインスタンス/トレーニング反復の処理を検出しなかった場合等に、アクティブモード602又はハイバネーションモード604からオフ600に遷移する。
【0051】
アクティブモード602では、スパース性監視装置は、異なるトレーニング反復に対する中間データが異なるレベルのスパース性(すなわち、ゼロ又は別の値を生成する中間ノードの異なる数又はパターン)を有するか又は有し得る場合等に、比較的不安定な/変化しているスパース性を監視する。スパース性が不安定である(減少している場合がある)ため、固定の監視期間は、スパース性を監視するのにあまり適していない。このため、アクティブモード602では、スパース性監視装置は、中間ノード及び/又はそのグループについての現在のスパース性及びスパース性の履歴に基づいて、中間ノード及び/又はそのグループ(例えば、ニューラルネットワークの層内の中間ノード、ニューラルネットワークのエリア内の中間ノード、特定のタイプの中間ノード等)についての監視期間を動的に調整する。
【0052】
図7は、いくつかの実施形態による、アクティブモード602でスパース性監視装置の監視期間を動的に調整する擬似コードの一例を示す図である。
図7から分かるように、スパース性監視装置は、スパース性の十分な「履歴」、すなわち、1つ以上のトレーニング反復又は監視間隔に対して(及び、より具体的には、特定の数のトレーニング反復又は特定数の監視間隔に対して)1つ以上の中間ノードについてのスパース性のレコードを最初に生成する。次に、スパース性監視装置は、現在のスパース性、すなわち、スパース性の現在の値を確立する。次に、スパース性監視装置は、現在のスパース性を、履歴/過去のスパース性の特定の値(履歴のスパース性のレコード内の第1の位置として
図7に示されている)と比較して、現在のスパース性が、履歴のスパース性から閾値未満離れているかどうかを判別する。すなわち、履歴のスパース性と現在のスパース性との間で、スパース性が僅かな量だけ変化した場合である。そのような場合、スパース性は安定であり、監視期間を所定の量だけ増加させる(これは、
図7では2倍として示されているが、様々な増加が使用され得る)。監視期間の増加は、最大のハイバネーション監視期間に制限される。これは、通常、アクティブモード602又はハイバネーションモード604の何れかで使用される最長の監視期間である。換言すれば、スパース性がアクティブモードで比較的安定である限り、スパース性監視装置は、監視期間がハイバネーション監視期間に等しい最大長に到達するまで監視期間を定期的に増加させる。いくつかの実施形態では、
図7に示されていないが、監視期間を増加させた後に監視されたスパース性が不安定であると判別した場合、監視期間は減少/短縮されてもよい(例えば、半減される、特定の量だけ低減される等)。ただし、このような減少は、監視期間がアクティブモード初期値(監視期間の最小値)に等しくなるまでしか生じない。
【0053】
上述したように、いくつかの実施形態では、アクティブモードにおいて、個々の中間ノードによって出力された中間データは、スパース性監視装置によって個別に監視され得る。これらの実施形態のいくつかでは、監視期間は、個々の中間ノードの分解能に設定することができる。換言すれば、異なる中間ノードは、異なる監視期間を使用して監視され得る。例えば、スパース性監視装置は、第1の監視期間を使用して第1の中間ノード又は中間ノードの第1のグループの中間データを監視してもよいし、第2の監視期間を使用して第2の中間ノード又は中間ノードの第2のグループを監視してもよい等である。これは、中間ノード内のスパース性(又は、スパース性のパターン、平均、傾向等)の検出に対するきめ細かい分解能をスパース性監視装置に提供する。
【0054】
スパース性監視装置がアクティブモード602で動作する場合、スパース性が比較的安定であると判別すると、スパース性監視装置は、ハイバネーションモード604に遷移する。ハイバネーションモード604では、監視期間は、動的に調整されず、同じ監視期間(すなわち、ハイバネーションモード監視期間)が全ての中間ノードについて使用される。スパース性が比較的不安定である場合、すなわち、特定の量を上回って変化している場合、スパース性監視装置は、ハイバネーションモード604からアクティブモード602に遷移する。
【0055】
図8は、いくつかの実施形態による、アクティブモードからハイバネーションモードへの遷移及びその逆の遷移の擬似コードの一例を示す図である。
図8から分かるように、アクティブモードでは、スパース性監視装置は、中間データを定期的にループして、各中間データがハイバネーション監視期間を使用して監視されているかどうか、及び、データが有効であるかどうか、すなわち、初期のスパース性閾値(これは、例えば、ソフトウェア、プロセッサ等によって選択、設定又は構成される値である)よりも高いスパース性を有するかどうかを判別する。換言すれば、データが最も遅い速度(すなわち、最長/ハイバネーションモード監視期間)で既に監視されており、僅かな量だけ変化しているスパース性を有する場合である。そのような場合、スパース性監視装置は、「ハイバネーション準備有効カウント(hibernation ready valid count)」を増加させる。また、スパース性監視装置は、中間データが無効であるとマークされた場合、例えば、監視の「高速」終了が中間データに対してなされた場合(すなわち、より低いスパース性を有することに起因して、監視間隔の終了前に中間データの監視を終了させた場合)等に、「ハイバネーション準備無効(hibernation ready invalid)」カウントを増加させる。全ての中間データがハイバネーションの準備ができた場合、すなわち、ハイバネーション準備有効カウントとハイバネーション準備無効カウントとの合計が、監視された中間データの数に等しい場合に、スパース性監視装置は、ハイバネーションモード604に遷移する。しかしながら、初期状態、すなわち、全ての中間データが無効なものとしてマークされている場合には、ハイバネーションモード604に遷移しなくてもよいことに留意されたい。
【0056】
図8の例を続けると、スパース性監視装置は、十分な中間データが取得された後に中間データが不安定なスパース性を有すると判別された場合に、ハイバネーションモード604からアクティブモード602に遷移する。アクティブモード602への遷移の一部は、監視期間を、ハイバネーションモード監視期間よりも短く、ハイバネーションモード監視期間のごく一部であり得るアクティブモード初期値に低減することである。
【0057】
(スパース性を監視するためのプロセス)
図9は、いくつかの実施形態による、ニューラルネットワークのためのトレーニングプロセスのトレーニング反復中に中間データ内のスパース性を監視するためのプロセスを示すフローチャートである。
図9に示す動作は、いくつかの実施形態によって実施される動作の一般的な例として示されていることに留意されたい。他の実施形態によって実施される動作には、異なる動作、異なる順序で実施される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実施される動作が含まれる。
【0058】
図9では、スパース性は、トレーニングプロセス中にニューラルネットワークの「少なくともいくつかの」中間ノードについて監視される。中間ノードのうち特定の「少なくともいくつか」は、1つの中間ノードのような少数の中間ノードと、全ての中間ノードのような多数の中間ノードとを含むことができる。いくつかの実施形態では、監視される特定の中間ノードは、管理者からのコマンドに応答すること、プロセッサ(例えば、プロセッサ202)から要求を受信すること、ファームウェアを実行すること等によって、スパース性監視装置(例えば、スパース性監視装置206)によって設定される。一般に、説明する実施形態では、スパース性監視装置は、個々の中間ノード及び/又はそのグループについてのスパース性を監視することが可能である。
【0059】
図9の動作は、スパース性監視装置が、監視期間の監視間隔中、監視間隔中に発生するトレーニング反復中にニューラルネットワークの少なくともいくつかの中間ノードによって出力された中間データを取得する場合に開始する(ステップ900)。上述したように、中間データは、トレーニングデータのインスタンスを処理している間に、すなわち、トレーニング反復中に、ニューラルネットワークの中間(又は、「隠れ」)ノードによって出力された結果である。中間データがどのように取得されるかは、中間データを生成するプロセッサの構成に依存する。例えば、いくつかの実施形態では、中間データは、(例えば、1つ以上のメッセージ又は通信において)プロセッサからスパース性監視装置によって受信されることによって取得される。別の例として、いくつかの実施形態では、中間データは、メモリ(例えば、メモリ204)からスパース性監視装置によって読み出されることによって取得される。
【0060】
次に、スパース性監視装置は、中間データに少なくとも部分的に基づいて、中間データのスパース性特性を表す1つ以上の値を生成する(ステップ902)。例えば、スパース性監視装置は、中間データを使用して、ゼロを生成した中間ノードの数又は割合を、スパース性特性を表す値として生成し得る。別の例として、スパース性監視装置は、中間データを使用して、ゼロブロック比又は別のパターン識別子を、スパース性特性を表す値として生成し得る。別の例として、スパース性監視装置は、中間ノードのうち少なくともいくつかからの過去/履歴の中間データと共に中間データを使用して、平均、傾向及び/又は他の値を、スパース性特性を表す値として生成し得る。一般に、この動作のために、スパース性監視装置は、プロセッサ及び/又は他のエンティティによって1つ以上の監視間隔の1つ以上のトレーニング反復に亘って少なくともいくつかの中間ノードについての中間データのスパース性を評価するために使用可能な値を生成する。
【0061】
次に、スパース性監視装置は、スパース性特性を表す1つ以上の値をプロセッサに送信する(ステップ904)。例えば、スパース性監視装置は、スパース性特性を表す値を含む1つ以上のメッセージを生成し、そのメッセージをプロセッサに通信し得る。別の例として、スパース性監視装置は、プロセッサと共有されるメモリ内の位置に、スパース性特性を表す1つ以上の値を記憶し得る。
【0062】
次に、プロセッサは、スパース性特性を表す1つ以上の値に基づいて、後続のトレーニング反復を実行する1つ以上の態様を制御する(ステップ906)。例えば、プロセッサは、スパース性特性を表す1つ以上の値を使用して、後続のトレーニング反復に使用される特定の行列数値演算等の計算メカニズムを選択し得る。例えば、プロセッサは、スパース性特性を表す値が、スパース性が比較的高い(すなわち、より多くの中間ノードがゼロ又は他の値を生成している)ことを示している場合に、中間データを計算するためにブロック-スパース行列乗算を使用することを選択してもよい。別の例として、プロセッサは、スパース性特性を表す1つ以上の値を使用して、後続のトレーニング反復に対して中間データがメモリ(例えば、メモリ204)に記憶される前に、中間データに対して使用されるデータ圧縮を選択してもよい。
【0063】
(アクティブモード及びハイバネーションモードを使用するためのプロセス)
図10A~
図10Bは、いくつかの実施形態による、スパース性監視装置(例えば、スパース性監視装置206)においてアクティブモード及びハイバネーションモードを使用するためのプロセスを示すフローチャートである。
図10A~
図10Bに示す動作は、いくつかの実施形態によって実施される動作の一般的な例として示されることに留意されたい。他の実施形態によって実施される動作には、異なる動作、異なる順序で実施される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実施される動作が含まれる。
【0064】
図10A~
図10Bの動作の場合、スパース性監視装置は、アクティブモードで開始すると想定されるが、これは必要条件ではない。これらの実施形態では、スパース性監視装置は、ハイバネーションモードで開始する。上述したように、さらには
図10A~
図10Bで示すように、アクティブモードにおいて、スパース性監視装置は、個々の中間ノード及び/又はそのグループについての監視期間の長さを変更することができる。しかしながら、ハイバネーションモードでは、全ての中間ノードで同じ固定の監視期間が使用される。
【0065】
図10A~
図10Bの動作は、アクティブモードで動作するスパース性監視装置が、監視間隔中に1つ以上のトレーニング反復から中間データを取得する場合に開始する(ステップ1000)。この動作について、スパース性監視装置は、ニューラルネットワークを介してトレーニングデータの1つ以上の対応するインスタンスを処理するときにプロセッサによって生成された中間データを、メモリ(例えば、メモリ204)、プロセッサ(例えば、プロセッサ202)又は別のソースから取得する。
【0066】
次に、スパース性監視装置は、スパース性監視装置がアクティブモードからハイバネーションモードに遷移することができるかどうかを判別する。これには、全ての中間ノードがハイバネーション監視モードの監視期間、すなわち最長の許容監視期間に等しい監視期間を使用して監視されているかどうか、及び、スパース性が安定である(したがって、依然として安定である)かどうかを判別することが含まれる。(ステップ1002)。例えば、スパース性監視装置は、監視間隔から監視間隔への(又は、特定のトレーニング反復から別のトレーニング反復への)各中間データ内のスパース性の変化を閾値と比較して、スパース性が特定の量よりも下回って変化したかどうか、したがって、安定であるかどうかを判別することができる。ハイバネーション監視モードの監視期間に等しい監視期間を使用して全ての中間ノードが監視されており、スパース性が十分に安定である場合(ステップ1002)、スパース性監視装置は、ハイバネーションモードに遷移する(ステップ1004)。
【0067】
そうではなく、少なくともいくつかの中間ノードがハイバネーション監視モードの監視期間と等しい監視期間を使用して監視されていない場合、又は、スパース性が十分に安定していない場合(ステップ1002)、スパース性監視装置は、各中間ノードについて監視期間を増加させる(又は、場合によっては減少させる)かどうかを判別する。より具体的には、中間ノード毎に順番に(ステップ1006)、スパース性監視装置は、その中間ノードについてのスパース性が、その中間ノードについての監視期間を増加させるのに十分に安定しているかどうかを判別する(ステップ1008)。例えば、スパース性監視装置は、その中間ノードのスパース性を表す現在の値とその中間ノードのスパース性を表す履歴/過去の値との差を、異なる閾値と比較し得る。スパース性が十分に安定している場合、スパース性監視装置は、その中間ノードについての監視期間の長さを増加させる(ステップ1010)。例えば、スパース性監視装置は、監視期間を2倍にしてもよいし、特定の量(の時間、トレーニング反復等)を監視期間に加算してもよい。監視期間を増加させる場合、スパース性監視装置は、ハイバネーションモード監視期間まで、これを超えることなく、監視期間を増加させる。例えば、監視期間のアクティブモード初期値を、ハイバネーションモード監視期間の長さの1/8としてもよい。これにより、(例えば、対応する監視期間中に)監視期間を2倍にすれば、中間ノードについての監視期間がハイバネーションモード監視期間に到達するまでに3つの個別の増加が許容される。対照的に、スパース性が十分に安定していない場合(ステップ1008)、スパース性監視装置は、監視期間を変更せずに(又は、監視期間がアクティブモード初期値よりも依然として長い限り、監視期間を減少させてもよい)、次の中間ノードを処理することができるようにステップ1006に戻る。最後の中間ノードが処理された場合(ステップ1006)、スパース性監視装置は、ステップ1000に戻って次のトレーニング反復から中間データを取得する。
【0068】
ステップ1002に戻り、全ての中間ノードがハイバネーション監視モードの監視期間と等しい監視期間を使用して監視されており、スパース性が十分に安定している場合、スパース性監視装置は、ハイバネーションモードに遷移する(ステップ1004)。ハイバネーションモードでは、全ての中間ノードについてのスパース性がハイバネーションモードの監視期間を使用して監視されることを想起されたい。ハイバネーションモードでは、スパース性監視装置は、監視期間中に1つ以上のトレーニング反復から中間データを取得する(ステップ1012)。この動作について、スパース性監視装置は、ニューラルネットワークを介してトレーニングデータの1つ以上の対応するインスタンスを処理するときにプロセッサによって生成された中間データを、メモリ(例えば、メモリ204)、プロセッサ(例えば、プロセッサ202)又は別のソースから取得する。ステップ1012の監視間隔は、ステップ1000の監視間隔と比べると、異なる/後の監視間隔であることに留意されたい。
【0069】
次に、スパース性監視装置は、スパース性監視装置がハイバネーションモードからアクティブモードに遷移することができるかどうかを判別する。これは、スパース性が十分に不安定であるかどうかを判別することを含む(ステップ1014)。例えば、スパース性監視装置は、監視間隔から監視間隔への(又は、特定のトレーニング反復から別のトレーニング反復への)各個の中間データ内のスパース性の変化を閾値と比較して、スパース性が特定の量よりも上回って変化したかどうか、したがって、不安定であるかどうかを判別することができる。スパース性が十分に不安定である場合(ステップ1014)、スパース性監視装置は、アクティブモード(ステップ1016)に遷移する。これは、ステップ1000に戻ってアクティブモードで次のトレーニング反復から中間データを取得することを含む。そうではなく、スパース性が依然として安定している場合、スパース性監視装置は、ステップ1012に戻って、ハイバネーションモードにおける次のトレーニング反復から中間データを取得する。
【0070】
(監視期間の高速終了)
図11は、いくつかの実施形態による、スパース性監視装置による監視間隔の高速終了のためのプロセスを示すフローチャートである。
図11に示す動作は、いくつかの実施形態によって実施される動作の一般的な例として示されていることに留意されたい。他の実施形態によって実施される動作には、異なる動作、異なる順序で実施される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実施される動作が含まれる。
【0071】
図11に示すプロセスは、スパース性監視装置(例えば、スパース性監視装置206)が、複数のトレーニング反復を含む監視間隔中に、複数のトレーニング反復のうち最初のトレーニング反復から中間データを取得する場合に開始する(ステップ1100)。例えば、スパース性監視装置は、(監視期間中に発生する多数のトレーニング反復のうち)第1のトレーニング反復のみから、又は、第1のいくつかのトレーニング反復から中間データを取得し得る。中間データの取得については、本明細書の他の箇所で説明する。
【0072】
次に、スパース性監視装置は、中間データがスパース性閾値未満であるかどうかを判別する(ステップ1102)。例えば、スパース性監視装置は、中間データとしてゼロを出力する中間ノードの数をカウントし、ゼロに等しい中間データの割合又は比率を計算することができる。次に、スパース性監視装置は、この割合又は比率を、特定のスパース性閾値と比較することができる。
【0073】
中間データがスパース性閾値未満である(ステップ1102)、すなわち、僅かなゼロ(又は、他の値)を有し、結果として中間データのスパース性が閾値未満である(すなわち、データが比較的満たされている)場合、スパース性監視装置は、監視間隔中の中間データの処理及び取得の高速終了を行う。より具体的には、スパース性監視装置は、監視間隔中にスパース性の監視を早期に終了させることにより、最初のトレーニング反復の後のトレーニング反復に対して中間データを取得しない(ステップ1104)。このようにして監視間隔中に監視を終了させることにより、スパース性監視装置は、中間データのスパース性が低い(典型的な/完全な計算及びデータ記憶技術がプロセッサ202によって使用される)場合、中間データの取得及び処理、したがって、電力消費、計算リソース及び通信システム帯域幅の使用等を回避する。また、スパース性監視装置は、中間データについて監視間隔を早期に終了させたという指標を記憶する(ステップ1106)。例えば、スパース性監視装置は、典型的な取得及び処理が実施されなかったことを示すために、中間データを無効なものとしてマークすることができる。
【0074】
中間データがスパース性閾値を超えており(ステップ1102)、したがって、データが比較邸スパースである/より多くのゼロ(又は、他の値)を有する場合、スパース性監視装置は、監視間隔中に監視を継続する。継続することは、最初のトレーニング反復の後のトレーニング反復から中間データを取得することを含む(ステップ1108)。この場合、換言すれば、スパース性監視装置は、典型的な又は通常のスパース性監視を継続し、監視間隔の高速終了を使用しない。
【0075】
いくつかの実施形態では、電子デバイス(例えば、電子デバイス200及び/又はその一部)は、非一時的なコンピュータ可読記憶媒体に記憶されたコード及び/又はデータを使用して、本明細書で説明する動作の一部又は全てを実行する。より具体的には、電子デバイスは、コンピュータ可読記憶媒体からコード及び/又はデータを読み出し、説明した動作を実行する際にコードを実行し及び/又はデータを使用する。コンピュータ可読記憶媒体は、電子デバイスによって使用されるコード及び/又はデータを記憶する任意のデバイス、媒体又はこれらの組み合わせであってもよい。例えば、コンピュータ可読記憶媒体は、フラッシュメモリ、ランダムアクセスメモリ(例えば、eDRAM、RAM、SRAM、DRAM、DDR4 SDRAM等)、読み出し専用メモリ(ROM)、及び/又は、磁気若しくは光学記憶媒体(例えば、ディスクドライブ、磁気テープ、CD、DVD等)を含む揮発性メモリ及び/又は不揮発性メモリを含むことができるが、これらに限定されない。
【0076】
いくつかの実施形態では、1つ以上のハードウェアモジュールは、本明細書に説明される動作を実行する。例えば、ハードウェアモジュールは、1つ以上のプロセッサ/コア/中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)チップ、ニューラルネットワークプロセッサ若しくはアクセラレータ、フィールドプログラマブルゲートアレイ(FPGA)、計算ユニット、組み込みプロセッサ、グラフィックスプロセッサ(GPU)/グラフィックスコア、パイプライン、加速処理ユニット(APU)、スパース性監視装置、機能ブロック、及び/又は、他のプログラマブルロジックデバイスを含めることができるが、これらに限定されない。このようなハードウェアモジュールが起動されると、ハードウェアモジュールは、動作の一部又は全てを実行する。いくつかの実施形態では、ハードウェアモジュールは、命令(プログラムコード、ファームウェア等)を実行することによって動作を実行するように構成された1つ以上の汎用回路を含む。
【0077】
いくつかの実施形態では、本明細書で説明する構造及びメカニズム(例えば、電子デバイス200、スパース性監視装置206、及び/又は、これらの一部)の一部又は全てを表すデータ構造は、電子デバイスによって読み出すことができ、構造及びメカニズムを含むハードウェアを製造するために直接的又は間接的に使用することができるデータベース又は他のデータ構造を含む非一時的なコンピュータ可読記憶媒体に記憶されている。例えば、データ構造は、Verilog又はVHDL等の高レベル設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、合成ツールにより読み出されてもよく、合成ツールは、記述を合成して、上述した構造及びメカニズムを含むハードウェアの機能を表すゲート/回路要素のリストを含むネットリストを、合成ライブラリから生成することができる。次に、ネットリストは、配置され、ルーティングされ、マスクに適用される幾何学形状を記述するデータセットが生成され得る。次いで、上述した構造及びメカニズムに対応する1つ以上の半導体回路(例えば、集積回路)を製造するために、様々な半導体製造ステップでマスクが使用され得る。或いは、コンピュータアクセス可能記憶媒体上のデータベースは、必要に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット又はグラフィックデータシステム(GDS)IIデータであってもよい。
【0078】
本明細書では、変数又は不特定の値(すなわち、値の特定のインスタンスを持たない、値の一般的な説明)は、N等の文字で表されている。同様の文字が本説明の他の箇所で使用され得るが、本明細書で使用されるように、各場合における変数及び不特定の値は、必ずしも同じではなく、すなわち、一般的な変数及び不特定値の一部又は全てに対して、異なる変数量及び値が存在してもよい。言い換えると、この説明において変数及び不特定値を表すために使用されるN及び他の文字は、必ずしも互いに関連するわけではない。
【0079】
本明細書で使用される「等(et cetra)」又は「等(etc.)」という表現は、「及び/又は」のケース、すなわち、「等」が関連するリスト内の要素のうち「少なくとも1つ」に相当するものを提示することを意図している。例えば、「電子デバイスは、第1の動作、第2の動作等を実行する」という文において、電子デバイスは、第1の動作、第2の動作、及び、他の動作のうち少なくとも1つを実行する。さらに、「等」に関連するリスト内の要素は、一組の実施例の中の単なる例であり、実施例の少なくともいくつかは、いくつかの実施形態では現れない場合がある。
【0080】
実施形態の上記の説明は、例示及び説明のためにのみ提示されている。これらは、網羅的であること、又は、実施形態を開示された形態に限定することを、意図していない。したがって、当業者は、多くの変更及び変形が明らかであろう。さらに、上記の開示は、実施形態を限定することを意図していない。実施形態の範囲は、添付の特許請求の範囲によって定義される。