Transformer language model. Arguments: transformer_hparams: transformer hyperparameters attention_mask_func: a function that takes `unmaksed-attention-scores` with size [b, np, s, s] and an `attention-mask` and will apply the masking. The function should
| 816 | |
| 817 | |
| 818 | class TransformerLanguageModel(paddle.nn.Layer): |
| 819 | """Transformer language model. |
| 820 | |
| 821 | Arguments: |
| 822 | transformer_hparams: transformer hyperparameters |
| 823 | attention_mask_func: a function that takes `unmaksed-attention-scores` |
| 824 | with size [b, np, s, s] and an `attention-mask` and will apply |
| 825 | the masking. The function should return a masked score of the |
| 826 | same size [b, np, s, s]. |
| 827 | masked-attention-scores = attention_mask_func( |
| 828 | unmaksed-attention-scores, attention-mask) |
| 829 | vocab_size: vocabulary size |
| 830 | max_sequence_length: maximum size of sequence. This |
| 831 | is used for positional embedding |
| 832 | """ |
| 833 | |
| 834 | def __init__( |
| 835 | self, |
| 836 | hidden_size, |
| 837 | num_layers, |
| 838 | num_attention_heads, |
| 839 | padded_vocab_size, |
| 840 | max_position_embeddings, |
| 841 | ): |
| 842 | super(TransformerLanguageModel, self).__init__() |
| 843 | self.hidden_size = hidden_size |
| 844 | self.num_layers = num_layers |
| 845 | self.num_attention_heads = num_attention_heads |
| 846 | self.padded_vocab_size = padded_vocab_size |
| 847 | self.max_position_embeddings = max_position_embeddings |
| 848 | |
| 849 | # Embeddings |
| 850 | self.embedding = Embedding(self.hidden_size, |
| 851 | self.padded_vocab_size, |
| 852 | self.max_position_embeddings) |
| 853 | self._embedding_key = 'embedding' |
| 854 | |
| 855 | # Query embeddings |
| 856 | self.topQueryEmbedding = QueryEmbedding(self.hidden_size, |
| 857 | self.padded_vocab_size, |
| 858 | self.max_position_embeddings) |
| 859 | self._topQueryEmbedding_key = 'topQueryEmbedding' |
| 860 | |
| 861 | # Transformer |
| 862 | self.transformer = Transformer(self.hidden_size, |
| 863 | self.num_attention_heads, |
| 864 | self.num_layers) |
| 865 | self._transformer_key = 'transformer' |
| 866 | |
| 867 | def forward( |
| 868 | self, |
| 869 | input_ids, |
| 870 | position_ids, |
| 871 | attention_mask, |
| 872 | layer_past=None, |
| 873 | get_key_value=False, |
| 874 | prompt_length=None, |
| 875 | context_length=None, |