🚀 LLM-jp-3 VILA 14B
このリポジトリは、国立情報学研究所の大規模言語モデル研究開発センターによって開発された大規模ビジョン言語モデル(VLM)を提供しています。
🚀 クイックスタート
環境設定
Pythonバージョン: 3.10.12
-
リポジトリをクローンし、ライブラリをインストールします。
git clone git@github.com:llm-jp/llm-jp-VILA.git
cd llm-jp-VILA
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.4.2/flash_attn-2.4.2+cu118torch2.0cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
pip install flash_attn-2.4.2+cu118torch2.0cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
pip install -e .
pip install -e ".[train]"
pip install git+https://github.com/huggingface/transformers@v4.36.2
cp -rv ./llava/train/transformers_replace/* ./venv/lib/python3.10/site-packages/transformers/
-
Pythonスクリプトを実行します。image_path
とquery
を自分のものに変更することができます。
import argparse
from io import BytesIO
import requests
import torch
from PIL import Image
from llava.constants import IMAGE_TOKEN_INDEX
from llava.conversation import conv_templates
from llava.mm_utils import (get_model_name_from_path,
process_images, tokenizer_image_token)
from llava.model.builder import load_pretrained_model
from llava.utils import disable_torch_init
def load_image(image_file):
if image_file.startswith("http") or image_file.startswith("https"):
response = requests.get(image_file)
image = Image.open(BytesIO(response.content)).convert("RGB")
else:
image = Image.open(image_file).convert("RGB")
return image
def load_images(image_files):
out = []
for image_file in image_files:
image = load_image(image_file)
out.append(image)
return out
disable_torch_init()
model_checkpoint_path = "llm-jp/llm-jp-3-vila-14b"
model_name = get_model_name_from_path(model_checkpoint_path)
tokenizer, model, image_processor, context_len = load_pretrained_model(model_checkpoint_path, model_name)
image_path = "path/to/image"
image_files = [
image_path
]
images = load_images(image_files)
query = "<image>\nこの画像について説明してください。"
conv_mode = "llmjp_v3"
conv = conv_templates[conv_mode].copy()
conv.append_message(conv.roles[0], query)
conv.append_message(conv.roles[1], None)
prompt = conv.get_prompt()
images_tensor = process_images(images, image_processor, model.config).to(model.device, dtype=torch.float16)
input_ids = tokenizer_image_token(prompt, tokenizer, IMAGE_TOKEN_INDEX, return_tensors="pt").unsqueeze(0).cuda()
with torch.inference_mode():
output_ids = model.generate(
input_ids,
images=[
images_tensor,
],
do_sample=False,
num_beams=1,
max_new_tokens=256,
use_cache=True,
)
outputs = tokenizer.batch_decode(output_ids, skip_special_tokens=True)[0]
print(outputs)
✨ 主な機能
このモデルは、画像とテキストを組み合わせたタスクを扱うことができます。具体的には、画像に関する質問に回答したり、画像の説明を生成したりすることが可能です。
📚 ドキュメント
モデル詳細
データセット
このモデルは3段階で学習されています。
ステップ0
プロジェクターのパラメータを調整するために、以下のデータセットを使用しました。
ステップ1
プロジェクターとLLMのパラメータを調整するために、以下のデータセットを使用しました。
ステップ2
プロジェクターとLLMのパラメータを調整するために、以下のデータセットを使用しました。
評価
このモデルは、Heron Bench、JA-VLM-Bench-In-the-Wild、およびJA-VG-VQA500を使用して評価されました。評価にはgpt-4o-2024-05-13
をLLM評価者として使用しました。
Heron Bench
JA-VLM-Bench-In-the-Wild
JA-VG-VQA-500
🔧 技術詳細
このリポジトリで公開されているモデルは、研究開発の初期段階にあります。モデルの出力が社会規範、倫理基準、および法律に沿うように調整されていません。
📄 ライセンス
このモデルの重みは、Apache License, Version 2.0の下で公開されています。また、このモデルはOpenAI GPT-4によって生成された合成データを使用しているため、ユーザーはOpenAIの利用規約に従う必要があります。
追加情報
synthdog-jaデータセットのライセンスに関しては、データセットのドキュメントに明示的なライセンス声明がありません。「OCR-free Document Understanding Transformer」の主要な責任著者に確認のために連絡を試みましたが、返信を受け取っていません。
以下の考慮事項に基づいて、synthdog-jaデータセットはおそらくCC-BY-SAライセンスに準拠していると判断し、この仮定の下で学習を進めました。
- このデータセットで学習されたdonut-baseモデルはMITライセンスの下で公開されています。
- データセットで使用されているWikipedia記事はCC-BY-SAライセンスに準拠しています。