Transformers documentation

Импорт утилит

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

Импорт утилит

На этой странице описаны утилиты transformers, обеспечивающие ленивый и быстрый импорт объектов. Хотя мы стремимся к минимальному набору зависимостей, некоторые модели имеют специфические требования к зависимостям, которые невозможно обойти. Мы не хотим, чтобы все пользователи transformers были вынуждены устанавливать эти зависимости для использования других моделей, поэтому мы помечаем их как мягкие, а не жёсткие зависимости.

Набор инструментов transformers не предназначен для того, чтобы вызывать ошибку при импорте модели, требующей определённой зависимости; вместо этого объект, для которого отсутствует зависимость, вызовет ошибку при вызове любого его метода. Например, если torchvision не установлен, быстрые обработчики изображений будут недоступны.

Этот объект по-прежнему импортируется:

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

Однако методы этого объекта проверяют свои необязательные зависимости при вызове. Например, если torchvision недоступен, этот вызов приводит к 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.

Рассмотрим, как указать зависимости конкретных объектов.

Зависимости объектов

На основе имени файла

Все объекты с заданным именем файла имеют автоматическую зависимость от инструмента, связанного с этим именем файла

PyTorch: все файлы, начинающиеся с modeling_, имеют автоматическую зависимость от PyTorch

Токенизаторы: все файлы, начинающиеся с tokenization_ и заканчивающиеся на _fast, имеют автоматическую зависимость от tokenizers

Зрение: все файлы, начинающиеся с image_processing_, автоматически зависят от группы зависимостей vision; на момент написания в неё входит только зависимость pillow.

Vision + Torch + Torchvision: все файлы, начинающиеся с image_processing_ и заканчивающиеся на _fast, автоматически зависят от vision, torch и torchvision.

Все эти автоматические зависимости добавляются поверх явных зависимостей, описанных ниже.

Явные зависимости объектов

Мы добавляем метод requires, который используется для явного указания зависимостей данного объекта. В качестве примера, класс Trainer имеет две обязательные зависимости: torch и accelerate. Вот как мы указываем эти необходимые зависимости:

from .utils.import_utils import requires

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

Бэкенды, которые можно добавить здесь, — это все бэкенды, доступные в модуле import_utils.py.

Кроме того, в каждом бэкенде можно указать конкретные версии. Например, вот как задать требование torch>=2.6 для класса Trainer:

from .utils.import_utils import requires

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

Вы можете указать следующие операторы: ==, >, >=, <, <=, !=.

Методы

transformers.utils.import_utils.define_import_structure

( module_path: strprefix: str | None = None )

Этот метод принимает в качестве входного параметра module_path и создаёт структуру импорта, пригодную для обработки _LazyModule.

Вот пример структуры импорта вывода на уровне 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’} } }

Структура импорта представляет собой словарь, в котором ключами являются frozensets, а значениями — словари, сопоставляющие строки с множествами объектов.

Если prefix не равен None, этот префикс будет добавлен ко всем ключам в возвращаемом словаре.

transformers.utils.import_utils.requires

< >

( backends = () )

Этот декоратор позволяет сделать две вещи:

  • Привязка кортежа __backends к объекту для определения необходимых бэкендов для его корректного выполнения без создания экземпляра
  • Строка ‘@requires’ используется для динамического импорта объектов

transformers.requires_backends

< >

( objbackends )

Параметры

  • obj — объект для проверки
  • backends — список или кортеж бэкендов для проверки.

Метод, который автоматически вызывает исключение, если указанные бэкенды недоступны. Часто используется во время класса

инициализации для установки необходимых зависимостей:

requires_backends(self, ["torch"])

Бэкенды должны быть определены в BACKEND_MAPPING, который находится в transformers.utils.import_utils.

Update on GitHub