Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update dependency transformers to v4.48.0 #130

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jun 5, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
transformers ==4.38.0 -> ==4.48.0 age adoption passing confidence

Release Notes

huggingface/transformers (transformers)

v4.48.0: : ModernBERT, Aria, TimmWrapper, ColPali, Falcon3, Bamba, VitPose, DinoV2 w/ Registers, Emu3, Cohere v2, TextNet, DiffLlama, PixtralLarge, Moonshine

Compare Source

New models

ModernBERT

The ModernBert model was proposed in Smarter, Better, Faster, Longer: A Modern Bidirectional Encoder for Fast, Memory Efficient, and Long Context Finetuning and Inference by Benjamin Warner, Antoine Chaffin, Benjamin Clavié, Orion Weller, Oskar Hallström, Said Taghadouini, Alexis Galalgher, Raja Bisas, Faisal Ladhak, Tom Aarsen, Nathan Cooper, Grifin Adams, Jeremy Howard and Iacopo Poli.

It is a refresh of the traditional encoder architecture, as used in previous models such as BERT and RoBERTa.

It builds on BERT and implements many modern architectural improvements which have been developed since its original release, such as:

  • Rotary Positional Embeddings to support sequences of up to 8192 tokens.
  • Unpadding to ensure no compute is wasted on padding tokens, speeding up processing time for batches with mixed-length sequences.
  • GeGLU Replacing the original MLP layers with GeGLU layers, shown to improve performance.
  • Alternating Attention where most attention layers employ a sliding window of 128 tokens, with Global Attention only used every 3 layers.
  • Flash Attention to speed up processing.
  • A model designed following recent The Case for Co-Designing Model Architectures with Hardware, ensuring maximum efficiency across inference GPUs.
  • Modern training data scales (2 trillion tokens) and mixtures (including code ande math data)

image

Aria

The Aria model was proposed in Aria: An Open Multimodal Native Mixture-of-Experts Model by Li et al. from the Rhymes.AI team.

Aria is an open multimodal-native model with best-in-class performance across a wide range of multimodal, language, and coding tasks. It has a Mixture-of-Experts architecture, with respectively 3.9B and 3.5B activated parameters per visual token and text token.

TimmWrapper

We add a TimmWrapper set of classes such that timm models can be loaded in as transformer models into the library.

Here's a general usage example:

import torch
from urllib.request import urlopen
from PIL import Image
from transformers import AutoConfig, AutoModelForImageClassification, AutoImageProcessor

checkpoint = "timm/resnet50.a1_in1k"
img = Image.open(urlopen(
    'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))

image_processor = AutoImageProcessor.from_pretrained(checkpoint)
inputs = image_processor(img, return_tensors="pt")
model = AutoModelForImageClassification.from_pretrained(checkpoint)

with torch.no_grad():
    logits = model(**inputs).logits

top5_probabilities, top5_class_indices = torch.topk(logits.softmax(dim=1) * 100, k=5)

Thanks to this, timm models now have access to pipelines, as well as Trainer, accelerate device maps, quantization, etc:

import torch
from urllib.request import urlopen
from PIL import Image

from transformers import pipeline

img = Image.open(urlopen(
    'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))
pipe = pipeline("image-classification", model="timm/resnet18.a1_in1k")
print(pipe(img))
Pixtral-Large

Pixtral modeling and checkpoint conversion code has been updated to support the new Pixtral-Large model.

ColPali

The ColPali model was proposed in ColPali: Efficient Document Retrieval with Vision Language Models by Manuel Faysse*, Hugues Sibille*, Tony Wu*, Bilel Omrani, Gautier Viaud, Céline Hudelot, Pierre Colombo (* denotes equal contribution). Work lead by ILLUIN Technology.

In the proposed ColPali approach, the authors leverage VLMs to construct efficient multi-vector embeddings directly from document images (“screenshots”) for document retrieval. They train the model to maximize the similarity between these document embeddings and the corresponding query embeddings, using the late interaction method introduced in ColBERT.

colpali_architecture

Falcon3

Falcon3 represents a natural evolution from previous releases, emphasizing expanding the models’ science, math, and code capabilities. This iteration includes five base models: Falcon3-1B-Base, Falcon3-3B-Base, Falcon3-Mamba-7B-Base, Falcon3-7B-Base, and Falcon3-10B-Base. In developing these models, the authors incorporated several key innovations aimed at improving the models’ performances while reducing training costs:

One pre-training: They conducted a single large-scale pretraining run on the 7B model, using 2048 H100 GPU chips, leveraging 14 trillion tokens featuring web, code, STEM, and curated high-quality and multilingual data. Depth up-scaling for improved reasoning: Building on recent studies on the effects of model depth, they upscaled the 7B model to a 10B parameters model by duplicating the redundant layers and continuing pre-training with 2TT of high-quality data. This yielded Falcon3-10B-Base which achieves state-of-the-art zero-shot and few-shot performance for models under 13B parameters. Knowledge distillation for better tiny models: To provide compact and efficient alternatives, we developed Falcon3-1B-Base and Falcon3-3B-Base by leveraging pruning and knowledge distillation techniques, using less than 100GT of curated high-quality data, thereby redefining pre-training efficiency.

Bamba

Bamba-9B is a decoder-only language model based on the Mamba-2 architecture and is designed to handle a wide range of text generation tasks. It is trained from scratch using a two-stage training approach. In the first stage, the model is trained on 2 trillion tokens from the Dolma v1.7 dataset. In the second stage, it undergoes additional training on 200 billion tokens, leveraging a carefully curated blend of high-quality data to further refine its performance and enhance output quality.

Checkout all Bamba-9B model checkpoints here.

VitPose

ViTPose is a state-of-the-art vision transformer-based model for human pose estimation, introduced by Yufei Xu, Jing Zhang, Qiming Zhang, and Dacheng Tao in "ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation”.

The model leverages the capabilities of vision transformers to accurately predict 2D human keypoints. Adopting a top-down approach, ViTPose estimates keypoints locations for each detected person, allowing it to be easily used with any object detection model.

vitpose

DINOv2 with registers

The DINOv2 with Registers model was proposed in Vision Transformers Need Registers by Timothée Darcet, Maxime Oquab, Julien Mairal, Piotr Bojanowski.

The Vision Transformer (ViT) is a transformer encoder model (BERT-like) originally introduced to do supervised image classification on ImageNet.

Next, people figured out ways to make ViT work really well on self-supervised image feature extraction (i.e. learning meaningful features, also called embeddings) on images without requiring any labels. Some example papers here include DINOv2 and MAE.

The authors of DINOv2 noticed that ViTs have artifacts in attention maps. It’s due to the model using some image patches as “registers”. The authors propose a fix: just add some new tokens (called “register” tokens), which you only use during pre-training (and throw away afterwards). This results in:

  • no artifacts
  • interpretable attention maps
  • and improved performances.
Emu3

The Emu3 model was proposed in Emu3: Next-Token Prediction is All You Need by Xinlong Wang, Xiaosong Zhang, Zhengxiong Luo, Quan Sun, Yufeng Cui, Jinsheng Wang, Fan Zhang, Yueze Wang, Zhen Li, Qiying Yu, Yingli Zhao, Yulong Ao, Xuebin Min, Tao Li, Boya Wu, Bo Zhao, Bowen Zhang, Liangdong Wang, Guang Liu, Zheqi He, Xi Yang, Jingjing Liu, Yonghua Lin, Tiejun Huang, Zhongyuan Wang.

Emu3 sets a new standard in multimodal AI by using next-token prediction to handle images, text, and videos. It simplifies multimodal modeling by tokenizing all data into a unified format and training a single transformer. Visual data is tokenized using vector quantization methods based on VQ-VAE model. Discretized visual tokens are later fused with text token ids for image and text generation.

Emu3 outperforms leading models like SDXL and LLaVA-1.6 in both generation and perception tasks, without relying on diffusion or compositional methods..

Cohere2

A new Cohere update was added through a new "Cohere2" set of classes.

TextNet

TextNet is a lightweight and efficient architecture designed specifically for text detection, offering superior performance compared to traditional models like MobileNetV3. With variants TextNet-T, TextNet-S, and TextNet-B (6.8M, 8.0M, and 8.9M parameters respectively), it achieves an excellent balance between accuracy and inference speed.

DiffLlama

Differential Transformer combines the Llama architecture with Differential Transformer's Attention.

PixtralLarge

The conversion script needed a few update, while the modeling code was barely changed!

  • [PixtralLarge] Update Pixtral conversion script to support large format! (#​34801)
Moonshine

Moonshine is an autoregressive speech recognition encoder-decoder model that improves upon Whisper's architecture. Namely, it replaces absolute position embeddings with Rotary Position Embeddings (RoPE). This allows Moonshine to handle audio inputs of any length, unlike Whisper, which is restricted to fixed 30-second windows. It was introduced by Nat Jeffries, Evan King, Manjunath Kudlur, Guy Nicholson, James Wang, and Pete Warden in Moonshine: Speech Recognition for Live Transcription and Voice Commands
.

Quantization methods

VPTQ Quantization

From the VPTQ contributors:

VPTQ is a novel Post-Training Quantization method that leverages Vector Quantization to high accuracy on LLMs at an extremely low bit-width (<2-bit). VPTQ can compress 70B, even the 405B model, to 1-2 bits without retraining and maintain high accuracy.. More details here: https://github.com/microsoft/vptq

HIGGS Quantization

From the contributors:

HIGGS is a new 0-shot quantization algorithm that combines Hadamard preprocessing with MSE-Optimal quantization grids to achieve lower quantization error and SOTA performance. You can find more information in the paper.

Runtime support for HIGGS is implemented through FLUTE, and its library.

This PR adds support for HIGGS+FLUTE into transformers allowing for low-error 0-shot quantization and fast LLM inference.

Cleanup

We merged a cleanup for vision language models, to make sure it all models are standardized.

Breaking changes

Conversion scripts

Many models in Transformers include scripts to convert the original model checkpoints into a Transformers-compatible format. These scripts can be found in the repo using the glob pattern models/**/convert_*.py. They were a recurring source of vulnerability reports and CVEs because many models were originally released using insecure formats like older PyTorch .bin weights or pickle files. The conversion scripts had to open these formats, and this meant that they were vulnerable to maliciously crafted inputs.

In practice, we do not see this as a serious vulnerability. The conversion scripts are never imported or called by the rest of the library; each script is standalone, and so the only way to exploit the vulnerability is to create a malicious checkpoint, induce a user to download it, and then also induce them to manually call a specific conversion script on it.

However, even if there is little practical risk of an exploit, we are aware that open vulnerability reports create a compliance problem for users, and so beginning with this release we will be excluding these conversion scripts from release branches and wheels. They will remain accessible to developers on the main branch.

Backtracking in Nougat

A regular expression used within the Nougat code has been modified to ensure it does not hang. The method should output the same results but we cannot guarantee it; we recommend upgrading to the latest transformers if you use this model to ensure your code is performance-optimized.

Whisper decoding

This PR finalizes work that aimes to enable short-form (< 30 secs) and long-form generation using temperature fallback. It is a significant improvement to the whisper codebase, but it does result in the following breaking changes:

➡️ Previously:
• Short-form: Returned a ModelOutput or torch.LongTensor, including decoder input IDs and the EOS token ID.
• Long-form: Returned a Dict or torch.LongTensor, excluding decoder input IDs and the EOS token ID.

➡️ From now on:
Short-form and long-form generation are now treated identically, meaning output differentiation based on these modes is no longer applicable.

Decoder input IDs and EOS token IDs are never returned, except in two specific cases: when return_dict_in_generate=True and (return_timestamps=False or force_unique_generate_call=True).

In this case, the output will be a ModelOutput, which is the result of the underlying call to GenerationMixin’s generate. Indeed, return_timestamps=False ensures no seeking occurs; only a single call to generate is made. Therefore, this output includes both decoder input IDs and the EOS token ID.

Attention refactor

In order to have a cleaner, isolated, future-proof code for the attention layers, they have been refactored so as to keep the model attention code within their files; but attention definitions relating to SDPA, Flash Attention, and other types of attention have been moved to a common file.

Bugfixes and improvements

Significant community contributions

The following contributors have made significant changes to the library over the last release:

v4.47.1

Compare Source

Patch release v4.47.1

We waited a little bit to make sure it was stable, thanks @​winglian for double checking and everyone for the fixes!

v4.47.0: v4.47.0: PaliGemma-2, I-JEPA, OLMo-2, LayerSkip, Tensor Parallel

Compare Source

New models

PaliGemma-2

PaliGemma 2 and PaliGemma are lightweight open vision-language models (VLM) inspired by PaLI-3, and based on open components like the SigLIP vision model and the Gemma language model. PaliGemma takes both images and text as inputs and can answer questions about images with detail and context, meaning that PaliGemma can perform deeper analysis of images and provide useful insights, such as captioning for images and short videos, object detection, and reading text embedded within images.

PaliGemma 2 is available in 3B, 10B, and 28B parameter sizes, which are based on Gemma 2 2B, 9B, and 27B models, respectively. The original PaliGemma models are available in the 3B size. For more information on Gemma model variants, see the Gemma models list. PaliGemma model variants support different pixel resolutions for image inputs, including 224 x 224, 448 x 448, and 896 x 896 pixels.

image
I-JEPA

The I-JEPA model was proposed in Image-based Joint-Embedding Predictive Architecture by Mahmoud Assran, Quentin Duval, Ishan Misra, Piotr Bojanowski, Pascal Vincent, Michael Rabbat, Yann LeCun, Nicolas Ballas. I-JEPA is a self-supervised learning method that predicts the representations of one part of an image based on other parts of the same image. This approach focuses on learning semantic features without relying on pre-defined invariances from hand-crafted data transformations, which can bias specific tasks, or on filling in pixel-level details, which often leads to less meaningful representations.

image
OLMo 2
image

The OLMo2 model is the successor of the OLMo model, which was proposed in OLMo: Accelerating the Science of Language Models.

The architectural changes from the original OLMo model to this model are:

  • RMSNorm is used instead of standard layer norm.
  • Norm is applied to attention queries and keys.
  • Norm is applied after attention/feedforward layers rather than before.

Commits:

Layer-Skip Llama

We add support for Meta's Layer-Skip Llama 3.2 1B model.

The Llama3.2 1B model was continually pretrained with LayerSkip recipe, early exit loss and layer dropout, as presented in Layer Skip: Enabling Early Exit Inference and Self-Speculative Decoding and is capable of performing self-speculative decoding: decode with earlier layers and verify with remaining layers.

image

Tensor Parallel implementation

This PR uses the torch.distributed.tensor.parallel subpackage to implement Tensor Parallel for Llama (as an example).

The motivation is multi-fold:

  1. to make modeling code simple as single-worker case:
    all manual TP implementations under if self.config.pretraining_tp > 1 can be removed.

  2. to make tensor parallelism easily accessible by users:
    added a model.tensor_parallel(device_mesh) method that allows users to turn a single-proc model into a parallel model. !- Please guide me to a right place to put this function/method if PreTrainedModel is not a preferred place. -!

This is the first PR of many to simplify and enable Tensor Parallel across models.


Configuration

📅 Schedule: Branch creation - "* 0-4 * * 3" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/transformers-4.x branch from d3f070c to 24ba2af Compare July 1, 2024 15:55
@renovate renovate bot changed the title Update dependency transformers to v4.41.2 Update dependency transformers to v4.42.0 Jul 1, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 24ba2af to 9ef59a3 Compare July 1, 2024 19:30
@renovate renovate bot changed the title Update dependency transformers to v4.42.0 Update dependency transformers to v4.42.1 Jul 1, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 9ef59a3 to 9abb6f3 Compare July 2, 2024 07:16
@renovate renovate bot changed the title Update dependency transformers to v4.42.1 Update dependency transformers to v4.42.2 Jul 2, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 9abb6f3 to d173aa7 Compare July 2, 2024 16:10
@renovate renovate bot changed the title Update dependency transformers to v4.42.2 Update dependency transformers to v4.42.3 Jul 2, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from d173aa7 to 1a54c3d Compare July 15, 2024 18:50
@renovate renovate bot changed the title Update dependency transformers to v4.42.3 Update dependency transformers to v4.42.4 Jul 15, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 1a54c3d to 0ded9ee Compare July 27, 2024 16:05
@renovate renovate bot changed the title Update dependency transformers to v4.42.4 Update dependency transformers to v4.43.1 Jul 27, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 0ded9ee to 50a5053 Compare July 28, 2024 16:32
@renovate renovate bot changed the title Update dependency transformers to v4.43.1 Update dependency transformers to v4.43.2 Jul 28, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 50a5053 to daab913 Compare July 30, 2024 16:30
@renovate renovate bot changed the title Update dependency transformers to v4.43.2 Update dependency transformers to v4.43.3 Jul 30, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from daab913 to 0023214 Compare August 9, 2024 12:28
@renovate renovate bot changed the title Update dependency transformers to v4.43.3 Update dependency transformers to v4.43.4 Aug 9, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 0023214 to ccebe27 Compare August 10, 2024 22:22
@renovate renovate bot changed the title Update dependency transformers to v4.43.4 Update dependency transformers to v4.44.0 Aug 10, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from ccebe27 to ce803f6 Compare August 24, 2024 18:38
@renovate renovate bot changed the title Update dependency transformers to v4.44.0 Update dependency transformers to v4.44.1 Aug 24, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from ce803f6 to 7ecf72b Compare August 26, 2024 18:54
@renovate renovate bot changed the title Update dependency transformers to v4.44.1 Update dependency transformers to v4.44.2 Aug 26, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 7ecf72b to f7a3fb2 Compare September 29, 2024 19:28
@renovate renovate bot changed the title Update dependency transformers to v4.44.2 Update dependency transformers to v4.45.0 Sep 29, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from f7a3fb2 to 07fa8a0 Compare September 30, 2024 18:27
@renovate renovate bot changed the title Update dependency transformers to v4.45.0 Update dependency transformers to v4.45.1 Sep 30, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 07fa8a0 to f1816da Compare October 11, 2024 18:50
@renovate renovate bot changed the title Update dependency transformers to v4.45.1 Update dependency transformers to v4.45.2 Oct 11, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from f1816da to 89065f4 Compare October 28, 2024 10:29
@renovate renovate bot changed the title Update dependency transformers to v4.45.2 Update dependency transformers to v4.46.0 Oct 28, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 89065f4 to ba78e43 Compare October 29, 2024 16:37
@renovate renovate bot changed the title Update dependency transformers to v4.46.0 Update dependency transformers to v4.45.2 Oct 29, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from ba78e43 to bf7700d Compare November 2, 2024 20:08
@renovate renovate bot changed the title Update dependency transformers to v4.45.2 Update dependency transformers to v4.46.1 Nov 2, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from bf7700d to ac06e43 Compare November 9, 2024 18:58
@renovate renovate bot changed the title Update dependency transformers to v4.46.1 Update dependency transformers to v4.46.2 Nov 9, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from ac06e43 to b20f59a Compare November 23, 2024 01:00
@renovate renovate bot changed the title Update dependency transformers to v4.46.2 Update dependency transformers to v4.46.3 Nov 23, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from b20f59a to 2a428cc Compare December 9, 2024 20:34
@renovate renovate bot changed the title Update dependency transformers to v4.46.3 Update dependency transformers to v4.47.0 Dec 9, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 2a428cc to 58d82ea Compare December 24, 2024 18:35
@renovate renovate bot changed the title Update dependency transformers to v4.47.0 Update dependency transformers to v4.47.1 Dec 24, 2024
@renovate renovate bot force-pushed the renovate/transformers-4.x branch from 58d82ea to 9c900c3 Compare January 19, 2025 08:53
@renovate renovate bot changed the title Update dependency transformers to v4.47.1 Update dependency transformers to v4.48.0 Jan 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants