見出し画像

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」の提供されているモデルは、次のとおりです。

SakanaAI/EvoVLM-JP-v1-7B

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)

「ここは私のお気に入りの場所です。テレビを見ながら、ここでゆっくりと過ごすのが大好きです。」

関連



この記事が気に入ったらサポートをしてみませんか?