This specification relates to performing a machine learning task on a network input using neural networks.
Neural networks are machine learning models that employ one or more layers of nonlinear units to predict an output for a received input. Some neural networks include one or more hidden layers in addition to an output layer. The output of each hidden layer is used as input to the next layer in the network, i.e., the next hidden layer or the output layer. Each layer of the network generates an output from a received input in accordance with current values of a respective set of parameters.
This specification describes a system implemented as computer programs on one or more computers in one or more locations that performs a machine learning task on a network input using an attention neural network that includes attention layers, at least one of which is a sparse attention layer.
A sparse attention layer is an attention layer that uses only a small fraction, e.g., less than half, of the weights of the layer when processing any given input to the layer.
The described sparse attention layers decrease the decoding latency of the neural network by decreasing the time required to access layer weights from memory in order to process an input through the neural network, i.e., because layer weights that are not being used do not need to be accessed from memory. Thus, as is described in more detail below, these techniques allow for high-performing attention neural networks, i.e., attention neural networks comparable in quality to those that include conventional rather than sparse attention layers, to be deployed on devices with a constrained memory space or on devices where low decoding latency is required, e.g., on edge devices such as mobile devices, smart speakers, or other Internet of Things (IoT) devices or embedded with a robot or other physical system.
Particular embodiments of the subject matter described in this specification can be implemented so as to realize one or more of the following advantages.
Large attention-based neural networks, e.g., neural networks having a Transformer architecture, yield impressive results on many machine learning tasks. However, these large models are difficult to train and, even when trained successfully, consume a large amount of computational resources and may consume huge amounts of cycles on specialized hardware. Moreover, at decoding time, i.e., when deployed for production purposes to perform inference after being trained, these large models are very slow and result in significant latency in producing an output, even when deployed on specialized hardware. The described techniques impose sparsity on various components of the attention blocks in such models in a manner that does not significantly degrade the quality of the outputs produced by these models. In particular, by imposing sparsity, decoding becomes orders of magnitude faster than the standard Transformer, while performance matches that of the standard Transformer on any of a variety of tasks.
This specification also describes a modification to the architecture of the Transformer to remove cross-attention from the decoder that, when combined with the described sparsity techniques, results in a neural network that achieves high quality performance on even very long sequences with greatly reduced computational resource consumption and latency relative to conventional approaches.
The details of one or more embodiments of the subject matter of this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.
Like reference numbers and designations in the various drawings indicate like elements.
This specification describes a system implemented as computer programs on one or more computers in one or more locations that performs a machine learning task on a network input to generate a network output for the machine learning task.
The machine learning task can be any machine learning task that (i) operates on a network input that is an input sequence, (ii) generates a network output that is an output sequence, or (iii) both.
Some examples of machine learning tasks that the system can be configured to perform follow.
As one example, the task may be a neural machine translation task. For example, if the input to the neural network is a sequence of text, e.g., a sequence of words, phrases, characters, or word pieces, in one language, the output generated by the neural network may be a translation of the sequence of text into another language, i.e., a sequence of text in the other language that is a translation of the input sequence of text. As a particular example, the task may be a multi-lingual machine translation task, where a single neural network is configured to translate between multiple different source language—target language pairs. In this example, the source language text may be augmented with an identifier that indicates the target language into which the neural network should translate the source language text.
As another example, the task may be an audio processing task. For example, if the input to the neural network is a sequence representing a spoken utterance, the output generated by the neural network may be a score for each of a set of pieces of text, each score representing an estimated likelihood that the piece of text is the correct transcript for the utterance. As another example, if the input to the neural network is a sequence representing a spoken utterance, the output generated by the neural network can indicate whether a particular word or phrase (“hotword”) was spoken in the utterance. As another example, if the input to the neural network is a sequence representing a spoken utterance, the output generated by the neural network can identify the natural language in which the utterance was spoken.
As another example, the task can be a natural language processing or understanding task, e.g., an entailment task, a paraphrase task, a textual similarity task, a sentiment task, a sentence completion task, a grammaticality task, and so on, that operates on a sequence of text in some natural language.
As another example, the task can be a text to speech task, where the input is text in a natural language or features of text in a natural language and the network output is a spectrogram, a waveform, or other data defining audio of the text being spoken in the natural language.
As another example, the task can be a health prediction task, where the input is a sequence derived from electronic health record data for a patient and the output is a prediction that is relevant to the future health of the patient, e.g., a predicted treatment that should be prescribed to the patient, the likelihood that an adverse health event will occur to the patient, or a predicted diagnosis for the patient.
As another example, the task can be a text generation task, where the input is a sequence of text, and the output is another sequence of text, e.g., a completion of the input sequence of text, a response to a question posed in the input sequence, or a sequence of text that is about a topic specified by the first sequence of text. As another example, the input to the text generation task can be an input other than text, e.g., an image, and the output sequence can be text that describes the input.
As another example, the task can be an image generation task for generating an image in accordance with a distribution of a set of training images, where the input is a conditioning input, e.g., a sequence of text, a sequence of intensity values from a lower-resolution image, or an input identifying a target object class for the generated image, and the output is a sequence of intensity value for the pixels of an image.
As another example, the task can be an agent control task, where the input is a sequence of observations or other data characterizing states of an environment and the output defines an action to be performed by the agent in response to the most recent data in the sequence. The agent can be, e.g., a real-world or simulated robot, a control system for an industrial facility, or a control system that controls a different kind of agent.
As another example, the task can be a genomics task, where the input is a sequence representing a fragment of a DNA sequence or other molecule sequence and the output is either an embedding of the fragment for use in a downstream task, e.g., by making use of an unsupervised learning technique on a data set of DNA sequence fragments, or an output for the downstream task. Examples of downstream tasks include promoter site prediction, methylation analysis, predicting functional effects of non-coding variants, and so on.
In some cases, the machine learning task is a combination of multiple individual machine learning tasks, i.e., the system is configured to perform multiple different individual machine learning tasks, e.g., two or more of the machine learning tasks mentioned above. For example, the system can be configured to perform multiple individual natural language understanding tasks, with the network input including an identifier for the individual natural language understanding task to be performed on the network input.
To perform the machine learning task, the system includes an attention neural network that includes multiple attention layers. Each layer operates on a respective input sequence that includes a respective layer input at each of one or more positions.
Moreover, each of the layers includes one or more attention sub-layers and a feed-forward sub-layer. The attention sub-layer receives the input sequence for the layer and applies an attention mechanism on the input sequence for the layer to generate an attended input sequence. The attention mechanism applied by the attention layer depends on the configuration of the attention neural network, as will be described in more detail below. The feed-forward sub-layer then operates on the attended input sequence to generate an output sequence for the layer.
For each of the attention layers, the feed-forward sub-layer and, optionally, the attention layer are “sparse” layers. A sparse layer is a layer that has sparsity imposed on the operations performed by the layer, i.e., so that only a small subset of the weights of the layer are active for any given input processed by the layer.
Generally, the layers within the attention neural network can be arranged in any of a variety of configurations.
As one example, when the network input is an input sequence, the attention neural network can include an encoder neural network that includes a subset of the plurality of layers and that encodes the input sequence to generate a respective encoded representation of each input in the sequence. In this example, the attention mechanism applied by the layers in the encoder is a self-attention mechanism, e.g., a multi-head self-attention mechanism.
As another example, the attention neural network can include a decoder neural network that includes a different subset of the plurality of layers and that processes either the network input or, when the attention neural network also includes the encoder neural network, the encoded representation of the network input to generate the network output. In some of these examples, when the network output is an output sequence, the decoder neural network operates auto-regressively and the attention sub-layers within some or all of the layers of the decoder apply masked self-attention over the partially generated output sequence. When the neural network includes both an encoder and a decoder, some of the layers in the decoder apply cross-attention into the encoded representations while others apply self-attention over the output sequence, either masked or not masked. When the attention neural network includes a decoder neural network that operates directly on the input sequence, the attention layers within the decoder can apply a self-attention mechanism over the input sequence.
The specifics of the operation of the attention layers within the decoder neural network and the encoder neural network are described in more detail in Vaswani, et al, Attention Is All You Need, arXiv:1706.03762, and Raffel, et al, Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, arXiv:1910.10683, and Devlin et al, BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, arXiv:1810.04805, the entire contents of which are hereby incorporated by reference herein in their entirety.
Another example configuration of the attention neural network when the neural network includes both encoder and decoder and operates auto-regressively is described below. In particular, in this configuration, the decoder does not include cross-attention and the attention layers in the decoder instead process a combination of the outputs of the encoder and a sequence generated from any already generated elements in the network output. In some of these configurations, the attention layers in the decoder include two attention mechanisms that each apply masked self-attention, i.e., include two attention mechanisms rather a single attention mechanism.
The neural network system 100 can receive an input 102 and perform a machine learning task on the input 102 to generate an output 152.
As described above, the neural network system 100 can perform any of a variety of tasks that involve (i) operating on an input 102 that is an input sequence, (ii) generating an output 152 that is an output sequence, or (iii) both.
The neural network system 100 includes an attention neural network 150 that includes multiple attention layers 110, at least one of which is a sparse attention layer.
Each attention layer 110 operates on an input sequence 104 and generates a corresponding output sequence 134.
Although one attention layer 110 is depicted in
Specifically, the input sequence 104 has a respective input at each of a plurality of input positions in an input order and the output sequence 134 has a respective output at each of the positions in the input order. That is, the attention layer generates a respective output for each input position in the input sequence 104.
In general, the input sequence 104 can be any intermediate sequential data generated by the attention neural network 150 when performing the machine learning task on the input 102.
For example, the input sequence 104 can be embedded (i.e., numeric) representations of the system input 102 generated by an embedding layer, optionally modified by adding or element-wise multiplying each embedding by a positional embedding.
As another example, the input sequence 104 can be an output sequence generated by a preceding attention layer or other layer in the attention neural network 150.
As another example, when the neural network 150 generates the network output auto-regressively, the input sequence 140 can be (i) embedded representations of the currently generated network output as of the current time step, optionally modified by adding or element-wise multiplying each embedding by a positional embedding or (ii) embedded representations of a concatenation of a set of encoded representations of the system input 102 and the currently generated network output as of the current time step, optionally separated by one or more separator tokens and further optionally modified by adding or element-wise multiplying each embedding by a positional embedding.
To generate the output sequence 134 from the input sequence 104, each attention layer includes an attention sub-layer and a feed-forward sub-layer. Optionally, each attention layer can also include an addition+normalization operation after the attention sub-layer, after the feed-forward sub-layer, or both.
The attention sub-layer receives the input sequence 104 for the layer and applies an attention mechanism on the input sequence for the layer to generate an attended input sequence 124.
Generally, to apply the attention mechanism, the sub-layer 120 uses one or more attention heads. Each attention head generates a set of queries, a set of keys, and a set of values, and then applies any of a variety of variants of query-key-value (QKV) attention using the queries, keys, and values to generate an output. In some cases, the keys and values are the same, i.e., generated by applying a shared transformation to the same inputs, while, in other cases, the keys and values are different, i.e., are generated by applying different transformations to the same inputs, different transformations to different inputs, or the same transformation to different inputs. When there are multiple attention heads, the sub-layer 120 then combines the outputs of the multiple attention heads, e.g., by concatenating the outputs and, optionally, processing the concatenated outputs through a linear layer. Examples of QKV attention variants are described in Vaswani, et al, Attention Is All You Need, arXiv:1706.03762, Raffel, et al, Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, arXiv:1910.10683, Devlin et al, BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, arXiv:1810.04805, Dai, et al, Transformer XL: Attentive Language Models Beyond a Fixed-Length Context, arXiv:1901.02860, and Kitaev, et al, Reformer: The Efficient Transformer, arXiv: 2001.04451, the entire contents of which are hereby incorporated by reference herein in their entirety.
Generally, as described above, the layers within the attention neural network can be arranged in any of a variety of configurations and the attention mechanism applied by the attention sub-layer 120 depends on the configuration of the attention neural network 150.
As one example, when the network input is an input sequence, the attention neural network 150 includes an encoder neural network that includes a subset of the plurality of layers and that encodes the input sequence to generate a respective encoded representation of each input in the sequence. In this example, the attention mechanism applied by the attention sub-layers 120 in the encoder is a self-attention mechanism, e.g., a multi-head self-attention mechanism, where the queries, keys, and values are all generated from the input sequence to the attention sub-layer.
As another example, the attention neural network 150 can include a decoder neural network that includes a different subset of the plurality of layers and that processes either the network input or the encoded representation of the network input to generate the network output. In some of these examples, when the network output is an output sequence, the decoder neural network operates auto-regressively and the attention sub-layers 120 within some or all of the layers of the decoder apply masked self-attention over the partially generated output sequence, where the queries, keys, and values are all generated from the input sequence to the attention sub-layer 120.
In some implementations, when the neural network 150 includes both an encoder and a decoder, some of the layers in the decoder apply cross-attention into the encoded representations while others apply self-attention over the output sequence, either masked or not masked. In cross-attention, the queries are generated from the input sequence to the attention sub-layer 120 while the keys and values are generated from the encoded representations of the network input.
When the attention neural network 150 includes a decoder neural network that operates directly on the input sequence, the attention sub-layers 120 within the decoder can apply a self-attention mechanism over the input sequence.
As used in this specification, the term “learned” means that an operation or a value has been adjusted during the training of the attention neural network 150.
In some cases, the attended input sequence 124 is the final output of the attention mechanism. In some other cases, the sub-layer 120 applies an addition+normalization operation that applies a residual connection and layer normalization or another type of normalization to the output of the attention mechanism to generate the attended input sequence.
The feed-forward sub-layer then operates on the attended input sequence to generate an output sequence 134 for the layer 110.
The feed-forward sub-layer is configured to operate on each position in the attended input sequence separately, i.e., in a position-wise manner. In particular, for each input position, the feed-forward sub-layer is configured receive an attended layer input at the input position and apply a set of transformations to the attended layer input at the input position to generate an output for the input position. The transformations applied by the sub-layer will generally be the same for each input position (but different feed-forward sub-layers in the attention neural network will apply different transformations).
More specifically, in a conventional Transformer, i.e., a conventional attention neural network, the feed-forward sub-layer includes a feed forward neural network that operates on each position in the attended input sequence separately, i.e., in a position-wise manner. The FFN can be, e.g., a multi-layer, e.g., two layer or three layer, neural network of fully-connected layers with, e.g., a ReLU or GeLU activation function.
In particular, for each input position, the feed-forward sub-layer is configured receive an attended layer input at the input position and to process the attended layer input using the FFN to generate an initial output for the input position.
Thus, the feed-forward sub-layer processes each attended layer input using the same FFN.
Optionally, the attention layer 110 can then then apply an addition+normalization operation to the initial outputs to generate the output sequence 134 for the attention layer 110.
Generally, as indicated above, some or all of the attention layers within the attention neural network are sparse attention layers 110. For example, every attention layer can be a sparse attention layer 110, every other attention layer within the attention neural network can be a sparse attention layer 110, or every third attention layer within the attention neural network can be a sparse attention layer 110.
A sparse attention layer 110 is an attention layer that (i) replaces a conventional attention sub-layer with a sparse attention sub-layer, (ii) a conventional feed-forward sub-layer with a sparse feed-forward sub-layer, or (iii) both. A sub-layer is “sparse” when only a small proper subset of the parameters of the layer are used for any given input processed by the sub-layer.
Sparse fully-connected sub-layers are described below with reference to
Sparse attention sub-layers are described below with reference to
Prior to using the neural network 150 to generate new outputs for the machine learning task, the system 100 or another training system trains the neural network on training data. Generally, the neural network 150 can be trained on any loss function is appropriate for the task(s) that the neural network 150 is configured to perform using a conventional machine learning training techniques. Examples of loss functions that can be used include cross-entropy loss, perplexity loss, mean squared error loss, negative log likelihood loss, and so on. Examples of machine learning training techniques include stochastic gradient descent, Adam, rmsProp, Adafactor, and so on.
In some implementations, during training, during inference after training, or both, the system 100 implements the attention neural network 150 by parallelizing the neural network across multiple hardware devices. For example, the system 100 can implement the attention neural network across multiple hardware accelerators, e.g., Tensor Processing Units (TPUs), graphics processing units (GPUs), or both.
In some implementations, after training the neural network 150, the system 100 can use the neural network 150 to train another, smaller neural network that performs the machine learning task through distillation. The system 100 can then use the smaller neural network for inference. For example, the smaller neural network can be an attention neural network that does not have sparse attention layers but that has fewer parameters than the neural network 150.
While only a single input 202 is shown in
In particular, in a conventional Transformer, i.e., one that has conventional attention layers instead of sparse attention layers, decoding speed, i.e., the amount of time required to generate a respective network output for each network input in a batch one of more inputs at inference, i.e., after training, is dominated by the execution cost of the feed-forward sub-layers within the attention layers of the Transformer. In particular, as described above, each feed-forward sub-layer has two fully-connected, dense layers with a ReLu nonlinearity in between. Thus, each time the output of the sub-layer needs to be computed after training, i.e., at inference, all of the weights in the weight matrices of the two fully-connected layers need to be loaded from the memory of the device on which the sub-layer is deployed. This introduces significant latency into the decoding process.
For example, in many Transformers, the dimensionality d_ff of the activation vectors between the two fully-connected layers within the feed-forward sub-layer is generally 4 or 8 times larger than the dimensionality d_model of the input vectors and the output vectors of the sub-layer. Thus, performing inference using the sub-layer requires loading 2*d_ff*d_model weight values from the memory of the device. Given the increase in dimensionality within the sub-layer, loading this many weight values from memory requires a significant amount of time and introduces significant latency into the decoding process.
By making use of the described sub-layer 200, only a small fraction of the weight values need to be loaded from memory for each inference, greatly reducing the latency incurred waiting for weights to be loaded before the processing of the layer can begin.
In particular, for each attended layer input 202, the sub-layer 200 selects, based on the attended layer input 202, a proper subset of elements in an intermediate output 220 that are constrained to have a zero value. That is, the selected proper subset is constrained to have a zero value and the other elements of the intermediate output 220, i.e., the elements that are not in the proper subset, are not constrained to have a zero value.
In other words, prior to processing the input 202 through either of the fully-connected layers, the layer 200 generates, from the input 202, a controller output 210 that specifies a proper subset of the elements in the intermediate output 220 that the sub-layer 200 will constrain to be zero. Elements that are constrained to be zero are labeled with a 0 in the controller output 210 and elements that are not constrained are labeled with a 1.
More specifically, the elements of the intermediate outputs are partitioned into a plurality of blocks and the sub-layer 200 selects, based on the attended layer input 202, a respective element from each block and, for each block, constrains each element in the block other than the respective selected element from the block to have a zero value. In the example of
An example of the processing that can be performed by the sub-layer 200 to select the proper-subset for the input 202 is shown on the right-hand side of
As can be seen from
In particular, so that the processing is computationally inexpensive, the sub-layer 200 uses a low-rank bottleneck dense layer as the linear transformation. More specifically, the sub-layer 200 first computes a product between the input 202 and a first low-rank matrix 260 to generate a bottlenecked representation 262 that has a dimensionality low rank that is smaller than d_model and then computes a product between the bottlenecked representation 262 and a second low rank matrix 270 to generate the projected layer input 272 that has dimensionality d_ff, i.e., the same dimensionality as the intermediate output 220.
For each block of the projected layer input 272, the sub-layer 200 selects the element with the highest value of any element in the block and constrains each element in the corresponding block in the intermediate output other than the element corresponding to the selected element to have a zero value.
While this discrete selection can be employed at inference, this operation is not differentiable and, therefore, during training, the sub-layer 200 uses the Gumbel-Softmax trick to select the largest element in block in a manner that can be approximated using a differentiable softmax operation with annealing temperature and allows the sub-layer 200 to use the Straight-Through Gumbel-Softmax estimator to backpropagate gradients through the selection.
Once the elements of the intermediate output 220 that will be constrained to be zero are selected, the sub-layer 200 then processes the attended layer input 202 through a feed-forward neural network layer to generate the intermediate output 220 while constraining the elements in the proper subset to have a zero value.
In particular, as can be seen in the example of
While the constraint on the intermediate output 220 could naively be applied by computing an element-wise product between the controller output 220 and an initial intermediate output 211 that is the output of a full dense multiplication between the weight matrix 209 and the input 202, the sub-layer 200 instead performs the multiplication in a manner that significantly reduces the amount of data that needs to be loaded from memory and thereby reduces the decoding latency.
In particular, the sub-layer computes a product between the attended layer input 202 and the weight matrix 209 of the feed-forward neural network layer using only columns of the weight matrix 209 of the feed-forward neural network that correspond to the elements of the intermediate output that are not constrained to be zero. That is, as can be seen from
The sub-layer 200 then applies a linear transformation to the intermediate output 220 to generate a transformed output 232. In particular, the sub-layer 200 computing a product between a weight matrix 230 of the linear transformation and the intermediate output 220 using only rows of the weight matrix 230 of the linear transformation that correspond to the elements of the intermediate output that are not constrained to be zero. That is, as can be seen from
The sub-layer 200 then generates the layer output at the position from the transformed output 232. For example, the sub-layer 230 can apply a residual connection, layer normalization, or both to the transformed outputs at the positions to generate the layer outputs in the output sequence.
However, despite the reduction in weights that need to be loaded, the described sparse feed-forward sub-layer nonetheless maintains performance that is on par with a conventional feed-forward sub-layer. In particular, because the conventional layer applies a ReLu activation function between the two matrix products, the application of the ReLu results in a significant number of zeroes in the conventional intermediate output, i.e., because the ReLu maps any negative value to zero. Thus, conventional sub-layers “waste” computational capacity that results in an element being mapped to zero or that operates on an element that is zero. By removing this waste, the descried layer achieves significantly smaller latency while maintaining performance.
The conventional attention sub-layer 310 applies a baseline query-key-value (QKV) self-attention scheme.
In this scheme, the sub-layer 310 applies a first dense matrix 312 to the input sequence 302 to generate queries Q for each of the attention heads, applies a second dense matrix 314 to the input sequence 302 to generate keys K for each of the attention heads, applies a third dense matrix 316 to the input sequence 302 to generate values V for each of the attention heads, and then, for each attention head, applies a query-key-value attention mechanism 317 to Q, K, and V for the attention head to generate a respective output for the attention head. The sub-layer then concatenates these outputs and processes the concatenated outputs using another dense matrix 318 to generate the outputs of the attention mechanism (which are then combined with the input sequence through a residual connection).
Thus, performing this baseline scheme requires loading d_model*d_model parameters for each of the above weight matrices from memory, significantly impacting the decoding latency.
To improve upon this latency, the sparse variant 320 replaces the dense matrices 312, 314, 316, and 318 with respective multiplicative dense layers 322, 324, 326, and 328.
A multiplicative dense layer is a layer that performs operations that can represent any arbitrary permutation on any given layer input but that has fewer parameters than an otherwise equivalent dense layer that multiplies the given layer input by a dense matrix. That is, the multiplicative dense layer can generate an output that is equivalent to that of multiplying a given input by one of the dense matrices 312-318 but has fewer than d_model*d_model parameters.
In particular, to apply a multiplicative dense layer, the sparse variant 320 divides the dimensionality of the layer inputs d_model into S modules that are each of size M=d_model/S, where S is equal to the number of attention heads of the sub-layer and M is equal to the dimensionality of the queries, keys, and values. The multiplicative dense layer then generates an output matrix Y of size S×M from an input vector x that has dimensionality d_model, with each entry Ys,m of Y being equal to:
Y
s,m=ΣixiDi,sEi,m,
where the sum goes from 1 to d_model, the matrix D is a d_model x S weight matrix of the layer, and E is a d_model x M weight matrix of the layer.
Thus, although the multiplicative dense layer is a layer that performs operations that can represent any arbitrary permutation on any given layer input, the layer has d_model*d_model/S+d_model*S parameters, i.e., significantly fewer parameters than the d_model*d_model parameters of an equivalent dense matrix. Thus, the sparse variant 320 can perform the QKV attention mechanism using fewer parameters than the conventional sub-layer 310.
However, performing this baseline scheme still requires loading d_model*d_model/S+d_model*S parameters for each of the above multiplicative dense layers from memory.
The sparse variant 330 further improves on this by having a single multiplicative dense layer 332 per attention head, followed by a convolutional layer 334 to generate the queries Q, a convolutional layer 336 to generate the keys K, and a convolutional layer 338 to generate the values V.
Each convolutional layer is a two-dimensional convolutional layer that is convolved over the length dimension (the number of layer inputs in the sequence), i.e., that treats the length dimension (the number of layer inputs in the sequence) and number of modules S like height and width of an image, respectively. This layer uses M filters and a kernel size of K×K so that each filter looks at K modules (in ‘S’ axis) of the last K tokens (‘length’ axis). Replacing the standard dense layer with such a convolution reduces the parameter count and computation time of the attention sub-layer even relative to the variant 320. At the same time, by convolving over the ‘length’ axis, the variant 330 can incorporate more context into this computation, improving the quality of the attention mechanism.
In some cases, in the variant 330, the concatenated output of the attention heads is provided as the output of the attention mechanism, i.e., rather than using another dense matrix or multiplicative layer.
Thus, by making use of the multiplicative layer, the variant 320 and, particularly, the variant 330 significantly reduce the number of values that need to be loaded from memory relative to the conventional variant 310. However, because of the property that the multiplicative layer can represent any arbitrary permutation, the performance of the variants 320 and 330 is on par with and, in some cases, exceeds that of the conventional variant 310.
The system processes the respective layer inputs in the input sequence using a multiplicative dense layer to generate, for each respective layer input, a respective split input that includes S modules of size M, where S and M are both integers greater than 1 (step 402). As described above, the multiplicative dense layer can generate a respective S×M matrix for each layer input using fewer parameters than a dense matrix.
The system processes a tensor that includes the respective split inputs for the respective layer inputs in the sequence using a first two-dimensional convolutional layer to generate a respective set of queries for each attention head (step 404). That is, each of the S modules can correspond to a different attention head and the respective set of queries for each attention head corresponds to the outputs of the convolutional layer for the corresponding module.
The system processes the tensor using a second two-dimensional convolutional layer to generate a respective set of values for each attention head (step 406). That is, each of the S modules can correspond to a different attention head and the respective set of keys for each attention head corresponds to the outputs of the convolutional layer for the corresponding module.
The system processes the tensor using a third two-dimensional convolutional layer to generate a respective set of keys for each attention head (step 408). That is, each of the S modules can correspond to a different attention head and the respective set of values for each attention head corresponds to the outputs of the convolutional layer for the corresponding module.
For each attention head, the system applies query-key-value (QKV) attention over the respective sets of queries, keys, and values for the attention head to generate an attended output (step 410).
The system then combines the attended outputs from the attention heads to generate the output of the attention mechanism (step 412). For example, the system can concatenate the attended outputs from the attention heads and then provide concatenated output as the output of the attention mechanism.
The system can perform the process 450 in parallel for each position in the input sequence to the attention layer, i.e., for each attended layer input at each position in the sequence.
The system obtains the attended layer input (step 452).
The system selects, based on the attended layer input, a proper subset of elements in an intermediate output of the sub-layer that are constrained to have a zero value (step 454). That is, only the proper subset of elements are constrained to have zero values and the other elements of the attended layer input that are not in the proper subset are not constrained to have a zero value. The intermediate output is the output that is generated by processing the attended layer input through a feed-forward neural network layer that has a weight matrix and that applies an element-wise non-linear activation function, e.g., a ReLU non-linearity.
The system processes the attended layer input through a feed-forward neural network layer to generate the intermediate output while constraining the elements in the proper subset to have a zero value (456).
The system applies a linear transformation to the intermediate output to generate a transformed output (step 458).
The system generates the layer output at the position from the transformed output (step 460).
For example, the system can apply a residual connection, layer normalization, or both to the transformed outputs at the positions to generate the layer outputs in the output sequence.
As another example, the system can also add recurrence to the feed-forward sub-layer by incorporating a recurrent block into the feed-forward sub-layer. That is, the attention layer will also include a recurrent block configured to process the attended input sequence to generate an updated attended sequence and then the attention layer generates the layer output from the updated attended sequence and the transformed outputs generated by the feed-forward sub-layer.
For example, the system can project each attended layer input from d_model to a smaller dimension, and then apply a recurrent unit, e.g., a simple recurrent unit (SRU) to the projected input, and then project the output of the SRU back to a dimensionality of d_model and add the result to the transformed output generated from the same attended layer input. This low-rank recurrence can assist the neural network in generalizing to unseen inputs after training.
As described above, in some cases, when the neural network includes both an encoder and a decoder, the attention layers in the decoder do not include any cross-attention (as would be the case in a conventional Transformer).
As described above, rather than incorporating cross-attention into the decoder 500, the decoder 500 instead processes a concatenation of (i) the encoder embeddings, i.e., the encoded representation of the network input generated by the encoder and (ii) the already generated tokens that were generated at earlier time steps.
In particular, because of the sparsity of the attention and feed-forward sub-layers, separating decoder self-attention and encoder-decoder attention (“cross-attention”) may not be necessary any more from the perspective of efficiency and the decoder 500 can achieve acceptable efficiency by simply processing the concatenated input shown in
Moreover, rather than simply remove cross-attention, in some cases, the decoder 500 can include two self-attention sub-layers, each of which perform self-attention, before the feed-forward sub-layer in each decoder block to add additional computational capacity to the decoder 500.
In these cases, the attention layers in the decoder generate, from the input sequence, an initial attended input sequence at least in part by applying a first attention mechanism 510 to at least a portion of the input sequence for the attention layer and then generate, from the initial attended input sequence, the attended input sequence at least in part by applying a second attention mechanism 520 to at least a portion of the initial attended input sequence. In some cases, as shown in
While not shown in
A reversible attention layer is an attention layer that has a reversible residual connection (a “reversible swap”) in place of the residual connections within the attention layer.
For example, when the attention layer is in the decoder and includes two attention mechanisms, the layer includes a first reversible swap after the first attention mechanism, a second reversible swap after the second attention mechanism, and a third reversible swap after the feed-forward sub-layer.
When the attention layer includes only one attention mechanism, the layer includes a first reversible swap after the attention mechanism and a second reversible swap after the feed-forward sub-layer.
A reversible layer operates on a layer input that is partitioned into a pair of input partitions and then operates on the pair of input partitions to generate a pair of output partitions. An initial reversible residual connection layer within the neural network, i.e., before any reversible attention layers, can perform the partition, for example, by applying binary maskings to the layer input. For example, the masking can be a checkerboard pattern masking that has value 1 where the sum of spatial input coordinates is odd, and 0 otherwise. As another example, the masking can be a channel-wise masking that has value 1 for the first half of the input channel dimensions and 0 for the second half.
Thus, when the attention layer is in the decoder and includes two attention mechanisms, the first attention mechanism applies attention over the first partition and then the first reversible swap sums the output of the attention mechanism with the second partition to generate an initial attended partition, the second attention mechanism applies attention over the second initial attended partition to generate an attended partition and the second reversible swap sums the first partition with the attended partition to generate a final attended partition, the feed-forward sub layer operates on the final attended partition to generate a layer output partition and the third reversible swap sums the layer output partition with the second initial attended partition to generate a final layer output partition. The output of the layer is then the final layer output partition and the final attended partition.
When the attention layer includes only one attention mechanism, the attention mechanism applies attention over the first partition and then the first reversible swap sums the output of the attention mechanism with the second partition to generate an attended partition, the feed-forward sub layer operates on the attended partition to generate a layer output partition and the second reversible swap sums the layer output partition with the first partition to generate a final layer output partition. The output of the layer is then the final layer output partition and the attended partition.
Optionally, layer normalization can be applied before or after any of the reversible swaps in the layer.
Thus, when a given sparse attention layer is a reversible sparse attention layer, applying an attention mechanism to a given input sequence should be understood as referring to applying an attention mechanism to a corresponding partition of the given input sequence. Similarly, the feed-forward sub-layer operating on a given attended input sequence should be understood as referring to operating on a corresponding partition of an overall attended input sequence.
Including these reversible attention layers allows a training system to recompute the input of each layer on-demand during back-propagation, rather than storing it in memory, resulting in significant memory savings during training and allowing large models to be trained end-to-end or fine-tuned even on a single machine.
Reversible layers are described in more detail in Nikita Kitaev, Lukasz Kaiser, and Anselm Levskaya. Reformer: The efficient transformer. arXiv preprint arXiv:2001.04451, 2020, the entire contents of which are hereby incorporated by reference in their entirety.
This specification uses the term “configured” in connection with systems and computer program components. For a system of one or more computers to be configured to perform particular operations or actions means that the system has installed on it software, firmware, hardware, or a combination of them that in operation cause the system to perform the operations or actions. For one or more computer programs to be configured to perform particular operations or actions means that the one or more programs include instructions that, when executed by data processing apparatus, cause the apparatus to perform the operations or actions.
Embodiments of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible non transitory storage medium for execution by, or to control the operation of, data processing apparatus. The computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them. Alternatively or in addition, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus.
The term “data processing apparatus” refers to data processing hardware and encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can also be, or further include, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can optionally include, in addition to hardware, code that creates an execution environment for computer programs, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
A computer program, which may also be referred to or described as a program, software, a software application, an app, a module, a software module, a script, or code, can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages; and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data, e.g., one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple coordinated files, e.g., files that store one or more modules, sub programs, or portions of code. A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a data communication network.
In this specification, the term “database” is used broadly to refer to any collection of data: the data does not need to be structured in any particular way, or structured at all, and it can be stored on storage devices in one or more locations. Thus, for example, the index database can include multiple collections of data, each of which may be organized and accessed differently.
Similarly, in this specification the term “engine” is used broadly to refer to a software-based system, subsystem, or process that is programmed to perform one or more specific functions. Generally, an engine will be implemented as one or more software modules or components, installed on one or more computers in one or more locations. In some cases, one or more computers will be dedicated to a particular engine; in other cases, multiple engines can be installed and running on the same computer or computers.
The processes and logic flows described in this specification can be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by special purpose logic circuitry, e.g., an FPGA or an ASIC, or by a combination of special purpose logic circuitry and one or more programmed computers.
Computers suitable for the execution of a computer program can be based on general or special purpose microprocessors or both, or any other kind of central processing unit. Generally, a central processing unit will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a central processing unit for performing or executing instructions and one or more memory devices for storing instructions and data. The central processing unit and the memory can be supplemented by, or incorporated in, special purpose logic circuitry. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device, e.g., a universal serial bus (USB) flash drive, to name just a few.
Computer readable media suitable for storing computer program instructions and data include all forms of non volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks.
To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's device in response to requests received from the web browser. Also, a computer can interact with a user by sending text messages or other forms of message to a personal device, e.g., a smartphone that is running a messaging application, and receiving responsive messages from the user in return.
Data processing apparatus for implementing machine learning models can also include, for example, special-purpose hardware accelerator units for processing common and compute-intensive parts of machine learning training or production, i.e., inference, workloads.
Machine learning models can be implemented and deployed using a machine learning framework, e.g., a TensorFlow framework, a Microsoft Cognitive Toolkit framework, an Apache Singa framework, or an Apache MXNet framework.
Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface, a web browser, or an app through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some embodiments, a server transmits data, e.g., an HTML page, to a user device, e.g., for purposes of displaying data to and receiving user input from a user interacting with the device, which acts as a client. Data generated at the user device, e.g., a result of the user interaction, can be received at the server from the device.
While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any invention or on the scope of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination.
Moreover, although features may be described above as acting in certain combinations and even initially be claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
Similarly, while operations are depicted in the drawings and recited in the claims in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system modules and components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
Particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. As one example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In some cases, multitasking and parallel processing may be advantageous.
This application claims priority to U.S. Provisional Application No. 63/146,551, filed on Feb. 5, 2021. The disclosure of the prior application is considered part of and is incorporated by reference in the disclosure of this application.
Number | Date | Country | |
---|---|---|---|
63146551 | Feb 2021 | US |