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.2).
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.

object 의존성을 어떻게 지정하는지 살펴보겠습니다.

객체 의존성 지정

파일명 기반

filename 아래에 있는 모든 객체는 해당 filename에 연결된 도구에 대한 자동 종속성을 가집니다.

PyTorch: modeling_로 시작하는 모든 파일에는 PyTorch에 대한 자동 종속성이 있습니다

Tokenizers: tokenization_로 시작하고 _fast로 끝나는 모든 파일에는 tokenizers에 대한 자동 종속성이 있습니다

Vision: 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 모듈에서 사용 가능한 모든 백엔드입니다.

또한 각 백엔드에서 특정 버전을 지정할 수 있습니다. 예를 들어, Trainer 클래스에서 torch>=2.6 요구 사항을 지정하는 방법은 다음과 같습니다:

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이 처리할 수 있는 import 구조를 생성합니다.

src.transformers.models 레벨의 출력 import 구조 예시입니다:

{ 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’} } }

import 구조는 frozenset을 키로 사용하고, 문자열에서 객체 집합으로 매핑되는 dict로 정의됩니다.

prefix가 None이 아니면 반환되는 dict의 모든 키에 해당 접두사가 추가됩니다.

transformers.utils.import_utils.requires

< >

( backends = () )

이 데코레이터는 두 가지를 가능하게 합니다:

  • __backends 튜플을 객체에 연결하여, 해당 객체를 인스턴스화하지 않고도 올바르게 실행하는 데 필요한 백엔드가 무엇인지 확인합니다
  • ‘@requires’ 문자열은 객체를 동적으로 가져오기 위해 사용됩니다

transformers.requires_backends

< >

( objbackends )

매개변수

  • obj — 검사할 객체
  • backends — 확인할 백엔드의 목록 또는 튜플.

지정한 backends가 사용 불가능한 경우 자동으로 예외를 발생시키는 메서드입니다. 주로 클래스

필요한 종속성이 설치되었는지 확인하기 위한 초기화:

requires_backends(self, ["torch"])

백엔드는 transformers.utils.import_utils에 정의된 BACKEND_MAPPING에 정의되어야 합니다.

Update on GitHub