Transformers documentation

Mengimpor utilitas

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

Mengimpor utilitas

Halaman ini membahas utilitas transformers untuk memungkinkan impor objek secara lazy dan cepat. Meskipun kami berusaha meminimalkan dependensi, beberapa model memiliki persyaratan dependensi spesifik yang tidak dapat dihindari. Kami tidak ingin semua pengguna transformers harus menginstal dependensi tersebut untuk menggunakan model lain, oleh karena itu kami menandainya sebagai soft dependencies alih-alih hard dependencies.

The transformers toolkit is not made to error-out on import of a model that has a specific dependency; instead, an object for which you are lacking a dependency will error-out when calling any method on it. As an example, if torchvision isn’t installed, the fast image processors will not be available.

Objek ini masih dapat diimpor:

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

Namun, metode pada objek tersebut memeriksa dependensi opsionalnya saat dipanggil. Misalnya, jika torchvision tidak tersedia, pemanggilan ini akan memicu 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.

Mari kita lihat cara menentukan dependensi objek tertentu.

Menentukan Ketergantungan Objek

Berdasarkan nama file

Semua objek di bawah nama file tertentu memiliki dependensi otomatis ke alat yang terkait dengan nama file tersebut

PyTorch: Semua file yang diawali dengan modeling_ memiliki dependensi PyTorch otomatis

Tokenizers: Semua file yang diawali dengan tokenization_ dan diakhiri dengan _fast memiliki dependensi tokenizers secara otomatis

Vision: Semua file yang diawali dengan image_processing_ memiliki dependensi otomatis ke grup dependensi vision; pada saat penulisan, grup ini hanya berisi dependensi pillow.

Vision + Torch + Torchvision: Semua file yang diawali dengan image_processing_ dan diakhiri dengan _fast memiliki dependensi otomatis ke vision, torch, dan torchvision.

Semua dependensi otomatis ini ditambahkan di atas dependensi eksplisit yang dijelaskan di bawah ini.

Ketergantungan Objek Eksplisit

Kami menambahkan metode bernama requires yang digunakan untuk secara eksplisit menentukan dependensi dari suatu objek. Sebagai contoh, kelas Trainer memiliki dua dependensi keras: torch dan accelerate. Berikut cara kami menentukan dependensi yang diperlukan ini:

from .utils.import_utils import requires

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

Backend yang dapat ditambahkan di sini adalah semua backend yang tersedia di modul import_utils.py.

Selain itu, versi spesifik dapat ditentukan di setiap backend. Misalnya, berikut adalah cara menentukan persyaratan torch>=2.6 pada kelas Trainer:

from .utils.import_utils import requires

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

Anda dapat menentukan operator berikut: ==, >, >=, <, <=, !=.

Metode

transformers.utils.import_utils.define_import_structure

( module_path: strprefix: str | None = None )

Metode ini mengambil module_path sebagai input dan membuat struktur impor yang dapat diproses oleh _LazyModule.

Berikut adalah contoh struktur impor output pada level 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’} } }

Struktur impor adalah dict yang didefinisikan dengan frozensets sebagai kunci, dan dicts dari string ke set objek.

Jika prefix bukan None, prefix tersebut akan ditambahkan ke semua kunci dalam dict yang dikembalikan.

transformers.utils.import_utils.requires

< >

( backends = () )

Decorator ini memungkinkan dua hal:

  • Melampirkan tuple __backends ke sebuah objek untuk melihat backend apa saja yang diperlukan agar objek tersebut dapat dieksekusi dengan benar tanpa diinstansiasi
  • String ‘@requires’ digunakan untuk mengimpor objek secara dinamis

transformers.requires_backends

< >

( objbackends )

Parameter

  • obj — objek yang akan diperiksa
  • backends — daftar atau tuple dari backend yang akan diperiksa.

Metode yang secara otomatis memicu error jika backend yang ditentukan tidak tersedia. Metode ini sering digunakan selama kelas

inisialisasi untuk memastikan dependensi yang diperlukan terpasang:

requires_backends(self, ["torch"])

Backend harus didefinisikan dalam BACKEND_MAPPING yang didefinisikan di transformers.utils.import_utils.

Update on GitHub