Hugging Face Transformers v2.9.0stable Released May 07, 2020
โš ๏ธ Breaking Change Impact Score: 7/10

Hugging Face Transformers: Trainer, TFTrainer, Multilingual BART, Encoder-decoder improvements, Generation Pipeline

Source available โ€” automated, not human-reviewed

Component: transformers ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Breaking-change evidence from the source

  • Breaking change This introduces a breaking change, in that it increases the default output length of T5Model and T5ForConditionalGeneration from 4 to 5 (including the past_key_value_states).
  • This introduces a breaking change, in that it increases the default output length of T5Model and T5ForConditionalGeneration from 4 to 5 (including the past_key_value_states).
Read the original context โ†—
Source flags breaking changes โ€” review applicability
$ python -m pip install 'transformers==2.9.0'
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

Hugging Face Transformers v2.9.0. Source highlight: Trainer & TFTrainer (@julien-c)

Who Does This Impact? (Role-Based Analysis)

๐Ÿ’ป Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

๐Ÿ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

โš™๏ธ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

โš ๏ธ Breaking Changes & Deprecations (2)

  • Breaking change This introduces a breaking change, in that it increases the default output length of T5Model and T5ForConditionalGeneration from 4 to 5 (including the past_key_value_states).
  • This introduces a breaking change, in that it increases the default output length of T5Model and T5ForConditionalGeneration from 4 to 5 (including the past_key_value_states).

โœจ New Features & Capabilities (3)

  • Both the TensorFlow and PyTorch trainers have TPU support (@jplu, @LysandreJik, @julien-c). An additional utility is added so that the TPU scripts may be launched in a similar manner to `torch.distributed`.
  • Additional tests and support has been added to `huggingface/tokenizers` tokenizers. (@mfuntowicz, @thomwolf)
  • Clean Encoder-Decoder models with Bart/T5-like API and add generate possibility (@patrickvonplaten)

โšก Performance & Enhancements (3)

  • TensorFlow models work out-of-the-box with the new tokenizers (@LysandreJik)
  • Apply Encoder Decoder 1.5GB memory savings to TF as well (@patrickvonplaten, translation of same work on PyTorch models by @sshleifer)
  • BART Summarization fine-tuning script now works for T5 as well (@sshleifer)

๐Ÿ”ง Bug Fixes & Patches (6)

  • Clean the generate testing functions (@patrickvonplaten)
  • Notebooks updated in the documentation (@LysandreJik)
  • Fix RoBERTa/XLNet Pad Token in run_multiple_choice.py (@ethanjperez)
  • Fixed RoBERTa conversion script (@myleott)
  • Speedup torch summarization tests (@sshleifer)
  • Optimize causal mask using torch.where (@Akababa)
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
# Trainer & TFTrainer (@julien-c) **Version 2.9 introduces a new `Trainer` class for PyTorch, and its equivalent `TFTrainer` for TF 2.** This let us reorganize the example scripts completely for a cleaner codebase. The main features of the Trainer are: - Same user-facing API for PyTorch and TF 2 - Support for CPU, GPU, Multi-GPU, and TPU - Easier than ever to share your fine-tuned models **The TFTrainer was largely contributed by awesome community member @jplu!** ๐Ÿ”ฅ ๐Ÿ”ฅ A few additional features of the example scripts are: - Generate argparsers from type hints on dataclasses - Can load arguments from json files - Logging through TensorBoard and wandb Documentation for the Trainer is still work-in-progress, please consider contributing improvements. ## TPU Support - Both the TensorFlow and PyTorch trainers have TPU support (@jplu, @LysandreJik, @julien-c). An additional utility is added so that the TPU scripts may be launched in a similar manner to `torch.distributed`. - This was built with the support of @jysohn23, member of the Google TPU team --- # Multilingual BART (@sshleifer) New BART checkpoint converted: this adds `mbart-en-ro model`, a BART variant finetuned on english-romanian translation. # Improved support for `huggingface/tokenizers` - Additional tests and support has been added to `huggingface/tokenizers` tokenizers. (@mfuntowicz, @thomwolf) - TensorFlow models work out-of-the-box with the new tokenizers (@LysandreJik) # Decoder caching for T5 (@patrickvonplaten) Auto-regressive decoding for T5 has been greatly sped up by storing past key/value states. Work done on both PyTorch and TensorFlow. ## Breaking change This introduces a breaking change, in that it increases the default output length of T5Model and T5ForConditionalGeneration from 4 to 5 (including the past_key_value_states). # Encoder-Decoder enhancements - Apply Encoder Decoder 1.5GB memory savings to TF as well (@patrickvonplaten, translation of same work on PyTorch models by @sshleifer) - BART Summarization fine-tuning script now works for T5 as well (@sshleifer) - Clean Encoder-Decoder models with Bart/T5-like API and add generate possibility (@patrickvonplaten) # Additional model architectures Question Answering support for Albert and Roberta in TF with (@Pierrci): - Question Answering support for Albert and Roberta in TF - TFAlbertForQuestionAnswering # Pipelines - The question answering pipeline now handles impossible answers (@bryant1410) - Remove tqdm logging (@mfuntowicz) - Sentiment analysis pipeline can now handle more than two sequences (@xxbidiao) - Rewritten batch support in pipelines (@mfuntowicz) ## Text Generation pipeline (@enzoampil) Implements a text generation pipeline, `GenerationPipeline`, which works on any `ModelWithLMHead` head. # Fixes and improvements - Clean the generate testing functions (@patrickvonplaten) - Notebooks updated in the documentation (@LysandreJik) - Fix RoBERTa/XLNet Pad Token in run_multiple_choice.py (@ethanjperez) - Fixed RoBERTa conversion script (@myleott) - Speedup torch summarization tests (@sshleifer) - Optimize causal mask using torch.where (@Akababa) - Improved benchmarking utils (@patrickvonplaten) - Fixed edge case for bert tokenization (@patrickvonplaten) - SummarizationDataset cleanup (@sshleifer) - BART: Replace config.output_past with use_cache kwarg (@sshleifer) - Better documentation for Summarization and Translation pipeline (@julien-c) - Additional documentation for model cards (@julien-c) - Fix force_download of files on Windows (@calpt) - Fix shuffling issue for distributed training (@elk-cloner) - Shift labels internally within TransfoXLLMHeadModel when called with labels (@TevenLeScao) - Remove `output_past` everywhere and replace by `use_cache` argument (@patrickvonplaten) - Added unit test for run_bart_sum (@sshleifer) - Cleaner code by factorizating a few methods back in the `PreTrainedModel` (@sshleifer) - [Bert] remove hard-coded pad token id (@patrickvonplaten) - Clean pipelines test and remove unnecessary code (@patrickvonplaten) - JITting is not compatible with PyTorch/XLA or any other frameworks that requires serialization. The JITted methods were removed (@LysandreJik) - Change newstest2013 to newstest2014 and clean up (@patrickvonplaten) - Factor out tensor conversion method in `PretrainedTokenizer` (@sshleifer) - Remove tanh torch warnings (@aryanshomray) - Fix token_type_id in BERT question-answering example (@siboehm) - Add CircleCI workflow to build docs for preview (@harupy) - Higher tolerance for past testing in T5 and TF T5 (@patrickvonplaten) - XLM tokenizer should encode with bos token (@LysandreJik) - XLM tokenizer should encode with bos token (@patrickvonplaten) - fix summarization do_predict (@sshleifer) - Encode to max length of input not max length of tokenizer for batch input (@patrickvonplaten) - Add `qas_id` to SquadResult and SquadExample (@jarednielsen) - Fix bug in run_*.py scripts: double wrap into DataParallel during eval (@and-kul) - Fix torchhub integration (@julien-c) - Fix TFAlbertForSequenceClassification classifier dropout probability (@jarednielsen) - Change uses of pow(x, 3) to pow(x, 3.0) (@mneilly-et) - Shuffle train subset for summarization example (@Colanim) - Removed the boto3 dependency (@julien-c) - Add dialogpt training tips (@patrickvonplaten) - Generation can now start with an empty prompt (@patrickvonplaten) - GPT-2 is now traceable (@jazzcook15) - Add known 3rd party to setup.cfg; removes local/circle ci isort discrepancy. (@sshleifer) - Allow a more backward compatible behavior of max_len_single_sentence and max_len_sentences_pair (@thomwolf) - Now using CDN urls for weights (@julien-c) - [Fix common tests on GPU] send model, ids to torch_device (@sshleifer) - Fix TF input docstrings to refer to tf.Tensor rather than torch.Float (@jarednielsen) - Additional metadata to traing arguments (@parmarsuraj99) - [ci] Load pretrained models into the default (long-lived) cache (@julien-c) - add timeout_decorator to tests (@sshleifer) - Added XLM-R to the multilingual section in the documentation (@stefan-it) - Better `num_labels` in configuration objects - Updated pytorch lightning scripts (@williamFalcon) - Tests now pass with torch 1.5.0 (@LysandreJik) - Ensure fast tokenizer can construct single-element tensor without pad token (@mfuntowicz)