Hugging Face Transformers timm 統合

Hugging Faceは、TimmWrapperというツールを導入しました。このツールは、PyTorch Image Models(timm)ライブラリのあらゆるモデルを、🤗 transformersエコシステム内で直接使用できるようにします。この統合により、ユーザーはtransformersの高レベルAPIを使って推論、量子化、ファインチューニングを行いながら、timmの豊富なコンピュータビジョンモデルコレクションを活用できます。

TimmWrapperによるシームレスな統合

TimmWrapperは、timmライブラリとtransformersライブラリの間のギャップを埋め、timmモデルを標準のHugging Faceワークフローと互換性を持たせます。この統合により、いくつかの主要な技術的利点が提供されます:

  • パイプライン API サポート: timmモデルは、高レベルのtransformersパイプラインにプラグインすることで、効率的な推論が可能になります。
  • Autoクラス互換性: AutoModelForImageClassificationAutoImageProcessorを使用してモデルをロードすることで、モデルとプロセッサのロードの複雑さが抽象化されます。
  • Trainer API 統合: ユーザーは標準のTrainer APIを使用してtimmモデルをファインチューニングでき、異なるモデルアーキテクチャ間で一貫したワークフローを維持できます。
  • ラウンドトリップ互換性: transformersエコシステム内でファインチューニングされたモデルは、timm.create_model('hf-hub:my_org/my_fine_tuned_model', pretrained=True)を使用してtimmに再ロードできます。

最適化された推論とデプロイ

この統合により、transformersエコシステムの高度な最適化技術をtimmモデルに適用できるようになります:

bitsandbytesによる量子化

ユーザーはBitsAndBytesConfigを使用して、任意のtimmモデルを効率的な推論のために量子化できます。提供された例では、ViTベースモデルに対して8ビット量子化を適用し、モデルサイズを346.27 MBから88.20 MB(74.53%削減)に減少させながら、特定のラベルに対してほぼ同じ精度(0.33% vs 0.35%)を維持しました。

torch.compileによる加速

timm統合は、torch.compile(PyTorch 2.0で導入)と完全に互換性があり、ユーザーは1行のコードでモデルをコンパイルすることにより、推論時間を短縮できます。

フレキシブルなファインチューニングオプション

TimmWrapperは、標準的およびパラメータ効率の良いファインチューニング(PEFT)メソッドの両方をサポートします:

標準的なファインチューニング

timmモデルは、Trainerクラスを使用してカスタムデータセット上でファインチューニングできます。このクラスはトレーニングループ、ログ、評価を管理します。これはネイティブなtransformersモデルで使用されるワークフローと完全に一致します。

LoRA (低ランク適応)

PEFTライブラリを通じて、ユーザーはtimmモデルにLoRAを適用し、パラメータのごく一部のみを訓練できます。ある例では、ViTモデルがパラメータの0.77%のみが訓練可能(総パラメータ数86,543,818のうち667,493が訓練可能)でファインチューニングされました。これにより、コンシューマーグレードのハードウェアでも効率的なトレーニングが可能になります。

実装の実践例

  • 画像分類: pipeline APIを使用して、mobilenetv4_conv_medium(ネイティブなtransformers実装がない)などのモデルをロードし、即座に推論を行うことができます。
  • インタラクティブデモ: この統合はGradioと連携し、開発者はファインチューニングされたtimm ViTモデルを使用して食品分類器のウェブアプリを構築できます。
  • モデルロード: AutoImageProcessorAutoModelForImageClassificationを使用して、Hugging Face Hubから直接timmチェックポイントをロードできます。

Sources