modeling#
- class BlenderbotSmallModel(config: BlenderbotSmallConfig)[source]#
Bases:
BlenderbotSmallPretrainedModelConstruct a bare BlenderbotSmall Model.
This model inherits from
PretrainedModel. Check the superclass documentation for the generic methods and the library implements for all its model.This model is also a Paddle paddle.nn.Layer subclass. Use it as a regular Paddle Layer and refer to the Paddle documentation for all matter related to general usage and behavior.
- forward(input_ids=None, attention_mask=None, decoder_input_ids=None, decoder_attention_mask=None, encoder_output=None, use_cache=False, cache=None, **kwargs)[source]#
- Parameters:
input_ids (Tensor) – Indices of input sequence tokens in the vocabulary. They are numerical representations of tokens that build the input sequence. It’s data type should be
int64and has a shape of [batch_size, sequence_length].attention_mask (Tensor, optional) –
Mask to indicate whether to perform attention on each input token or not. The values should be either 0 or 1. The attention scores will be set to -infinity for any positions in the mask that are 0, and will be unchanged for positions that are 1.
1 for tokens that are not masked,
0 for tokens that are masked.
It’s data type should be
float32and has a shape of [batch_size, sequence_length]. Defaults toNone.decoder_input_ids (Tensor, optional) – If not provided,
decoder_input_idswill be automatically generated based ondecoder_start_token_idandinput_ids.decoder_attention_mask (Tensor, optional) – If not provided, the default
decoder_attention_maskwill be a tensor with upper triangular part being-np.inf. the shape will be(decoder_length, decoder_length)encoder_output (Tensor, optional) – The output of encoder. If not provided, a new
encoder_outputwill be generated from BlenderbotEncoder. Defaults toNone.use_cache (bool, optional) – Indicates whether to use cache to speed up decoding. Defaults to
Falsecache (list, optional) – It is a list, and each element in the list is a tuple(
(incremental_cache, static_cache)). SeeTransformerDecoder.gen_cachefor more details. It is only used for inference and should be None for training. Default None.
- Returns:
If
use_cache=False, the return will be the last hidden state of decoder with shape of [batch_size, seq_lens, hidden_size].seq_lenscorresponds to the length of input sequence. Otherwise, the return will be a tuple of(decoder_output, cache). Please refer to classpaddle.nn.TransformerDecoderfor more information regardingcache.- Return type:
Tensor|tuple
Example
import paddle from paddlenlp.transformers import BlenderbotSmallTokenizer, BlenderbotSmallModel
# “blenderbot_small-90M” is pretrained weight of BlenderbotSmallForConditionalGeneration, # Therefore some weight of additional layers in BlenderbotSmallForConditionalGeneration # might not be loaded and used. pretrained_model_name = “blenderbot_small-90M” tokenizer = BlenderbotSmallTokenizer.from_pretrained(pretrained_model_name) model = BlenderbotSmallModel.from_pretrained(pretrained_model_name)
sample_text = “My friends are cool but they eat too many carbs.” inputs = tokenizer(sample_text, return_attention_mask=True, return_token_type_ids=False) inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} decoder_output = model(**inputs)
- get_input_embeddings()[source]#
get input embedding of model
- Returns:
embedding of model
- Return type:
nn.Embedding
- set_input_embeddings(value)[source]#
set new input embedding for model
- Parameters:
value (Embedding) – the new embedding of model
- Raises:
NotImplementedError – Model has not implement
set_input_embeddingsmethod
- class BlenderbotSmallPretrainedModel(*args, **kwargs)[source]#
Bases:
PretrainedModelAn abstract class for pretrained BlenderbotSmall models. It provides BlenderbotSmall related
model_config_file,resource_files_names,pretrained_resource_files_map,pretrained_init_configuration,base_model_prefixfor downloading and loading pretrained models. Refer toPretrainedModelfor more details.- config_class#
alias of
BlenderbotSmallConfig
- base_model_class#
alias of
BlenderbotSmallModel
- class BlenderbotSmallEncoder(config: BlenderbotSmallConfig, embed_tokens=None)[source]#
Bases:
BlenderbotSmallPretrainedModelThe encoder of BlenderbotSmall Model. Please refer to
PretrainedModelorBlenderbotSmallModelfor more details regarding methods and arguments.
- class BlenderbotSmallDecoder(config: BlenderbotSmallConfig, embed_tokens=None)[source]#
Bases:
BlenderbotSmallPretrainedModelThe decoder of BlenderbotSmall Model. Please refer to
PretrainedModelandBlenderbotModelfor more information regarding methods and arguments.
- class BlenderbotSmallForConditionalGeneration(config: BlenderbotSmallConfig)[source]#
Bases:
BlenderbotSmallPretrainedModelPlease refer to
BlenderbotModelfor more information regarding arguments. :returns:- If
use_cache=False, the return will be a tensor with shape of [batch_size, seq_lens, hidden_size]. Otherwise, the return will be a tuple of
(decoder_output, cache).
- Return type:
Tensor|tuple
Example
import paddle from paddlenlp.transformers import BlenderbotSmallTokenizer, BlenderbotSmallForConditionalGeneration pretrained_model_name = "blenderbot_small-90M" tokenizer = BlenderbotSmallTokenizer.from_pretrained(pretrained_model_name) model = BlenderbotSmallForConditionalGeneration.from_pretrained(pretrained_model_name) sample_text = "My friends are cool but they eat too many carbs." inputs = tokenizer(sample_text, return_attention_mask=True, return_token_type_ids=False) inputs = {k: paddle.to_tensor([v]) for (k, v) in inputs.items()} result_ids, score = model.generate(input_ids=inputs['input_ids'], max_length=60, min_length=20, decode_strategy='beam_search', num_beams=10, length_penalty=0.65 ) for sequence_ids in result_ids.numpy().tolist(): print("User: ", sample_text) print("bot: ", tokenizer.convert_ids_to_string(sequence_ids))
- forward(input_ids=None, attention_mask=None, decoder_input_ids=None, decoder_attention_mask=None, encoder_output=None, use_cache=False, cache=None)[source]#
Defines the computation performed at every call. Should be overridden by all subclasses.
- Parameters:
*inputs (tuple) – unpacked tuple arguments
**kwargs (dict) – unpacked dict arguments
- If
- class BlenderbotSmallForCausalLM(config: BlenderbotSmallConfig)[source]#
Bases:
BlenderbotSmallPretrainedModelConstructs BLenderbotSmall For Causal Language Model. This model is equivalent to the blenderbotSmall decoder without cross-attention.
- forward(input_ids=None, attention_mask=None, use_cache=False, cache=None, **kwargs)[source]#
- Parameters:
input_ids (Tensor) – Indices of input sequence tokens in the vocabulary. They are numerical representations of tokens that build the input sequence. It’s data type should be
int64and has a shape of [batch_size, sequence_length].attention_mask (Tensor, optional) –
Mask to indicate whether to perform attention on each input token or not. The values should be either 0 or 1. The attention scores will be set to -infinity for any positions in the mask that are 0, and will be unchanged for positions that are 1.
1 for tokens that are not masked,
0 for tokens that are masked.
It’s data type should be
float32and has a shape of [batch_size, sequence_length]. Defaults toNone.use_cache (bool, optional) – Indicates whether to use cache to speed up decoding. Defaults to
Falsecache (list, optional) – It is a list, and each element in the list is a tuple(
(incremental_cache, static_cache)). Seepaddle.nn.TransformerDecoder.gen_cachefor more details. It is only used for inference and should be None for training. Default None.
- Returns:
- If
use_cache=False, the return will be a tensor with shape of [batch_size, seq_lens, hidden_size]. Otherwise, the return will be a tuple of
(lm_logits, cache).
- If
- Return type:
Tensor|tuple
Example
import paddle from paddlenlp.transformers import BlenderbotSmallTokenizer, BlenderbotSmallForCausalLM use_cache = False text = “My friends are cool but they eat too many carbs.” model_name = “blenderbot_small-90M” tokenizer = BlenderbotSmallTokenizer.from_pretrained(model_name) model = BlenderbotSmallForCausalLM.from_pretrained(model_name) model.eval() inputs = tokenizer(text, return_attention_mask=True, return_token_type_ids=False) inputs = {k: paddle.to_tensor([v]) for (k, v) in inputs.items()}
- with paddle.no_grad():
outputs = model(**inputs, use_cache=use_cache) # outputs is a tuple of (lm_logits, cache) if
use_cache=True.