Transformers documentation

Importation des utilitaires

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Importation des utilitaires

Cette page présente les utilitaires de transformers permettant l’importation paresseuse et rapide des objets. Bien que nous visons un minimum de dépendances, certains modèles ont des exigences de dépendances spécifiques qui ne peuvent pas être contournées. Nous ne voulons pas que tous les utilisateurs de transformers soient obligés d’installer ces dépendances pour utiliser d’autres modèles ; nous les marquons donc comme des dépendances optionnelles plutôt que comme des dépendances obligatoires.

Le kit d’outils transformers n’est pas conçu pour générer une erreur lors de l’importation d’un modèle ayant une dépendance spécifique ; en revanche, un objet pour lequel une dépendance est manquante déclenchera une erreur lors de l’appel de n’importe quelle méthode sur cet objet. À titre d’exemple, si torchvision n’est pas installé, les processeurs d’images rapides ne seront pas disponibles.

Cet objet est toujours importable :

>>> from transformers import DetrImageProcessor
>>> print(DetrImageProcessor)
<class 'transformers.models.detr.image_processing_detr.DetrImageProcessor'>

Cependant, les méthodes de cet objet vérifient leurs dépendances facultatives lors de leur appel. Par exemple, si torchvision n'est pas disponible, cet appel lève une ImportError :

>>> DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
ImportError:
DetrImageProcessor requires the Torchvision library but it was not found in your environment. Check out the instructions on the
installation page: https://pytorch.org/get-started/locally/ and follow the ones that match your environment.
Please note that you may need to restart your runtime after installation.

Voici comment spécifier des dépendances d’objets spécifiques.

Spécifier les dépendances d'objets

Basé sur le nom de fichier

Tous les objets situés sous un nom de fichier donné ont une dépendance automatique à l'outil lié au nom de fichier

PyTorch : tous les fichiers commençant par modeling_ ont une dépendance automatique à PyTorch

Tokenizers : tous les fichiers commençant par tokenization_ et se terminant par _fast ont une dépendance automatique à tokenizers

Vision : tous les fichiers commençant par image_processing_ ont une dépendance automatique au groupe de dépendances vision ; à l'heure actuelle, ce groupe ne contient que la dépendance pillow.

Vision + Torch + Torchvision : tous les fichiers commençant par image_processing_ et se terminant par _fast ont une dépendance automatique à vision, torch et torchvision.

Toutes ces dépendances automatiques s'ajoutent aux dépendances explicites détaillées ci-dessous.

Dépendances d'objets explicites

Nous ajoutons une méthode nommée requires qui sert à spécifier explicitement les dépendances d'un objet donné. À titre d'exemple, la classe Trainer possède deux dépendances obligatoires : torch et accelerate. Voici comment nous spécifions ces dépendances requises :

from .utils.import_utils import requires

@requires(backends=("torch", "accelerate"))
class Trainer:
    ...

Les backends qui peuvent être ajoutés ici sont tous les backends disponibles dans le module import_utils.py.

De plus, des versions spécifiques peuvent être indiquées pour chaque backend. Par exemple, voici comment spécifier une exigence sur torch>=2.6 pour la classe Trainer :

from .utils.import_utils import requires

@requires(backends=("torch>=2.6", "accelerate"))
class Trainer:
    ...

Vous pouvez spécifier les opérateurs suivants : ==, >, >=, <, <=, !=.

Méthodes

transformers.utils.import_utils.define_import_structure

( module_path: strprefix: str | None = None )

Cette méthode prend un module_path en entrée et crée une structure d’importation digeste par un _LazyModule.

Voici un exemple de structure d’importation de la sortie au niveau src.transformers.models :

{ frozenset({‘tokenizers’}): { ‘albert.tokenization_albert_fast’: {‘AlbertTokenizer’} }, frozenset(): { ‘albert.configuration_albert’: {‘AlbertConfig’}, ‘align.processing_align’: {‘AlignProcessor’}, ‘align.configuration_align’: {‘AlignConfig’, ‘AlignTextConfig’, ‘AlignVisionConfig’}, ‘altclip.configuration_altclip’: {‘AltCLIPConfig’, ‘AltCLIPTextConfig’, ‘AltCLIPVisionConfig’}, ‘altclip.processing_altclip’: {‘AltCLIPProcessor’} } }

La structure d'importation est un dict défini avec des frozensets comme clés, et des dicts de chaînes vers des ensembles d'objets.

Si prefix n'est pas None, ce préfixe sera ajouté à toutes les clés du dictionnaire renvoyé.

transformers.utils.import_utils.requires

< >

( backends = () )

Ce décorateur permet deux choses :

  • Attacher un tuple __backends à un objet pour voir quels sont les backends nécessaires à son exécution correcte sans l'instantier
  • La chaîne ‘@requires’ est utilisée pour importer dynamiquement des objets

transformers.requires_backends

< >

( objbackends )

Paramètres

  • obj — objet à vérifier
  • backends — liste ou tuple des backends à vérifier.

Méthode qui lève automatiquement une exception si les backends spécifiés ne sont pas disponibles. Elle est souvent utilisée lors de la

initialisation afin de garantir que les dépendances requises sont installées :

requires_backends(self, ["torch"])

Les backends doivent être définis dans BACKEND_MAPPING, défini dans transformers.utils.import_utils.

Update on GitHub