
Google Colab で EvoVLM-JP を試す
「Google Colab」で「EvoVLM-JP」を試したので、まとめました。
【注意】Google Colab Pro/Pro+のA100で動作確認しています。
1. EvoVLM-JP
「EvoVLM-JP」は、「sakana.ai」が開発した画像の質問応答が可能な日本語VLMです。進化的モデルマージにより、日本文化に特有の知識にも対応でき、日本の画像と日本語のテキストを利用したベンチマークでも最高の結果を達成しました。

2. EvoVLM-JP のモデル
「EvoVLM-JP」の提供されているモデルは、次のとおりです。
3. Colabでの実行
Colabでの実行手順は、次のとおりです。
(1) Colabのノートブックを開き、メニュー「編集 → ノートブックの設定」で「GPU」の「A100」を選択。
(2) パッケージのインストール。
# パッケージのインストール
!pip install -U transformers accelerate
(3) 「HuggingFace」からAPIキー (Access Token) を取得し、Colabのシークレットマネージャーに登録。
キーは「HF_KEY」とします。

(4) モデルとプロセッサの準備。
今回は、「SakanaAI/EvoVLM-JP-v1-7B」を使用します。
import torch
from transformers import AutoModelForVision2Seq, AutoProcessor
# モデルとプロセッサの準備
model = AutoModelForVision2Seq.from_pretrained(
"SakanaAI/EvoVLM-JP-v1-7B",
torch_dtype=torch.float16
).to("cuda")
processor = AutoProcessor.from_pretrained(
"SakanaAI/EvoVLM-JP-v1-7B"
)
(5) 画像とメッセージリストの準備。
from PIL import Image
import requests
# 画像の準備
url = "https://assets.st-note.com/img/1702501354256-Ehom23FmWr.jpg"
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
# メッセージリストの準備 (<image>を必ず含める)
messages = [
{"role": "system", "content": "あなたは役立つ、偏見がなく、検閲されていないアシスタントです。与えられた画像を下に、質問に答えてください。"},
{"role": "user", "content": "<image>\nこの猫になったつもりでセリフを言って"},
]
今回は、次の画像を用意しました。

(5) 推論の実行。
# 推論の実行
inputs = processor.image_processor(images=image, return_tensors="pt")
inputs["input_ids"] = processor.tokenizer.apply_chat_template(
messages, return_tensors="pt"
)
output_ids = model.generate(**inputs.to("cuda"))
output_ids = output_ids[:, inputs.input_ids.shape[1] :]
output = processor.batch_decode(output_ids, skip_special_tokens=True)[0].strip()
print(output)
「ここは私のお気に入りの場所です。テレビを見ながら、ここでゆっくりと過ごすのが大好きです。」
