Transformers 文件

匯入工具

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

匯入工具

本頁面將介紹 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,它將把該字首新增到返回字典中的所有鍵。

transformers.utils.import_utils.requires

< >

( backends = () )

此裝飾器實現了兩件事

  • 將 `__backends` 元組附加到物件以檢視其正確執行所需的後端,而無需例項化它
  • `@requires` 字串用於動態匯入物件
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.