モデル概要
モデル特徴
モデル能力
使用事例
🚀 PaliGemmaモデルカード
PaliGemmaは、画像とテキストを入力とし、テキスト出力を生成する多機能な軽量型のビジュアル言語モデル(VLM)で、複数の言語をサポートしています。このモデルは、画像や短い動画の字幕作成、ビジュアル質問応答、テキスト読み取り、物体検出、物体セグメンテーションなど、様々なビジュアル言語タスクに使用できます。
モデルページ:PaliGemma
Transformers PaliGemma 3Bの重みは、ScienceQAデータセットで224*224の入力画像を使用して微調整されています。これらのモデルはfloat32、bfloat16、float16の形式で提供され、研究目的のみで使用できます。微調整の設定は、big_visionで見ることができます。
リソースと技術文書:
使用条件:条件
作者:Google
✨ 主な機能
- 多機能性:質問応答、字幕生成、セグメンテーションなど、様々なビジュアル言語タスクをサポートします。
- 多言語対応:複数の言語の入力と出力を処理できます。
- 軽量設計:オープンコンポーネントをベースに構築されており、使用とデプロイが容易です。
📦 インストール
4ビット/8ビット精度で自動的に推論を実行するには、bitsandbytes
をインストールする必要があります。
pip install bitsandbytes accelerate
💻 使用例
基本的な使用法
PaliGemmaは単輪のビジュアル言語モデルで、対話シナリオには適しておらず、特定のユースケースに対して微調整すると最適な結果が得られます。「detect」や「segment」などのタスクプレフィックスを使用して、モデルが解決するタスクを設定できます。以下は、CPUでデフォルト精度(float32
)で実行する例です。
from transformers import AutoProcessor, PaliGemmaForConditionalGeneration
from PIL import Image
import requests
import torch
model_id = "google/paligemma-3b-mix-224"
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg?download=true"
image = Image.open(requests.get(url, stream=True).raw)
model = PaliGemmaForConditionalGeneration.from_pretrained(model_id).eval()
processor = AutoProcessor.from_pretrained(model_id)
# モデルにスペイン語で字幕を作成するよう指示する
prompt = "caption es"
model_inputs = processor(text=prompt, images=image, return_tensors="pt")
input_len = model_inputs["input_ids"].shape[-1]
with torch.inference_mode():
generation = model.generate(**model_inputs, max_new_tokens=100, do_sample=False)
generation = generation[0][input_len:]
decoded = processor.decode(generation, skip_special_tokens=True)
print(decoded)
出力:Un auto azul estacionado frente a un edificio.
高度な使用法
CUDAで他の精度で実行する
利便性のために、リポジトリにはbfloat16
とfloat16
に変換された重みのバージョンが含まれています。これらのバージョンを使用すると、ダウンロードサイズを減らし、ローカルコンピュータでの型変換を回避できます。以下は、NVIDIA CUDAカードでbfloat16
で実行する例です。
from transformers import AutoProcessor, PaliGemmaForConditionalGeneration
from PIL import Image
import requests
import torch
model_id = "google/paligemma-3b-mix-224"
device = "cuda:0"
dtype = torch.bfloat16
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg?download=true"
image = Image.open(requests.get(url, stream=True).raw)
model = PaliGemmaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=dtype,
device_map=device,
revision="bfloat16",
).eval()
processor = AutoProcessor.from_pretrained(model_id)
# モデルにスペイン語で字幕を作成するよう指示する
prompt = "caption es"
model_inputs = processor(text=prompt, images=image, return_tensors="pt").to(model.device)
input_len = model_inputs["input_ids"].shape[-1]
with torch.inference_mode():
generation = model.generate(**model_inputs, max_new_tokens=100, do_sample=False)
generation = generation[0][input_len:]
decoded = processor.decode(generation, skip_special_tokens=True)
print(decoded)
4ビット/8ビットでロードする
from transformers import AutoProcessor, PaliGemmaForConditionalGeneration
from PIL import Image
import requests
import torch
from transformers import BitsAndBytesConfig
model_id = "google/paligemma-3b-mix-224"
device = "cuda:0"
dtype = torch.bfloat16
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg?download=true"
image = Image.open(requests.get(url, stream=True).raw)
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
model = PaliGemmaForConditionalGeneration.from_pretrained(
model_id, quantization_config=quantization_config
).eval()
processor = AutoProcessor.from_pretrained(model_id)
# モデルにスペイン語で字幕を作成するよう指示する
prompt = "caption es"
model_inputs = processor(text=prompt, images=image, return_tensors="pt").to(model.device)
input_len = model_inputs["input_ids"].shape[-1]
with torch.inference_mode():
generation = model.generate(**model_inputs, max_new_tokens=100, do_sample=False)
generation = generation[0][input_len:]
decoded = processor.decode(generation, skip_special_tokens=True)
print(decoded)
📚 ドキュメント
モデル情報
モデル概要
PaliGemmaは、PaLI - 3にインスパイアされた多機能な軽量型のビジュアル言語モデル(VLM)です。このモデルは、SigLIPビジュアルモデルやGemma言語モデルなどのオープンコンポーネントをベースに構築されています。画像とテキストを入力として受け取り、テキスト出力を生成し、複数の言語をサポートしており、幅広いビジュアル言語タスクで優れた微調整性能を提供することを目的としています。
モデルアーキテクチャ
PaliGemmaは、TransformerデコーダーとビジュアルTransformer画像エンコーダーで構成されており、合計30億個のパラメータを持っています。テキストデコーダーはGemma - 2Bから初期化され、画像エンコーダーはSigLIP - So400m/14から初期化されます。PaliGemmaはPaLI - 3の方法に従って訓練されています。
入力と出力
- 入力:画像とテキスト文字列(画像に字幕を付けるためのプロンプトや質問など)。
- 出力:入力に対する応答として生成されたテキスト(画像の字幕、質問の答え、物体の境界ボックス座標のリスト、またはセグメンテーションコードなど)。
モデルデータ
事前学習データセット
PaliGemmaは、以下のデータセットの混合で事前学習されています。
- WebLI:WebLI(Web言語画像)は、公共のウェブをベースに構築されたウェブ規模の多言語画像 - テキストデータセットです。視覚的な意味理解、物体の位置特定、視覚的な文脈のテキスト理解、多言語能力など、一般的なモデル能力を獲得するために、さまざまなWebLI分割が使用されています。
- CC3M - 35L:ウェブページから精心選択された英語の画像 - 代替テキストペア(Sharmaら、2018)。Google Cloud Translation APIを使用して、さらに34の言語に翻訳されています。
- VQ²A - CC3M - 35L/VQG - CC3M - 35L:VQ2A - CC3Mのサブセット(Changpinyoら、2022a)で、Google Cloud Translation APIを使用してCC3M - 35Lと同じ34の言語に翻訳されています。
- OpenImages:OpenImagesデータセットをベースに、手作業のルールによって生成された検出と物体感知質問応答(Piergiovanniら、2022)。
- WIT:ウィキペディアから収集された画像とテキスト(Srinivasanら、2021)。
データ責任フィルタリング
PaliGemmaをクリーンなデータで訓練するために、WebLIには以下のフィルタリングが適用されています。
- 色情画像フィルタリング:このフィルターは、色情的な性質を持つと見なされる画像を削除します。
- テキストセキュリティフィルタリング:不安全なテキストとペアになっている画像を識別し、フィルタリングします。不安全なテキストとは、児童性虐待材料、色情内容、下品な言葉、またはその他の不快な内容を含むと見なされるテキストです。
- テキスト毒性フィルタリング:さらにPerspective APIを使用して、侮辱的、猥褻的、憎悪的、またはその他の毒性のあると見なされるテキストとペアになっている画像を識別し、フィルタリングします。
- テキスト個人情報フィルタリング:Cloud Data Loss Prevention (DLP) APIを使用して、特定の個人情報やその他の敏感なデータをフィルタリングし、個人のプライバシーを保護します。社会保障番号などの識別子やその他の高感度情報タイプが削除されます。
- その他の方法:コンテンツの品質と安全性に基づいてフィルタリングし、当社のポリシーと実践に準拠します。
実装情報
ハードウェア
PaliGemmaは、最新世代のテンソル処理ユニット(TPU)ハードウェア(TPUv5e)を使用して訓練されています。
ソフトウェア
訓練には、JAX、Flax、TFDS、およびbig_vision
が使用されています。
JAXにより、研究員は最新世代のハードウェア(TPUを含む)を利用して、大型モデルをより迅速かつ効率的に訓練することができます。TFDSはデータセットにアクセスするために使用され、Flaxはモデルアーキテクチャに使用されます。PaliGemmaの微調整コードと推論コードは、big_vision
のGitHubリポジトリで公開されています。
評価情報
ベンチマーク結果
PaliGemmaの様々な学術タスクへの移行可能性を検証するために、各タスクで事前学習モデルを微調整しました。さらに、移行タスクの混合を使用して混合モデルを訓練しました。どのタスクがより高い解像度から恩恵を受けるかを理解するために、さまざまな解像度での結果を報告しています。重要なことは、これらのタスクやデータセットは事前学習データ混合の一部ではなく、それらの画像はウェブ規模の事前学習データから明確に除外されているということです。
混合モデル(移行タスク混合で微調整)
ベンチマーク | 指標(分割) | mix - 224 | mix - 448 |
---|---|---|---|
MMVP | ペア精度 | 46.00 | 45.33 |
POPE | 精度(ランダム/人気/対抗) | 88.00 86.63 85.67 |
89.37 88.40 87.47 |
GQA | 精度(テスト) | 65.20 | 65.47 |
単一タスク(単一タスクで微調整)
表の内容が多いため、詳細な表は省略します。元の文書の表の内容を参照してください。
🔧 技術詳細
PaliGemmaの訓練と推論には、複数の技術コンポーネントと手順が関与しています。訓練に関しては、TPUv5eハードウェアとJAX、Flax、TFDSなどのソフトウェアツールが使用されています。複数のデータセットで事前学習と微調整を行うことで、モデルは豊富な視覚と言語の知識を学習することができます。推論時には、異なるタスクの要件に応じて適切な精度と設定を選択できます。たとえば、モデルが解決するタスクを指定するためにタスクプレフィックスを使用することができます。同時に、データの安全性と品質を確保するために、事前学習データには複数のフィルタリング処理が施されています。
📄 ライセンス
このモデルはgemmaライセンスに従っています。Hugging FaceでPaliGemmaにアクセスするには、Googleの使用許諾を確認して同意する必要があります。そのためには、Hugging Faceにログインし、以下のボタンをクリックしてください。リクエストはすぐに処理されます。 許諾を確認









