--- license: cc-by-nc-sa-4.0 datasets: - turing-motors/LLaVA-Pretrain-JA - turing-motors/LLaVA-v1.5-Instruct-620K-JA language: - ja base_model: - openai/clip-vit-large-patch14-336 - sbintuitions/sarashina2.2-1b-instruct-v0.1 pipeline_tag: image-text-to-text --- # llava-1.5-sarashina2.2-1.7b-instruct Model Card (JA) ![image/png](https://cdn-uploads.huggingface.co/production/uploads/62441d1d9fdefb55a0b7d12c/FPshq08TKYD0e-qwPLDVO.png) 以下は **llava-1.5-sarashina2.2-1.7b-instruct** のモデルカードです。 オリジナルの [LLaVA Model Card](https://huggingface.co/liuhaotian/llava-v1.5-13b) を参考に作成しています。 英語版のモデルカードは[こちら](README_en.md) (English version of the model card is [here]((README_en.md))) ## モデル詳細 **モデルタイプ:** llava-1.5-sarashina2.2-1.7b-instruct は、[sbintuitions/sarashina2.2-1b-instruct-v0.1](https://huggingface.co/sbintuitions/sarashina2.2-1b-instruct-v0.1) を視覚言語指示追従データを用いてファインチューニングして作成したオープンソースのチャットボットで、Transformer アーキテクチャに基づく自己回帰型視覚言語モデルです。 - **総パラメータ数:** 1,716,099,840(約 1.7B) - LLM ([sbintuitions/sarashina2.2-1b-instruct-v0.1](https://huggingface.co/sbintuitions/sarashina2.2-1b-instruct-v0.1)): 1,407,542,528(約 1.4B) - Projector (2-layer MLP): 5,049,856(約 5M) - 視覚エンコーダ ([openai/clip-vit-large-patch14-336](https://huggingface.co/openai/clip-vit-large-patch14-336)): 303,507,456(約 303M) **モデル作成日:** 2025 年 5 月 **学習設定:** 以下 2 つのデータセットを用い、**Projector のみ** を学習させました。 > **注:** 元の LLM の性能を維持するため、**Stage‑2(Projector と LLM の両方を学習可能にする段階)をスキップ** し、Stage‑2 で使用予定だったデータを Stage‑1 に組み込みました。 - **Stage‑1** - **[LLaVA-Pretrain-JA](https://huggingface.co/datasets/turing-motors/LLaVA-Pretrain-JA) (558K)** - [Qwen/Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct) で再キャプションしたデータを使用。 - **[LLaVA-v1.5-Instruct-620K-JA](https://huggingface.co/datasets/turing-motors/LLaVA-v1.5-Instruct-620K-JA) (522K)** - 日本語翻訳による不整合を避けるため、OCR 系データ(ocr_vqa, textvqa)は除外。 ## モデルの使い方 `transformers >= 4.35.3` をインストールしてください。 本モデルはマルチプロンプト生成をサポートします。必ず正しいプロンプトテンプレート(`USER: xxxASSISTANT:`)を守り、画像を問い合わせる位置に `` トークンを挿入してください。 以下は GPU 上で `bfloat16` 精度で生成を行うサンプルスクリプトです。 ```python import requests from PIL import Image import torch from transformers import AutoProcessor, LlavaForConditionalGeneration model_id = "turing-motors/llava-1.5-sarashina2.2-1.7b-instruct" model = LlavaForConditionalGeneration.from_pretrained( model_id, torch_dtype=torch.bfloat16, low_cpu_mem_usage=True, ).to("cuda") processor = AutoProcessor.from_pretrained(model_id, use_fast=True) # チャット履歴を定義し、apply_chat_template でフォーマット済みプロンプトを作成 # "content" 内の各値は ("text", "image") 型の dict のリスト conversation = [ { "role": "user", "content": [ {"type": "text", "text": "猫は何匹いますか?"}, {"type": "image"}, ], }, ] prompt = processor.apply_chat_template(conversation, add_generation_prompt=True) image_file = "http://images.cocodataset.org/val2017/000000039769.jpg" raw_image = Image.open(requests.get(image_file, stream=True).raw) inputs = processor(images=raw_image, text=prompt, return_tensors='pt').to("cuda") generated_ids = model.generate(**inputs, max_new_tokens=128, do_sample=False) generated_texts = processor.batch_decode( generated_ids, skip_special_tokens=True, ) print(generated_texts[0]) # USER: # 猫は何匹いますか?ASSISTANT: 画像には2匹の猫がいます。 ``` --- `transformers` v4.48 以降では、画像 URL またはローカルパスを会話履歴に直接渡し、チャットテンプレートに処理を任せることも可能です。 テンプレートが画像を読み込み、`torch.Tensor` 形式で返すので、そのまま `model.generate()` に渡せます。 ```python messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://www.ilankelman.org/stopsigns/australia.jpg"}, {"type": "text", "text": "画像を非常に短く説明して。"}, ], }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt" ).to("cuda") output = model.generate(**inputs, max_new_tokens=128) generated_texts = processor.batch_decode( output, skip_special_tokens=True, ) print(generated_texts[0]) # USER: # 画像を非常に短く説明して。ASSISTANT: 画像は、赤い停止標識と、その横にある赤い門を持つ伝統的な中国の門の2つの標識が写っています。 ``` ## ライセンス Creative Commons Attribution Non Commercial Share Alike 4.0 OpenAI のポリシー [https://openai.com/policies/terms-of-use](https://openai.com/policies/terms-of-use) に従うものとします。