Hugging Face Transformers timm 整合

Hugging Face 已推出 TimmWrapper,這是一個工具,使得 PyTorch Image Models (timm) 庫中的任何模型都能直接在 🤗 transformers 生態系統中使用。此整合使使用者能夠利用 timm 廣泛的電腦視覺模型收藏,同時使用 transformers 高層級 API 進行推理、量化和微調。

透過 TimmWrapper 的無縫整合

TimmWrappertimm 庫與 transformers 庫之間架起橋樑,使得 timm 模型與標準 Hugging Face 工作流程相容。此整合提供了幾項關鍵的技術優勢:

  • Pipeline API 支援timm 模型可以插入高階的 transformers pipeline 以實現流暢的推理。
  • Auto 類別相容性:模型可以透過 AutoModelForImageClassificationAutoImageProcessor 載入,抽象化模型與處理器載入的複雜性。
  • Trainer API 整合:使用者可以使用標準的 Trainer API 微調 timm 模型,在不同模型架構間保持一致的工作流程。
  • 往返相容性:在 transformers 生態系統中微調的模型可以使用 timm.create_model('hf-hub:my_org/my_fine_tuned_model', pretrained=True) 載入回 timm

優化推理與部署

此整合使得可以在 timm 模型上使用來自 transformers 生態系統的進階優化技術:

使用 bitsandbytes 進行量化

使用者可以使用 BitsAndBytesConfig 將任何 timm 模型進行量化以實現高效推理。在一個使用 ViT 基礎模型的提供範例中,8 位元量化將模型大小從 346.27 MB 減少到 88.20 MB(減少 74.53%),同時保持幾乎相同的準確度(特定標籤為 0.33% 對 0.35%)。

使用 torch.compile 進行加速

timm 整合完全相容於 torch.compile(PyTorch 2.0 引入),使用者可以透過單行程式碼編譯模型來獲得更快的推理時間。

彈性微調選項

TimmWrapper 支援標準和參數高效微調(PEFT)兩種方法:

標準微調

timm 模型可以使用 Trainer 類別在自訂資料集上進行微調,該類別管理訓練迴圈、日誌和評估。這與原生 transformers 模型使用的工作流程完全相同。

LoRA (低秩適應)

透過 PEFT 庫,使用者可以將 LoRA 應用於 timm 模型,僅訓練極少數參數。在一個範例中,ViT 模型僅有 0.77% 的參數可訓練(667,493 個可訓練參數佔總參數 86,543,818 個),這使得在消費者級硬體上進行高效訓練成為可能。

實作範例

  • 圖像分類:可以使用 pipeline API 載入如 mobilenetv4_conv_medium (缺乏原生 transformers 實作)的模型以進行即時推理。
  • 互動示範:此整合可與 Gradio 合作,使開發者能夠使用已微調的 timm ViT 模型構建食物分類網頁應用。
  • 模型載入:可以使用 AutoImageProcessorAutoModelForImageClassification 直接從 Hugging Face Hub 載入 timm 检查點。

Sources