Pegasus
This model was released on 2019-12-18 and added to Hugging Face Transformers on 2020-11-16.
Pegasus
Section titled “Pegasus”Pegasus is an encoder-decoder (sequence-to-sequence) transformer model pretrained on unlabeled text to perform abstractive summarization. Pegasus is trained jointly on two self-supervised objective functions, masked language modeling (MLM) and gap sentence generation (GSG). Whole sentences are masked and the model has to fill in the gaps in the document. It can be fine-tuned with good performance even on small datasets with only 1000 examples.
You can find all the original Pegasus checkpoints under the Google organization.
The example below demonstrates how to summarize text with Pipeline, AutoModel, and from the command line.
import torchfrom transformers import pipeline
pipeline = pipeline( task="summarization", model="google/pegasus-xsum", dtype=torch.float16, device=0)pipeline("""Plants are remarkable organisms that produce their own food using a method called photosynthesis.This process involves converting sunlight, carbon dioxide, and water into glucose, which provides energy for growth.Plants play a crucial role in sustaining life on Earth by generating oxygen and serving as the foundation of most ecosystems.""")import torchfrom transformers import AutoModelForSeq2SeqLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained( "google/pegasus-xsum")model = AutoModelForSeq2SeqLM.from_pretrained( "google/pegasus-xsum", dtype=torch.float16, device_map="auto", attn_implementation="sdpa")
input_text = """Plants are remarkable organisms that produce their own food using a method called photosynthesis.This process involves converting sunlight, carbon dioxide, and water into glucose, which provides energy for growth.Plants play a crucial role in sustaining life on Earth by generating oxygen and serving as the foundation of most ecosystems."""input_ids = tokenizer(input_text, return_tensors="pt").to(model.device)
output = model.generate(**input_ids, cache_implementation="static")print(tokenizer.decode(output[0], skip_special_tokens=True))echo -e "Plants are remarkable organisms that produce their own food using a method called photosynthesis. This process involves converting sunlight, carbon dioxide, and water into glucose, which provides energy for growth. Plants play a crucial role in sustaining life on Earth by generating oxygen and serving as the foundation of most ecosystems." | transformers run --task summarization --model google/pegasus-xsum --device 0Quantization reduces the memory burden of large models by representing the weights in a lower precision. Refer to the Quantization overview for more available quantization backends.
The example below uses bitsandbytes to only quantize the weights to int4.
import torchfrom transformers import BitsAndBytesConfig, AutoModelForSeq2SeqLM, AutoTokenizer
quantization_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16, bnb_4bit_quant_type="nf4")model = AutoModelForSeq2SeqLM.from_pretrained( "google/pegasus-xsum", dtype=torch.bfloat16, device_map="auto", quantization_config=quantization_config)
tokenizer = AutoTokenizer.from_pretrained( "google/pegasus-xsum")input_text = """Plants are remarkable organisms that produce their own food using a method called photosynthesis.This process involves converting sunlight, carbon dioxide, and water into glucose, which provides energy for growth.Plants play a crucial role in sustaining life on Earth by generating oxygen and serving as the foundation of most ecosystems."""input_ids = tokenizer(input_text, return_tensors="pt").to(model.device)
output = model.generate(**input_ids, cache_implementation="static")print(tokenizer.decode(output[0], skip_special_tokens=True))AdaFactoris the recommended optimizer for fine-tuning Pegasus.- This implementation of Pegasus inherits from
BartForConditionalGenerationbut it uses static/sinusoidal positional embeddings instead. Pegasus also starts generating withpad_token_idas the prefix and usesnum_beams=8.
PegasusConfig
Section titled “PegasusConfig”[[autodoc]] PegasusConfig
PegasusTokenizer
Section titled “PegasusTokenizer”warning: add_tokens does not work at the moment.
[[autodoc]] PegasusTokenizer
PegasusTokenizerFast
Section titled “PegasusTokenizerFast”[[autodoc]] PegasusTokenizerFast
PegasusModel
Section titled “PegasusModel”[[autodoc]] PegasusModel - forward
PegasusForConditionalGeneration
Section titled “PegasusForConditionalGeneration”[[autodoc]] PegasusForConditionalGeneration - forward
PegasusForCausalLM
Section titled “PegasusForCausalLM”[[autodoc]] PegasusForCausalLM - forward