🚀 granite-vision-3.2-2b
granite-vision-3.2-2bは、コンパクトで効率的なビジョン言語モデルです。特に、視覚的な文書理解に設計されており、表、チャート、インフォグラフィック、プロット、図などから自動的にコンテンツを抽出することができます。
🚀 クイックスタート
granite-vision-3.2-2bモデルを使用するには、以下の手順に従ってください。
transformers
を使用する場合
まず、最新バージョンのtransformers
をインストールします。
pip install transformers>=4.49
次に、以下のコードを実行します。
from transformers import AutoProcessor, AutoModelForVision2Seq
from huggingface_hub import hf_hub_download
import torch
device = "cuda" if torch.cuda.is_available() else "cpu"
model_path = "ibm-granite/granite-vision-3.2-2b"
processor = AutoProcessor.from_pretrained(model_path)
model = AutoModelForVision2Seq.from_pretrained(model_path).to(device)
img_path = hf_hub_download(repo_id=model_path, filename='example.png')
conversation = [
{
"role": "user",
"content": [
{"type": "image", "url": img_path},
{"type": "text", "text": "What is the highest scoring model on ChartQA and what is its score?"},
],
},
]
inputs = processor.apply_chat_template(
conversation,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt"
).to(device)
output = model.generate(**inputs, max_new_tokens=100)
print(processor.decode(output[0], skip_special_tokens=True))
vLLM
を使用する場合
まず、以下のライブラリをインストールします。
pip install torch torchvision torchaudio
pip install vllm==0.6.6
次に、使用例に関連するコードスニペットをコピーして実行します。
from vllm import LLM, SamplingParams
from vllm.assets.image import ImageAsset
from huggingface_hub import hf_hub_download
from PIL import Image
model_path = "ibm-granite/granite-vision-3.2-2b"
model = LLM(
model=model_path,
limit_mm_per_prompt={"image": 1},
)
sampling_params = SamplingParams(
temperature=0.2,
max_tokens=64,
)
image_token = "<image>"
system_prompt = "<|system|>\nA chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions.\n"
question = "What is the highest scoring model on ChartQA and what is its score?"
prompt = f"{system_prompt}<|user|>\n{image_token}\n{question}\n<|assistant|>\n"
img_path = hf_hub_download(repo_id=model_path, filename='example.png')
image = Image.open(img_path).convert("RGB")
print(image)
inputs = {
"prompt": prompt,
"multi_modal_data": {
"image": image,
}
}
outputs = model.generate(inputs, sampling_params=sampling_params)
print(f"Generated text: {outputs[0].outputs[0].text}")
✨ 主な機能
- 視覚的な文書理解に特化しており、表、チャート、インフォグラフィックなどから自動的にコンテンツを抽出できます。
- 多様な公開データセットと合成データセットを用いて訓練されており、幅広い文書理解と一般的な画像タスクをサポートします。
📦 インストール
transformers
を使用する場合、以下のコマンドでインストールします。
pip install transformers>=4.49
vLLM
を使用する場合、以下のコマンドで必要なライブラリをインストールします。
pip install torch torchvision torchaudio
pip install vllm==0.6.6
📚 ドキュメント
モデルの概要
granite-vision-3.2-2bは、視覚的な文書理解に特化したコンパクトで効率的なビジョン言語モデルです。画像とテキストの両方のモダリティを持つGranite大規模言語モデルを微調整することで訓練されました。
評価
標準のllms-eval
ベンチマークを使用して、1B - 4Bパラメータ範囲の他のビジョン言語モデル(VLM)と共にGranite Vision 3.2を評価しました。評価は複数の公開ベンチマークに及び、特に文書理解タスクに重点を置き、一般的な視覚的質問応答ベンチマークも含まれています。
|
Molmo-E |
InternVL2 |
Phi3v |
Phi3.5v |
Granite Vision |
文書ベンチマーク |
|
|
|
|
|
DocVQA |
0.66 |
0.87 |
0.87 |
0.88 |
0.89 |
ChartQA |
0.60 |
0.75 |
0.81 |
0.82 |
0.87 |
TextVQA |
0.62 |
0.72 |
0.69 |
0.7 |
0.78 |
AI2D |
0.63 |
0.74 |
0.79 |
0.79 |
0.76 |
InfoVQA |
0.44 |
0.58 |
0.55 |
0.61 |
0.64 |
OCRBench |
0.65 |
0.75 |
0.64 |
0.64 |
0.77 |
LiveXiv VQA |
0.47 |
0.51 |
0.61 |
- |
0.61 |
LiveXiv TQA |
0.36 |
0.38 |
0.48 |
- |
0.57 |
その他のベンチマーク |
|
|
|
|
|
MMMU |
0.32 |
0.35 |
0.42 |
0.44 |
0.37 |
VQAv2 |
0.57 |
0.75 |
0.76 |
0.77 |
0.78 |
RealWorldQA |
0.55 |
0.34 |
0.60 |
0.58 |
0.63 |
VizWiz VQA |
0.49 |
0.46 |
0.57 |
0.57 |
0.63 |
OK VQA |
0.40 |
0.44 |
0.51 |
0.53 |
0.56 |
サポートされる入力形式
現在、このモデルは英語の指示と画像(png、jpegなど)を入力形式としてサポートしています。
想定される用途
このモデルは、視覚的およびテキストデータの処理を伴う企業アプリケーションでの使用を想定しています。特に、表やチャートの分析、光学式文字認識(OCR)、文書コンテンツに基づく質問応答など、幅広い視覚的文書理解タスクに適しています。また、一般的な画像理解にも対応しており、より広範なビジネスアプリケーションに適用できます。テキストベースの入力のみのタスクについては、テキストのみの処理に最適化されたGranite大規模言語モデルの使用をお勧めします。
微調整
新しいタスクに対してGranite Visionを微調整する例については、このノートブックを参照してください。
MM RAGでの使用
granite visionを使用したMM RAGの例については、このノートブックを参照してください。
モデルアーキテクチャ
granite-vision-3.2-2bのアーキテクチャは以下のコンポーネントで構成されています。
(1) ビジョンエンコーダ:SigLIP (https://huggingface.co/docs/transformers/en/model_doc/siglip)
(2) ビジョン言語コネクタ:gelu活性化関数を持つ2層MLP
(3) 大規模言語モデル:128kコンテキスト長のgranite-3.1-2b-instruct (https://huggingface.co/ibm-granite/granite-3.1-2b-instruct)
このモデルはLLaVA (https://llava-vl.github.io) をベースに構築されています。多層エンコーダの特徴とAnyRes
におけるより高密度なグリッド解像度を使用することで、文書画像を正確に解釈するために必要な、微妙な視覚コンテンツの理解能力を強化しています。
訓練データ
訓練データは主に2つの主要なソースから構成されています。(1) 公開されているデータセット (2) 文書理解タスクを含む特定の機能を対象として内部で作成された合成データ。データセットの詳細な帰属については、技術レポートを参照してください。
インフラストラクチャ
Granite Visionは、NVIDIA H100 GPUを搭載したIBMのスーパーコンピューティングクラスターであるBlue Velaを使用して訓練されました。このクラスターは、数千のGPUを用いたモデルの訓練に対してスケーラブルで効率的なインフラストラクチャを提供します。
倫理的な考慮事項と制限事項
大規模ビジョン言語モデルの使用には、バイアスと公平性、誤情報、自律的な意思決定など、人々が認識しておく必要があるリスクと倫理的な考慮事項が伴います。granite-vision-3.2-2bも例外ではありません。アライメントプロセスには安全面の考慮が含まれていますが、モデルは場合によっては、ユーザーのプロンプトに対して不正確、バイアスがある、または不安全な応答を生成する可能性があります。
また、小型のモデルはサイズが小さいため、生成シナリオで幻覚を引き起こしやすくなる可能性があり、首尾一貫した文脈的に正確な応答を生成する能力が制限される可能性があります。この点は現在活発な研究分野であり、この領域でより厳密な調査、理解、および緩和策が期待されています。
倫理的な観点から、すべての大規模言語モデルに関連する潜在的なリスクは、悪意のある利用です。私たちは、コミュニティに対して、granite-vision-3.2-2bを倫理的な意図を持って責任を持って使用することを強くお勧めします。このモデルは文書理解タスクに使用することをおすすめし、より一般的なビジョンタスクでは、バイアスや有害な出力を引き起こす固有のリスクが高くなる可能性があります。
安全性を強化するために、granite-vision-3.2-2bと共にGranite Guardianを使用することをお勧めします。Granite Guardianは、IBM AI Risk Atlasに概説された主要な次元にわたるプロンプトと応答のリスクを検出してフラグを立てるように設計された微調整済みの指示モデルです。人間によるアノテーションと内部のレッドチーミングに基づく合成データを含む訓練により、標準ベンチマークで同様のオープンソースモデルを上回る性能を発揮し、追加の安全層を提供します。
リソース
- 📄 完全な技術レポートはこちらから読むことができます。
- ⭐️ Graniteの最新の更新情報は、https://www.ibm.com/granite で確認できます。
- 🚀 チュートリアル、ベストプラクティス、およびプロンプトエンジニアリングのアドバイスは、https://www.ibm.com/granite/docs/ で入手できます。
- 💡 Graniteの最新の学習リソースについては、https://ibm.biz/granite-learning-resources を参照してください。
📄 ライセンス
このモデルはApache 2.0ライセンスの下で提供されています。