JP2023162348A - Data sparsity monitoring during neural network training - Google Patents

Data sparsity monitoring during neural network training Download PDF

Info

Publication number
JP2023162348A
JP2023162348A JP2023139625A JP2023139625A JP2023162348A JP 2023162348 A JP2023162348 A JP 2023162348A JP 2023139625 A JP2023139625 A JP 2023139625A JP 2023139625 A JP2023139625 A JP 2023139625A JP 2023162348 A JP2023162348 A JP 2023162348A
Authority
JP
Japan
Prior art keywords
sparsity
monitoring
intermediate data
monitoring period
training
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023139625A
Other languages
Japanese (ja)
Inventor
ドン シ
Shi Dong
ロウェル ダニエル
I Lowell Daniel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2023162348A publication Critical patent/JP2023162348A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Abstract

To provide a device monitoring data sparsity during neutral network training.SOLUTION: An electronic device includes: a processor which executes training iterations during a training process for a neural network; and a sparsity monitor. The sparsity monitor acquires, during a monitoring interval in each of one or more monitoring periods, intermediate data outputted by at least some intermediate nodes of the neural network during training iterations that occur during each monitoring interval; generates on the basis of at least in part the intermediate data, one or more values representing sparsity characteristics for the intermediate data; and sends, to the processor, the one or more values representing the sparsity characteristics. The processor performs subsequent training iterations based at least in part on the values representing the sparsity characteristics.SELECTED DRAWING: Figure 9

Description

いくつかの電子デバイスは、人工ニューラルネットワーク、より簡潔に言えば「ニューラルネットワーク」の演算を実施する。一般に、ニューラルネットワークは、生物の脳のニューラルネットワーク等の生物学的なニューラルネットワークと類似性を有する内部要素を含む計算構造である。ニューラルネットワークは、ニューラルネットワークの内部要素を構成するために、トレーニング(訓練)データの既知のインスタンスを使用することによって、特定のタスクを実施するようにトレーニングすることができ、それにより、ニューラルネットワークは、入力データの未知のインスタンスに対して特定のタスクを実施することができる。例えば、ニューラルネットワークによって実施された1つの特定のタスクは、画像が顔又は車両等の画像要素を含むかどうかを識別することである。画像識別を実施するようにニューラルネットワークをトレーニングする場合、画像要素を含む(又は、含まない)ことが既知である画像を、ニューラルネットワークを介して処理することによって、画像要素が未知の画像に存在するかどうかを識別するために未知の画像を後に処理するときに適切な出力を生成するように内部要素が構成される。 Some electronic devices implement the operations of artificial neural networks, or more simply "neural networks." In general, a neural network is a computational structure that includes internal elements that have similarities to biological neural networks, such as the neural networks of biological brains. A neural network can be trained to perform a specific task by using known instances of training data to configure the neural network's internal elements, thereby making the neural network , specific tasks can be performed on unknown instances of input data. For example, one particular task performed by a neural network is to identify whether an image contains image elements such as faces or vehicles. When training a neural network to perform image identification, images that are known to contain (or not contain) an image element are processed through the neural network to determine whether the image element is present in an unknown image. Internal elements are configured to produce appropriate output when later processing the unknown image to identify whether the unknown image is

ニューラルネットワークは、その内部要素内に、生物の脳内でシナプスを介してニューロンが相互接続される態様に類似した構成で互いに相互接続される一組の人工ニューロン、すなわち「ノード」を含む。基本的なニューラルネットワークは、ノードが入力ノード、中間ノード及び出力ノードを含む重み付きグラフ構造の形として視覚化することができる。ニューラルネットワーク内では、出力ノード以外の各ノードは、関連する重みを有する有向エッジを介して1つ以上の下流ノードに接続される。動作中、ニューラルネットワークの第1層の入力ノードは、外部ソースからの入力を受信し、その入力を処理して入力値を生成する。入力ノードは、入力値を、ニューラルネットワークの次の層の中間ノードに転送する。受信した中間ノードは、対応する有向エッジの重みに基づいて受信入力を重み付けし、すなわち、重み付け値を乗算する等によって受信入力を調整する。各中間ノードは、対応する重み付けされた受信入力と、場合によってはバイアス値と、を合計して内部値を生成し、その内部値を使用して中間ノードの活性化関数を評価して結果値を生成する。次に、中間ノードは、結果値をニューラルネットワークの次の層の中間ノードの入力値として転送する。入力値は、上述したように内部値を生成し、活性化関数を評価するために使用される。このようにして、値は、中間ノードの最終層が結果値をニューラルネットワーク用の出力ノードに転送するまでニューラルネットワークの層内の中間ノードを通じて進行し、それによって、ニューラルネットワーク用の出力が生成される。上記の例を続けると、出力ノードによって生成された出力、したがってニューラルネットワークからの出力は、画像が指定の画像要素を含む(又は、含まない)可能性があるか否かを示す、例えば、0と1との間の数の形態にすることができる。 A neural network includes within its internal elements a set of artificial neurons, or "nodes," that are interconnected with each other in a configuration similar to the way neurons are interconnected via synapses in the brain of an organism. A basic neural network can be visualized as a weighted graph structure whose nodes include input nodes, intermediate nodes, and output nodes. Within a neural network, each node other than the output node is connected to one or more downstream nodes via directed edges with associated weights. In operation, the input nodes of the first layer of the neural network receive input from external sources and process the input to generate input values. The input nodes forward the input values to intermediate nodes in the next layer of the neural network. The receiving intermediate node weights the received input based on the weight of the corresponding directed edge, ie, adjusts the received input, such as by multiplying by a weighting value. Each intermediate node sums its corresponding weighted received inputs, and possibly a bias value, to generate an internal value, and uses that internal value to evaluate the intermediate node's activation function to generate a resulting value. generate. The intermediate node then forwards the resulting value as an input value to the intermediate node of the next layer of the neural network. The input values are used to generate internal values and evaluate activation functions as described above. In this way, the value progresses through the intermediate nodes within the layers of the neural network until the final layer of intermediate nodes transfers the resulting value to the output node for the neural network, thereby producing the output for the neural network. Ru. Continuing with the example above, the output produced by the output node, and therefore the output from the neural network, indicates whether the image is likely to contain (or not contain) the specified image element, e.g. 0 and 1.

上述したように、ニューラルネットワーク内のノード間の有向エッジに沿って転送される値は、各有向エッジに関連する重みに従って重み付けされる。所望の出力がニューラルネットワークによって生成されるようにトレーニングプロセス中に有向エッジに関連する重みを設定することによって、上述した画像内の画像要素の識別等の所望の出力を生成するようにニューラルネットワークをトレーニングすることができる。ニューラルネットワークをトレーニングする場合、期待出力又は所望出力を有するトレーニングデータの多数のインスタンスがニューラルネットワーク内で処理され、実際の出力が出力ノードから生成される。上記のニューラルネットワークの例を続けると、トレーニングデータのインスタンスは、特定の画像要素を含む(又は、含まない)ことが既知であり、したがって、画像要素が画像内に存在する(又は、存在しない)可能性があることを示す出力をニューラルネットワークが生成することが予想されるデジタル画像を含む。トレーニングデータの各インスタンスがニューラルネットワーク内で処理されて実際の出力が生成された後に、実際の出力と対応する予想出力との間のエラー値又は「損失」が二乗平均誤差、対数損失又は別のアルゴリズムを使用して計算される。次に、損失がニューラルネットワークを介して逆方向に処理され、すなわち、ニューラルネットワークを介して「逆伝播する(backpropagated)」ことにより、トレーニングデータのインスタンスのエラーを低減するために、ニューラルネットワーク内の有向エッジに関連する重みが調整される。それにより、トレーニングデータのその特定のインスタンス、及び、入力データの全ての後続のインスタンスに対するニューラルネットワークの応答が調整される。例えば、ある逆伝播技術では、ニューラルネットワーク内の各有向エッジの重みに関する損失の勾配を計算することを含む。次に、各勾配にトレーニング係数又は「学習率」を乗算して重み調整値を計算する。次に、重み調整値は、対応する重みの更新値を計算する際に使用され、例えば、対応する重みの既存の値に加算される。 As mentioned above, values transferred along directed edges between nodes in a neural network are weighted according to the weight associated with each directed edge. Train the neural network to produce a desired output, such as the identification of image elements within an image as described above, by setting weights associated with directed edges during the training process such that the desired output is produced by the neural network. can be trained. When training a neural network, multiple instances of training data with expected or desired outputs are processed within the neural network and actual outputs are generated from the output nodes. Continuing with the neural network example above, an instance of training data is known to contain (or not contain) a particular image element, and therefore the image element is present (or not present) in the image. Contains a digital image in which the neural network is expected to produce an output indicating the possibility. After each instance of training data is processed within the neural network to produce an actual output, the error value or "loss" between the actual output and the corresponding expected output is determined by the mean squared error, log loss, or another Calculated using an algorithm. The loss is then processed backwards through the neural network, i.e., "backpropagated" through the neural network to reduce the error in the instance of the training data. Weights associated with directed edges are adjusted. Thereby, the response of the neural network to that particular instance of training data and all subsequent instances of input data is adjusted. For example, one backpropagation technique involves calculating the slope of the loss with respect to the weight of each directed edge in the neural network. Each gradient is then multiplied by a training factor or "learning rate" to calculate a weight adjustment value. The weight adjustment value is then used in calculating an updated value for the corresponding weight, eg, added to the existing value for the corresponding weight.

いくつかのニューラルネットワーク、特に多数の中間ノードを有するニューラルネットワークの場合、大量の中間データが中間ノードから出力として生成される可能性がある。したがって、トレーニングプロセス中(すなわち、トレーニングデータのインスタンスがニューラルネットワークを介して処理され、損失が逆伝播されるとき)に上述した計算を実施することにより、ニューラルネットワークをトレーニングするために使用されるデバイス内のプロセッサ及び他の機能ブロックにかなりの計算負荷がかかる。また、トレーニングプロセス中に中間データを記憶し、読み出すことにより、大量のメモリが必要になり、トレーニングプロセスに遅延が加わる。したがって、設計者は、中間データの特性を使用して中間データを必要とする計算の効率及び中間データの記憶を改善するための複数の技術を提案してきた。例えば、あるシステム設計者は、複数の中間ノードからの中間データ内のゼロ、すなわち、これらの中間ノードからの中間データの「スパース性」を検出すること、及び、データのスパース性がこのような計算の使用を許容する場合により効率的な計算(例えば、スパース行列演算)を使用することを提案した。別の例として、設計者は、中間データのスパース性に基づいて中間データをメモリに記憶するための圧縮記憶形式を使用することを提案した。残念なことに、トレーニングプロセス中に中間データのスパース性を検出することは面倒であり、データ集約的である。このことは、トレーニング(訓練)反復中に中間データのスパース性を利用する技術の広範囲な採用を制限するように作用している。 For some neural networks, especially those with a large number of intermediate nodes, large amounts of intermediate data can be generated as output from the intermediate nodes. Therefore, the device used to train a neural network by carrying out the above-mentioned calculations during the training process (i.e. when an instance of training data is processed through the neural network and the loss is back-propagated) This places a significant computational burden on the processor and other functional blocks within the system. Additionally, storing and retrieving intermediate data during the training process requires large amounts of memory and adds delay to the training process. Accordingly, designers have proposed multiple techniques for using the properties of intermediate data to improve the efficiency of computations that require intermediate data and the storage of intermediate data. For example, some system designers may detect zeros in intermediate data from multiple intermediate nodes, i.e., the "sparsity" of the intermediate data from these intermediate nodes, and proposed using more efficient computations (e.g., sparse matrix operations) where the use of computations is acceptable. As another example, designers have proposed using compressed storage formats to store intermediate data in memory based on the sparsity of the intermediate data. Unfortunately, detecting sparsity in intermediate data during the training process is tedious and data-intensive. This has acted to limit the widespread adoption of techniques that exploit the sparsity of intermediate data during training iterations.

いくつかの実施形態による、ニューラルネットワークを示すブロック図である。1 is a block diagram illustrating a neural network, according to some embodiments. FIG. いくつかの実施形態による、電子デバイスを示すブロック図である。1 is a block diagram illustrating an electronic device, according to some embodiments. FIG. いくつかの実施形態による、スパース性監視装置を示すブロック図である。1 is a block diagram illustrating a sparsity monitor, according to some embodiments. FIG. いくつかの実施形態による、監視周期及び監視期間を示すタイムライン図である。FIG. 3 is a timeline diagram illustrating monitoring cycles and periods, according to some embodiments. いくつかの実施形態による、スパース性監視装置との間のデータ及び情報の流れを示すブロック図である。FIG. 2 is a block diagram illustrating the flow of data and information to and from a sparsity monitor, according to some embodiments. いくつかの実施形態による、スパース性監視装置における様々な動作モード間の遷移を示す状態図である。2 is a state diagram illustrating transitions between various modes of operation in a sparsity monitor, according to some embodiments. FIG. いくつかの実施形態による、アクティブモードでスパース性監視装置の監視周期を動的に調整する擬似コードの例を示す図である。FIG. 3 illustrates an example of pseudocode that dynamically adjusts the monitoring period of a sparsity monitor in active mode, according to some embodiments. いくつかの実施形態による、アクティブモードからハイバネーションモードへの遷移及びその逆の遷移の擬似コードの例を示す図である。FIG. 3 illustrates an example pseudocode for transitioning from active mode to hibernation mode and vice versa, according to some embodiments. いくつかの実施形態による、ニューラルネットワークのためのトレーニングプロセスのトレーニング反復中に中間データ内のスパース性を監視するためのプロセスを示すフローチャートである。2 is a flowchart illustrating a process for monitoring sparsity in intermediate data during training iterations of a training process for a neural network, according to some embodiments. いくつかの実施形態による、スパース性監視装置においてアクティブモード及びハイバネーションモードを使用するためのプロセスを示すフローチャートの一部を示す図である。FIG. 3 illustrates a portion of a flowchart illustrating a process for using active mode and hibernation mode in a sparsity monitoring device, according to some embodiments. いくつかの実施形態による、スパース性監視装置においてアクティブモード及びハイバネーションモードを使用するためのプロセスを示すフローチャートの一部を示す図である。FIG. 3 illustrates a portion of a flowchart illustrating a process for using active mode and hibernation mode in a sparsity monitoring device, according to some embodiments. いくつかの実施形態による、スパース性監視装置による監視期間の高速終了のためのプロセスを示すフローチャートである。2 is a flowchart illustrating a process for fast termination of a monitoring period by a sparsity monitor, according to some embodiments.

図面及び説明全体に亘って、同じ符号は、同一の図要素を指す。 Like reference numerals refer to like diagrammatic elements throughout the drawings and description.

以下の説明は、当業者が、説明する実施形態を作成及び使用することを可能にするために提示され、特定の用途及びその要件に照らして提供される。説明する実施形態に対する様々な変更は、当業者には容易に明らかであり、本明細書で定義される一般的な原理は、他の実施形態及び用途に適用されてもよい。したがって、説明する実施形態は、示された実施形態に限定されず、本明細書で開示される原理及び特徴と一致する最も広い範囲が与えられるべきである。 The following description is presented to enable any person skilled in the art to make and use the described embodiments, and is provided in the light of a particular application and its requirements. Various modifications to the described embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications. The described embodiments are therefore not limited to those shown, but are to be accorded the widest scope consistent with the principles and features disclosed herein.

(用語)
以下の説明では、様々な用語が、実施形態を説明するために使用される。以下に、これらの用語のいくつかを簡単且つ一般的に説明する。用語は、明確さ及び簡潔さのために、本明細書に記載されていない重要な追加的態様を有してもよい。したがって、説明は、用語を限定することを意図しないことに留意されたい。
(term)
In the following description, various terminology is used to describe the embodiments. Below is a brief and general explanation of some of these terms. The term may have important additional aspects that are not described herein for the sake of clarity and brevity. It is therefore noted that the description is not intended to limit the term.

機能ブロック:機能ブロックは、集積回路要素、ディスクリート回路要素等の1つ以上の相互に関連する回路要素のグループ、集合、及び/又は、セットを指す。回路要素は、回路要素が少なくとも1つの特性を共有するという点で「相互に関連」している。例えば、相互に関連する回路要素は、特定の集積回路チップ又はその一部に含まれていてもよいし、その上に製造されてもよいし、他の方法で結合されてもよいし、所定の機能(計算又は処理機能、メモリ機能等)の実行に関与してもよいし、共通の制御要素によって制御されてもよい。機能ブロックは、単一の回路要素(例えば、単一の集積回路論理ゲート)から数百万又は数十億の回路要素(例えば、集積回路メモリ)までの任意の数の回路要素を含むことができる。 Functional Block: A functional block refers to a group, collection, and/or set of one or more interrelated circuit elements, such as integrated circuit elements or discrete circuit elements. Circuit elements are "interrelated" in that the circuit elements share at least one characteristic. For example, interrelated circuit elements may be included in, fabricated on, or otherwise coupled to a particular integrated circuit chip or portion thereof; may be involved in the performance of functions (computation or processing functions, memory functions, etc.) or may be controlled by a common control element. A functional block may include any number of circuit elements from a single circuit element (e.g., a single integrated circuit logic gate) to millions or billions of circuit elements (e.g., integrated circuit memory). can.

スパース性:ニューラルネットワーク内の中間(又は、「隠れ」)ノードによって出力された中間データ内に見られるゼロ(及び/又は、他の指定値)の数及び/又は配置である。例えば、ゼロは、ゼロの結果を生成する活性化関数(例えば、正規化線形ユニット(ReLU)活性化関数等)に起因して中間ノードによって出力され得る。スパース性の1つの簡単な計算は割合である。この場合、中間データ内のゼロに基づいてスパース性が決定される場合、100個の中間ノードを仮定すると、25%のスパース性は、25個の中間ノードがゼロを出力し、残りの75個の中間ノードが他の値を出力するときに存在する。 Sparsity: The number and/or arrangement of zeros (and/or other designated values) found in intermediate data output by intermediate (or "hidden") nodes within a neural network. For example, a zero may be output by an intermediate node due to an activation function (eg, a regularized linear unit (ReLU) activation function, etc.) that produces a zero result. One simple calculation of sparsity is a ratio. In this case, if sparsity is determined based on zeros in the intermediate data, then assuming 100 intermediate nodes, 25% sparsity means that 25 intermediate nodes output zeros and the remaining 75 Exists when an intermediate node outputs another value.

トレーニング反復:トレーニング反復は、ニューラルネットワークトレーニングプロセス中にニューラルネットワークを介してトレーニングデータの単一のインスタンスを処理するための動作の一部又は全てを含む。トレーニング反復の動作は、ニューラルネットワークの中間ノードからの中間データに加えて、ニューラルネットワークの出力ノードからの出力を生成するために、ニューラルネットワークを通じてトレーニングデータの所定のインスタンスを処理することを含む。また、トレーニング反復の動作は、ニューラルネットワーク内の重みを設定するためのトレーニングデータの所定のインスタンスに関連する損失値の逆伝播等を含み得る。 Training iteration: A training iteration includes some or all of the operations for processing a single instance of training data through the neural network during the neural network training process. The operations of a training iteration include processing a given instance of training data through the neural network to generate an output from an output node of the neural network, in addition to intermediate data from intermediate nodes of the neural network. The operations of training iterations may also include backpropagation of loss values associated with a given instance of training data to set weights within the neural network, and the like.

(ニューラルネットワーク)
上述したように、ニューラルネットワークは、特定のタスクを実施するようにトレーニングされた内部要素(すなわち、ノード及び有向エッジ)を含む計算構造である。図1は、いくつかの実施形態による、入力ノード102と、層110,112内の中間ノード104と、出力ノード106と、有向エッジ108と、を含むニューラルネットワーク100を示すブロック図である(分かりやすくするために、2つの有向エッジ及び層のみにラベル付けされている)。
(neural network)
As mentioned above, a neural network is a computational structure that includes internal elements (i.e., nodes and directed edges) that are trained to perform specific tasks. FIG. 1 is a block diagram illustrating a neural network 100 including an input node 102, intermediate nodes 104 in layers 110, 112, output nodes 106, and directed edges 108, according to some embodiments. For clarity, only the two directed edges and layers are labeled).

ニューラルネットワーク100の内部要素の性質に応じて、ニューラルネットワーク100は、「判別可能な(discriminative)」ネットワーク、または「生成的な(generative)」ネットワークとすることができる。判別可能なネットワークは、入力データのインスタンスを処理し、特定のパターンが入力データのインスタンスに存在する可能性があるかどうかを示す結果を出力するように構成された、すなわち、入力データのインスタンスを分類するように構成されたニューラルネットワークである。例えば、判別可能なネットワークは、顔や道路標識等の画像要素がデジタル画像に存在する可能性があるかどうか、特定の音や言葉がデジタルオーディオに存在する可能性があるかどうか等を示す結果を出力するように構成され得る。生成的なネットワークは、特定のパターンに類似するパターンを含む出力データのインスタンスを生成するように構成されたニューラルネットワークである。例えば、生成的なネットワークは、顔や道路標識に類似するパターンを含むデジタル画像、特定の音又は言葉に類似するパターンを含むオーディオ等を生成するように構成され得る。 Depending on the nature of the internal elements of neural network 100, neural network 100 can be a "discriminative" network or a "generative" network. A discriminable network is configured to process instances of input data and output a result indicating whether a particular pattern is likely to exist in an instance of input data; A neural network configured to classify. For example, a discriminable network is a result that indicates whether an image element such as a face or a road sign is likely to be present in a digital image, or whether a particular sound or word is likely to be present in digital audio, etc. may be configured to output. A generative network is a neural network configured to generate instances of output data that include patterns similar to a particular pattern. For example, a generative network may be configured to generate digital images that include patterns that resemble faces or road signs, audio that includes patterns that resemble particular sounds or words, and the like.

説明する実施形態は、ニューラルネットワークのためのトレーニングプロセスを実施する。トレーニングプロセス中、ニューラルネットワークを後で使用して特定のタスクを実施することができるように、有向エッジ及び他の値に関連する重みが設定される。いくつかの実施形態では、ニューラルネットワークをトレーニングする場合、複数のトレーニング反復の各々の間に、予想出力又は所望の出力を有するトレーニングデータの個別のインスタンスがニューラルネットワークを介して処理され、出力ノードから実際の出力を生成する。これらの実施形態では、トレーニングデータの各インスタンスがニューラルネットワークを介して処理され実際の出力を生成した後に、トレーニングデータのそのインスタンスについての実際の出力と予想出力との間のエラー値又は「損失」が、二乗平均誤差、対数損失又は別のアルゴリズムを使用して計算される。次に、損失がニューラルネットワークを介して逆方向に処理され、すなわち、ニューラルネットワークを介して「逆伝播する」ことにより、トレーニングデータのインスタンスのエラーを低減するために、ニューラルネットワーク内の有向エッジに関連する重みが調整される。それにより、トレーニングデータのインスタンス及び入力データの後続のインスタンスに対するニューラルネットワークの応答が調整される。例えば、いくつかの実施形態では、逆伝播は、ニューラルネットワーク内の各有向エッジに対する重みに関する損失の勾配を計算することを含む。次に、各勾配にトレーニング係数又は「学習率」を乗算して重み調整値を計算する。次に、重み調整値は、対応する重みの更新値を計算する際に使用され、例えば、対応する重みの既存の値に加算される。 The described embodiment implements a training process for a neural network. During the training process, weights associated with directed edges and other values are set so that the neural network can later be used to perform specific tasks. In some embodiments, when training a neural network, during each of a plurality of training iterations, a separate instance of training data having an expected or desired output is processed through the neural network, and from an output node Generate actual output. In these embodiments, after each instance of training data is processed through the neural network to produce an actual output, an error value or "loss" between the actual and expected outputs for that instance of training data is determined. is calculated using root mean square error, log loss, or another algorithm. The loss is then processed backwards through the neural network, i.e. by "backpropagating" through the neural network, the directed edges within the neural network are used to reduce the error for instances of the training data. The weight associated with is adjusted. Thereby, the response of the neural network to instances of training data and subsequent instances of input data is adjusted. For example, in some embodiments, backpropagation includes computing the slope of the loss with respect to the weights for each directed edge in the neural network. Each gradient is then multiplied by a training factor or "learning rate" to calculate a weight adjustment value. The weight adjustment value is then used in calculating an updated value for the corresponding weight, eg, added to the existing value for the corresponding weight.

ニューラルネットワークの例が図1に示されているが、いくつかの実施形態では、ノード及び/又は層の異なる配置がニューラルネットワークに存在する。例えば、ニューラルネットワークは、多数の層に配置された多数(場合によっては、数十万又は数百万)の中間ノードを含むことができ、中間ノードの各層は、入力値を受信し、生成された結果値を次の層内の中間ノード又は出力ノードに転送する。別の例として、いくつかの実施形態では、ノードの異なるトポグラフィ又は接続性が使用され、及び/又は、畳み込みネットワーク、ラジアルベースのネットワーク、リカレントニューラルネットワーク、自動エンコーダ、マルコフ連鎖、信頼ネットワーク、残差ネットワーク等を含むニューラルネットワークにおいて使用されるノードの配置及びタイプ等の異なるタイプのノードが使用される。一般に、説明する実施形態は、本明細書で説明するように、中間データ内のスパース性を検出し、使用することができるニューラルネットワークの任意の構成を用いて実施可能である。 Although an example neural network is shown in FIG. 1, in some embodiments different arrangements of nodes and/or layers are present in the neural network. For example, a neural network can include a large number (sometimes hundreds of thousands or millions) of intermediate nodes arranged in numerous layers, with each layer of intermediate nodes receiving input values and generating input values. Transfer the resulting value to an intermediate node or output node in the next layer. As another example, in some embodiments different topologies or connectivity of nodes are used and/or convolutional networks, radial-based networks, recurrent neural networks, autoencoders, Markov chains, trust networks, residual Different types of nodes are used, such as the arrangement and types of nodes used in neural networks, including networks. In general, the described embodiments can be implemented with any configuration of neural networks that can detect and use sparsity in intermediate data as described herein.

(概要)
説明する実施形態では、電子デバイス内のスパース性監視装置は、ニューラルネットワークのトレーニングプロセスのトレーニング反復中に、ニューラルネットワーク内の中間ノードによって出力された中間データ内のスパース性を監視する。監視のために、スパース性監視装置は、ニューラルネットワーク内の中間ノードの少なくとも一部から出力された中間データを取得する。次に、スパース性監視装置は、取得された中間データを分析して、スパース性、すなわち、ゼロ(又は、別の特定の値)に等しい中間データを決定する。分析の一部として、スパース性監視装置は、中間データのスパース性特性を表す値を生成する。例えば、スパース性監視装置は、スパース性特性を表す値として、特定の数のトレーニング反復等に対して1つ以上の中間ノードからの中間データの現在のスパース性、平均又は中央のスパース性を表す値を生成し得る。次に、スパース性監視装置は、スパース性特性を表す値を電子デバイス内のプロセッサに送信する。プロセッサは、スパース性特性を表す値に少なくとも部分的に基づいて、後続のトレーニング反復を実行する1つ以上の態様を制御する。例えば、プロセッサは、スパース性特性に基づいて、後続のトレーニング反復に対して実施される計算のタイプ、後続のトレーニング反復に対して中間データを圧縮してメモリに記憶するために使用される圧縮のタイプ等を決定し、構成し得る。
(overview)
In the described embodiment, a sparsity monitor within the electronic device monitors sparsity in intermediate data output by intermediate nodes within the neural network during training iterations of the neural network training process. For monitoring, the sparsity monitor obtains intermediate data output from at least some of the intermediate nodes in the neural network. The sparsity monitor then analyzes the obtained intermediate data to determine sparsity, ie, intermediate data equal to zero (or another specific value). As part of the analysis, the sparsity monitor generates a value representative of the sparsity characteristics of the intermediate data. For example, a sparsity monitor represents the current sparsity, average or median sparsity of intermediate data from one or more intermediate nodes for a certain number of training iterations, etc. as a value representing the sparsity property. can generate a value. The sparsity monitor then sends a value representative of the sparsity characteristic to a processor within the electronic device. The processor controls one or more aspects of performing subsequent training iterations based at least in part on the value representing the sparsity property. For example, the processor determines, based on the sparsity characteristics, the type of computations performed for subsequent training iterations, the type of compression used to compress and store intermediate data in memory for subsequent training iterations, etc. The type, etc. can be determined and configured.

いくつかの実施形態では、「監視期間」内の「監視間隔」中に、説明するように中間ノードから中間データが取得される。例えば、いくつかの実施形態では、監視間隔は、Mms(例えば、1s、2s等)の監視期間のうちNms(例えば、50ms、100ms等)であり、Mms>Nmsである。別の例として、いくつかの実施形態では、監視期間及び/又は監視間隔は、特定の数のトレーニング反復を含み、例えば、監視間隔はK回のトレーニング反復(例えば、25回、50回等)であり、監視期間はZ回のトレーニング反復(例えば、500回、1000回等)であり、Z>Kである。これらの実施形態では、監視間隔及び監視期間は、時間に関して計算されなくてもよい(実際には、トレーニング反復にかかる時間に応じて可変の時間であり得る)。これらの実施形態のうちいくつかでは、監視期間及び対応する監視間隔が繰り返され、トレーニングプロセスが続く限り繰り返され得る。例えば、Nms(例えば、60ms)の監視間隔は、Mms(例えば、250ms)の監視期間毎に発生してもよく、Z回のトレーニング反復(例えば、20回のトレーニング反復)の監視間隔は、Xs(例えば、2s)毎に発生してもよい等である。 In some embodiments, intermediate data is obtained from intermediate nodes as described during a "monitoring interval" within a "monitoring period." For example, in some embodiments, the monitoring interval is Nms (eg, 50ms, 100ms, etc.) out of a monitoring period of Mms (eg, 1s, 2s, etc.), and Mms>Nms. As another example, in some embodiments, the monitoring period and/or monitoring interval includes a certain number of training repetitions, e.g., the monitoring interval includes K training repetitions (e.g., 25, 50, etc.) , the monitoring period is Z training iterations (eg, 500, 1000, etc.), and Z>K. In these embodiments, the monitoring interval and monitoring period may not be calculated in terms of time (in fact, they may be variable times depending on how long the training iterations take). In some of these embodiments, the monitoring period and corresponding monitoring interval are repeated and may be repeated as long as the training process continues. For example, a monitoring interval of Nms (e.g., 60ms) may occur every Mms (e.g., 250ms), and a monitoring interval of Z training repetitions (e.g., 20 training repetitions) may occur every (For example, it may occur every 2 seconds).

これらの実施形態では、スパース性監視装置は、ハイバネーションモード及びアクティブモードのうち一方で動作する。一般に、スパース性監視装置は、アクティブモードで開始し、及び/又は、監視間隔間のスパース性が「不安定」である場合、すなわち、監視間隔の間で特定の量を上回って変化している場合に、ハイバネーションモードからアクティブモードに遷移する。スパース性監視装置は、監視間隔間のスパース性が「安定」である場合、すなわち、監視間隔の間で特定の量を下回って変化している場合に、アクティブモードからハイバネーションモードに遷移する。 In these embodiments, the sparsity monitoring device operates in one of a hibernation mode and an active mode. In general, a sparsity monitor starts in active mode and/or if the sparsity between monitoring intervals is "unstable", i.e. changing by more than a certain amount between monitoring intervals. transition from hibernation mode to active mode. A sparsity monitor transitions from active mode to hibernation mode when sparsity between monitoring intervals is "stable", ie, varying less than a certain amount between monitoring intervals.

スパース性監視装置がアクティブモード(例えば、起動時、ニューラルネットワークのトレーニングプロセス中にスパース性を最初に監視する場合、ハイバネーションモードから遷移する場合等)で動作を始動する場合、監視期間は、全ての中間ノードについてアクティブモード初期値に設定され、アクティブモード初期値は、スパース性監視装置によって使用される最も短い監視期間である。次に、スパース性監視装置は、対応するトレーニング間隔からの中間データのスパース性が安定であるかどうかを周期的に判別し、安定している場合、監視期間の長さを長くする(例えば、監視期間の長さを2倍又はそれ以外に長くする)。いくつかの実施形態では、スパース性監視装置は、個々の中間ノード及び/又は中間ノードの異なるグループ(例えば、ニューラルネットワークの層内の中間ノード、ニューラルネットワークの領域等)について中間データ内のスパース性を監視し、個々の中間ノード及び/又は中間ノードのグループについて監視期間を個別に調整してもよい。スパース性監視装置は、引き続き、スパース性が安定であるかどうかを周期的に判別し、監視期間が最大の長さ、すなわち、ハイバネーションモード監視期間に増加するまで、このようにして中間ノードについての監視期間の長さを長くする(スパース性が不安定であることが判明した場合、監視期間を徐々に短くして、アクティブモード初期値と同程度に短くなるように戻す場合もある)。アクティブモードでは、監視された各中間ノードについて監視期間をハイバネーションモード監視期間まで増加した場合であって、スパース性が依然として安定である場合に、スパース性監視装置は、ハイバネーションモードに遷移する。 When the sparsity monitor starts operating in active mode (e.g., at startup, when initially monitoring sparsity during the neural network training process, when transitioning from hibernation mode, etc.), the monitoring period An active mode initial value is set for the intermediate node, where the active mode initial value is the shortest monitoring period used by the sparsity monitor. The sparsity monitor then periodically determines whether the sparsity of the intermediate data from the corresponding training interval is stable, and if so, increases the length of the monitoring period (e.g. double or otherwise increase the length of the monitoring period). In some embodiments, the sparsity monitor monitors sparsity in the intermediate data for individual intermediate nodes and/or different groups of intermediate nodes (e.g., intermediate nodes within layers of a neural network, regions of a neural network, etc.). may be monitored and the monitoring period may be adjusted individually for individual intermediate nodes and/or groups of intermediate nodes. The sparsity monitor continues to periodically determine whether the sparsity is stable and in this way determines whether the sparsity is stable and in this way increases the sparsity to the maximum length, i.e., the hibernation mode monitoring period. Increase the length of the monitoring period (if sparsity is found to be unstable, the monitoring period may be gradually shortened to return to the same shortness as the initial active mode value). In active mode, the sparsity monitor transitions to hibernation mode if the monitoring period is increased to the hibernation mode monitoring period for each monitored intermediate node and the sparsity is still stable.

スパース性監視装置がハイバネーションモードで動作する場合、監視期間は、全ての中間ノードについてハイバネーションモード監視期間に固定され、したがって監視期間は、各中間ノードについて最大長である。特定の数の中間ノードのスパース性がハイバネーションモードで不安定であると判別された場合に、スパース性監視装置は、ハイバネーションモードからアクティブモードに遷移する。アクティブモードに遷移する場合、監視期間がアクティブモード初期値に低減され、上述したようにスパース性監視装置が動作する。 When the sparsity monitoring device operates in hibernation mode, the monitoring period is fixed to the hibernation mode monitoring period for all intermediate nodes, so the monitoring period is the maximum length for each intermediate node. If it is determined that the sparsity of a certain number of intermediate nodes is unstable in hibernation mode, the sparsity monitoring device transitions from hibernation mode to active mode. When transitioning to active mode, the monitoring period is reduced to the active mode initial value and the sparse monitoring device operates as described above.

いくつかの実施形態では、スパース性監視装置は、中間ノードの監視間隔中にスパース性の監視の「高速」終了をサポートする。これらの実施形態では、1つ以上のトレーニング反復からの中間データが特定のスパース性(例えば、5%、10%等)未満を有することが判明し、したがって、データが比較的フルである/スパース性をそれほど有しない場合に、スパース性監視装置は、監視間隔内の残りのトレーニング反復についての中間データの取得及び処理を停止する。これらの実施形態では、スパース性特性を表す値は、通常の監視間隔内の全てよりも少ないトレーニング反復からの中間データに基づいて生成され得る。 In some embodiments, the sparsity monitor supports "fast" termination of sparsity monitoring during intermediate node monitoring intervals. In these embodiments, intermediate data from one or more training iterations is found to have less than a certain sparsity (e.g., 5%, 10%, etc.) and thus the data is relatively full/sparse. If so, the sparsity monitor stops acquiring and processing intermediate data for the remaining training iterations within the monitoring interval. In these embodiments, values representative of sparsity properties may be generated based on intermediate data from fewer than all training iterations within a normal monitoring interval.

いくつかの実施形態では、中間データのスパース性特性を表す上述した値は、2つ以上のトレーニング反復に対する1つ以上の中間ノードについての中間データ内のスパース性の傾向又はパターンであるか、これらを含む。例えば、傾向は、特定の数のトレーニング反復にわたる1つ以上の中間ノードについてのスパース性の値の傾向(例えば、増加、減少、増加又は減少の割合等)を含むことができる。別の例として、パターンは、ゼロ(又は、別の値)を出力する中間ノードのグループ化、ゼロ(又は、別の値)を出力した所定の数を超える中間ノードを有する中間ノードの層、ブロック比(例えば、スパース性が値ゼロを有する中間データに基づく場合には、ゼロのブロック比)等のパターンを含み得る。 In some embodiments, the aforementioned values representative of sparsity characteristics of the intermediate data are trends or patterns of sparsity in the intermediate data for one or more intermediate nodes for two or more training iterations, or including. For example, a trend can include a trend (eg, increase, decrease, percentage of increase or decrease, etc.) in sparsity values for one or more intermediate nodes over a particular number of training iterations. As another example, the pattern may include a grouping of intermediate nodes that output zero (or another value), a layer of intermediate nodes that has more than a predetermined number of intermediate nodes that output zero (or another value), It may include patterns such as a block ratio (eg, a block ratio of zero if the sparsity is based on intermediate data with a value of zero).

いくつかの実施形態では、スパース性特性を表す値は、ヒストグラムのビンに類似する複数の「ステージ」に編成され、各ステージは、スパース性特性の値の各々の値又は範囲を示す。例えば、いくつかの実施形態では、ステージは、10%~0%のスパース性(その結果、ゼロ又は別の指定値が、1つ以上のトレーニング反復に対して1つ以上の中間ノードについて中間データの10%以下で発生する)に関連する第1のステージ、20%~11%のスパース性に関連する第2のステージ、30%~21%のスパース性に関連する第3のステージ等を含む。これらの実施形態では、スパース性監視装置は、スパース性特性を表す値として、ステージ値(例えば、第1のステージについては1の値、第2のステージについては2の値等)をプロセッサに戻し得る。 In some embodiments, the values representing the sparsity characteristic are organized into multiple "stages" similar to the bins of a histogram, with each stage indicating a respective value or range of values for the sparsity characteristic. For example, in some embodiments, the stage has a sparsity between 10% and 0% (so that zero or another specified value is applied to the intermediate data for one or more intermediate nodes for one or more training iterations). The first stage is associated with sparsity of 20% to 11%, the third stage is associated with sparsity of 30% to 21%, etc. . In these embodiments, the sparsity monitor returns a stage value (e.g., a value of 1 for the first stage, a value of 2 for the second stage, etc.) to the processor as a value representing the sparsity characteristic. obtain.

説明するように、スパース性監視装置を使用して、中間ノードによって出力された中間データ内のスパース性を追跡することにより、説明する実施形態は、プロセッサが、ニューラルネットワーク内の中間ノードのデータ出力に関する現在のリアルタイム情報に基づいて、後続のトレーニング反復に対する中間データの処理を制御することを可能にする。これは、プロセッサが、ニューラルネットワークを介してトレーニングデータのインスタンスをより効率的に処理するのに役立つことができ、これにより、電力の節約、処理動作の速度向上等が可能になる。トレーニングデータの個々のインスタンスをより効率的に処理することにより、トレーニングプロセスをより高速にすることができ、必要な電力をより少なくすることができる。これによって、電子デバイスの性能が改善され、結果として、電子デバイスに対するユーザの満足がより高まる。また、ハイバネーションモード及びアクティブモードと、これらに関連する動的に調整可能な監視期間と、を使用することにより、スパース性監視装置は、電子デバイス内の計算リソース、通信インターフェース等に必要以上に負荷をかけることなくスパース性を監視することができる。 By tracking sparsity in intermediate data output by intermediate nodes using a sparsity monitor, the described embodiments enable a processor to track sparsity in the data output of intermediate nodes in a neural network. allows controlling the processing of intermediate data for subsequent training iterations based on current real-time information about This can help the processor process instances of training data through the neural network more efficiently, which can save power, speed up processing operations, etc. By processing individual instances of training data more efficiently, the training process can be faster and require less power. This improves the performance of the electronic device, resulting in greater user satisfaction with the electronic device. Additionally, by using hibernation and active modes and their associated dynamically adjustable monitoring periods, sparse monitoring equipment can unnecessarily burden computational resources, communication interfaces, etc. within an electronic device. It is possible to monitor sparsity without applying .

(電子デバイス)
説明する実施形態では、電子デバイスは、特に、ニューラルネットワークのためのトレーニングプロセスのトレーニング反復中に中間データ内のスパース性を決定するための動作を実施する。図2は、いくつかの実施形態による、電子デバイス200を示すブロック図である。図2から分かるように、電子デバイス200は、プロセッサ202と、メモリ204と、スパース性監視装置206と、を含む。一般に、プロセッサ202、メモリ204及びスパース性監視装置206は、ハードウェアにおいて、すなわち、様々な回路要素及びデバイスを使用して実装される。例えば、プロセッサ202、メモリ204及びスパース性監視装置206は、例えば、1つ以上の個別の半導体チップ等のように、1つ以上の半導体チップ上に全体的に製造することができ、ディスクリート回路要素と組み合わせて半導体チップから製造することができ、ディスクリート回路要素のみから製造することができる等である。本明細書で説明するように、プロセッサ202、メモリ204及びスパース性監視装置206のうち一部又は全ては、中間データのスパース性を決定することに関連する動作を実施する。
(electronic device)
In the described embodiments, the electronic device performs operations to, among other things, determine sparsity in intermediate data during training iterations of a training process for a neural network. FIG. 2 is a block diagram illustrating an electronic device 200, according to some embodiments. As can be seen in FIG. 2, electronic device 200 includes a processor 202, a memory 204, and a sparsity monitor 206. Generally, processor 202, memory 204, and sparsity monitor 206 are implemented in hardware, ie, using various circuitry and devices. For example, processor 202, memory 204, and sparsity monitor 206 can be fabricated entirely on one or more semiconductor chips, such as one or more discrete semiconductor chips, and may include discrete circuit elements. It can be manufactured from semiconductor chips in combination with semiconductor chips, it can be manufactured from only discrete circuit elements, and so on. As described herein, some or all of processor 202, memory 204, and sparsity monitor 206 perform operations related to determining sparsity of intermediate data.

プロセッサ202は、電子デバイス200において計算動作を実施する機能ブロックである。例えば、プロセッサ202は、1つ以上の中央処理ユニット(CPU)コア、グラフィックス処理ユニット(GPU)コア、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)等であってもよく、これらを含んでもよい。いくつかの実施形態では、プロセッサ202は、回路要素/機能ブロックに関連する動作を実施させるプログラムコードを実行するパイプライン、実行ユニット、計算ユニット等の回路要素又は機能ブロックを含む。いくつかの実施形態では、プロセッサ202は、特定の処理動作を実施するように専用化され、場合によってはそのような特定の目的用のハードウェア回路を含む。 Processor 202 is a functional block that performs computational operations in electronic device 200. For example, processor 202 may be one or more central processing unit (CPU) cores, graphics processing unit (GPU) cores, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), etc. These may also be included. In some embodiments, processor 202 includes circuit elements or functional blocks, such as pipelines, execution units, computational units, etc., that execute program code that cause the circuit elements/functional blocks to perform associated operations. In some embodiments, processor 202 is specialized to perform specific processing operations, and in some cases includes hardware circuitry for such specific purposes.

メモリ204は、電子デバイス200用のメモリ(例えば、「メイン」メモリ)の動作を実施する電子デバイス200内の機能ブロックである。メモリ204は、第4世代ダブルデータレート同期ダイナミックランダムアクセスメモリ(DDR4 SDRAM)、スタティックランダムアクセスメモリ(SRAM)、及び/又は、電子デバイス200内の機能ブロックによる使用のためにデータ及び命令を記憶するための他のタイプのメモリ回路等のメモリ回路と、メモリ回路に記憶されたデータ及び命令へのアクセスを処理し、他の制御又は構成動作を実施するための制御回路と、を含む。いくつかの実施形態では、ニューラルネットワークトレーニングプロセスのトレーニング反復に対する中間データは、メモリ204に記憶され、そこから読み出される。 Memory 204 is a functional block within electronic device 200 that implements memory (eg, “main” memory) operations for electronic device 200. Memory 204 stores data and instructions for use by fourth generation double data rate synchronous dynamic random access memory (DDR4 SDRAM), static random access memory (SRAM), and/or functional blocks within electronic device 200 and control circuitry for processing access to data and instructions stored in the memory circuitry and for performing other control or configuration operations. In some embodiments, intermediate data for training iterations of the neural network training process is stored in and read from memory 204.

スパース性監視装置206は、ニューラルネットワークのためのトレーニングプロセスのトレーニング反復中に中間ノードから出力された中間データのスパース性を追跡し、分析し、報告するための動作を実施する機能ブロックである。一般に、スパース性を追跡することは、ニューラルネットワークの少なくともいくつかの中間ノードについて中間データを取得することと、場合によってはスパース性のレコードを生成/記憶することと、を含む。スパース性を分析することは、取得された中間データに基づいて、特定のトレーニング反復に対する1つ以上の中間ノードについての中間データのスパース性を表す値及び/又は2つ以上のトレーニング反復の組み合わせに対する1つ以上の中間ノードについてのスパース性を表す値(例えば、スパース性の平均、傾向又はパターン)等のように、スパース性のスパース性特性を表す値を決定することを含む。スパース性を報告することは、ファイル、メッセージ等を介して、スパース性のスパース性特性を表す値を、1つ以上の他の機能ブロック(例えば、プロセッサ202等)に送信することを含む。 Sparsity monitor 206 is a functional block that performs operations to track, analyze, and report sparsity of intermediate data output from intermediate nodes during training iterations of a training process for a neural network. In general, tracking sparsity includes obtaining intermediate data for at least some intermediate nodes of the neural network and possibly generating/storing records of sparsity. Analyzing the sparsity may include determining, based on the obtained intermediate data, a value representing the sparsity of the intermediate data for one or more intermediate nodes for a particular training iteration and/or for a combination of two or more training iterations. including determining a value representative of a sparsity characteristic of the sparsity, such as a value representative of sparsity (eg, an average, trend, or pattern of sparsity) for one or more intermediate nodes. Reporting sparsity includes transmitting, via a file, message, etc., a value representative of the sparsity characteristic of the sparsity to one or more other functional blocks (eg, processor 202, etc.).

図3は、いくつかの実施形態による、スパース性監視装置206を示すブロック図である。図2から分かるように、スパース性監視装置206は、スパース性情報(INFO)リスト300と、スパース性プロセッサ302と、スパース性ステージ計算機(CALC)304と、スケジューラ306と、を含む。スパース性情報リスト300は、1つ以上のトレーニング反復に対してニューラルネットワーク内の1つ以上の中間ノードから取得された中間データ、及び/又は、1つ以上のトレーニング反復に対する中間データに基づいて計算された値を記憶する機能ブロックである。例えば、いくつかの実施形態では、スパース性情報リスト300は、1つ以上のトレーニング反復の各々の間に中間ノードから取得された(例えば、キャプチャされたか、読み出された)1つ以上の中間ノード(及び、場合によっては複数の中間ノードの各々)についての中間データの実際の値を含む/記憶する。別の例として、いくつかの実施形態では、スパース性情報リスト300は、中間データの又は中間データ内のスパース性の平均、合計、パターン識別子等のような実際の中間データから計算又は導出された値を含む。また、スパース性情報リスト300は、トレーニング反復(複数可)の識別子、中間データが取得されたときの監視期間及び/又は監視間隔、中間データが取得された中間ノードの識別子、並びに、中間データ及び/又はスパース性のソースを識別するための他の情報等のメタデータを内部に記憶し得る。 FIG. 3 is a block diagram illustrating a sparsity monitor 206, according to some embodiments. As can be seen in FIG. 2, the sparsity monitor 206 includes a sparsity information (INFO) list 300, a sparsity processor 302, a sparsity stage calculator (CALC) 304, and a scheduler 306. Sparsity information list 300 is calculated based on intermediate data obtained from one or more intermediate nodes in the neural network for one or more training iterations and/or intermediate data for one or more training iterations. This is a functional block that stores the value. For example, in some embodiments, sparsity information list 300 includes one or more intermediate nodes obtained (e.g., captured or read) from intermediate nodes during each of one or more training iterations. Contains/stores actual values of intermediate data for the node (and possibly each of a plurality of intermediate nodes). As another example, in some embodiments, the sparsity information list 300 is calculated or derived from actual intermediate data, such as sparsity averages, sums, pattern identifiers, etc. of or within the intermediate data. Contains value. The sparsity information list 300 also includes the identifier of the training iteration(s), the monitoring period and/or monitoring interval when the intermediate data was obtained, the identifier of the intermediate node from which the intermediate data was obtained, and the intermediate data and Metadata may be stored internally, such as/or other information to identify sources of sparsity.

スパース性プロセッサ302は、1つ以上のトレーニング反復、監視間隔及び/又は監視期間中に取得された中間データを分析するための動作を実施して、中間データのスパース性特性を表す値を決定する機能ブロックである。換言すれば、スパース性プロセッサ302は、1つ以上のトレーニング反復、監視期間及び/又は監視間隔について個々の中間ノード及び/又はそのグループ(例えば、ニューラルネットワークの1つ以上の層又は領域内の中間ノード等)についてのスパース性特性を表す値を計算又は決定する。例えば、スパース性プロセッサ302は、個々の中間ノード及び/又はそのグループについての実際のスパース性(すなわち、ゼロ及び/又は別の値を出力する中間ノード)を決定し得る。別の例として、スパース性プロセッサ302は、1つ以上のトレーニング反復について、個々の中間ノード及び/又はそのグループについての中間データのスパース性の平均値、中央値又は標準値を計算し得る。上述したように、スパース性プロセッサ302は、平均値、中央値又は標準値、及び、スパース性のスパース性特性を表す他の値を計算するために使用される複数のトレーニング反復、監視期間及び/又は監視間隔に対する履歴又は過去の中間データ及び/又はこれらの中間データから計算された値をスパース性情報リスト300において維持し得る。さらに別の例として、スパース性プロセッサ302は、1つ以上のトレーニング反復、監視期間又は監視間隔中に中間データ内にゼロを出力したノードのグループ又はエリア等のスパース性のパターンを計算又は決定し得る。さらに別の例として、スパース性プロセッサ302は、2つ以上のトレーニング反復、監視期間又は監視間隔中に1つ以上の中間ノードについてのスパース性の傾向を計算又は決定し得る。さらに別の例として、スパース性プロセッサ302は、1つ以上のトレーニング反復、監視期間又は監視間隔に対して、中間ノードのグループについての中間データ内のゼロブロック比を計算又は決定し得る。 Sparsity processor 302 performs operations to analyze intermediate data obtained during one or more training iterations, monitoring intervals, and/or monitoring periods to determine values representing sparsity characteristics of the intermediate data. It is a functional block. In other words, sparsity processor 302 determines whether individual intermediate nodes and/or groups thereof (e.g., intermediate nodes within one or more layers or regions of a neural network) for one or more training iterations, monitoring periods, and/or monitoring intervals. compute or determine a value representing a sparsity property for a node (such as a node); For example, sparsity processor 302 may determine the actual sparsity for individual intermediate nodes and/or groups thereof (ie, intermediate nodes that output zero and/or another value). As another example, sparsity processor 302 may calculate a mean, median, or standard value of intermediate data sparsity for individual intermediate nodes and/or groups thereof for one or more training iterations. As discussed above, sparsity processor 302 calculates the number of training iterations, monitoring periods, and/or periods used to calculate mean, median, or standard values, and other values representative of the sparsity characteristics of the sparsity. Alternatively, historical or past intermediate data for monitoring intervals and/or values calculated from these intermediate data may be maintained in the sparsity information list 300. As yet another example, sparsity processor 302 calculates or determines a pattern of sparsity, such as a group or area of nodes that output zeros in the intermediate data during one or more training iterations, monitoring periods, or monitoring intervals. obtain. As yet another example, sparsity processor 302 may calculate or determine sparsity trends for one or more intermediate nodes during two or more training iterations, monitoring periods, or monitoring intervals. As yet another example, sparsity processor 302 may calculate or determine a zero block ratio in intermediate data for a group of intermediate nodes for one or more training iterations, monitoring periods, or monitoring intervals.

中間データを分析することに加えて、いくつかの実施形態では、スパース性プロセッサ302は、スパース性特性を表す値を含む出力を生成する。例えば、スパース性プロセッサ302は、スパース性特性及び/又はそれに基づく情報を表す値を含む1つ以上の電子ファイル、メッセージ等を生成し得る。いくつかの実施形態では、スパース性プロセッサ302は、出力を、電子デバイス200(例えば、プロセッサ202)内の1つ以上の他の機能ブロックに通信する。 In addition to analyzing intermediate data, in some embodiments sparsity processor 302 produces output that includes values representing sparsity characteristics. For example, sparsity processor 302 may generate one or more electronic files, messages, etc. that include values representing sparsity characteristics and/or information based thereon. In some embodiments, sparsity processor 302 communicates output to one or more other functional blocks within electronic device 200 (eg, processor 202).

スパース性ステージ計算機304は、1つ以上のトレーニング反復、監視期間及び/又は監視間隔に対して1つ以上の中間ノードについてのスパース性の「ステージ」を計算するための動作を実施する機能ブロックである。いくつかの実施形態では、各ステージは、可能なスパース性値のセットの中からスパース性特性の各々の値又は値の範囲を示す。例えば、いくつかの実施形態では、ステージは、10%~0%のスパース性(その結果、ゼロ又は別の特定の値が、1つ以上のトレーニング反復に対して1つ以上の中間ノードについて中間データの10%以下で発生する)に関連する第1のステージ、20%~11%のスパース性に関連する第2のステージ、30%~21%のスパース性に関連する第3のステージ等を含む。これらの実施形態では、1つ以上のトレーニング反復、監視期間又は監視間隔に対する1つ以上の中間ノードからの中間データのセットが与えられると、スパース性ステージ計算機304は、スパース性特性を表す値としてステージ値(例えば、第1のステージについては1の値、第2のステージについては2の値等)を計算することができる。したがって、いくつかの実施形態では、トレーニング反復、監視期間又は監視間隔に対するスパース性値を簡略化された値として(例えば、少ないビットで)表すことにより、スパース性を表す値の通信をより効率的にすることができる。いくつかの実施形態では、使用されるステージの数は、プロセッサ202によって利用可能な、スパース計算機構/カーネル、データ圧縮バージョン等のようなトレーニングデータの後続のインスタンスを処理する際にプロセッサ202によって生成され得る複数の変更に基づいている。 Sparsity stage calculator 304 is a functional block that performs operations to calculate a "stage" of sparsity for one or more intermediate nodes for one or more training iterations, monitoring periods, and/or monitoring intervals. be. In some embodiments, each stage indicates a value or range of values for each of the sparsity properties from a set of possible sparsity values. For example, in some embodiments, the stage has a sparsity between 10% and 0% (so that zero or another specific value is intermediate for one or more intermediate nodes for one or more training iterations). the first stage is associated with sparsity of 20% to 11%, the third stage is associated with sparsity of 30% to 21%, etc. include. In these embodiments, given a set of intermediate data from one or more intermediate nodes for one or more training iterations, monitoring periods, or monitoring intervals, the sparsity stage calculator 304 calculates a value representing the sparsity characteristic. A stage value (eg, a value of 1 for the first stage, a value of 2 for the second stage, etc.) can be calculated. Therefore, in some embodiments, representing sparsity values for training iterations, monitoring periods, or monitoring intervals as simplified values (e.g., with fewer bits) makes communicating values representing sparsity more efficient. It can be done. In some embodiments, the number of stages used is determined by the number of stages used by processor 202 in processing subsequent instances of training data, such as sparse computation mechanisms/kernels, data compressed versions, etc., available to processor 202. Based on multiple changes that can be made.

スケジューラ306は、スパース性監視装置206が中間データをいつ/どのように取得及び/又は分析するかを制御するための動作を実施する機能ブロックである。いくつかの実施形態では、スケジューラ306は、スパース性監視装置206が動作する動作モードを決定する。これらの実施形態では、スパース性が不安定である場合、すなわち、監視期間若しくは監視間隔の間で所定量を上回って変化している場合、スケジューラ306は、アクティブモードを選択することができる。このアクティブモード中、監視期間の長さは、スパース性の連続した安定性(又は、不安定性)に基づいて動的に調整される。対照的に、スパース性が安定である場合、すなわち、監視期間又は監視間隔の間で所定量を下回って変化している場合、スケジューラ306はハイバネーションモードを選択することができる。このハイバネーションモード中、監視期間の長さが最大値に維持される。アクティブモード及びハイバネーションモードについては、以下により詳細に説明する。 Scheduler 306 is a functional block that performs operations to control when/how sparsity monitor 206 obtains and/or analyzes intermediate data. In some embodiments, scheduler 306 determines the mode of operation in which sparsity monitor 206 operates. In these embodiments, scheduler 306 may select active mode if sparsity is unstable, ie, varies by more than a predetermined amount between monitoring periods or intervals. During this active mode, the length of the monitoring period is dynamically adjusted based on the continued stability (or instability) of the sparsity. In contrast, if the sparsity is stable, ie, varies less than a predetermined amount between monitoring periods or intervals, scheduler 306 may select hibernation mode. During this hibernation mode, the length of the monitoring period is maintained at a maximum value. Active mode and hibernation mode are discussed in more detail below.

スパース性監視装置206は、図3において機能ブロックの特定の構成を用いて示されているが、いくつかの実施形態では、スパース性監視装置206は、異なる数及び/又は構成の機能ブロックを含む。例えば、いくつかの実施形態では、スパース性プロセッサ302は、スパース性ステージ計算機304やスケジューラ306等の要素を含む。通常、スパース性監視装置206は、本明細書で説明する動作を実施するのに十分な機能ブロックを含む。 Although sparsity monitor 206 is illustrated with a particular configuration of functional blocks in FIG. 3, in some embodiments sparsity monitor 206 includes a different number and/or configuration of functional blocks. . For example, in some embodiments, sparsity processor 302 includes elements such as sparsity stage calculator 304 and scheduler 306. Typically, sparsity monitor 206 includes sufficient functional blocks to perform the operations described herein.

プロセッサ202及びスパース性監視装置206は図2において別々のものとして示されているが、いくつかの実施形態では、プロセッサ202は、スパース性監視装置206を含む。例えば、いくつかの実施形態では、プロセッサ202は、ニューラルネットワークアクセラレータ、すなわち、ニューラルネットワーク動作を効率的に実施するように設計され、スパース性監視装置206を含むプロセッサである。一般に、説明する実施形態では、本明細書で説明する動作を実施する任意の構成のプロセッサ202及び/又はスパース性監視装置206を使用することができる。 Although processor 202 and sparsity monitor 206 are shown as separate in FIG. 2, in some embodiments processor 202 includes sparsity monitor 206. For example, in some embodiments, processor 202 is a neural network accelerator, ie, a processor that is designed to efficiently perform neural network operations and includes sparsity monitor 206. In general, any configuration of processor 202 and/or sparsity monitor 206 that performs the operations described herein may be used in the described embodiments.

ハードウェアエンティティであるスパース性監視装置206は、特定の動作を実施するものとして説明されているが、いくつかの実施形態では、異なるエンティティが動作を実施する。例えば、いくつかの実施形態では、プロセッサ202は、スパース性監視装置206(及び、これに含まれる機能ブロック)に起因する動作のうち一部又は全てを実施する。これらの実施形態では、プロセッサ202は、プロセッサ202に動作を実施させるプログラムコードを実行し得る。 Although the hardware entity sparsity monitor 206 is described as performing certain operations, in some embodiments a different entity performs the operations. For example, in some embodiments, processor 202 performs some or all of the operations attributable to sparsity monitor 206 (and the functional blocks included therein). In these embodiments, processor 202 may execute program code that causes processor 202 to perform operations.

電子デバイス200は、特定の機能ブロック及び回路要素を含むものとして示されているが、電子デバイス200は、説明の便宜上簡略化されている。いくつかの実施形態では、電子デバイス200は、追加の若しくは異なる機能ブロック、サブシステム及び/若しくは回路要素を含み、又は、追加の若しくは異なる機能ブロック、サブシステム及び/若しくは回路要素を有するデバイスに含まれる。例えば、電子デバイス200又はデバイスは、表示サブシステム、電力サブシステム、入出力(I/O)サブシステム等を含み得る。一般に、電子デバイス200は、本明細書で説明する動作を実施するのに十分な機能ブロック等を含む。 Although electronic device 200 is shown as including certain functional blocks and circuit elements, electronic device 200 is simplified for convenience of explanation. In some embodiments, electronic device 200 includes additional or different functional blocks, subsystems, and/or circuit elements, or is included in a device that has additional or different functional blocks, subsystems, and/or circuit elements. It will be done. For example, electronic device 200 or devices may include a display subsystem, a power subsystem, an input/output (I/O) subsystem, and the like. Generally, electronic device 200 includes sufficient functional blocks, etc. to perform the operations described herein.

電子デバイス200は、コンピュータ動作を実施する任意のデバイスとすることができ、又は、そのようなデバイスに含めることができる。例えば、電子デバイス200は、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、ウェアラブルコンピューティングデバイス、タブレットコンピュータ、仮想現実若しくは拡張現実機器、スマートフォン、人工知能(AI)若しくは機械学習デバイス、ネットワークアプライアンス、玩具、視聴覚機器、家電製品、車両等、及び/又は、これらの組み合わせとすることができ若しくはこれらに含めることができる。 Electronic device 200 can be or be included in any device that performs computer operations. For example, electronic device 200 may include a server computer, a desktop computer, a laptop computer, a wearable computing device, a tablet computer, a virtual or augmented reality device, a smartphone, an artificial intelligence (AI) or machine learning device, a network appliance, a toy, an audiovisual It can be or be included in equipment, home appliances, vehicles, etc., and/or a combination thereof.

(監視期間及び監視間隔)
説明する実施形態では、スパース性監視装置(例えば、スパース性監視装置206)は、「監視期間」及び「監視間隔」を使用して、ニューラルネットワークのためのトレーニング反復に対して中間データ内のスパース性を監視する。図4は、いくつかの実施形態による、監視期間400及び監視間隔402を示すタイムライン図である。スケジューラ306は、アクティブモード中に、個々の中間ノード又はそのグループについて図4に示す監視期間及び監視間隔に類似する監視期間及び監視間隔を使用し得る。その場合、監視期間は、中間データのスパース性の安定性に基づいて動的に調整される。対照的に、ハイバネーションモード中、監視期間は、全ての中間ノードについて全て同じ長さである。
(Monitoring period and monitoring interval)
In the described embodiment, a sparsity monitor (e.g., sparsity monitor 206) uses a "monitor period" and a "monitor interval" to determine sparsity in intermediate data for training iterations for a neural network. Monitor sex. FIG. 4 is a timeline diagram illustrating a monitoring period 400 and a monitoring interval 402, according to some embodiments. Scheduler 306 may use monitoring periods and monitoring intervals similar to those shown in FIG. 4 for individual intermediate nodes or groups thereof during active mode. In that case, the monitoring period is dynamically adjusted based on the sparsity stability of the intermediate data. In contrast, during hibernation mode, the monitoring periods are all the same length for all intermediate nodes.

発生する複数回のトレーニング反復の各々に対し、対応する監視期間400の「アクティブ」部分中に発生する各監視間隔402(図4においてクロスハッチで示されている)中、スケジューラ306は、本明細書で説明するように、スパース性プロセッサ302に、最終的な分析のために1つ以上の中間ノードから中間データを取得させる。例えば、監視間隔がAmsである場合、スパース性プロセッサ302は、Ams内に発生するB回のトレーニング反復に対して1つ以上の中間ノードから中間データを取得し得る(ただし、本明細書の他の箇所で説明するように、高速終了によってこれを早く終了させてもよい)。監視期間400の残り(図4において白で示されている)について、すなわち、監視期間の「アイドル」部分中、スケジューラ306は、スパース性プロセッサ302に、中間ノードからの中間データの取得をスキップさせる。いくつかの実施形態では、スケジューラ306は、スパース性プロセッサ302及び/又はスパース性監視装置206内の他の機能ブロックに、監視期間のアイドル部分中に電力を節約し、熱の発生等を回避するために低電力動作状態に移行させる。 For each of the multiple training iterations that occur, during each monitoring interval 402 (indicated by cross-hatching in FIG. 4) that occurs during the "active" portion of the corresponding monitoring period 400, the scheduler 306 A sparsity processor 302 obtains intermediate data from one or more intermediate nodes for final analysis, as described in this paper. For example, if the monitoring interval is Ams, sparsity processor 302 may obtain intermediate data from one or more intermediate nodes for B training iterations that occur within Ams (although other This may be terminated early with fast termination, as described in section 1. For the remainder of the monitoring period 400 (shown in white in FIG. 4), i.e., during the "idle" portion of the monitoring period, the scheduler 306 causes the sparsity processor 302 to skip retrieving intermediate data from intermediate nodes. . In some embodiments, scheduler 306 directs sparsity processor 302 and/or other functional blocks within sparsity monitor 206 to conserve power, avoid heat generation, etc. during idle portions of the monitor period. to a low-power operating state.

図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倍の長さであるが、最大の監視期間値まで任意に増加した長さが使用されてもよい。 In FIG. 4, the monitoring periods 400 1 to N-1 have the same length of time and/or the same number of training repetitions, such as 1 s or 250 training repetitions, and at the beginning of each monitoring period 400 The monitoring interval 402 that occurs is a particular length of time and/or a particular number of repetitions, such as 100 ms or 50 training repetitions. During monitoring periods 1 through N-1, which may follow other/past monitoring periods (not shown), sparsity processor 302 determines that sparsity is stable and therefore the monitoring period can be increased. For example, sparsity processor 302 determines whether sparsity is determined based on intermediate data from one or more intermediate nodes for training iterations occurring during monitoring periods 1 through N-1 (and has changed by less than a predetermined amount (e.g., 5%, 10%, or another value) during the possibly earlier monitoring period (not shown) and thus the sparsity can be determined to be stable. can. Accordingly, scheduler 306 may increase the length of monitoring period 400 for one or more intermediate nodes, as indicated by monitoring period N. In FIG. 4, the monitoring period N is approximately twice as long as the monitoring period 1 to N-1, but arbitrarily increased lengths may be used up to the maximum monitoring period value.

特定の監視期間400及び監視間隔402が図4に示されているが、いくつかの実施形態では、異なる構成の監視期間及び/又は監視間隔が使用される。例えば、監視間隔402が監視期間400の開始時以外のときに発生し得る、2つ以上の監視間隔402が監視期間400毎に発生し得る等である。一般に、説明する実施形態では、本明細書で説明する動作を実施するのに十分な監視期間400及び監視間隔402が使用される。 Although a particular monitoring period 400 and monitoring interval 402 are shown in FIG. 4, different configurations of monitoring periods and/or monitoring intervals are used in some embodiments. For example, monitoring interval 402 may occur at a time other than at the beginning of monitoring period 400, more than one monitoring interval 402 may occur during each monitoring period 400, and so on. Generally, the described embodiments use a monitoring period 400 and a monitoring interval 402 that are sufficient to perform the operations described herein.

(データ及び情報の流れ)
説明する実施形態では、スパース性監視装置(例えば、スパース性監視装置206)は、中間データ内のスパース性を監視するための様々なデータ及び情報を受信し、生成する。図5は、いくつかの実施形態による、スパース性監視装置との間のデータ及び情報の流れを示すブロック図である。図5は、いくつかの実施形態の一例として示されており、他の実施形態では、異なる機能ブロックが、データ及び情報の一部又は全てを受信及び生成することに留意されたい。加えて、ニューラルネットワーク502は、ニューラルネットワーク100の表現に類似する簡略的な表現を使用して図5に示されているが、ニューラルネットワーク502は、対応するタイプ及び接続性のノードを備えた、畳み込みニューラルネットワーク、ラジアルベースのネットワーク、リカレントニューラルネットワーク等の異なる構成及び/又はタイプのノードを含み得る。
(Flow of data and information)
In the described embodiment, a sparsity monitor (eg, sparsity monitor 206) receives and generates various data and information for monitoring sparsity in intermediate data. FIG. 5 is a block diagram illustrating the flow of data and information to and from a sparsity monitor, according to some embodiments. Note that FIG. 5 is shown as an example of some embodiments; in other embodiments, different functional blocks receive and generate some or all of the data and information. Additionally, although neural network 502 is illustrated in FIG. 5 using a simplified representation similar to that of neural network 100, neural network 502 has nodes of corresponding type and connectivity. It may include different configurations and/or types of nodes, such as convolutional neural networks, radial-based networks, recurrent neural networks, etc.

図5から分かるように、プロセッサ202は、ニューラルネットワーク502のためのトレーニングプロセス中、ニューラルネットワーク502を介してトレーニングデータ500のインスタンスを処理するための動作を実施する。例えば、ニューラルネットワーク502が、特定の画像要素を含む(又は、含まない)ものとして画像を分類すると仮定すると、プロセッサ202は、ニューラルネットワークを介して画像(例えば、画像データを含むデジタルファイル)を処理して、画像要素が所定の画像内に存在するかどうかを示す出力を生成し得る。ニューラルネットワーク502を介してトレーニングデータ500のインスタンスを処理することにより、プロセッサ202は、ニューラルネットワーク内の1つ以上の中間ノード(及び、場合によっては他のノード(例えば、入力ノード))からの又はそれに関連する中間データ504を生成する。例えば、正規化線形ユニット(ReLU)等の活性化関数を有する中間ノードの場合、プロセッサは、中間ノードからの出力を生成するために、中間ノードへの対応する重み付きの入力に基づいて活性化関数を評価し得る(すなわち、活性化関数の結果を計算する)。中間ノードからの出力は、それらのノードからの又はそれらのノードに関連する中間データとして機能する。 As can be seen in FIG. 5, processor 202 performs operations to process instances of training data 500 through neural network 502 during a training process for neural network 502. For example, assuming neural network 502 classifies an image as containing (or not containing) a particular image element, processor 202 processes the image (e.g., a digital file containing image data) through the neural network. may generate an output indicating whether the image element is present within a given image. By processing an instance of training data 500 through neural network 502, processor 202 receives information from one or more intermediate nodes (and possibly other nodes (e.g., input nodes)) in the neural network Intermediate data 504 related thereto is generated. For example, for an intermediate node with an activation function, such as a Regularized Linear Unit (ReLU), the processor activates the activation function based on the corresponding weighted input to the intermediate node to generate an output from the intermediate node. The function may be evaluated (ie, the result of the activation function is computed). Outputs from intermediate nodes serve as intermediate data from or associated with those nodes.

中間データ504は、プロセッサ202からスパース性監視装置206に直接通信されることにより、又は、プロセッサ202による計算中にメモリに記憶された後にスパース性監視装置206によってメモリ204から読み出されること等によって、スパース性監視装置206によって取得される。さらに、スパース性監視装置206は、プロセッサ202(又は、電子デバイス200内の別のエンティティ)から、ニューラルネットワーク情報(INFO)508を取得する。この情報は、スパース性の計算において使用することができるニューラルネットワークに関する情報である。ニューラルネットワーク情報508は、ニューラルネットワーク502のタイプに関する情報、ニューラルネットワーク502内のノードのうち一部又は全ての数、構成/接続性及び/又は特性、ニューラルネットワーク502によって実施される特定のタスク、実施されるトレーニング反復の数、何れのトレーニングデータのインスタンスが処理されるか等の情報を含む。 Intermediate data 504 may be communicated directly from processor 202 to sparsity monitor 206 , or by being stored in memory during computation by processor 202 and then read from memory 204 by sparsity monitor 206 . Obtained by sparsity monitor 206. Additionally, sparsity monitor 206 obtains neural network information (INFO) 508 from processor 202 (or another entity within electronic device 200). This information is information about neural networks that can be used in sparsity calculations. Neural network information 508 includes information regarding the type of neural network 502, the number, configuration/connectivity and/or characteristics of some or all of the nodes within neural network 502, the specific tasks performed by neural network 502, the implementation It includes information such as the number of training iterations performed, which instances of training data are processed, etc.

スパース性監視装置206は、1つ以上のトレーニング反復、監視期間又は監視間隔に対する中間データ504、及び、ニューラルネットワーク情報508を使用して、中間データ504についてのスパース性特性510を表す値を決定する。スパース性特性を表す値を決定するために、スパース性監視装置206は、1つ以上のトレーニング反復、監視期間又は監視間隔に対し、1つ以上の中間ノードについての現在のスパース性(例えば、ゼロ若しくは別の値を出力したノード)、1つ以上の中間ノードについての平均、中央又は標準のスパース性、1つ以上の中間ノードについてのスパース性の傾向、1つ以上の中間ノードについてのスパース性のパターン、ゼロブロック比等の値を計算することができる。いくつかの実施形態では、スパース性監視装置206は、個々の中間ノード、ニューラルネットワークの層内の中間ノード等の1つ以上の中間ノードの特定のセットについてのスパース性を表す値を決定する。 Sparsity monitor 206 uses intermediate data 504 for one or more training iterations, monitoring periods or intervals, and neural network information 508 to determine a value representing a sparsity characteristic 510 for intermediate data 504. . To determine a value representing a sparsity characteristic, sparsity monitor 206 determines the current sparsity (e.g., zero sparsity) for one or more intermediate nodes for one or more training iterations, monitoring periods, or monitoring intervals. or another value), average, median or standard sparsity for one or more intermediate nodes, trend sparsity for one or more intermediate nodes, sparsity for one or more intermediate nodes patterns, zero block ratio, etc. values can be calculated. In some embodiments, sparsity monitor 206 determines a value representing sparsity for a particular set of one or more intermediate nodes, such as individual intermediate nodes, intermediate nodes within a layer of a neural network, etc.

スパース性監視装置206によって決定されたスパース性特性を表す特定の値は、スパース性が決定される中間ノード及び/又はトレーニング反復、監視期間若しくは監視間隔に依存する。例えば、いくつかの実施形態では、スパース性特性510を表す値は、数字(割合、平均等)、パターン識別子、傾向インジケータ等である。別の例として、いくつかの実施形態では、スパース性特性510を表す値は、トレーニング反復のシーケンスを示す0/1の文字列等の文字列である。この場合、1つ以上の中間ノードの各々は、ゼロ又は他の値を出力する。別の例として、いくつかの実施形態では、スパース性特性510を表す値はステージである。このステージを介して、スパース性の対応する範囲が、1つ以上の各桁によって表される。 The particular value representing the sparsity characteristic determined by the sparsity monitor 206 depends on the intermediate nodes and/or training iterations, monitoring periods, or monitoring intervals at which sparsity is determined. For example, in some embodiments, the value representing sparsity characteristic 510 is a number (percentage, average, etc.), pattern identifier, trend indicator, etc. As another example, in some embodiments, the value representing sparsity property 510 is a string, such as a 0/1 string, indicating a sequence of training iterations. In this case, each of the one or more intermediate nodes outputs zero or other values. As another example, in some embodiments the value representing sparsity property 510 is a stage. Through this stage, a corresponding range of sparsity is represented by each digit or digits.

スパース性監視装置206は、(例えば、スパース性情報リスト300を)例えば、メモリ204及び/若しくはスパース性監視装置206内のローカルメモリに記憶することができ、並びに/又は、スパース性特性を表す情報を電子デバイス200内の1つ以上の他の機能ブロックに出力することができる。例えば、いくつかの実施形態では、スパース性監視装置206は、スパース性特性を表す値を含むファイルを生成し、そのファイルを(メモリ204内の共有メモリ位置に記憶すること等によって)プロセッサ202に提供する。次に、プロセッサ202は、スパース性特性を表す1つ以上の値に少なくとも部分的に基づいて、後続のトレーニング反復を実行する1つ以上の態様を制御する。例えば、プロセッサ202は、後続のトレーニング反復に対して実施される特定のタイプの計算(例えば、もしあれば、何れのスパース性計算メカニズム/カーネル及び/又は簡略的な計算が使用されるか)を選択してもよく、後続のトレーニング反復に対してメモリ204に中間データを記憶するときに使用される圧縮を選択してもよい等である。 The sparsity monitor 206 may store (e.g., the sparsity information list 300) in, for example, the memory 204 and/or local memory within the sparsity monitor 206 and/or store information representing sparsity characteristics. may be output to one or more other functional blocks within electronic device 200. For example, in some embodiments, sparsity monitor 206 generates a file containing values representative of sparsity characteristics and sends the file to processor 202 (such as by storing it in a shared memory location within memory 204). provide. Processor 202 then controls one or more aspects of performing subsequent training iterations based at least in part on the one or more values representative of the sparsity property. For example, processor 202 may determine the particular type of computation to be performed for subsequent training iterations (e.g., which sparsity computation mechanisms/kernels and/or shorthand computations are used, if any). The compression used when storing intermediate data in memory 204 for subsequent training iterations may be selected, and so on.

いくつかの実施形態では、プロセッサ202は、何れのタイプの計算が使用中であるかに応じて、少なくともいくつかの計算回路及び/又は他の機能ブロック(若しくは、それ以外)の性能レベル(例えば、電圧及び/又は制御クロック)を使用不可、パワーダウン又は他の方法で低減する。例えば、スパース性がより高く、したがって、より多くのスパース行列計算が後続のトレーニング反復に対して使用される場合、プロセッサ202は、計算ユニット、パイプライン、メモリインターフェース要素、コントローラ及び/又は計算を実施するために使用されない他の機能ブロックを使用不可にしてもよい。 In some embodiments, processor 202 adjusts the performance level (e.g., , voltage and/or control clock) are disabled, powered down or otherwise reduced. For example, if the sparsity is higher and therefore more sparse matrix computations are used for subsequent training iterations, the processor 202 may perform the computation units, pipelines, memory interface elements, controllers and/or computations. Other functional blocks that are not used for this purpose may be disabled.

(アクティブモード及びハイバネーションモード)
いくつかの実施形態では、スパース性監視装置(例えば、スパース性監視装置206)は、ニューラルネットワークのトレーニングプロセスのトレーニング反復中に中間データのスパース性を監視する場合に、アクティブモード及びハイバネーションモードのうち一方で動作する。図6は、いくつかの実施形態による、様々な動作モード間の遷移を示す状態図である。図6から分かるように、スパース性監視装置が動作することができる状態には、オフ600、アクティブモード602及びハイバネーションモード604が含まれる。オフ600では、スパース性監視装置は、電子デバイス200がトレーニングデータのインスタンスを処理しない場合、シャットダウンされている場合、及び/又は、スパース性監視装置が低電力モード(ただし、スパース性監視装置は、少なくともいくつかの機能を保持し得る)にある場合等に、中間データ内のスパース性を監視しない。スパース性監視装置は、スパース性監視装置に電力が印加される場合等に「オン」信号を受信した場合に、スパース性の監視を始動/再始動するためにプロセッサ(例えば、プロセッサ202)から要求を受信した場合、プロセッサによってトレーニングデータのインスタンス/トレーニング反復の処理を検出した場合等に、オフ600からアクティブモード602に(又は、代替的に、いくつかの実施形態ではハイバネーションモード604に)遷移する。スパース性監視装置は、スパース性監視装置への電力がシャットオフされた場合等に「オフ」信号を受信した場合、スパース性の監視を停止させるためにプロセッサ(例えば、プロセッサ202)から要求を受信した場合、プロセッサによってトレーニングデータのインスタンス/トレーニング反復の処理を検出しなかった場合等に、アクティブモード602又はハイバネーションモード604からオフ600に遷移する。
(Active mode and hibernation mode)
In some embodiments, a sparsity monitor (e.g., sparsity monitor 206) operates in one of active and hibernation modes when monitoring sparsity of intermediate data during training iterations of a neural network training process. On the other hand it works. FIG. 6 is a state diagram illustrating transitions between various modes of operation, according to some embodiments. As can be seen in FIG. 6, the states in which the sparsity monitor can operate include off 600, active mode 602, and hibernation mode 604. Off 600, the sparsity monitor is activated when the electronic device 200 is not processing an instance of training data, is shut down, and/or when the sparsity monitor is in a low power mode (provided that the sparsity monitor is do not monitor sparsity in intermediate data, such as in cases where the data is at least capable of preserving at least some functionality. The sparsity monitor receives a request from a processor (e.g., processor 202) to start/restart sparsity monitoring when it receives an "on" signal, such as when power is applied to the sparsity monitor. transition from off 600 to active mode 602 (or, alternatively, in some embodiments to hibernation mode 604), such as upon receiving an instance of training data/processing of training iterations by the processor. . The sparsity monitor receives a request from a processor (e.g., processor 202) to stop sparsity monitoring if it receives an "off" signal, such as when power to the sparsity monitor is shut off. If so, a transition is made from active mode 602 or hibernation mode 604 to off 600, such as when the processing of an instance of training data/training iteration is not detected by the processor.

アクティブモード602では、スパース性監視装置は、異なるトレーニング反復に対する中間データが異なるレベルのスパース性(すなわち、ゼロ又は別の値を生成する中間ノードの異なる数又はパターン)を有するか又は有し得る場合等に、比較的不安定な/変化しているスパース性を監視する。スパース性が不安定である(減少している場合がある)ため、固定の監視期間は、スパース性を監視するのにあまり適していない。このため、アクティブモード602では、スパース性監視装置は、中間ノード及び/又はそのグループについての現在のスパース性及びスパース性の履歴に基づいて、中間ノード及び/又はそのグループ(例えば、ニューラルネットワークの層内の中間ノード、ニューラルネットワークのエリア内の中間ノード、特定のタイプの中間ノード等)についての監視期間を動的に調整する。 In active mode 602, the sparsity monitor determines if the intermediate data for different training iterations has or may have different levels of sparsity (i.e., different numbers or patterns of intermediate nodes producing zero or another value). etc., to monitor relatively unstable/changing sparsity. A fixed monitoring period is not well suited for monitoring sparsity because sparsity is unstable (may be decreasing). Thus, in active mode 602, the sparsity monitor determines whether an intermediate node and/or its group (e.g., a layer of a neural network) based on the current sparsity and history of sparsity for the intermediate node and/or group. Dynamically adjust the monitoring period for intermediate nodes within a neural network, intermediate nodes within an area of a neural network, intermediate nodes of a particular type, etc.).

図7は、いくつかの実施形態による、アクティブモード602でスパース性監視装置の監視期間を動的に調整する擬似コードの一例を示す図である。図7から分かるように、スパース性監視装置は、スパース性の十分な「履歴」、すなわち、1つ以上のトレーニング反復又は監視間隔に対して(及び、より具体的には、特定の数のトレーニング反復又は特定数の監視間隔に対して)1つ以上の中間ノードについてのスパース性のレコードを最初に生成する。次に、スパース性監視装置は、現在のスパース性、すなわち、スパース性の現在の値を確立する。次に、スパース性監視装置は、現在のスパース性を、履歴/過去のスパース性の特定の値(履歴のスパース性のレコード内の第1の位置として図7に示されている)と比較して、現在のスパース性が、履歴のスパース性から閾値未満離れているかどうかを判別する。すなわち、履歴のスパース性と現在のスパース性との間で、スパース性が僅かな量だけ変化した場合である。そのような場合、スパース性は安定であり、監視期間を所定の量だけ増加させる(これは、図7では2倍として示されているが、様々な増加が使用され得る)。監視期間の増加は、最大のハイバネーション監視期間に制限される。これは、通常、アクティブモード602又はハイバネーションモード604の何れかで使用される最長の監視期間である。換言すれば、スパース性がアクティブモードで比較的安定である限り、スパース性監視装置は、監視期間がハイバネーション監視期間に等しい最大長に到達するまで監視期間を定期的に増加させる。いくつかの実施形態では、図7に示されていないが、監視期間を増加させた後に監視されたスパース性が不安定であると判別した場合、監視期間は減少/短縮されてもよい(例えば、半減される、特定の量だけ低減される等)。ただし、このような減少は、監視期間がアクティブモード初期値(監視期間の最小値)に等しくなるまでしか生じない。 FIG. 7 is a diagram illustrating an example of pseudocode that dynamically adjusts the monitoring period of a sparsity monitor in active mode 602, according to some embodiments. As can be seen in Figure 7, the sparsity monitor has a sufficient "history" of sparsity, i.e., for one or more training iterations or monitoring intervals (and more specifically, for a certain number of training First generate sparsity records for one or more intermediate nodes (for an iteration or a certain number of monitoring intervals). Next, the sparsity monitor establishes the current sparsity, ie, the current value of sparsity. The sparsity monitor then compares the current sparsity with a particular value of historical/past sparsity (shown in Figure 7 as the first position in the historical sparsity record). to determine whether the current sparsity is less than a threshold away from the historical sparsity. That is, this is a case where the sparsity changes by a small amount between the history sparsity and the current sparsity. In such a case, the sparsity is stable and increases the monitoring period by a predetermined amount (this is shown as a factor of 2 in FIG. 7, but various increases may be used). Increases in the monitoring period are limited to the maximum hibernation monitoring period. This is typically the longest monitoring period used in either active mode 602 or hibernation mode 604. In other words, as long as the sparsity is relatively stable in active mode, the sparsity monitor periodically increases the monitoring period until it reaches a maximum length equal to the hibernation monitoring period. In some embodiments, although not shown in FIG. 7, if it is determined that the monitored sparsity is unstable after increasing the monitoring period, the monitoring period may be decreased/shortened (e.g. , halved, reduced by a certain amount, etc.). However, such a reduction only occurs until the monitoring period is equal to the active mode initial value (minimum value of the monitoring period).

上述したように、いくつかの実施形態では、アクティブモードにおいて、個々の中間ノードによって出力された中間データは、スパース性監視装置によって個別に監視され得る。これらの実施形態のいくつかでは、監視期間は、個々の中間ノードの分解能に設定することができる。換言すれば、異なる中間ノードは、異なる監視期間を使用して監視され得る。例えば、スパース性監視装置は、第1の監視期間を使用して第1の中間ノード又は中間ノードの第1のグループの中間データを監視してもよいし、第2の監視期間を使用して第2の中間ノード又は中間ノードの第2のグループを監視してもよい等である。これは、中間ノード内のスパース性(又は、スパース性のパターン、平均、傾向等)の検出に対するきめ細かい分解能をスパース性監視装置に提供する。 As mentioned above, in some embodiments, in active mode, intermediate data output by individual intermediate nodes may be individually monitored by a sparsity monitor. In some of these embodiments, the monitoring period can be set to the resolution of individual intermediate nodes. In other words, different intermediate nodes may be monitored using different monitoring periods. For example, the sparsity monitoring device may use a first monitoring period to monitor intermediate data of a first intermediate node or a first group of intermediate nodes, and use a second monitoring period to monitor intermediate data of a first intermediate node or a first group of intermediate nodes. A second intermediate node or a second group of intermediate nodes may be monitored, and so on. This provides the sparsity monitor with fine-grained resolution for detecting sparsity (or sparsity patterns, averages, trends, etc.) within intermediate nodes.

スパース性監視装置がアクティブモード602で動作する場合、スパース性が比較的安定であると判別すると、スパース性監視装置は、ハイバネーションモード604に遷移する。ハイバネーションモード604では、監視期間は、動的に調整されず、同じ監視期間(すなわち、ハイバネーションモード監視期間)が全ての中間ノードについて使用される。スパース性が比較的不安定である場合、すなわち、特定の量を上回って変化している場合、スパース性監視装置は、ハイバネーションモード604からアクティブモード602に遷移する。 When the sparsity monitor operates in active mode 602, upon determining that sparsity is relatively stable, the sparsity monitor transitions to hibernation mode 604. In hibernation mode 604, the monitoring period is not dynamically adjusted and the same monitoring period (ie, hibernation mode monitoring period) is used for all intermediate nodes. If the sparsity is relatively unstable, ie, changing by more than a certain amount, the sparsity monitor transitions from hibernation mode 604 to active mode 602.

図8は、いくつかの実施形態による、アクティブモードからハイバネーションモードへの遷移及びその逆の遷移の擬似コードの一例を示す図である。図8から分かるように、アクティブモードでは、スパース性監視装置は、中間データを定期的にループして、各中間データがハイバネーション監視期間を使用して監視されているかどうか、及び、データが有効であるかどうか、すなわち、初期のスパース性閾値(これは、例えば、ソフトウェア、プロセッサ等によって選択、設定又は構成される値である)よりも高いスパース性を有するかどうかを判別する。換言すれば、データが最も遅い速度(すなわち、最長/ハイバネーションモード監視期間)で既に監視されており、僅かな量だけ変化しているスパース性を有する場合である。そのような場合、スパース性監視装置は、「ハイバネーション準備有効カウント(hibernation ready valid count)」を増加させる。また、スパース性監視装置は、中間データが無効であるとマークされた場合、例えば、監視の「高速」終了が中間データに対してなされた場合(すなわち、より低いスパース性を有することに起因して、監視間隔の終了前に中間データの監視を終了させた場合)等に、「ハイバネーション準備無効(hibernation ready invalid)」カウントを増加させる。全ての中間データがハイバネーションの準備ができた場合、すなわち、ハイバネーション準備有効カウントとハイバネーション準備無効カウントとの合計が、監視された中間データの数に等しい場合に、スパース性監視装置は、ハイバネーションモード604に遷移する。しかしながら、初期状態、すなわち、全ての中間データが無効なものとしてマークされている場合には、ハイバネーションモード604に遷移しなくてもよいことに留意されたい。 FIG. 8 is a diagram illustrating an example of pseudocode for transitioning from active mode to hibernation mode and vice versa, according to some embodiments. As can be seen from Figure 8, in active mode, the sparsity monitor periodically loops through the intermediate data to determine whether each intermediate data is being monitored using the hibernation monitoring period and whether the data is valid. i.e., has sparsity higher than an initial sparsity threshold (which may be a value selected, set, or configured, e.g., by software, processor, etc.). In other words, if the data has already been monitored at the slowest rate (ie, the longest/hibernation mode monitoring period) and has a sparsity that is changing by only a small amount. In such a case, the sparsity monitor increases the "hibernation ready valid count." The sparsity monitor also detects if the intermediate data is marked invalid, e.g. if a "fast" termination of the monitor is made on the intermediate data (i.e. due to having lower sparsity). (if monitoring of intermediate data ends before the end of the monitoring interval), the "hibernation ready invalid" count is increased. If all intermediate data are ready for hibernation, that is, the sum of the hibernation-ready valid count and the hibernation-ready invalid count is equal to the number of monitored intermediate data, the sparsity monitoring device enters hibernation mode 604. Transition to. However, it should be noted that in the initial state, ie, all intermediate data is marked as invalid, there is no need to transition to hibernation mode 604.

図8の例を続けると、スパース性監視装置は、十分な中間データが取得された後に中間データが不安定なスパース性を有すると判別された場合に、ハイバネーションモード604からアクティブモード602に遷移する。アクティブモード602への遷移の一部は、監視期間を、ハイバネーションモード監視期間よりも短く、ハイバネーションモード監視期間のごく一部であり得るアクティブモード初期値に低減することである。 Continuing with the example of FIG. 8, the sparsity monitoring device transitions from hibernation mode 604 to active mode 602 if it is determined that the intermediate data has unstable sparsity after sufficient intermediate data has been acquired. . Part of the transition to active mode 602 is to reduce the monitoring period to an active mode initial value that is shorter than the hibernation mode monitoring period and may be a small portion of the hibernation mode monitoring period.

(スパース性を監視するためのプロセス)
図9は、いくつかの実施形態による、ニューラルネットワークのためのトレーニングプロセスのトレーニング反復中に中間データ内のスパース性を監視するためのプロセスを示すフローチャートである。図9に示す動作は、いくつかの実施形態によって実施される動作の一般的な例として示されていることに留意されたい。他の実施形態によって実施される動作には、異なる動作、異なる順序で実施される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実施される動作が含まれる。
(process for monitoring sparsity)
FIG. 9 is a flowchart illustrating a process for monitoring sparsity in intermediate data during training iterations of a training process for a neural network, according to some embodiments. Note that the operations shown in FIG. 9 are shown as general examples of operations performed by some embodiments. Acts performed by other embodiments may include different acts, acts performed in a different order, and/or acts performed by different entities or functional blocks.

図9では、スパース性は、トレーニングプロセス中にニューラルネットワークの「少なくともいくつかの」中間ノードについて監視される。中間ノードのうち特定の「少なくともいくつか」は、1つの中間ノードのような少数の中間ノードと、全ての中間ノードのような多数の中間ノードとを含むことができる。いくつかの実施形態では、監視される特定の中間ノードは、管理者からのコマンドに応答すること、プロセッサ(例えば、プロセッサ202)から要求を受信すること、ファームウェアを実行すること等によって、スパース性監視装置(例えば、スパース性監視装置206)によって設定される。一般に、説明する実施形態では、スパース性監視装置は、個々の中間ノード及び/又はそのグループについてのスパース性を監視することが可能である。 In FIG. 9, sparsity is monitored for "at least some" intermediate nodes of the neural network during the training process. A particular "at least some" of intermediate nodes may include a small number of intermediate nodes, such as one intermediate node, and a large number of intermediate nodes, such as all intermediate nodes. In some embodiments, a particular intermediate node that is monitored may achieve sparsity by responding to commands from an administrator, receiving requests from a processor (e.g., processor 202), running firmware, etc. Configured by a monitoring device (eg, sparsity monitoring device 206). Generally, in the described embodiments, the sparsity monitor is capable of monitoring sparsity for individual intermediate nodes and/or groups thereof.

図9の動作は、スパース性監視装置が、監視期間の監視間隔中、監視間隔中に発生するトレーニング反復中にニューラルネットワークの少なくともいくつかの中間ノードによって出力された中間データを取得する場合に開始する(ステップ900)。上述したように、中間データは、トレーニングデータのインスタンスを処理している間に、すなわち、トレーニング反復中に、ニューラルネットワークの中間(又は、「隠れ」)ノードによって出力された結果である。中間データがどのように取得されるかは、中間データを生成するプロセッサの構成に依存する。例えば、いくつかの実施形態では、中間データは、(例えば、1つ以上のメッセージ又は通信において)プロセッサからスパース性監視装置によって受信されることによって取得される。別の例として、いくつかの実施形態では、中間データは、メモリ(例えば、メモリ204)からスパース性監視装置によって読み出されることによって取得される。 The operations of FIG. 9 begin when the sparsity monitor obtains intermediate data output by at least some intermediate nodes of the neural network during training iterations occurring during the monitoring interval during the monitoring interval of the monitoring period. (step 900). As mentioned above, intermediate data is the result output by intermediate (or "hidden") nodes of a neural network while processing instances of training data, ie, during training iterations. How the intermediate data is obtained depends on the configuration of the processor that generates the intermediate data. For example, in some embodiments, intermediate data is obtained by being received by a sparsity monitor from a processor (eg, in one or more messages or communications). As another example, in some embodiments, intermediate data is obtained by being read by a sparsity monitor from memory (eg, memory 204).

次に、スパース性監視装置は、中間データに少なくとも部分的に基づいて、中間データのスパース性特性を表す1つ以上の値を生成する(ステップ902)。例えば、スパース性監視装置は、中間データを使用して、ゼロを生成した中間ノードの数又は割合を、スパース性特性を表す値として生成し得る。別の例として、スパース性監視装置は、中間データを使用して、ゼロブロック比又は別のパターン識別子を、スパース性特性を表す値として生成し得る。別の例として、スパース性監視装置は、中間ノードのうち少なくともいくつかからの過去/履歴の中間データと共に中間データを使用して、平均、傾向及び/又は他の値を、スパース性特性を表す値として生成し得る。一般に、この動作のために、スパース性監視装置は、プロセッサ及び/又は他のエンティティによって1つ以上の監視間隔の1つ以上のトレーニング反復に亘って少なくともいくつかの中間ノードについての中間データのスパース性を評価するために使用可能な値を生成する。 Next, the sparsity monitor generates one or more values representing sparsity characteristics of the intermediate data based at least in part on the intermediate data (step 902). For example, the sparsity monitor may use the intermediate data to generate the number or percentage of intermediate nodes that generated zeros as a value representative of the sparsity characteristic. As another example, the sparsity monitor may use the intermediate data to generate a zero block ratio or another pattern identifier as a value representative of the sparsity characteristic. As another example, the sparsity monitor uses the intermediate data together with past/historical intermediate data from at least some of the intermediate nodes to generate averages, trends and/or other values representative of sparsity characteristics. Can be generated as a value. Generally, for this operation, the sparsity monitor uses sparsity of intermediate data for at least some intermediate nodes over one or more training iterations of one or more monitoring intervals by a processor and/or other entity. Generate values that can be used to evaluate

次に、スパース性監視装置は、スパース性特性を表す1つ以上の値をプロセッサに送信する(ステップ904)。例えば、スパース性監視装置は、スパース性特性を表す値を含む1つ以上のメッセージを生成し、そのメッセージをプロセッサに通信し得る。別の例として、スパース性監視装置は、プロセッサと共有されるメモリ内の位置に、スパース性特性を表す1つ以上の値を記憶し得る。 Next, the sparsity monitor sends one or more values representative of the sparsity characteristic to the processor (step 904). For example, a sparsity monitor may generate one or more messages containing values representative of sparsity characteristics and communicate the messages to a processor. As another example, the sparsity monitor may store one or more values representative of sparsity characteristics in a location in memory shared with the processor.

次に、プロセッサは、スパース性特性を表す1つ以上の値に基づいて、後続のトレーニング反復を実行する1つ以上の態様を制御する(ステップ906)。例えば、プロセッサは、スパース性特性を表す1つ以上の値を使用して、後続のトレーニング反復に使用される特定の行列数値演算等の計算メカニズムを選択し得る。例えば、プロセッサは、スパース性特性を表す値が、スパース性が比較的高い(すなわち、より多くの中間ノードがゼロ又は他の値を生成している)ことを示している場合に、中間データを計算するためにブロック-スパース行列乗算を使用することを選択してもよい。別の例として、プロセッサは、スパース性特性を表す1つ以上の値を使用して、後続のトレーニング反復に対して中間データがメモリ(例えば、メモリ204)に記憶される前に、中間データに対して使用されるデータ圧縮を選択してもよい。 The processor then controls one or more aspects of performing subsequent training iterations based on the one or more values representing the sparsity characteristic (step 906). For example, a processor may use one or more values representative of sparsity characteristics to select a computational mechanism, such as a particular matrix math operation, to be used for subsequent training iterations. For example, the processor may select intermediate data if the value representing the sparsity property indicates that the sparsity is relatively high (i.e., more intermediate nodes are producing zero or other values). One may choose to use block-sparse matrix multiplication to compute. As another example, the processor uses one or more values representative of sparsity characteristics to apply to intermediate data before it is stored in memory (e.g., memory 204) for subsequent training iterations. You may select the data compression to be used for.

(アクティブモード及びハイバネーションモードを使用するためのプロセス)
図10A~図10Bは、いくつかの実施形態による、スパース性監視装置(例えば、スパース性監視装置206)においてアクティブモード及びハイバネーションモードを使用するためのプロセスを示すフローチャートである。図10A~図10Bに示す動作は、いくつかの実施形態によって実施される動作の一般的な例として示されることに留意されたい。他の実施形態によって実施される動作には、異なる動作、異なる順序で実施される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実施される動作が含まれる。
(Process for using active mode and hibernation mode)
10A-10B are flowcharts illustrating a process for using active mode and hibernation mode in a sparsity monitoring device (eg, sparsity monitoring device 206), according to some embodiments. Note that the operations shown in FIGS. 10A-10B are shown as general examples of operations performed by some embodiments. Acts performed by other embodiments may include different acts, acts performed in a different order, and/or acts performed by different entities or functional blocks.

図10A~図10Bの動作の場合、スパース性監視装置は、アクティブモードで開始すると想定されるが、これは必要条件ではない。これらの実施形態では、スパース性監視装置は、ハイバネーションモードで開始する。上述したように、さらには図10A~図10Bで示すように、アクティブモードにおいて、スパース性監視装置は、個々の中間ノード及び/又はそのグループについての監視期間の長さを変更することができる。しかしながら、ハイバネーションモードでは、全ての中間ノードで同じ固定の監視期間が使用される。 For the operation of FIGS. 10A-10B, it is assumed that the sparsity monitor starts in active mode, but this is not a requirement. In these embodiments, the sparsity monitoring device starts in hibernation mode. As discussed above, and as shown in FIGS. 10A-10B, in active mode, the sparsity monitoring device can change the length of the monitoring period for individual intermediate nodes and/or groups thereof. However, in hibernation mode, the same fixed monitoring period is used on all intermediate nodes.

図10A~図10Bの動作は、アクティブモードで動作するスパース性監視装置が、監視間隔中に1つ以上のトレーニング反復から中間データを取得する場合に開始する(ステップ1000)。この動作について、スパース性監視装置は、ニューラルネットワークを介してトレーニングデータの1つ以上の対応するインスタンスを処理するときにプロセッサによって生成された中間データを、メモリ(例えば、メモリ204)、プロセッサ(例えば、プロセッサ202)又は別のソースから取得する。 The operations of FIGS. 10A-10B begin when a sparsity monitor operating in active mode acquires intermediate data from one or more training iterations during a monitoring interval (step 1000). For this operation, the sparsity monitor transfers intermediate data generated by the processor when processing one or more corresponding instances of training data through the neural network to a memory (e.g., memory 204), a processor (e.g., , processor 202) or another source.

次に、スパース性監視装置は、スパース性監視装置がアクティブモードからハイバネーションモードに遷移することができるかどうかを判別する。これには、全ての中間ノードがハイバネーション監視モードの監視期間、すなわち最長の許容監視期間に等しい監視期間を使用して監視されているかどうか、及び、スパース性が安定である(したがって、依然として安定である)かどうかを判別することが含まれる。(ステップ1002)。例えば、スパース性監視装置は、監視間隔から監視間隔への(又は、特定のトレーニング反復から別のトレーニング反復への)各中間データ内のスパース性の変化を閾値と比較して、スパース性が特定の量よりも下回って変化したかどうか、したがって、安定であるかどうかを判別することができる。ハイバネーション監視モードの監視期間に等しい監視期間を使用して全ての中間ノードが監視されており、スパース性が十分に安定である場合(ステップ1002)、スパース性監視装置は、ハイバネーションモードに遷移する(ステップ1004)。 Next, the sparsity monitor determines whether the sparsity monitor can transition from active mode to hibernation mode. This includes whether all intermediate nodes are monitored using the hibernation monitoring mode monitoring period, i.e. a monitoring period equal to the longest allowed monitoring period, and whether the sparsity is stable (and therefore still stable). This includes determining whether there is a (Step 1002). For example, a sparsity monitor may compare the change in sparsity in each intermediate data from monitoring interval to monitoring interval (or from one training iteration to another) to a threshold to identify sparsity. It can be determined whether the amount has changed below the amount of and is therefore stable. If all intermediate nodes are monitored using a monitoring period equal to the monitoring period of the hibernation monitoring mode and the sparsity is stable enough (step 1002), the sparsity monitoring device transitions to the hibernation mode ( Step 1004).

そうではなく、少なくともいくつかの中間ノードがハイバネーション監視モードの監視期間と等しい監視期間を使用して監視されていない場合、又は、スパース性が十分に安定していない場合(ステップ1002)、スパース性監視装置は、各中間ノードについて監視期間を増加させる(又は、場合によっては減少させる)かどうかを判別する。より具体的には、中間ノード毎に順番に(ステップ1006)、スパース性監視装置は、その中間ノードについてのスパース性が、その中間ノードについての監視期間を増加させるのに十分に安定しているかどうかを判別する(ステップ1008)。例えば、スパース性監視装置は、その中間ノードのスパース性を表す現在の値とその中間ノードのスパース性を表す履歴/過去の値との差を、異なる閾値と比較し得る。スパース性が十分に安定している場合、スパース性監視装置は、その中間ノードについての監視期間の長さを増加させる(ステップ1010)。例えば、スパース性監視装置は、監視期間を2倍にしてもよいし、特定の量(の時間、トレーニング反復等)を監視期間に加算してもよい。監視期間を増加させる場合、スパース性監視装置は、ハイバネーションモード監視期間まで、これを超えることなく、監視期間を増加させる。例えば、監視期間のアクティブモード初期値を、ハイバネーションモード監視期間の長さの1/8としてもよい。これにより、(例えば、対応する監視期間中に)監視期間を2倍にすれば、中間ノードについての監視期間がハイバネーションモード監視期間に到達するまでに3つの個別の増加が許容される。対照的に、スパース性が十分に安定していない場合(ステップ1008)、スパース性監視装置は、監視期間を変更せずに(又は、監視期間がアクティブモード初期値よりも依然として長い限り、監視期間を減少させてもよい)、次の中間ノードを処理することができるようにステップ1006に戻る。最後の中間ノードが処理された場合(ステップ1006)、スパース性監視装置は、ステップ1000に戻って次のトレーニング反復から中間データを取得する。 Otherwise, if at least some intermediate nodes are not monitored using a monitoring period equal to the monitoring period of the hibernation monitoring mode, or if the sparsity is not stable enough (step 1002), then The monitoring device determines whether to increase (or possibly decrease) the monitoring period for each intermediate node. More specifically, for each intermediate node in turn (step 1006), the sparsity monitor determines whether the sparsity for that intermediate node is stable enough to increase the monitoring period for that intermediate node. (Step 1008). For example, the sparsity monitor may compare the difference between the current value representing the sparsity of the intermediate node and the historical/past value representing the sparsity of the intermediate node to different threshold values. If the sparsity is stable enough, the sparsity monitor increases the length of the monitoring period for that intermediate node (step 1010). For example, a sparsity monitor may double the monitoring period or add a certain amount (time, training repetitions, etc.) to the monitoring period. When increasing the monitoring period, the sparse monitoring device increases the monitoring period up to and without exceeding the hibernation mode monitoring period. For example, the active mode initial value of the monitoring period may be set to ⅛ of the length of the hibernation mode monitoring period. This allows three separate increases in the monitoring period for an intermediate node before reaching the hibernation mode monitoring period if the monitoring period is doubled (eg, during the corresponding monitoring period). In contrast, if the sparsity is not stable enough (step 1008), the sparsity monitor may change the monitoring period without changing the monitoring period (or as long as the monitoring period is still longer than the active mode initial value). may be decreased), the process returns to step 1006 so that the next intermediate node can be processed. If the last intermediate node has been processed (step 1006), the sparsity monitor returns to step 1000 to obtain intermediate data from the next training iteration.

ステップ1002に戻り、全ての中間ノードがハイバネーション監視モードの監視期間と等しい監視期間を使用して監視されており、スパース性が十分に安定している場合、スパース性監視装置は、ハイバネーションモードに遷移する(ステップ1004)。ハイバネーションモードでは、全ての中間ノードについてのスパース性がハイバネーションモードの監視期間を使用して監視されることを想起されたい。ハイバネーションモードでは、スパース性監視装置は、監視期間中に1つ以上のトレーニング反復から中間データを取得する(ステップ1012)。この動作について、スパース性監視装置は、ニューラルネットワークを介してトレーニングデータの1つ以上の対応するインスタンスを処理するときにプロセッサによって生成された中間データを、メモリ(例えば、メモリ204)、プロセッサ(例えば、プロセッサ202)又は別のソースから取得する。ステップ1012の監視間隔は、ステップ1000の監視間隔と比べると、異なる/後の監視間隔であることに留意されたい。 Returning to step 1002, if all intermediate nodes are being monitored using a monitoring period equal to the monitoring period of hibernation monitoring mode and the sparsity is stable enough, the sparsity monitoring device transitions to hibernation mode. (step 1004). Recall that in hibernation mode, sparsity for all intermediate nodes is monitored using the hibernation mode monitoring period. In hibernation mode, the sparsity monitor obtains intermediate data from one or more training iterations during a monitoring period (step 1012). For this operation, the sparsity monitor transfers intermediate data generated by the processor when processing one or more corresponding instances of training data through the neural network to a memory (e.g., memory 204), a processor (e.g., , processor 202) or another source. Note that the monitoring interval of step 1012 is a different/later monitoring interval compared to the monitoring interval of step 1000.

次に、スパース性監視装置は、スパース性監視装置がハイバネーションモードからアクティブモードに遷移することができるかどうかを判別する。これは、スパース性が十分に不安定であるかどうかを判別することを含む(ステップ1014)。例えば、スパース性監視装置は、監視間隔から監視間隔への(又は、特定のトレーニング反復から別のトレーニング反復への)各個の中間データ内のスパース性の変化を閾値と比較して、スパース性が特定の量よりも上回って変化したかどうか、したがって、不安定であるかどうかを判別することができる。スパース性が十分に不安定である場合(ステップ1014)、スパース性監視装置は、アクティブモード(ステップ1016)に遷移する。これは、ステップ1000に戻ってアクティブモードで次のトレーニング反復から中間データを取得することを含む。そうではなく、スパース性が依然として安定している場合、スパース性監視装置は、ステップ1012に戻って、ハイバネーションモードにおける次のトレーニング反復から中間データを取得する。 Next, the sparsity monitor determines whether the sparsity monitor can transition from hibernation mode to active mode. This includes determining whether the sparsity is sufficiently unstable (step 1014). For example, the sparsity monitor compares the change in sparsity in each individual intermediate data from monitoring interval to monitoring interval (or from one training iteration to another) to a threshold to determine the sparsity. It can be determined whether it has changed by more than a certain amount and is therefore unstable. If the sparsity is unstable enough (step 1014), the sparsity monitor transitions to active mode (step 1016). This includes returning to step 1000 to obtain intermediate data from the next training iteration in active mode. Otherwise, if the sparsity is still stable, the sparsity monitor returns to step 1012 to obtain intermediate data from the next training iteration in hibernation mode.

(監視期間の高速終了)
図11は、いくつかの実施形態による、スパース性監視装置による監視間隔の高速終了のためのプロセスを示すフローチャートである。図11に示す動作は、いくつかの実施形態によって実施される動作の一般的な例として示されていることに留意されたい。他の実施形態によって実施される動作には、異なる動作、異なる順序で実施される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実施される動作が含まれる。
(Fast end of monitoring period)
FIG. 11 is a flowchart illustrating a process for fast termination of a monitoring interval by a sparsity monitor, according to some embodiments. Note that the operations shown in FIG. 11 are shown as general examples of operations performed by some embodiments. Acts performed by other embodiments may include different acts, acts performed in a different order, and/or acts performed by different entities or functional blocks.

図11に示すプロセスは、スパース性監視装置(例えば、スパース性監視装置206)が、複数のトレーニング反復を含む監視間隔中に、複数のトレーニング反復のうち最初のトレーニング反復から中間データを取得する場合に開始する(ステップ1100)。例えば、スパース性監視装置は、(監視期間中に発生する多数のトレーニング反復のうち)第1のトレーニング反復のみから、又は、第1のいくつかのトレーニング反復から中間データを取得し得る。中間データの取得については、本明細書の他の箇所で説明する。 The process illustrated in FIG. 11 occurs when a sparsity monitor (e.g., sparsity monitor 206) obtains intermediate data from a first training iteration of the plurality of training iterations during a monitoring interval that includes multiple training iterations. (step 1100). For example, the sparsity monitor may obtain intermediate data from only the first training iteration (out of a number of training iterations that occur during the monitoring period) or from the first few training iterations. Obtaining intermediate data is described elsewhere in this specification.

次に、スパース性監視装置は、中間データがスパース性閾値未満であるかどうかを判別する(ステップ1102)。例えば、スパース性監視装置は、中間データとしてゼロを出力する中間ノードの数をカウントし、ゼロに等しい中間データの割合又は比率を計算することができる。次に、スパース性監視装置は、この割合又は比率を、特定のスパース性閾値と比較することができる。 Next, the sparsity monitoring device determines whether the intermediate data is less than a sparsity threshold (step 1102). For example, the sparsity monitor may count the number of intermediate nodes that output zero as intermediate data and calculate the proportion or proportion of intermediate data that is equal to zero. The sparsity monitor can then compare this percentage or ratio to a particular sparsity threshold.

中間データがスパース性閾値未満である(ステップ1102)、すなわち、僅かなゼロ(又は、他の値)を有し、結果として中間データのスパース性が閾値未満である(すなわち、データが比較的満たされている)場合、スパース性監視装置は、監視間隔中の中間データの処理及び取得の高速終了を行う。より具体的には、スパース性監視装置は、監視間隔中にスパース性の監視を早期に終了させることにより、最初のトレーニング反復の後のトレーニング反復に対して中間データを取得しない(ステップ1104)。このようにして監視間隔中に監視を終了させることにより、スパース性監視装置は、中間データのスパース性が低い(典型的な/完全な計算及びデータ記憶技術がプロセッサ202によって使用される)場合、中間データの取得及び処理、したがって、電力消費、計算リソース及び通信システム帯域幅の使用等を回避する。また、スパース性監視装置は、中間データについて監視間隔を早期に終了させたという指標を記憶する(ステップ1106)。例えば、スパース性監視装置は、典型的な取得及び処理が実施されなかったことを示すために、中間データを無効なものとしてマークすることができる。 The intermediate data is less than the sparsity threshold (step 1102), i.e., has a small number of zeros (or other values), such that the sparsity of the intermediate data is less than the threshold (i.e., the data is relatively full). ), the sparsity monitor provides fast termination of processing and acquisition of intermediate data during the monitoring interval. More specifically, the sparsity monitor does not acquire intermediate data for training iterations after the first training iteration by terminating sparsity monitoring early during the monitoring interval (step 1104). By terminating the monitoring during the monitoring interval in this manner, the sparsity monitoring device may Intermediate data acquisition and processing, thus avoiding power consumption, use of computational resources and communication system bandwidth, etc. The sparsity monitoring device also stores an indicator that the monitoring interval has ended early for the intermediate data (step 1106). For example, a sparsity monitor may mark intermediate data as invalid to indicate that typical acquisition and processing was not performed.

中間データがスパース性閾値を超えており(ステップ1102)、したがって、データが比較邸スパースである/より多くのゼロ(又は、他の値)を有する場合、スパース性監視装置は、監視間隔中に監視を継続する。継続することは、最初のトレーニング反復の後のトレーニング反復から中間データを取得することを含む(ステップ1108)。この場合、換言すれば、スパース性監視装置は、典型的な又は通常のスパース性監視を継続し、監視間隔の高速終了を使用しない。 If the intermediate data exceeds the sparsity threshold (step 1102) and therefore the data is comparatively sparse/has more zeros (or other values), the sparsity monitor will Continue monitoring. Continuing includes obtaining intermediate data from training iterations after the first training iteration (step 1108). In this case, in other words, the sparsity monitor continues typical or normal sparsity monitoring and does not use fast termination of the monitoring interval.

いくつかの実施形態では、電子デバイス(例えば、電子デバイス200及び/又はその一部)は、非一時的なコンピュータ可読記憶媒体に記憶されたコード及び/又はデータを使用して、本明細書で説明する動作の一部又は全てを実行する。より具体的には、電子デバイスは、コンピュータ可読記憶媒体からコード及び/又はデータを読み出し、説明した動作を実行する際にコードを実行し及び/又はデータを使用する。コンピュータ可読記憶媒体は、電子デバイスによって使用されるコード及び/又はデータを記憶する任意のデバイス、媒体又はこれらの組み合わせであってもよい。例えば、コンピュータ可読記憶媒体は、フラッシュメモリ、ランダムアクセスメモリ(例えば、eDRAM、RAM、SRAM、DRAM、DDR4 SDRAM等)、読み出し専用メモリ(ROM)、及び/又は、磁気若しくは光学記憶媒体(例えば、ディスクドライブ、磁気テープ、CD、DVD等)を含む揮発性メモリ及び/又は不揮発性メモリを含むことができるが、これらに限定されない。 In some embodiments, an electronic device (e.g., electronic device 200 and/or a portion thereof) performs operations described herein using code and/or data stored on a non-transitory computer-readable storage medium. Perform some or all of the operations described. More specifically, the electronic device reads code and/or data from a computer-readable storage medium and executes the code and/or uses the data in performing the described operations. A computer-readable storage medium may be any device, medium, or combination thereof that stores code and/or data for use by an electronic device. For example, the computer-readable storage medium may include flash memory, random access memory (e.g., eDRAM, RAM, SRAM, DRAM, DDR4 SDRAM, etc.), read-only memory (ROM), and/or magnetic or optical storage medium (e.g., disk The storage device may include volatile and/or non-volatile memory including, but not limited to, drives, magnetic tape, CDs, DVDs, etc.).

いくつかの実施形態では、1つ以上のハードウェアモジュールは、本明細書に説明される動作を実行する。例えば、ハードウェアモジュールは、1つ以上のプロセッサ/コア/中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)チップ、ニューラルネットワークプロセッサ若しくはアクセラレータ、フィールドプログラマブルゲートアレイ(FPGA)、計算ユニット、組み込みプロセッサ、グラフィックスプロセッサ(GPU)/グラフィックスコア、パイプライン、加速処理ユニット(APU)、スパース性監視装置、機能ブロック、及び/又は、他のプログラマブルロジックデバイスを含めることができるが、これらに限定されない。このようなハードウェアモジュールが起動されると、ハードウェアモジュールは、動作の一部又は全てを実行する。いくつかの実施形態では、ハードウェアモジュールは、命令(プログラムコード、ファームウェア等)を実行することによって動作を実行するように構成された1つ以上の汎用回路を含む。 In some embodiments, one or more hardware modules perform the operations described herein. For example, a hardware module may include one or more processors/cores/central processing units (CPUs), application specific integrated circuit (ASIC) chips, neural network processors or accelerators, field programmable gate arrays (FPGAs), computational units, embedded May include, but are not limited to, processors, graphics processors (GPUs)/graphics cores, pipelines, accelerated processing units (APUs), sparsity supervisors, functional blocks, and/or other programmable logic devices. . When such a hardware module is activated, it performs some or all of its operations. In some embodiments, a hardware module includes one or more general-purpose circuits configured to perform operations by executing instructions (program code, firmware, etc.).

いくつかの実施形態では、本明細書で説明する構造及びメカニズム(例えば、電子デバイス200、スパース性監視装置206、及び/又は、これらの一部)の一部又は全てを表すデータ構造は、電子デバイスによって読み出すことができ、構造及びメカニズムを含むハードウェアを製造するために直接的又は間接的に使用することができるデータベース又は他のデータ構造を含む非一時的なコンピュータ可読記憶媒体に記憶されている。例えば、データ構造は、Verilog又はVHDL等の高レベル設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、合成ツールにより読み出されてもよく、合成ツールは、記述を合成して、上述した構造及びメカニズムを含むハードウェアの機能を表すゲート/回路要素のリストを含むネットリストを、合成ライブラリから生成することができる。次に、ネットリストは、配置され、ルーティングされ、マスクに適用される幾何学形状を記述するデータセットが生成され得る。次いで、上述した構造及びメカニズムに対応する1つ以上の半導体回路(例えば、集積回路)を製造するために、様々な半導体製造ステップでマスクが使用され得る。或いは、コンピュータアクセス可能記憶媒体上のデータベースは、必要に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット又はグラフィックデータシステム(GDS)IIデータであってもよい。 In some embodiments, data structures representing some or all of the structures and mechanisms described herein (e.g., electronic device 200, sparsity monitor 206, and/or portions thereof) are electronic stored on a non-transitory computer-readable storage medium containing a database or other data structure that can be read by a device and used directly or indirectly to manufacture hardware, including structures and mechanisms; There is. For example, the data structure may be a behavioral level description or a register transfer level (RTL) description of a hardware function in a high level design language (HDL) such as Verilog or VHDL. The description may be read by a synthesis tool, which synthesizes the description and generates a netlist containing a list of gates/circuit elements representing the functionality of the hardware, including the structures and mechanisms described above, using a synthesis library. It can be generated from. The netlist may then be placed and routed to generate a dataset describing the geometry applied to the mask. The mask may then be used in various semiconductor manufacturing steps to fabricate one or more semiconductor circuits (eg, integrated circuits) corresponding to the structures and mechanisms described above. Alternatively, the database on a computer-accessible storage medium may be a netlist (with or without a synthesis library) or a dataset or Graphics Data System (GDS) II data, as appropriate.

本明細書では、変数又は不特定の値(すなわち、値の特定のインスタンスを持たない、値の一般的な説明)は、N等の文字で表されている。同様の文字が本説明の他の箇所で使用され得るが、本明細書で使用されるように、各場合における変数及び不特定の値は、必ずしも同じではなく、すなわち、一般的な変数及び不特定値の一部又は全てに対して、異なる変数量及び値が存在してもよい。言い換えると、この説明において変数及び不特定値を表すために使用されるN及び他の文字は、必ずしも互いに関連するわけではない。 Variables or unspecified values (ie, a general description of a value without a specific instance of the value) are represented herein by a letter, such as N. Although similar letters may be used elsewhere in this description, as used herein, variables and nonspecific values in each case are not necessarily the same, i.e., common variables and nonspecific values. Different variable quantities and values may exist for some or all of the specified values. In other words, N and other letters used to represent variables and unspecified values in this description are not necessarily related to each other.

本明細書で使用される「等(et cetra)」又は「等(etc.)」という表現は、「及び/又は」のケース、すなわち、「等」が関連するリスト内の要素のうち「少なくとも1つ」に相当するものを提示することを意図している。例えば、「電子デバイスは、第1の動作、第2の動作等を実行する」という文において、電子デバイスは、第1の動作、第2の動作、及び、他の動作のうち少なくとも1つを実行する。さらに、「等」に関連するリスト内の要素は、一組の実施例の中の単なる例であり、実施例の少なくともいくつかは、いくつかの実施形態では現れない場合がある。 As used herein, the expression "etc." It is intended to present the equivalent of "one". For example, in the sentence "The electronic device performs a first action, a second action, etc.", the electronic device performs at least one of the first action, the second action, and the other action. Execute. Furthermore, the elements in the list that relate to "etc." are merely examples among a set of examples, and at least some of the examples may not appear in some embodiments.

実施形態の上記の説明は、例示及び説明のためにのみ提示されている。これらは、網羅的であること、又は、実施形態を開示された形態に限定することを、意図していない。したがって、当業者は、多くの変更及び変形が明らかであろう。さらに、上記の開示は、実施形態を限定することを意図していない。実施形態の範囲は、添付の特許請求の範囲によって定義される。 The above description of embodiments has been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit the embodiments to the forms disclosed. Accordingly, many modifications and variations will be apparent to those skilled in the art. Furthermore, the above disclosure is not intended to limit the embodiments. The scope of the embodiments is defined by the following claims.

Claims (23)

ニューラルネットワークのトレーニングプロセス中にトレーニング反復を実行するように構成されたプロセッサであって、各トレーニング反復は、前記ニューラルネットワークを介してトレーニングデータの個別のインスタンスを処理することを含む、プロセッサと、
スパース性監視装置と、を備え、
前記スパース性監視装置は、
アクティブモード又はハイバネーションモードで動作し、その間に、前記ニューラルネットワークの少なくともいくつかの中間ノードによって出力された中間データのスパース性特性に基づいて、監視期間の長さを動的に調整することと、
1つ以上の監視期間の各々における監視間隔中に、各監視間隔中に発生するトレーニング反復中に前記ニューラルネットワークの少なくともいくつかの中間ノードによって出力された中間データを取得することと、
前記中間データに少なくとも部分的に基づいて、前記中間データについてのスパース性特性を表す1つ以上の値を生成することと、
前記スパース性特性を表す1つ以上の値を、前記スパース性特性を表す1つ以上の値に少なくとも部分的に基づいて後続のトレーニング反復を実行する1つ以上の態様を制御するように構成された前記プロセッサに送信することと、
を行うように構成されている、
電子デバイス。
a processor configured to perform training iterations during a neural network training process, each training iteration comprising processing a separate instance of training data through the neural network;
a sparsity monitoring device;
The sparsity monitoring device includes:
operating in active or hibernation mode, dynamically adjusting the length of the monitoring period based on sparsity characteristics of intermediate data output by at least some intermediate nodes of the neural network;
During monitoring intervals in each of one or more monitoring periods, obtaining intermediate data output by at least some intermediate nodes of the neural network during training iterations occurring during each monitoring interval;
generating one or more values representative of sparsity characteristics for the intermediate data based at least in part on the intermediate data;
one or more values representing the sparsity characteristic configured to control one or more aspects of performing subsequent training iterations based at least in part on the one or more values representing the sparsity characteristic. transmitting the information to the processor;
is configured to do
electronic device.
前記スパース性監視装置は、前記アクティブモードで動作している間、
前記中間ノードのうち少なくともいくつかの中間ノード毎に、2つ以上の監視間隔からの前記スパース性特性を表す1つ以上の値に基づいて、前記スパース性特性が前記2つ以上の監視間隔の間でアクティブモード閾値量を上回って変化したかどうかを判別することと、
前記スパース性特性が前記閾値量を上回って変化しておらず、これにより前記スパース性が安定である場合に、その中間ノードについての後続の監視期間についての監視期間の長さを増加させることであって、前記監視期間の長さは、ハイバネーションモード監視期間の最大の長さまで増加される、ことと、
を行うように構成されている、
請求項1の電子デバイス。
While operating in the active mode, the sparsity monitoring device:
For each at least some of said intermediate nodes, said sparsity characteristic of said two or more monitoring intervals is determined based on one or more values representative of said sparsity characteristic from said two or more monitoring intervals. determining whether the active mode has changed by more than an active mode threshold amount between;
increasing the length of a monitoring period for a subsequent monitoring period for that intermediate node if the sparsity property has not changed by more than the threshold amount, such that the sparsity is stable; the length of the monitoring period is increased to a maximum length of a hibernation mode monitoring period;
is configured to do
The electronic device of claim 1.
前記スパース性特性が、中間ノードについて前記閾値量を上回って変化しており、これにより前記スパース性が不安定である場合に、前記監視期間の現在の長さを保持すること、又は、その中間ノードについての後続の監視期間についての監視期間の長さを減少させることであって、前記監視期間の長さは、最小のアクティブモード初期値まで減少される、ことを行うように構成されている、
請求項2の電子デバイス。
retaining the current length of the monitoring period if the sparsity characteristic has changed by more than the threshold amount for an intermediate node, thereby making the sparsity unstable; reducing the length of a monitoring period for a subsequent monitoring period for the node, wherein the length of the monitoring period is reduced to a minimum active mode initial value; ,
The electronic device of claim 2.
前記後続の監視期間についての監視期間の長さを増加させることは、異なる中間ノードが前記アクティブモードにおいて異なる監視期間を有することができるように、前記ニューラルネットワーク内の個々の中間ノードについての監視期間の長さを個別に増加させることを含む、
請求項2の電子デバイス。
Increasing the length of the monitoring period for said subsequent monitoring periods increases the monitoring period for individual intermediate nodes in said neural network such that different intermediate nodes can have different monitoring periods in said active mode. including individually increasing the length of
The electronic device of claim 2.
前記スパース性監視装置は、前記アクティブモードで動作している間に、
前記監視期間の長さが、前記中間ノードのうち少なくともいくつかの全てについて前記ハイバネーションモード監視期間の長さに増加されており、前記中間ノードのうち少なくともいくつかの各々によって出力された中間データが中間データスパース性閾値未満である場合に、前記スパース性監視装置をハイバネーションモードに遷移させることを行うように構成されており、
前記スパース性監視装置は、前記ハイバネーションモードにおいて、全ての中間ノードについての監視期間の長さを、前記ハイバネーションモード監視期間の長さに留める、
請求項2の電子デバイス。
While operating in the active mode, the sparsity monitoring device:
The length of the monitoring period is increased to the length of the hibernation mode monitoring period for all of the at least some of the intermediate nodes, and the intermediate data output by each of the at least some of the intermediate nodes is configured to cause the sparsity monitoring device to transition to hibernation mode when the intermediate data sparsity threshold is below;
In the hibernation mode, the sparsity monitoring device keeps the length of the monitoring period for all intermediate nodes to the length of the hibernation mode monitoring period.
The electronic device of claim 2.
前記スパース性監視装置は、前記ハイバネーションモードで動作している間に、
前記中間ノードのうち少なくともいくつかの中間ノード毎に、2つ以上の監視間隔からの前記スパース性特性を表す1つ以上の値に基づいて、前記スパース性特性が前記2つ以上の監視間隔の間で前記アクティブモード閾値量を上回って変化したかどうかを判別することと、
前記スパース性特性が、特定数の中間ノードについて前記閾値量を上回って変化しており、これにより前記スパース性が不安定である場合に、前記スパース性監視装置を前記アクティブモードに遷移させることであって、前記遷移させることは、前記監視期間の長さを、前記ハイバネーションモード監視期間よりも短いアクティブモード初期値に減少させることを含む、ことと、
を行うように構成されている、
請求項5の電子デバイス。
While operating in the hibernation mode, the sparsity monitoring device:
For each at least some of said intermediate nodes, said sparsity characteristic of said two or more monitoring intervals is determined based on one or more values representative of said sparsity characteristic from said two or more monitoring intervals. determining whether the active mode has changed by more than the active mode threshold amount between;
transitioning the sparsity monitor to the active mode if the sparsity characteristic changes by more than the threshold amount for a certain number of intermediate nodes, thereby making the sparsity unstable; and the transitioning includes reducing the length of the monitoring period to an active mode initial value that is shorter than the hibernation mode monitoring period;
is configured to do
The electronic device according to claim 5.
前記スパース性監視装置は、
前記中間ノードのうち少なくともいくつかの中間ノードについて、前記スパース性特性を表す値のうち1つ以上がスパース性閾値未満であり、これにより前記中間データがスパースではない場合に、その中間ノードについての現在の監視間隔を早期に終了させることによって、前記現在の監視間隔中に発生する前記トレーニング反復のうち少なくともいくつかの間にその中間ノードによって出力された前記中間データを取得しないように構成されている、
請求項1の電子デバイス。
The sparsity monitoring device includes:
For at least some of the intermediate nodes, one or more of the values representing the sparsity characteristic is less than the sparsity threshold, such that the intermediate data is not sparse. configured not to obtain the intermediate data output by the intermediate node during at least some of the training iterations occurring during the current monitoring interval by terminating the current monitoring interval early;
The electronic device of claim 1.
前記中間データについてのスパース性特性を表す1つ以上の値を生成することは、1つ以上の監視間隔中に発生する2つ以上のトレーニング反復から取得された中間データを平均化することを含む、
請求項1の電子デバイス。
Generating one or more values representative of sparsity characteristics for the intermediate data includes averaging intermediate data obtained from two or more training iterations occurring during one or more monitoring intervals. ,
The electronic device of claim 1.
前記後続のトレーニング反復を実行する1つ以上の態様を制御することは、
前記スパース性特性を表す1つ以上の値がより高いスパース性を示す場合に、中間データを含む動作のために簡略化された計算を使用するように前記後続のトレーニング反復を構成することを含む、
請求項1の電子デバイス。
Controlling one or more aspects of performing the subsequent training iterations comprises:
configuring the subsequent training iterations to use simplified calculations for operations involving intermediate data when the one or more values representative of the sparsity characteristic indicate higher sparsity. ,
The electronic device of claim 1.
前記後続のトレーニング反復を実行する1つ以上の態様を制御することは、
前記スパース性特性を表す1つ以上の値がより高いスパース性を示す場合に、トレーニング反復中に前記中間データをメモリに記憶するために縮小又は圧縮データフォーマットを使用するように前記プロセッサを構成することを含む、
請求項1の電子デバイス。
Controlling one or more aspects of performing the subsequent training iterations comprises:
configuring the processor to use a reduced or compressed data format to store the intermediate data in memory during training iterations if one or more values representative of the sparsity characteristic indicate higher sparsity; including
The electronic device of claim 1.
前記中間データのスパース性特性を表す1つ以上の値は、複数のステージから選択された1つ以上のステージを含み、
前記複数のステージの各ステージは、前記中間データについての可能なスパース性値の範囲の対応する異なる部分を示す、
請求項1の電子デバイス。
the one or more values representing sparsity characteristics of the intermediate data include one or more stages selected from a plurality of stages;
each stage of the plurality of stages indicates a corresponding different portion of a range of possible sparsity values for the intermediate data;
The electronic device of claim 1.
前記スパース性特性を表す1つ以上の値は、2つ以上のトレーニングインスタンスについての前記中間データのスパース性の傾向又はパターンを含む、
請求項1の電子デバイス。
the one or more values representative of the sparsity characteristic include trends or patterns in the sparsity of the intermediate data for two or more training instances;
The electronic device of claim 1.
前記スパース性特性を表す1つ以上の値は、1つ以上のトレーニングインスタンスについての前記中間データのゼロブロック比を含む、
請求項1の電子デバイス。
the one or more values representative of the sparsity characteristic include a zero block ratio of the intermediate data for one or more training instances;
The electronic device of claim 1.
ニューラルネットワークのトレーニングプロセス中にトレーニング反復を実行するように構成されたプロセッサであって、各トレーニング反復は、前記ニューラルネットワークを介してトレーニングデータの個別のインスタンスを処理することを含む、プロセッサと、スパース性監視装置と、を備える電子デバイスにおいて、中間データ内のスパース性を監視するための方法であって、
前記スパース性監視装置が、アクティブモード又はハイバネーションモードで動作し、その間に、前記ニューラルネットワークの少なくともいくつかの中間ノードによって出力された中間データのスパース性特性に基づいて、監視期間の長さを動的に調整することと、
前記スパース性監視装置が、1つ以上の監視期間の各々における監視間隔中に、各監視間隔中に発生するトレーニング反復中に前記ニューラルネットワークの少なくともいくつかの中間ノードによって出力された中間データを取得することと、
前記スパース性監視装置が、前記中間データに少なくとも部分的に基づいて、前記中間データについてのスパース性特性を表す1つ以上の値を生成することと、
前記スパース性監視装置が、前記スパース性特性を表す1つ以上の値を、前記スパース性特性を表す1つ以上の値に少なくとも部分的に基づいて後続のトレーニング反復を実行する1つ以上の態様を制御するように構成された前記プロセッサに送信することと、を含む、
方法。
a processor configured to perform training iterations during a neural network training process, each training iteration comprising processing a separate instance of training data through the neural network; A method for monitoring sparsity in intermediate data in an electronic device comprising:
The sparsity monitoring device operates in an active mode or a hibernation mode, while adjusting the length of the monitoring period based on sparsity characteristics of intermediate data output by at least some intermediate nodes of the neural network. to adjust the
the sparsity monitoring device obtains, during monitoring intervals in each of one or more monitoring periods, intermediate data output by at least some intermediate nodes of the neural network during training iterations occurring during each monitoring interval; to do and
the sparsity monitor generating one or more values representative of sparsity characteristics for the intermediate data based at least in part on the intermediate data;
One or more aspects wherein the sparsity monitor performs subsequent training iterations based at least in part on the one or more values representing the sparsity characteristic. to the processor configured to control the
Method.
前記スパース性監視装置が、前記アクティブモードで動作している間に、
前記中間ノードのうち少なくともいくつかの中間ノード毎に、2つ以上の監視間隔からの前記スパース性特性を表す1つ以上の値に基づいて、前記スパース性特性が前記2つ以上の監視間隔の間でアクティブモード閾値量を上回って変化したかどうかを判別することと、
前記スパース性特性が前記閾値量を上回って変化しておらず、これにより前記スパース性が安定である場合に、その中間ノードについての後続の監視期間についての監視期間の長さを増加させることであって、前記監視期間の長さは、ハイバネーションモード監視期間の最大の長さまで増加される、ことと、を行う、ことをさらに含む、
請求項14の方法。
While the sparsity monitoring device is operating in the active mode,
For each at least some of said intermediate nodes, said sparsity characteristic of said two or more monitoring intervals is determined based on one or more values representative of said sparsity characteristic from said two or more monitoring intervals. determining whether the active mode has changed by more than an active mode threshold amount between;
increasing the length of a monitoring period for a subsequent monitoring period for that intermediate node if the sparsity property has not changed by more than the threshold amount, such that the sparsity is stable; and the length of the monitoring period is increased to a maximum length of a hibernation mode monitoring period.
15. The method of claim 14.
前記後続の監視期間についての監視期間の長さを増加させることは、異なる中間ノードが前記アクティブモードにおいて異なる監視期間を有することができるように、前記ニューラルネットワーク内の個々の中間ノードについての監視期間の長さを個別に増加させることを含む、
請求項15の方法。
Increasing the length of the monitoring period for said subsequent monitoring periods increases the monitoring period for individual intermediate nodes in said neural network such that different intermediate nodes can have different monitoring periods in said active mode. including individually increasing the length of
16. The method of claim 15.
前記スパース性監視装置が、前記アクティブモードで動作している間に、
前記監視期間の長さが、前記中間ノードのうち少なくともいくつかの全てについて前記ハイバネーションモード監視期間の長さに増加されており、前記中間ノードのうち前記少なくともいくつかの各々によって出力された中間データが中間データスパース性閾値未満である場合に、前記スパース性監視装置をハイバネーションモードに遷移させることをさらに含み、
前記スパース性監視装置は、全ての中間ノードについての監視期間の長さを、前記ハイバネーションモード監視期間の長さに留める、
請求項15の方法。
While the sparsity monitoring device is operating in the active mode,
the length of the monitoring period is increased to the length of the hibernation mode monitoring period for all of the at least some of the intermediate nodes, and intermediate data output by each of the at least some of the intermediate nodes; is less than an intermediate data sparsity threshold, further comprising transitioning the sparsity monitoring device to a hibernation mode;
The sparsity monitoring device keeps the length of the monitoring period for all intermediate nodes to the length of the hibernation mode monitoring period.
16. The method of claim 15.
前記スパース性監視装置が、前記ハイバネーションモードで動作している間に、
前記中間ノードのうち少なくともいくつかの中間ノード毎に、2つ以上の監視間隔からの前記スパース性特性を表す1つ以上の値に基づいて、前記スパース性特性が前記2つ以上の監視間隔の間で前記アクティブモード閾値量を上回って変化したかどうかを判別することと、
前記スパース性特性が、特定数の中間ノードについて前記閾値量を上回って変化しており、これにより前記スパース性が不安定である場合に、前記スパース性監視装置を前記アクティブモードに遷移させることであって、前記遷移させることは、前記監視期間の長さを、前記ハイバネーションモード監視期間よりも短いアクティブモード初期値に減少させることを含む、ことと、をさらに含む、
請求項17の方法。
While the sparsity monitoring device is operating in the hibernation mode,
For each at least some of said intermediate nodes, said sparsity characteristic of said two or more monitoring intervals is determined based on one or more values representative of said sparsity characteristic from said two or more monitoring intervals. determining whether the active mode has changed by more than the active mode threshold amount between;
transitioning the sparsity monitor to the active mode if the sparsity characteristic changes by more than the threshold amount for a certain number of intermediate nodes, thereby making the sparsity unstable; The transition further comprises: reducing the length of the monitoring period to an active mode initial value that is shorter than the hibernation mode monitoring period.
18. The method of claim 17.
前記スパース性監視装置が、
前記中間ノードのうち少なくともいくつかの中間ノードについて、前記スパース性特性を表す値のうち1つ以上がスパース性閾値未満であり、これにより前記中間データがスパースではない場合に、その中間ノードについての現在の監視間隔を早期に終了させることによって、前記現在の監視間隔中に発生する前記トレーニング反復のうち少なくともいくつかの間にその中間ノードによって出力された前記中間データを取得しないことをさらに含む、
請求項14の方法。
The sparsity monitoring device includes:
For at least some of the intermediate nodes, one or more of the values representing the sparsity characteristic is less than the sparsity threshold, such that the intermediate data is not sparse. further comprising not retrieving the intermediate data output by the intermediate node during at least some of the training iterations occurring during the current monitoring interval by terminating the current monitoring interval early;
15. The method of claim 14.
前記中間データについてのスパース性特性を表す1つ以上の値を生成することは、1つ以上の監視間隔中に発生する2つ以上のトレーニング反復から取得された中間データを平均化することを含む、
請求項14の方法。
Generating one or more values representative of sparsity characteristics for the intermediate data includes averaging intermediate data obtained from two or more training iterations occurring during one or more monitoring intervals. ,
15. The method of claim 14.
前記後続のトレーニング反復を実行する1つ以上の態様を制御することは、
前記スパース性特性を表す1つ以上の値がより高いスパース性を示す場合に、中間データを含む動作のために簡略化された計算を使用するように前記後続のトレーニング反復を構成することを含む、
請求項14の方法。
Controlling one or more aspects of performing the subsequent training iterations comprises:
configuring the subsequent training iterations to use simplified calculations for operations involving intermediate data when the one or more values representative of the sparsity characteristic indicate higher sparsity. ,
15. The method of claim 14.
前記後続のトレーニング反復を実行する1つ以上の態様を制御することは、
前記スパース性特性を表す1つ以上の値がより高いスパース性を示す場合に、トレーニング反復中に前記中間データをメモリに記憶するために縮小又は圧縮データフォーマットを使用するように前記プロセッサを構成することを含む、
請求項14の方法。
Controlling one or more aspects of performing the subsequent training iterations comprises:
configuring the processor to use a reduced or compressed data format to store the intermediate data in memory during training iterations if one or more values representative of the sparsity characteristic indicate higher sparsity; including
15. The method of claim 14.
前記中間データのスパース性特性を表す1つ以上の値は、複数のステージから選択された1つ以上のステージを含み、
前記複数のステージの各ステージは、前記中間データについての可能なスパース性値の範囲の対応する異なる部分を示す、
請求項14の方法。
the one or more values representing sparsity characteristics of the intermediate data include one or more stages selected from a plurality of stages;
each stage of the plurality of stages indicates a corresponding different portion of a range of possible sparsity values for the intermediate data;
15. The method of claim 14.
JP2023139625A 2019-04-29 2023-08-30 Data sparsity monitoring during neural network training Pending JP2023162348A (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/397,283 US11562248B2 (en) 2019-04-29 2019-04-29 Data sparsity monitoring during neural network training
US16/397,283 2019-04-29
JP2021536382A JP7342128B2 (en) 2019-04-29 2020-04-29 Monitoring data sparsity while training neural networks
PCT/US2020/030359 WO2020223278A1 (en) 2019-04-29 2020-04-29 Data sparsity monitoring during neural network training

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2021536382A Division JP7342128B2 (en) 2019-04-29 2020-04-29 Monitoring data sparsity while training neural networks

Publications (1)

Publication Number Publication Date
JP2023162348A true JP2023162348A (en) 2023-11-08

Family

ID=72917098

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2021536382A Active JP7342128B2 (en) 2019-04-29 2020-04-29 Monitoring data sparsity while training neural networks
JP2023139625A Pending JP2023162348A (en) 2019-04-29 2023-08-30 Data sparsity monitoring during neural network training

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2021536382A Active JP7342128B2 (en) 2019-04-29 2020-04-29 Monitoring data sparsity while training neural networks

Country Status (6)

Country Link
US (1) US11562248B2 (en)
EP (1) EP3963515A4 (en)
JP (2) JP7342128B2 (en)
KR (1) KR20210148072A (en)
CN (1) CN113228060A (en)
WO (1) WO2020223278A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11955167B2 (en) * 2021-01-14 2024-04-09 Northwestern University Computing-in-memory accelerator design with dynamic analog RAM cell and associated low power techniques with sparsity management

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700552B2 (en) * 2011-11-28 2014-04-15 Microsoft Corporation Exploiting sparseness in training deep neural networks
US9507833B2 (en) * 2012-05-29 2016-11-29 Sas Institute Inc. Systems and methods for quantile determination in a distributed data system
JP6083300B2 (en) * 2013-03-29 2017-02-22 富士通株式会社 Program, parallel operation method, and information processing apparatus
US9728184B2 (en) * 2013-06-18 2017-08-08 Microsoft Technology Licensing, Llc Restructuring deep neural network acoustic models
JP6327926B2 (en) * 2014-04-30 2018-05-23 国立研究開発法人情報通信研究機構 Hierarchical neural network learning system and method
US20150324688A1 (en) * 2014-05-12 2015-11-12 Qualcomm Incorporated Customized classifier over common features
US10614798B2 (en) * 2016-07-29 2020-04-07 Arizona Board Of Regents On Behalf Of Arizona State University Memory compression in a deep neural network
US20180181864A1 (en) 2016-12-27 2018-06-28 Texas Instruments Incorporated Sparsified Training of Convolutional Neural Networks
US10871964B2 (en) * 2016-12-29 2020-12-22 Qualcomm Incorporated Architecture for sparse neural network acceleration
US11308045B2 (en) * 2017-07-04 2022-04-19 Nec Corporation Information processing apparatus, control method, and program
CN107688850B (en) 2017-08-08 2021-04-13 赛灵思公司 Deep neural network compression method
US20190081637A1 (en) * 2017-09-08 2019-03-14 Nvidia Corporation Data inspection for compression/decompression configuration and data type determination
US10366322B2 (en) * 2017-10-06 2019-07-30 DeepCube LTD. System and method for compact and efficient sparse neural networks
US10482156B2 (en) * 2017-12-29 2019-11-19 Facebook, Inc. Sparsity-aware hardware accelerators
US11645529B2 (en) * 2018-05-01 2023-05-09 Hewlett Packard Enterprise Development Lp Sparsifying neural network models
US11403528B2 (en) * 2018-05-31 2022-08-02 Kneron (Taiwan) Co., Ltd. Self-tuning incremental model compression solution in deep neural network with guaranteed accuracy performance
US20200226473A1 (en) * 2019-01-15 2020-07-16 BigStream Solutions, Inc. Systems, apparatus, methods, and architectures for heterogeneous precision acceleration of quantized neural networks

Also Published As

Publication number Publication date
US20200342327A1 (en) 2020-10-29
JP7342128B2 (en) 2023-09-11
EP3963515A1 (en) 2022-03-09
KR20210148072A (en) 2021-12-07
US11562248B2 (en) 2023-01-24
WO2020223278A1 (en) 2020-11-05
CN113228060A (en) 2021-08-06
EP3963515A4 (en) 2023-01-25
JP2022536567A (en) 2022-08-18

Similar Documents

Publication Publication Date Title
US11481637B2 (en) Configuring computational elements for performing a training operation for a generative adversarial network
Chen et al. ReGAN: A pipelined ReRAM-based accelerator for generative adversarial networks
US11226741B2 (en) I/O behavior prediction based on long-term pattern recognition
KR102483639B1 (en) Method for extending structure of neural network, method of dimension reduction, and apparatus thereof
CN111492381A (en) Simultaneous training of functional subnetworks of a neural network
JP2023162348A (en) Data sparsity monitoring during neural network training
WO2018228424A1 (en) Method and device for training neural network
BR112021009042A2 (en) automated generation of machine learning models
US11853594B2 (en) Neural network computing chip and computing method
US20200151572A1 (en) Using Multiple Functional Blocks for Training Neural Networks
US20200257982A1 (en) Categorical feature encoding for property graphs by vertex proximity
JP7319271B2 (en) Electronic device activation function functional block
CN113826117A (en) Efficient binary representation from neural networks
US20220076095A1 (en) Multi-level sparse neural networks with dynamic rerouting
CN113553150A (en) Cloud server cluster load prediction method, system, terminal and storage medium
WO2020133492A1 (en) Neural network compression method and apparatus
TWI758223B (en) Computing method with dynamic minibatch sizes and computing system and computer-readable storage media for performing the same
US20190354852A1 (en) Stress indicators associated with instances of input data for training neural networks
CN116185568A (en) Container expansion method and device, electronic equipment and storage medium
CN117999560A (en) Hardware-aware progressive training of machine learning models
JP2020155010A (en) Neural network model compaction device
WO2022197615A1 (en) Techniques for adaptive generation and visualization of quantized neural networks
Salamat Fast and Energy Efficient Big Data Processing on FPGAs
KR102641629B1 (en) Method and system for processing data using transformer based on explainable artificial intelligence
JP7454888B1 (en) Method and device for reducing the weight of neural network models using hardware characteristics

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230831