Microsoft Florence-2 の DocVQA に対するファインチューニング

TL;DR

Microsoft の Florence-2 は、コンパクトなビジョン・ランゲージモデル(0.2B および 0.7B パラメータ)で、Document Visual Question Answering(DocVQA)などの専門タスクに効果的にファインチューニングできます。Hugging Face は、DocVQA データセットでモデルを 7 エポックファインチューニングすることで、検証セットのレーベンシュタイン類似度スコアが 0 から 57.0 に向上したことを示しました。

Florence-2 のアーキテクチャと事前学習

Florence-2 は、すべてのコンピュータビジョンタスクをシーケンス‑ツー‑シーケンス問題として扱い、画像とテキストを入力として受け取り、テキストと位置トークンを出力します。モデルは、視覚埋め込みに DaViT ビジョンエンコーダ、テキストと位置埋め込みに BERT を利用し、これらを標準的なエンコーダ‑デコーダトランスフォーマーアーキテクチャで処理します。

アーキテクチャだけに依存するのではなく、Florence-2 の性能は FLD-5B データセットでの事前学習によって支えられています。この自動生成データセットは、1億2600万枚の画像に対して 50 億件以上のアノテーション(ボックス、マスク、キャプション、グラウンディングなど)を含んでいます。

Visual Question Answering(VQA)への Florence-2 の適応

元の Florence-2 モデルはキャプション生成、物体検出、OCR をサポートしていますが、ネイティブな VQA 機能は提供されていませんでした。<VQA><vqa><Visual question answering> といった未対応のプロンプトを使用した初期の試みは使い物にならない結果となり、領域から説明へのプロンプトも VQA の要件と完全には合致しませんでした。

VQA を実現するには、特定のデータセットでモデルをファインチューニングする必要があります。Hugging Face は DocVQA データセットを使用し、各質問の先頭に <DocVQA> プレフィックスを付加してモデルを誘導しました。

ファインチューニングの性能とベンチマーク

Florence-2 を DocVQA データセットでファインチューニングすると、性能が大幅に向上しました。レーベンシュタイン類似度を指標とした場合、モデルの検証スコアはファインチューニング前の 0 から、7 エポックの学習後に 57.0 に改善されました。

トレーニング構成

モデルの汎用性を検証するため、異なるリソースレベルで実験を行いました。

  • Low Resource: Colab の単一 A100 GPU を使用し、バッチサイズ 6(または T4 GPU でバッチサイズ 1)で、ビジョンエンコーダを凍結した設定。
  • High Resource: 8 台の H100 GPU クラスタ上で、バッチサイズ 64 でモデル全体をファインチューニング。所要時間は約 70 分です。

すべての構成において、学習率 1e-6 の小さな設定が最も効果的であることが分かりました。学習率を大きくすると、訓練セットに対して急速に過学習が発生します。

実装の詳細

このファインチューニングプロセスを実装するには、transformers ライブラリの AutoModelForCausalLMAutoProcessor クラスを使用します。Florence-2 はカスタムコードを使用しているため、ロード時に trust_remote_code=True を指定する必要があります。

主なコードコンポーネント

  • Dataset Class: 質問に <DocVQA> プレフィックスを付加し、画像を RGB に変換するカスタム DocVQADataset クラスを使用します。
  • Data Collator: テキストと画像をプロセッサでテンソルに変換する collate_fn を実装しています。
  • Optimization: トレーニングループは AdamW オプティマイザと線形学習率スケジューラを使用します。

結論

Florence-2 は小型(0.2B および 0.7B パラメータ)であるため、エッジデバイスやコスト効率の高い本番環境への展開に非常に適しています。ファインチューニングにより新しいタスクへ適応できるため、標準機能を超えて文書理解といった専門領域にも対応可能です。

Sources