Dynamic activation sparsity in neural networks

By partitioning and encoding zero-value activations in neural network layers, the method addresses memory bottlenecks and computational inefficiencies, enhancing AI hardware performance and efficiency.

JP7731444B2Active Publication Date: 2025-08-29APPLIED MATERIALS INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2023573163
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-05-25
Filing Date
2022-05-24
Publication Date
2025-08-29
Estimated Expiration
2042-05-24

AI Technical Summary

Technical Problem

Traditional neural network hardware accelerators struggle to leverage dynamic activation sparsity due to its unpredictable and non-uniform distribution, leading to memory bottlenecks and computational inefficiencies, especially in deep learning models with large input tensors.

Method used

A method and system for inducing structured sparsity in neural network layer outputs by partitioning them into multiple partitions, identifying zero-value partitions, and generating encodings to discard or treat them as zero, thereby optimizing memory and computational resources.

Benefits of technology

This approach reduces activation memory usage by up to 40% and computational complexity, improving performance and power efficiency in AI hardware, especially in edge devices with limited resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007731444000001
    Figure 0007731444000001
  • Figure 0007731444000002
    Figure 0007731444000002
  • Figure 0007731444000003
    Figure 0007731444000003
Patent Text Reader

Abstract

A method of inducing sparsity in an output of a neural network layer may include receiving an output from a layer of a neural network, partitioning the output into a plurality of partitions, identifying a first partition in the plurality of partitions that may be treated as having a zero value, generating an encoding that identifies a location of the first partition among remaining second partitions in the plurality of partitions, and sending the encoding and the second partition to a subsequent layer in the neural network.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of and priority to U.S. Non-Provisional Application No. 17 / 330,096, filed May 25, 2021, and entitled "DYNAMIC ACTIVATION SPARSITY IN NEURAL NETWORKS," the entire contents of which are incorporated herein by reference for all purposes.

[0002] This disclosure generally describes inducing sparsity during neural network computation to reduce memory bottlenecks. In particular, this disclosure describes methods and systems for partitioning layer outputs and inducing sparsity for each partition. [Background technology]

[0003] A neural network can generally be defined as a series of sequential processes that identify underlying relationships in a set of input data. Neural networks process information in a manner that models the way the human mind works. Thus, intermediate stages within a neural network may use computational elements called neurons. Connections between neurons act like synapses in biological systems, transmitting intermediate computations between neuronal layers. The output of each neuron may be calculated using different types of functions that combine different synaptic inputs. Synapses may be weighted at each neuron's input, and these weights may be set using a training process. Neural networks are trained by processing example data with known outcomes to form probability-weighted associations between inputs and outputs stored within the network's own data structure. Training may occur in a supervised learning environment using training data, or training may occur unsupervised using input data received during use.

[0004] Computer hardware is designed to optimize the processing of input data through neural network functions. For example, a neural network compiler may receive a code-based definition of a neural network and generate instructions for one or more computational nodes in a hardware neural network accelerator. The computational nodes on the accelerator may include individual chiplets or other computational blocks that efficiently process neural network operations in parallel. The output from each layer of a neural network may be stored in a temporary buffer or on-chip memory after intermediate results are received and then passed to subsequent layers in the neural network. However, as the computational demands and input sizes of modern neural networks continue to increase, memory storage between layers is quickly becoming a serious bottleneck, and the demands for parallel processing are becoming difficult to manage. Therefore, improvements in this technology are needed. Summary of the Invention

[0005] In some embodiments, a method of inducing sparsity in an output of a neural network layer may include receiving an output from a layer of the neural network, partitioning the output into a plurality of partitions, identifying a first partition in the plurality of partitions that may be treated as having a zero value, generating an encoding that identifies a location of the first partition among remaining second partitions in the plurality of partitions, and sending the encoding and the second partition to a subsequent layer in the neural network.

[0006] In some embodiments, a neural network accelerator may include a computational node configured to implement a layer of a neural network and generate an output from the layer, and a partition circuit configured to perform processing including receiving an output from the layer of the neural network, partitioning the output into a plurality of partitions, identifying a first partition in the plurality of partitions that may be treated as having a zero value, and generating an encoding that identifies a location of the first partition among remaining second partitions in the plurality of partitions. The neural network accelerator may also include a memory configured to store the encoding and the second partition for a subsequent layer in the neural network.

[0007] In some embodiments, a method for inducing sparsity in an output of a neural network layer may include receiving an output from a layer of the neural network and partitioning the output into a plurality of partitions, each of the plurality of partitions including a plurality of outputs. The method may also include identifying a first partition in the plurality of partitions that satisfies a criterion indicating that values ​​in the first partition may be set to zero, generating an encoding that identifies a location of the first partition among remaining second partitions in the plurality of partitions, sending the encoding and the second partition to a subsequent layer in the neural network and discarding the first partition, receiving the second partition at the subsequent layer in the neural network, placing the second partition with zero values ​​based on the encoding, and executing the subsequent layer in the neural network.

[0008] In any embodiment, any and all of the following features may be implemented in any combination, without limitation. The method / process may also include receiving a second partition in a subsequent layer in the neural network and arranging the second partition based on the encoding. The subsequent layer may perform a multiplication operation, whereby the first partition may be discarded as a multiply-by-zero operation. The output may include a three-dimensional array of outputs from the layer, the array of outputs including dimensions for different channels in the neural network. The multiple partitions may include a three-dimensional partition of the array of outputs. The first partition need not be contiguous among the multiple partitions. Identifying a first partition among the multiple partitions that may be treated as having a zero value may include receiving a criterion from the design environment and applying the criterion to each of the multiple partitions. The criterion may include a relative magnitude function that calculates a sum over the values ​​in the partition and sets the values ​​in the partition to zero if the sum is less than a threshold. The criterion may be sent from the design environment as a runtime function. The criterion may be encoded as part of a graph representing the neural network. The neural network accelerator may also include a plurality of chiplets, where the computational node may be implemented on a first chiplet among the plurality of chiplets, and the subsequent layer may be implemented on a second chiplet among the plurality of chiplets. The neural network accelerator may also include a sequencer circuit configured to perform processing, where the processing includes receiving a second partition in a subsequent layer in the neural network and arranging the second partition based on the encoding. The layer of the neural network may include executing a convolution core. The memory may include on-chip static random access memory (SRAM). The partition circuit need not be used when training the neural network. The number of partitions in the plurality of partitions may be determined during training of the neural network. Identifying a first partition among the plurality of partitions that may be treated as having a zero value may include receiving a criterion from a design environment and applying the criterion to each of the plurality of partitions.The output may include a three-dimensional array of outputs from the layer, the array of outputs may include dimensions for different channels in the neural network, and the multiple partitions may include three-dimensional partitions of the array of outputs.

[0009] A further understanding of the nature and advantages of various embodiments may be realized by reference to the remaining portions of the specification and the drawings, in which like reference numerals are used throughout the several views to refer to like components. In some instances, a sub-label is associated with a reference numeral to indicate one of multiple similar components. When reference is made to a reference numeral without specification to an existing sub-label, it is intended to refer to all such multiple similar components. [Brief explanation of the drawings]

[0010] [Figure 1] FIG. 1 shows a graph of computational scaling for different neural network architectures or models. [Figure 2] FIG. 1 shows a chart of activation density distribution for each channel in an exemplary neural network. [Figure 3] FIG. 1 is a diagram of a combined algorithm-hardware approach for optimally exploiting activation sparsity, according to some embodiments. [Figure 4] FIG. 1 illustrates a general neural network accelerator, according to some embodiments. [Figure 5] FIG. 1 illustrates an improved neural network accelerator that induces sparsity, according to some embodiments. [Figure 6] FIG. 1 illustrates an example of how a convolution filter may generate a multi-dimensional output array that may be partitioned by partitioning circuits, according to some embodiments. [Figure 7] FIG. 10 illustrates how the output tensor can be partitioned in any dimension. [Figure 8]FIG. 10 illustrates the improvement that partition-induced sparsity provides over random sparsity found in the output activation map, according to some embodiments. [Figure 9] FIG. 1 illustrates a multi-tile or AI chiplet architecture, according to some embodiments. [Figure 10] 1 is a flowchart of a method for inducing sparsity in the output of a neural network layer, according to some embodiments. [Figure 11] FIG. 1 illustrates an exemplary computer system in which various embodiments may be implemented. DETAILED DESCRIPTION OF THE INVENTION

[0011] Artificial intelligence (AI) continues to become more ubiquitous. As the use of AI becomes more widespread, it is enabling new use cases that were previously considered too complex. This increasing adoption of AI across many different disciplines is driving performance requirements needed from both AI hardware and AI software. For example, new algorithms continue to solve more complex use cases from computer vision (CV) and natural language processing (NLP), stretching demands for increased computing power and memory storage beyond what can be supported by traditional process scaling alone. Future improvements to the efficiency of AI systems will likely result not only in innovations to hardware, software, training, etc., but also innovations that influence each other at different levels of the technology stack.

[0012] FIG. 1 shows a graph 100 of computational scaling for different neural network architectures or models. This graph 100 summarizes the computational growth for different CV and NLP neural network models in recent years. Note that the growth in computational requirements for CV, NLP, and / or speech recognition is rapidly outpacing the natural growth in computational power resulting from Moore's Law. This discrepancy becomes even more pronounced when considering transformer-based neural networks, whose computational requirements are growing at an even faster rate. While the absolute floating-point operations (FLOPS) metric depicted in FIG. 1 pertains specifically to neural network training, the overall computational scaling trend is the same for both training and inference computations performed by neural networks. The demand for performance scaling illustrated in FIG. 1 becomes even more pronounced when using smart edge devices with limited computational power compared to computations performed on data centers or cloud platforms.

[0013] It is clear that traditional computing and memory scaling will be unable to support the growing demands and adoption of AI in the future. While there is ongoing work on different parts of the AI ​​stack, from neural network algorithms to hardware implementations, the majority of these efforts are static in nature. Existing optimization efforts often center around parameter-based model compression approaches, such as quantization or pruning. Alternatively, optimization efforts have focused solely on the algorithmic level, such as knowledge distillation or low-rank factorization. While these individual methods individually offer reduced memory and computational usage, their overall efficiency is limited due to tradeoffs between the coarse level of optimization and accuracy that restrict these improvements to specific input datasets or models.

[0014] Performance demands worsen as models become deeper with more internal layers and input tensors whose sizes continue to scale upward. For example, a ResNet-152 model may contain 152 internal layers, the input tensors may contain high-resolution images, and the inputs may be patched from multiple sources, such as multiple camera streams. For these large datasets, activation memory size becomes the main bottleneck, exceeding even the parameter memory size that stores the weights and parameters for the neural network. As used herein, parameter memory refers to the storage of weights and parameters for the neural network itself, while activation memory refers to the dynamic input and output of tensors flowing through the neural network. Traditional model compression techniques, such as quantization and weight pruning, focus only on parameter memory, not activation memory, and therefore leave this bottleneck unresolved.

[0015] A general solution for resolving the activation memory bottleneck has not currently been found in neural network technology. Specifically, because most neural networks use some form of nonlinearity (e.g., ReLU, Sigmoid, Tanh, etc.) as part of each layer, the activation output from each layer has a naturally occurring level of sparsity. That is, these activation functions tend to zero out many values, including negative values, when they are executed. However, this sparsity is dynamic. Unlike the sparsity in parameter weights in neural networks, this sparsity is different for each input tensor, making the location of such sparsity impossible to predict at design time. This makes leveraging dynamic activation sparsity extremely difficult in hardware, and conventional hardware accelerators do not support this type of optimization.

[0016] FIG. 2 shows a chart 200 of activation density distributions for each channel in an exemplary neural network. The data in chart 200 is taken from VGG-16, a popular image classification neural network based on a convolutional architecture. Each channel on the y-axis represents a unique neural network layer, and each dot on chart 200 represents the density per channel. It can be observed that the activation distributions are highly irregular and non-uniform for channels across most layers in the neural network. That is, the sparsity in different channels is unpredictable and highly dependent on the runtime input. Furthermore, chart 200 reveals another challenge arising from the non-uniform dynamic distribution of sparsity, referred to herein as the "tail worker" effect. Specifically, the tail worker effect limits the overall speed to the slowest or "tail" worker. This creates limited benefit for leveraging activation sparsity to improve performance, as most hardware accelerators divide or split neural network layers into multiple smaller kernels that run in parallel on parallel processing elements.

[0017] Similarly, the unpredictable distribution of sparsity in activation outputs limits the memory savings that can be achieved by removing zero values. Specifically, when sparse zero values ​​are removed from an activation map, the encoding of each of the removed elements still needs to be preserved. That is, the encoding specifying which zero elements were removed must be preserved so that the original set of outputs can be reconstructed as input to a subsequent layer. This means that memory savings are unlikely to be achieved without at least 50% sparsity, and activation tensors below this threshold may actually result in increased memory usage and bandwidth.

[0018] The embodiments described herein propose a general architectural framework and a comprehensive algorithm-hardware approach for leveraging dynamic activation sparsity in neural networks. This architecture introduces and induces "structured sparsity" (e.g., layer outputs) in activation feature maps, where the structure of sparsity is tailored to the fundamental execution units of the architecture by creating partitions at the layer outputs. For example, each execution unit, including SIMD operations, VLIW operations, systolic array operations, convolution engine operations, MAC operations, etc., may have a tailored partition type and size. Each of these different operations may also have individual criteria used to induce sparsity and set the entire partition to zero. Using this structure, tailored to the fundamental configuration of the corresponding execution units at the algorithm and framework level, can generate optimal design points to target in order to optimize computational usage, memory capacity, and interconnect bandwidth.

[0019] The sparse partitions do not need to be stored in memory between activation layers. In addition to memory savings, computational processing involving sparse activations may also be eliminated. For example, inputs to compute nodes that multiply, and input tensors with specific weights, may be eliminated when the entire input tensor is set to zero, and thus this computational processing may be skipped entirely in subsequent layers. This may result in a significant reduction in the computational complexity of neural networks. Furthermore, with the slowing of Moore's Law and the adoption of heterogeneous chiplet-based solutions to support the growing computational needs of AI, these embodiments that leverage activation sparsity can relieve bandwidth pressure on on-package interconnects. This enables near-monolithic-like scaling of AI workloads on chiplet-based architectures, despite the reduced density inherent in on-package interconnects and these designs.

[0020] FIG. 3 shows a diagram 300 of a combined algorithm-hardware approach for optimally exploiting activation sparsity, according to some embodiments. The architecture may include a deep learning framework 302. The deep learning framework may include a user interface and libraries / tools that allow users to easily build deep learning models. Examples of deep learning frameworks 302 may include TensorFlow®, PyTorch®, Keras®, Sonnet®, and / or other commercially available tools. The deep learning framework may draw from pre-trained models, user-defined models, and / or sample datasets to develop new neural networks for specific applications.

[0021] Some embodiments may add a custom library 304, referred to herein as "PartitionDropout," which may integrate with deep learning framework 302. The PartitionDropout dropout library may be used with pre-trained models, or models may be trained with PartitionDropout added to the design. The library 304 allows neural network designers to evaluate optimal partition size, computation, memory capacity, and / or bandwidth reduction tradeoffs during the design process.

[0022] The PartitionDropout library can be used to add code for configuring additional hardware elements in AI hardware to induce sparsity in the activation maps of various layers. For example, this library 304 may allow a user to specify partitions of various sizes and shapes for the output from a layer. Additionally, the library 304 may allow a neural network designer to specify a criterion or function that determines or identifies partitions in a layer output that can be treated as having a zero value. These two parameters (i.e., the partitioning scheme and the criterion) can be set experimentally or chosen by the neural network designer.

[0023] For example, some embodiments may process sample data with a neural network using a list of possible partition sizes and structures. The resulting simulated output may then be characterized in terms of bandwidth, computation, and / or memory savings as a tradeoff with accuracy compared to simulated results using other partition sizes / structures. An optimal partition size / structure may then be selected from the simulated results. Similarly, the criteria used may be simulated using different thresholds to identify an optimal inflection point in the tradeoff between accuracy and resulting hardware efficiency. For example, a magnitude-based criterion may calculate a sum over the values ​​in a partition and, if the sum is less than a threshold, set all values ​​in the partition to 0. This threshold may be adjusted up / down during simulation to find the optimal value.

[0024] Per-network or per-layer metadata may need to be communicated to the underlying hardware for the hardware to implement the schemes designed in the deep learning framework described above. For example, selected criteria and thresholds, along with partition sizes or structures, may need to be communicated from the deep learning framework 302 to the hardware 310. The architecture 300 provides several different ways to provide this communication. In some embodiments, the compiler may incorporate the partitions and / or criteria into the neural network graph 306 that is sent to the hardware 310. The compiled neural network graph 306 may include instructions for performing the processing of a PartitionDropout layer after the computational layers have executed. For example, the partition circuitry that executes after the computational processing of a layer in a neural network may be treated by the compiler as part of the neural network, and instructions for generating partitions and executing criteria to induce sparsity may be implemented as part of the neural network graph 306. Alternatively, some embodiments may deliver a neural network runtime that includes the PartitionDropout instruction set architecture (ISA). The neural network runtime 308 can be sent to hardware 310 to separately program partitioned circuits in an AI accelerator or other hardware.

[0025] Finally, the hardware 310 may execute the graph with the PartitionDropout partitioning and / or criteria described above. For example, the hardware 310 may include a multi-tile or AI chiplet solution, where neural networks or layers are distributed across different AI tiles or chiplets. As described below, the hardware 310 may include circuits that implement the criteria and / or partitioning functions specified in the deep learning framework 302. These partitioning circuits may be included after any and / or all layers implemented by the compute nodes in the hardware 310.

[0026] FIG. 4 illustrates a general neural network accelerator 400 according to some embodiments. The architecture may include on-chip SRAM 404 and / or off-chip memory 402. These memories may store input and output tensors as they propagate through various layers of the neural network. An execution unit 406 may perform one or more of the processing for one or more layers of the neural network. In this example, the execution unit 406 may include an internal input buffer 408 that receives input tensors from a previous computational node or from an input to the neural network. The input buffer 408 may include a filter with partial spatial and channel dimensions, and in some cases, a filter with partial spatial and channel dimensions. The input buffer 408 may provide tensors to a computational core or computational node 410 that performs one or more operations on the input tensors received from the input buffer 408. For example, the computational node 410 may perform a convolution operation and may be implemented using a floating-point multiply-accumulate (FMA) engine. The output of the computational node 410 may be passed to an output buffer 412. The output buffer may accumulate the convolution results from the computational nodes 410. The partial sums generated by the computational nodes 410 may be propagated from the output buffer 412 into the on-chip SRAM 404 and onto the off-chip memory 402.

[0027] 5 illustrates an improved neural network accelerator 500 for inducing sparsity, according to some embodiments. This neural network accelerator 500 may include the components described above for the neural network accelerator 400 of FIG. 4. However, this neural network accelerator 500 may also include a partitioning circuit 504 configured to generate sparsity at the output of the compute nodes 410, along with a sequencer circuit 502 configured to sequence the inputs when sparse partitions are removed. The partitioning circuit 504 and the sequencer circuit 502 may be programmed using a neural network graph and / or using metadata from a runtime provided by a deep learning framework, as described above.

[0028] The partitioning circuit 504 may receive output from a layer of a neural network. The layer may be implemented by a computational node 410 and may perform different mathematical functions, such as activation functions, convolution functions, etc. The output from the computational node 410 may be received and / or accumulated in an output buffer 412. The partitioning circuit 504 may then perform several actions. First, the partitioning circuit 504 may partition the output into multiple different partitions. The partition structure / size may be determined in a deep learning framework and passed to the partitioning circuit 504 described above. Examples of how activation map tensors may be partitioned are provided below. Note that partitioning the output into multiple partitions does not necessarily require that actual values ​​or memory elements be moved or modified. Instead, the partitioning circuit 504 may identify the partitions as groups of values ​​according to a predetermined partition size / structure and perform criteria or otherwise handle each partition together as a single entity.

[0029] The partition circuit may also identify partitions within the plurality of partitions that may be treated as having zero values. This operation may be performed in several different ways. In some embodiments, a criterion received from a deep learning framework may be performed on each partition. The purpose of the criterion may be to determine whether the partition as a whole contains sufficiently small values ​​that the partition may be treated as having only zero values. For example, if the values ​​in a 2x2x6 partition have an overall sum less than 0.1, all of the values ​​in that partition may be treated as zero. Note that this disclosure does not limit the type of criterion that may be used. One example of a criterion is a criterion that sums the values ​​in each partition, compares the summed values ​​to a threshold, and treats the partition as having zero values ​​if the sum is below the threshold. Other embodiments may use different criteria. Also, note that a criterion may be performed alone or in conjunction with other criteria as a set of criteria. Thus, where a single criterion is referenced, multiple criteria may also be performed on a partition in any combination.

[0030] Treating a partition as having zero values ​​may involve writing actual zero values ​​(e.g., 0.0) to each of the memory locations in the partition. This process may overwrite values ​​previously stored as the output of the computational node 410. This may be a lossy procedure that may result in some loss of accuracy. However, neural network processing can tolerate small losses of accuracy in intermediate layers. This process is also distinguishable from activation functions or other functions performed on individual memory locations one by one. Instead of comparing a single value to a threshold and setting that value to zero, this operation sets the values ​​of the entire partition to zero (or treats those values ​​as zero). Thus, a relatively large number of non-zero values ​​in a single location may be set to zero in the partition if the criteria for the partition dictate so.

[0031] In some embodiments, treating a partition as having a zero value does not require writing actual zero values ​​to the partition's storage locations. Instead, the partition may be treated as having zero values. For example, the partition may be discarded and not passed to subsequent layers or to the on-chip SRAM 404 layer. Regardless of whether actual zero values ​​are written to the partition's memory locations, these partitions may be discarded when storing the output to memory. For example, when storing the partitions to memory, the partition circuit 504 may generate an encoding that identifies the locations of the partitions in the overall output array that are treated as having zero values. For example, a binary string may be generated with a single bit associated with each partition. A zero value may indicate that the partition should be treated as having a zero value, and a one value may indicate that the partition should be treated as having a non-zero value that is stored in memory. Instead of storing all of the partitions in memory, a first set of partitions that are treated as having zero values ​​(the "first partition") may be discarded, and a second set of partitions that have non-zero values ​​(the "second partition") may be stored in memory. This encoding can produce significant memory savings and reduce memory bottlenecks that arise from extremely large output tensors. For example, a 3D output array divided into 25 partitions can induce sparsity in, for example, 10 of those partitions. Instead of storing 25 partitions filled with values, partition circuit 504 only needs to store 15 partitions with 25-bit strings that encode the output.

[0032] Some embodiments induced an average sparsity of 40% in each layer. As explained above, when this sparsity is induced in partitions, it results in a 40% savings in activation memory. In edge devices with constraints on on-chip memory resources, this reduction can directly translate into performance savings in off-chip and off-chip memory bandwidth. This improves memory access time by minimizing the number of memory transfers for each operation, improving the overall processing speed of the neural network.

[0033] The partitioning circuit 504 may send the encoding and the second set of partitions having non-zero values ​​to memory (e.g., on-chip SRAM 404). Alternatively, the partitioning circuit 504 may send the output directly to another input buffer 408 of a subsequent layer or computational node in the neural network.

[0034] When a subsequent layer receives the encoded tensor from the partition circuit 504, the sequencer circuit 502 can decode the tensor and provide a second set of partitions in the appropriate locations for processing. The sparse-formatted tensor can be read, and control logic in the sequencer circuit 502 can select different partitions to be sent to this or other execution units. For example, the sequencer circuit 502 can read the encoding and insert partitions filled with zero values ​​into the input tensor as needed. The sequencer circuit 502 can reassemble the tensor into the expected size so that non-zero values ​​appear in the expected order in the expected locations of the input tensor.

[0035] In addition to saving memory bandwidth, this partitioning may eliminate some of the computational operations performed by the neural network accelerator 500. In some embodiments, individual partitions may be sent to different execution units 406. If an operation receives a partition set to a zero value or should otherwise be treated as having a zero value, the operation may potentially be deleted. For example, if an operation in a computational node includes a multiplication operation, a zero partition may cause the output of the operation to become zero. Thus, instead of actually performing the operation, a zero output may be generated without performing the multiplication operation, and the corresponding computation stage may be deleted. In the case of discontinuous tensors, the respective output buffers may be selected based on the input tensor structure in the encoding. This control logic in the sequencer circuit 502 may perform this processing.

[0036] Figure 6 shows an example of how a filter in a convolution operation, according to some embodiments, may generate a multidimensional output array that may be partitioned by a partitioning circuit. The activation function's input tensor 602 may have spatial dimensions of H x W (height x width) with multiple input channels C, thus resulting in a three-dimensional input array. The spatial convolution may be performed by the activation function using multiple filters 604, each of which may have dimensions R x S with the same number of channels C as the input tensor 602. The activation function may apply K different filters during the convolution operation. The resulting output tensor 606 may be characterized as a P x Q two-dimensional array for each of the K filters 604.

[0037] FIG. 7 illustrates how the output tensor 606 can be partitioned in any dimension. Note that the partitioning splits the output tensor 606 into both the spatial and channel dimensions, resulting in 2D or 3D partitioning. Note that the partitioning shown in FIG. 7 is provided by way of example only and is not limiting. The partitions can have any structure or size. Note also that as different partitions are designed, the communication patterns between different computational nodes in the neural network accelerator will change. For example, as the partitioning changes, the locations to which some partitions should be sent as blocks in the neural network may also change based on the individual design of the neural network. This routing information can also be provided from the deep learning framework to the hardware components of the neural network accelerator so that the partitions are routed to the correct locations.

[0038] After applying the criteria and inducing sparsity on the various partitions in the output tensor 606, the partition circuit may reduce the 18 partitions in the output tensor 606 to four non-sparse partitions 702. The metadata 704 may store the encoding so that the original output tensor 606 can be represented / recreated, and the non-sparse partitions 702 can be sent to the correct compute node. The encoding in the metadata 704 may also be used to generate sparse partitions if needed for some subsequent layer processing.

[0039] Figure 8 illustrates the improvement that partition-induced sparsity provides over the random sparsity found in output activation maps, according to some embodiments. While some regularization techniques (e.g., L1 / L2, dropout, etc.) or modified activation functions (e.g., FATReLU) have been shown to increase activation sparsity, the sparsity induced by these functions is still inherently random and difficult to exploit by system-level architectures, as illustrated by activation map 802 using these standard dropout techniques. The new hidden layers (partitioning and sequencer circuits) introduced herein provide a structured dropout technique that can be used to enforce a certain percentage of activation maps to be completely sparse. This new layer is designed to be deterministic and is applied during training and / or inference. For example, in the magnitude-based criteria described above, an activation map may first be divided into a grid of contiguous partitions cut across the spatial and / or channel dimensions, as illustrated by activation map 804 using a partitioned dropout technique, where each partition is treated as having a zero value and may be dropped or retained in its entirety based on the rank of the activation magnitude. While this may reduce accuracy in some cases, this is not necessarily the case. In some cases, partitioned sparsity has been shown to obtain better validation accuracy compared to activation map 802 using standard sparsity. This indicates that partitioned dropout provides more effective regularization in addition to enabling the hardware acceleration described above.

[0040] Figure 9 illustrates a multi-tile or AI chiplet architecture according to some embodiments. In addition to reducing memory usage and reducing compute usage, the Partition Dropout architecture for neural network accelerators can also yield significant savings on interconnect bandwidth when scaling across multiple AI dies, tiles, or chiplets. While chiplets solve the scaling and cost issues inherent in large monolithic dies, they generally do not offer the same level of interconnect density and power efficiency as monolithic dies, and therefore, decomposing coherent blocks such as AI accelerators may result in lower compute scaling compared to monolithic solutions. However, the architecture described herein relieves bandwidth pressure on the interconnect between multiple AI dies, tiles, or chiplets. This also improves the performance and power efficiency of scaling AI computing across many different AI chiplets.

[0041] FIG. 9 shows one such example using multiple AI tiles, chiplets, or dies arranged in a 2D mesh topology. In this example, each vertical column may split across the K dimensions described above in FIGS. 6-7. For example, tile (0,0) may include filters for K=0-15, tile (0,1) may include filters K=16-31, and so on. Each horizontal row in the architecture splits across the C dimension, so that HCW0-63 may be broadcast for all columns in row 0, HCW64-127 may be broadcast for all columns in row 1, and so on. This may result in each row of a single column producing partial sums with their respective K splits. These may all be reduced within a single column to reduce the partial output tensor PKQ split among the various columns. Thus, the output of each column represents a portion of the total output tensor, which may be concatenated to form the complete output.

[0042] Each AI tile, die, or chiplet, represented as a node in Figure 9, may be implemented to use the neural network accelerator architecture 500 in Figure 5. Thus, the output of each node may be reduced because the partition is treated as having a zero value and drops out as it propagates through the interconnect between tiles. This results in significant interconnect bandwidth savings in both the input and output dimensions.

[0043] 10 shows a flowchart 1000 of a method for inducing sparsity in the output of a neural network layer, according to some embodiments. This method may be performed by the neural network accelerator 500 shown in FIG. 5 above. Furthermore, the partition size / structure, the criteria used, and the routing between different nodes implementing the neural network accelerator may be programmed in the deep learning environment or framework described in FIG. 3.

[0044] The method may include receiving 1002 an output from a layer of the neural network. The output may be received by a layer added between computational layers of the neural network. This additional layer may be implemented using the partitioning circuitry and / or ordering circuitry described above. The output from the layer may be received directly from the computational node and / or from an output buffer that receives and / or accumulates values ​​from the computational node.

[0045] The method may also include partitioning the output into multiple partitions (1004). Any type, size, structure, or topology of partitions may be used. The partitions may be defined in a deep learning framework and passed to the neural network accelerator as encoding within the neural network graph or as runtime metadata that programs additional layers. The partitioning may occur across spatial and / or channel dimensions, resulting in 2D and / or 3D partitions.

[0046] The method may further include identifying 1006 a first partition among the plurality of partitions that may be treated as having a zero value. The first partition may be identified by performing a criterion on each partition as a whole. For example, the criterion may be magnitude-based, comparing a sum of the values ​​in the partition to a threshold to determine whether all values ​​in the partition as a whole should be treated as zero. Treating values ​​as zero may involve setting the actual values ​​in the tensor to zero, or the partition treated as zero may be discarded or dropped out rather than being stored or propagated to subsequent layers.

[0047] The method may further include generating 1008 an encoding that identifies a location of the first partition among remaining second partitions in the plurality of partitions. The encoding may identify first partitions that should be treated as having zero values ​​and their relative location in the output tensor, along with second partitions that are treated as having non-zero values. The encoding may be stored with the second partitions and / or passed to a subsequent layer or computational node in the neural network. The method may then also include sending 1010 the encoding and second partitions to a subsequent layer in the neural network.

[0048] It should be appreciated that the specific steps illustrated in FIG. 10 provide a particular method for inducing sparsity in the output of a neural network layer according to various embodiments. Other sequences of steps may be performed according to alternative embodiments. For example, alternative embodiments may perform the steps outlined above in a different order. Moreover, the individual steps illustrated in FIG. 10 may include multiple sub-steps that may be performed in various sequences as appropriate for the individual step. Furthermore, additional steps may be added or removed depending on the particular application. Many variations, modifications, and alternatives are within the scope of the present disclosure.

[0049] Each of the methods described herein may be implemented by a computer system. For example, a deep learning framework may be executed on a computing system. Each step of these methods may be performed automatically by the computer system and / or may be provided with input / output involving a user. For example, a user may provide inputs for each step in the method, each of which may be in response to a particular output requesting such input, and the output is generated by the computer system. Each input may be received in response to a corresponding requested output. Furthermore, inputs may be received from a user as a data stream from another computer system, retrieved from a memory location, retrieved over a network, requested from a web service, etc. Similarly, outputs may be provided to a user as a data stream to another computer system, stored in a memory location, sent over a network, provided to a web service, etc. In short, each step of the methods described herein may be performed by a computer system and may involve any number of inputs, outputs, and / or requests to and from the computer system, which may or may not involve a user. Steps that do not involve a user may be said to be performed automatically by a computer system without human intervention. Accordingly, in light of this disclosure, it will be understood that each step of each method described herein may be modified to include input and output to and from a user, or may be performed automatically by a computer system without human intervention, with any decisions made by a processor. Furthermore, some embodiments of each of the methods described herein may be implemented as a set of instructions stored on a tangible, non-transitory storage medium to form a tangible software product.

[0050] 11 illustrates an exemplary computer system 1100 upon which various embodiments may be implemented. System 1100 may be used to implement any of the computer systems described above. As shown in the figure, computer system 1100 includes a processing unit 1104 that communicates with several peripheral subsystems via a bus subsystem 1102. These peripheral subsystems may include a processing acceleration unit 1106, an I / O subsystem 1108, a storage subsystem 1118, and a communication subsystem 1124. Storage subsystem 1118 includes a tangible computer-readable storage medium 1122 and a system memory 1110.

[0051] Bus subsystem 1102 provides a mechanism for allowing the various components and subsystems of computer system 1100 to communicate with each other as intended. While bus subsystem 1102 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. Bus subsystem 1102 may be any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. For example, such architectures include the Industry Standard Architecture (ISA) bus, the MicroChannel Architecture (MCA) bus, the Enhanced ISA (EISA) bus, the Video Electronics Standards Association (VESA) local bus, and the Peripheral Component Interconnect (PCI) bus, which may be implemented as a mezzanine bus manufactured to the IEEE P1386.1 standard.

[0052] Processing unit 1104, which may be implemented as one or more integrated circuits (e.g., conventional microprocessors or microcontrollers), controls the processing of computer system 1100. One or more processors may be included in processing unit 1104. These processors may include single-core or multi-core processors. In some embodiments, processing unit 1104 may be implemented as one or more independent processing units 1132 and / or 1134, with a single or multi-core processor included in each processing unit. In other embodiments, processing unit 1104 may also be implemented as a quad-core processing unit formed by integrating two dual-core processors on a single chip.

[0053] In various embodiments, processing unit 1104 may execute various programs in response to program code and may maintain multiple simultaneously executing programs or processes. At a given time, some or all of the program code to be executed may reside in processor(s) 1104 and / or in storage subsystem 1118. Through suitable programming, processor(s) 1104 may provide the various functions described above. Computer system 1100 may further include a processing acceleration unit 1106, which may include a digital signal processor (DSP), a special purpose processor, or the like.

[0054] The I / O subsystem 1108 may include user interface input devices and user interface output devices. User interface input devices may include a keyboard, a pointing device such as a mouse or trackball, a touchpad or a touchscreen integrated into a display, a scroll wheel, a click wheel, a dial, a button, a switch, a keypad, an audio input device with a voice command recognition system, a microphone, and other types of input devices. User interface input devices may include, for example, a motion-sensing and / or gesture recognition device such as a Microsoft Kinect® motion sensor that allows a user to control and interact with an input device such as a Microsoft Xbox® 360 game controller through a natural user interface using gestures and spoken commands. User interface input devices may also include an eye gesture recognition device such as a Google Glass® blink detector that detects eye activity from a user (e.g., “blinking” while taking a picture and / or making a menu selection) and translates the eye gesture as input to an input device (e.g., Google Glass®). Additionally, the user interface input devices may include a voice recognition sensing device that allows a user to interact with a voice recognition system (e.g., Siri® Navigator) through voice commands.

[0055] User interface input devices may include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, gamepads, and graphic tablets, as well as audio / visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers, 3D scanners, 3D printers, laser range finders, and eye-tracking devices. Furthermore, user interface input devices may include medical imaging input devices, such as computed tomography, magnetic resonance imaging, positional emission tomography, and medical ultrasound. User interface input devices may also include audio input devices, such as MIDI keyboards and digital musical instruments.

[0056] User interface output devices may include a display subsystem, indicator lights, or non-visual displays such as audio output devices. The display subsystem may be a flat-panel device such as one using a cathode ray tube (CRT), a liquid crystal display (LCD), or a plasma display, a projection device, a touch screen, etc. In general, use of the term "output device" is intended to include all conceivable types of devices and mechanisms for outputting information from computer system 1100 to a user or to another computer. For example, user interface output devices may include various display devices that visually convey text, graphics, and audio / video information, such as, but not limited to, monitors, printers, speakers, headphones, automobile navigation systems, plotters, voice output devices, and modems.

[0057] Computer system 1100 may include a storage subsystem 1118 that comprises software elements currently shown as located within system memory 1110. System memory 1110 may store program instructions that are loadable and executable on processing unit 1104, as well as data generated during the execution of these programs.

[0058] Depending on the configuration and type of computer system 1100, system memory 1110 may be volatile (such as random access memory (RAM)) and / or non-volatile (such as read-only memory (ROM), flash memory, etc.). RAM typically contains data and / or program modules that are immediately accessible to and / or presently being operated on or executed by the processing unit 1104. In some implementations, system memory 1110 may include several different types of memory, such as static random access memory (SRAM) or dynamic random access memory (DRAM). In some implementations, a basic input / output system (BIOS), containing the basic routines that help to transfer information between elements within computer system 1100, such as during start-up, may typically be stored in ROM. By way of example and not limitation, system memory 1110 also illustrates application programs 1112, program data 1114, and operating system 1116, which may include client applications, a web browser, a mid-tier application, a relational database management system (RDBMS), etc. By way of example, operating system 1116 may include various versions of Microsoft Windows®, Apple Macintosh®, and / or Linux operating systems, various commercially available UNIX® or UNIX-like operating systems (including, but not limited to, various GNU / Linux operating systems, Google Chrome® OS, etc.), and / or mobile operating systems such as iOS, Windows® Phone, Android® OS, BlackBerry® 10 OS, and Palm® OS operating systems.

[0059] The storage subsystem 1118 may also provide a tangible computer-readable storage medium for storing the basic programming and data constructs that provide the functionality of some embodiments. Software (programs, code modules, instructions) that, when executed by a processor, provide the functionality described above may be stored in the storage subsystem 1118. These software modules or instructions may be executed by the processing unit 1104. The storage subsystem 1118 may also provide a repository for storing data used in accordance with some embodiments.

[0060] Storage subsystem 1100 may also include a computer-readable storage medium reader 1120, which may further be connected to a computer-readable storage medium 1122. Along with, and optionally in combination with, system memory 1110, computer-readable storage medium 1122 may comprehensively represent remote, local, fixed, and / or removable storage devices, as well as storage media for containing, storing, transmitting, and retrieving computer-readable information on a temporary and / or more permanent basis.

[0061] The computer-readable storage medium 1122 containing the code or portions of code can also include any suitable medium, including, but not limited to, storage media and communication media, such as volatile and nonvolatile, removable and non-removable media, implemented in any method or technology for information storage and / or transmission. This can include tangible computer-readable storage media, such as RAM, ROM, Electronically Erasable Programmable ROM (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible computer-readable media. This can also include non-tangible computer-readable media, such as a data signal, data transmission, or any other medium that can be used to transmit desired information and that can be accessed by computing system 1100.

[0062] By way of example, the computer-readable storage medium 1122 may include a hard disk drive that reads from or writes to non-removable, non-volatile magnetic media, a magnetic disk drive that reads from or writes to removable, non-volatile magnetic disks, and an optical disk drive that reads from or writes to removable, non-volatile optical disks, such as CD-ROMs, DVDs, and Blu-Ray® disks or other optical media. The computer-readable storage medium 1122 may include, but is not limited to, Zip® drives, flash memory cards, Universal Serial Bus (USB) flash drives, Secure Digital (SD) cards, DVD disks, digital video tapes, etc. The computer-readable storage media 1122 may also include flash memory-based solid-state drives (SSDs), enterprise flash drives, SSDs based on non-volatile memory such as solid-state ROM, solid-state RAM, dynamic RAM, static RAM, DRAM-based SSDs, SSDs based on volatile memory such as magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM-based SSDs and flash memory-based SSDs. Disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computer system 1100.

[0063] The communications subsystem 1124 provides an interface to other computer systems and networks. The communications subsystem 1124 serves as an interface for receiving data from other systems from the computer system 1100 and for transmitting data to other systems from the computer system 1100. For example, the communications subsystem 1124 may enable the computer system 1100 to connect to one or more devices via the Internet. In some embodiments, the communications subsystem 1124 may include radio frequency (RF) transceiver components, global positioning system (GPS) receiver components, and / or other components for accessing wireless voice and / or data networks (e.g., using cellular telephone technology, advanced data network technologies such as 3G, 4G, or EDGE (Enhanced Data Rates for Worldwide Use), WiFi (IEEE 802.11 family of standards), or other mobile communications technologies, or any combination thereof). In some embodiments, the communications subsystem 1124 may provide wired network connectivity (e.g., Ethernet) in addition to or instead of a wireless interface.

[0064] In some embodiments, the communications subsystem 1124 may also receive incoming communications in the form of structured and / or unstructured data feeds 1126, event streams 1128, event updates 1130, etc., for one or more users who may be using the computer system 1100.

[0065] By way of example, the communications subsystem 1124 may be configured to receive data feeds 1126 in real time from users of social networks and / or other communications services, such as web feeds such as Twitter® feeds, Facebook® updates, Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third-party information sources.

[0066] Additionally, the communications subsystem 1124 may also be configured to receive data in the form of a continuous data stream, which may include an event stream 1128 of real-time events and / or event updates 1130, which may be continuous or infinite in nature without an explicit end. Examples of applications that generate continuous data may include, for example, sensor data applications, financial tickers, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, etc.

[0067] The communications subsystem 1124 may also be configured to output structured and / or unstructured data feeds 1126, event streams 1128, event updates 1130, etc. to one or more databases that may be in communication with one or more streaming data source computers coupled to the computer system 1100.

[0068] The computer system 1100 may be one of a variety of types, including a handheld portable device (e.g., an iPhone® cellular phone, an iPad® computing tablet, a PDA), a wearable device (e.g., a Google Glass® head-mounted display), a PC, a workstation, a mainframe, a kiosk, a server rack, or any other data processing system.

[0069] Due to the ever-changing nature of computers and networks, the description of computer system 1100 shown in the figure is intended as a specific example only. Many other configurations are possible, having more or fewer components than the system shown in the figure. For example, customized hardware could also be used, and / or particular elements could be implemented in hardware, firmware, software (including applets), or a combination. Additionally, connections to other computing devices, such as network input / output devices, could be employed. Other ways and / or methods for implementing various embodiments will be apparent based on the disclosure and teachings provided herein.

[0070] In the above description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of various embodiments. It will be apparent, however, that some embodiments may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form.

[0071] The above description provides only exemplary embodiments and is not intended to limit the scope, applicability, or configuration of the present disclosure. Rather, the above description of various embodiments provides an enabling disclosure for implementing at least one embodiment. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the several embodiments as set forth in the appended claims.

[0072] Specific details have been given in the above description to provide a thorough understanding of the embodiments. However, it will be understood that the embodiments may be practiced without these specific details. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form in order to avoid obscuring the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.

[0073] Also, it should be noted that particular embodiments may be described as a process, which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. While a flowchart may describe operations as a sequential process, many of the operations may be performed in parallel or concurrently. Moreover, the order of operations may be rearranged. A process terminates when its operations are completed, but may have additional steps not included in the diagram. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to a return of the function to the calling function or the main function.

[0074] The term "computer-readable medium" includes, but is not limited to, portable or fixed storage devices, optical storage devices, wireless channels, and various other media capable of storing, containing, or carrying instruction(s) and / or data. A code segment or machine-executable instruction may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.

[0075] Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, program code or code segments to perform the necessary tasks may be stored in a machine-readable medium. Processor(s) may perform the necessary tasks.

[0076] In the foregoing specification, features have been described with reference to specific embodiments thereof, but it should be recognized that not all embodiments are limited thereto. Various features and aspects of the several embodiments may be used individually or together. Moreover, the embodiments may be utilized in any number of environments and applications other than those described herein without departing from the broader spirit and scope of the specification. Accordingly, the specification and drawings should be regarded as illustrative rather than restrictive.

[0077] Furthermore, for purposes of explanation, the methods have been described in a particular order. It should be appreciated that in alternative embodiments, the methods may be performed in an order different from that described. It should also be appreciated that the methods described above may be performed by hardware components or may be embodied in a sequence of machine-executable instructions that can be used to cause a machine, such as a general-purpose or special-purpose processor or logic circuitry programmed with instructions, to perform the method. These machine-executable instructions may be stored on one or more machine-readable media, such as a CD-ROM or other type of optical disk, a floppy diskette, ROM, RAM, EPROM, EEPROM, a magnetic or optical card, flash memory, or other type of machine-readable medium suitable for storing electronic instructions. Alternatively, the methods may be performed by a combination of hardware and software.

Claims

1. 1. A method of inducing sparsity in an output of a neural network layer, the method comprising: receiving an output from a layer of a neural network; partitioning the output into a plurality of partitions, the size of each of the plurality of partitions being defined based on an execution unit of a layer of the neural network before receiving the output; identifying a first partition among the plurality of partitions that may be treated as having a value of zero; generating an encoding that identifies a location of the first partition; sending the encoding and a second remaining segment of the plurality of segments to a subsequent layer in the neural network; and A method comprising:

2. receiving the second partition at the subsequent layer in the neural network; and arranging the second partition based on the encoding; and The method of claim 1 further comprising:

3. The method of claim 2 , wherein the subsequent layer performs a multiplication operation, whereby the first partition can be discarded as a zero multiplication operation.

4. 2. The method of claim 1, wherein the output comprises a three-dimensional array of outputs from the layer, the array of outputs comprising dimensions for different channels in the neural network.

5. The method of claim 4 , wherein the plurality of partitions comprises a three-dimensional partition of the array of outputs.

6. The method of claim 1 , wherein the first segment is non-contiguous among the plurality of segments.

7. identifying the first partition among the plurality of partitions that may be treated as having a zero value; receiving criteria from a design environment; applying said criteria to each of said plurality of categories; The method of claim 1 , comprising:

8. The method of claim 7 , wherein the criteria comprises a relative magnitude function that calculates a sum over values ​​in a bin and sets the value in the bin to zero if the sum is less than a threshold value.

9. The method of claim 7 , wherein the criteria are passed from the design environment as a run-time function.

10. The method of claim 7 , wherein the criteria are encoded as part of a graph representing the neural network.

11. a computational node configured to implement a layer of a neural network and generate an output from said layer; A partitioned circuit configured to perform a process, the process comprising: receiving an output from the layer of the neural network; partitioning the output into a plurality of partitions, the size of each of the plurality of partitions being defined based on an execution unit of a layer of the neural network before receiving the output; identifying a first partition among the plurality of partitions that may be treated as having a value of zero; generating an encoding that identifies the location of the first partition; a partition circuit including: a memory configured to store the encoding and a second remaining segment of the plurality of segments for a subsequent layer in the neural network; and Equipped with Neural network accelerator.

12. 12. The neural network accelerator of claim 11, further comprising a plurality of chiplets, wherein the compute node is implemented on a first chiplet in the plurality of chiplets and the subsequent layer is implemented on a second chiplet in the plurality of chiplets.

13. further comprising a sequencer circuit configured to perform a process, the process comprising: receiving the second partition at the subsequent layer in the neural network; and arranging the second partition based on the encoding; and 12. The neural network accelerator of claim 11, comprising:

14. 12. The neural network accelerator of claim 11, wherein the layer of the neural network comprises an executing convolution core.

15. 12. The neural network accelerator of claim 11, wherein the memory comprises an on-chip static random access memory (SRAM).

16. 12. The neural network accelerator of claim 11, wherein the partitioned circuitry is not used when training the neural network.

17. 12. The neural network accelerator of claim 11, wherein the number of partitions in the plurality of partitions is determined during training of the neural network.

18. identifying the first partition among the plurality of partitions that may be treated as having a zero value; receiving criteria from a design environment; applying said criteria to each of said plurality of categories; 12. The neural network accelerator of claim 11, comprising:

19. 12. The neural network accelerator of claim 11, wherein the output comprises a three-dimensional array of outputs from the layer, the array of outputs comprising dimensions for different channels in the neural network, and the plurality of partitions comprises a three-dimensional partition of the array of outputs.

20. 1. A method of inducing sparsity in an output of a neural network layer, the method comprising: receiving an output from a layer of a neural network; partitioning the output into a plurality of partitions, each of the plurality of partitions including a plurality of the outputs; identifying a first segment among the plurality of segments that meets a criterion indicating that values ​​in the first segment may be set to zero; generating an encoding that identifies a location of the first partition; sending the encoding and a remaining second partition in the plurality of partitions to a subsequent layer in the neural network and discarding the first partition; receiving the second partition at the subsequent layer in the neural network; and populating the second partition with zero values ​​based on the encoding; executing the subsequent layer in the neural network; and A method comprising:

Citation Information

Patent Citations

  • Compression method of deep neural network, chip, electronic equipment and medium

    CN110163370A

  • Apparatus and mechanism for processing neural network tasks using a single chip package having multiple identical dies - Patents.com

    JP2021504770A

  • Sparse convolutional neural network accelerator

    US20180046916A1

  • Neural network processor using compression and decompression of activation data to reduce memory bandwidth utilization

    US20180300606A1

  • Systems and methods for reading and writing sparse data in a neural network accelerator

    US20210011846A1