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クラス互換性:
AutoModelForImageClassificationとAutoImageProcessorを使用してモデルをロードすることで、モデルとプロセッサのロードの複雑さが抽象化されます。 - Trainer API 統合: ユーザーは標準の
TrainerAPIを使用して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が訓練可能)でファインチューニングされました。これにより、コンシューマーグレードのハードウェアでも効率的なトレーニングが可能になります。
実装の実践例
- 画像分類:
pipelineAPIを使用して、mobilenetv4_conv_medium(ネイティブなtransformers実装がない)などのモデルをロードし、即座に推論を行うことができます。 - インタラクティブデモ: この統合はGradioと連携し、開発者はファインチューニングされた
timmViTモデルを使用して食品分類器のウェブアプリを構築できます。 - モデルロード:
AutoImageProcessorとAutoModelForImageClassificationを使用して、Hugging Face Hubから直接timmチェックポイントをロードできます。