Transformers 文件
匯入工具
並獲得增強的文件體驗
開始使用
匯入工具
本頁面將介紹 Transformers 的實用工具,以實現延遲和快速物件匯入。雖然我們力求將依賴項降至最低,但某些模型具有無法解決的特定依賴項要求。我們不希望所有 `transformers` 使用者都必須安裝這些依賴項才能使用其他模型,因此我們將這些依賴項標記為軟依賴項而不是硬依賴項。
Transformers 工具包不會在匯入具有特定依賴項的模型時出錯;相反,當呼叫其任何方法時,您缺少依賴項的物件會出錯。例如,如果未安裝 `torchvision`,則快速影像處理器將不可用。
此物件仍可匯入
>>> from transformers import DetrImageProcessorFast
>>> print(DetrImageProcessorFast)
<class 'DetrImageProcessorFast'>
但是,無法在此物件上呼叫任何方法
>>> DetrImageProcessorFast.from_pretrained()
ImportError:
DetrImageProcessorFast 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.
讓我們看看如何指定特定物件依賴項。
指定物件依賴項
基於檔名
給定檔名下的所有物件都與連結到該檔名的工具具有自動依賴關係
TensorFlow: 所有以 `modeling_tf_` 開頭的檔案都具有自動 TensorFlow 依賴項。
Flax: 所有以 `modeling_flax_` 開頭的檔案都具有自動 Flax 依賴項
PyTorch: 所有以 `modeling_` 開頭且不符合上述(TensorFlow 和 Flax)條件的檔案都具有自動 PyTorch 依賴項
分詞器: 所有以 `tokenization_` 開頭並以 `_fast` 結尾的檔案都具有自動 `tokenizers` 依賴項
視覺: 所有以 `image_processing_` 開頭的檔案都具有對 `vision` 依賴組的自動依賴項;在撰寫本文時,這僅包含 `pillow` 依賴項。
視覺 + 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: str prefix: typing.Optional[str] = None )
此方法以 `module_path` 作為輸入,並建立一個可供 `_LazyModule` 使用的匯入結構。
以下是 `src.transformers.models` 級別上的輸出匯入結構示例
{ frozenset({‘tokenizers’}): { ‘albert.tokenization_albert_fast’: {‘AlbertTokenizerFast’} }, frozenset(): { ‘albert.configuration_albert’: {‘AlbertConfig’, ‘AlbertOnnxConfig’}, ‘align.processing_align’: {‘AlignProcessor’}, ‘align.configuration_align’: {‘AlignConfig’, ‘AlignTextConfig’, ‘AlignVisionConfig’}, ‘altclip.configuration_altclip’: {‘AltCLIPConfig’, ‘AltCLIPTextConfig’, ‘AltCLIPVisionConfig’}, ‘altclip.processing_altclip’: {‘AltCLIPProcessor’} } }
匯入結構是一個字典,以 frozenset 作為鍵,以字串到物件集的字典作為值。
如果 `prefix` 不為 None,它將把該字首新增到返回字典中的所有鍵。
此裝飾器實現了兩件事
- 將 `__backends` 元組附加到物件以檢視其正確執行所需的後端,而無需例項化它
- `@requires` 字串用於動態匯入物件