Transformers documentation
Mengimpor utilitas
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.
Decorator ini memungkinkan dua hal:
- Melampirkan tuple
__backendske 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
< source >( objbackends )
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.