Model Overview
Model Features
Model Capabilities
Use Cases
🚀 Stockmark-2-VL-100B-beta
Stockmark-2-VL-100B-beta は、文書の読解における思考連鎖(CoT)推論機能を備えた、1000億パラメータの日本語特化型ビジュアル言語モデルです。このモデルは Qwen2.5-VL-72B が生成した合成データを使用しているため、Qwenライセンス に基づいて提供されています。
ベータ版として、Stockmark-2-VL-100B-beta はまだ改善と評価の段階にあります。ユーザーからのフィードバックや洞察は、将来のバージョンの改良に役立ちます。
詳細については 弊社ブログ をご覧ください。
このプロジェクトは GENIAC によって支援されています。
🚀 クイックスタート
🤗Transformersを使用した推論
Stockmark-2-VL-100B-beta は LLaVA-OneVision アーキテクチャに基づいて構築されているため、transformers>=4.45.0
がインストールされていることを確認してください。
pip install transformers>=4.45.0 accelerate torchvision pillow
以下は、純粋な transformers
で Stockmark-2-VL-100B-beta を使用する方法を示すコードスニペットです。
import requests
from PIL import Image
import torch
from transformers import AutoProcessor, LlavaOnevisionForConditionalGeneration
from huggingface_hub import hf_hub_download
model_id = "stockmark/Stockmark-2-VL-100B-beta"
model = LlavaOnevisionForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
low_cpu_mem_usage=True,
device_map="auto"
)
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
conversation = [
{
"role": "system",
"content": "あなたは誠実で優秀な日本人のアシスタントです。"
},
{
"role": "user",
"content": "<image>30歳未満の社員に対するアンケート回答結果で、最も割合が高かった「使用頻度」は何ですか?",
},
]
prompt = processor.apply_chat_template(conversation, add_generation_prompt=True)
img_path = hf_hub_download(
repo_id=model_id,
filename="assets/demo.png"
)
raw_image = Image.open(img_path)
inputs = processor(images=raw_image, text=prompt, return_tensors="pt").to("cuda").to(torch.bfloat16)
output_ids = model.generate(**inputs, max_new_tokens=255, do_sample=False)
generated_ids = [
output_ids[len(input_ids) :] for input_ids, output_ids in zip(inputs.input_ids, output_ids)
]
answer = processor.batch_decode(
generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True
)[0].strip()
print(answer)
vLLMを使用した推論
以下は、vLLM
で Stockmark-2-VL-100B-beta を使用する方法を示すコードスニペットです。
import os
import requests
from PIL import Image
from transformers import (
AutoProcessor,
)
from huggingface_hub import hf_hub_download
from vllm import LLM, SamplingParams
os.environ["VLLM_WORKER_MULTIPROC_METHOD"] = "spawn"
def main():
model_id = "stockmark/Stockmark-2-VL-100B-beta"
processor = AutoProcessor.from_pretrained(
model_id,
trust_remote_code=True
)
message = [
{
"role": "system",
"content": "あなたは誠実で優秀な日本人のアシスタントです。"
},
{
"role": "user",
"content": "<image>30歳未満の社員に対するアンケート回答結果で、最も割合が高かった「使用頻度」は何ですか?"
}
]
prompt = processor.apply_chat_template(message, add_generation_prompt=True)
print(prompt)
llm = LLM(
model=model_id,
tensor_parallel_size=2,
limit_mm_per_prompt={"image": 1},
trust_remote_code=True,
dtype="bfloat16",
)
img_path = hf_hub_download(
repo_id=model_id,
filename="assets/demo.png"
)
image = Image.open(img_path)
inputs = {
"prompt": prompt,
"multi_modal_data": {
"image": image
},
}
sampling_params = SamplingParams(
temperature=0,
max_tokens=256
)
outputs = llm.generate(
inputs,
sampling_params=sampling_params,
)
answer = outputs[0].outputs[0].text
print(answer)
if __name__ == "__main__":
main()
llm-jp-eval-mm
を使用した評価
llm-jp-eval-mm
を使用して Stockmark-2-VL-100B-beta を評価する場合は、以下のコードを llm-jp-eval-mm
に追加してください。
モデルクラス
以下は、llm-jp-eval-mm
での Stockmark-2-VL-100B-beta のモデルクラスです。llm-jp-eval-mm/examples
ディレクトリに含めてください。
# -*- coding: utf-8 -*-
"""
@File : stockmark_vl.py
@Description : The VLM model class for Stockmark-2-VL-100B-beta.
"""
import torch
from PIL import Image
from transformers import LlavaOnevisionForConditionalGeneration, AutoProcessor
from base_vlm import BaseVLM
from utils import GenerationConfig
DEFAULT_IMAGE_TOKEN = "<image>"
class VLM(BaseVLM):
def __init__(self, model_id) -> None:
self.model_id = model_id
self.model = LlavaOnevisionForConditionalGeneration.from_pretrained(
self.model_id,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
low_cpu_mem_usage=True,
device_map="auto"
)
self.processor = AutoProcessor.from_pretrained(self.model_id)
def generate(
self,
images: list[Image.Image],
text: str,
gen_kwargs: GenerationConfig = GenerationConfig(),
) -> str:
content = DEFAULT_IMAGE_TOKEN * len(images) + "\n" + text
messages = [
{
"role": "system",
"content": "あなたは誠実で優秀な日本人のアシスタントです。"
},
{
"role": "user",
"content": content,
},
]
prompt = self.processor.apply_chat_template(
messages, add_generation_prompt=True
)
if len(images) == 0:
images = None
inputs = self.processor(images=images, text=prompt, return_tensors="pt").to(
"cuda"
).to(torch.bfloat16)
output_ids = self.model.generate(**inputs, **gen_kwargs.__dict__)
generated_ids = [
output_ids[len(input_ids) :] for input_ids, output_ids in zip(inputs.input_ids, output_ids)
]
answer = self.processor.batch_decode(
generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True
)[0].strip()
return answer
llm-jp-eval-mm/examples/model_table.py
の MODEL_ID_TO_CLASS_PATH
に Stockmark-2-VL-100B-beta の情報が含まれていることを確認してください。
MODEL_ID_TO_CLASS_PATH = {
"stockmark/Stockmark-2-VL-100B-beta": "stockmark_vl.VLM",
}
依存グループ
以下のコードを使用して、llm-jp-eval-mm
で Stockmark-2-VL-100B-beta の依存グループを作成してください。
uv add --group stockmark_vl transformers>=4.49.0 torch>=2.5.1 torchvision>=0.20.1 flash-attn>=2.7.3 accelerate>=0.27.2 sentencepiece>=0.2.0 pillow>=10.4.0 protobuf>=5.29.3
✨ 主な機能
Stockmark-2-VL-100B-betaは、文書の読解における思考連鎖(CoT)推論機能を備えた、1000億パラメータの日本語特化型ビジュアル言語モデルです。
📚 ドキュメント
モデルアーキテクチャ
Stockmark-2-VL-100B-beta のアーキテクチャは、LLaVA-OneVision と同じフレームワークに基づいています。
- LLM:アーキテクチャとデータに関する以前の実験では、最初にパラメータ数の少ない Qwen/Qwen2-7B-Instruct を使用しました。最終的には、公式のトレーニングに stockmark/Stockmark-2-100B-Instruct-beta を実装しました。
- ビジョンエンコーダ:元の LLaVA-OneVision で使用されていた google/siglip-so400m-patch14-384 とは異なり、多言語性能がより優れた新しく開発された google/siglip2-so400m-patch14-384 をビジョンエンコーダとして採用しました。アブレーション実験では、SigLIP2 を使用したモデルが SigLIP を使用したモデルよりも優れた性能を示すことが観察されました。
- プロジェクター:プロジェクターの2層MLPには、ランダムな初期重みを使用しました。
評価
日本語文書読解性能評価
以下の3つのベンチマークを使用して文書読解性能を評価しました。
- JDocQA:合計1,175問。llm-jp-eval-mm を使用して Stockmark-2-VL-100B-beta を評価し、比較指標として LLM-as-a-judge スコアを採用しました(判定モデルとして
gpt-4o-2024-11-20
を使用)。Stockmark-2-VL-100B-beta 以外のモデルのスコアは、2025/5/15 時点の llm-jp-eval-mm リーダーボード から取得しました。 - BusinessSlideVQA:複雑な日本語のビジネススライド画像の理解能力を評価するためのベンチマークで、合計220問で構成されており、当社チームによって構築されました。評価指標は JDocQA と同じで、llm-as-a-judge によるスコアリングを行いました(判定モデルとして
gpt-4o-2024-11-20
を使用)。 - JChartQA:ChartQA-val から100問をランダムにサンプリングし、質問の英文テキストと画像を日本語に翻訳してベンチマークを構築しました。
性能比較結果は以下の表に示されています。Stockmark-2-VL-100B-beta は、すべての性能指標において他の国内の VLM モデルを大きく上回っています。さらに、Stockmark-2-VL-100B-beta は BusinessSlideVQA と JChartQA で GPT-4o よりも高いスコアを達成しており、文書読解性能において GPT-4o よりも優れた総合性能を示しています。
BusinessSlideVQA /LLM | JChartQA /Acc | JDocQA /LLM | |
---|---|---|---|
Heron-NVILA-Lite-15B | 2.8 | 0.41 | 2.7 |
sarashina2-vision-14b | 3.3 | 0.52 | 3.1 |
llm-jp-3-vila-14b | 2.0 | 0.23 | 2.5 |
gpt-4o-2024-11-20 | 4.1 | 0.77 | 3.6 |
Stockmark-2-VL-100B-beta | 4.2 | 0.88 | 3.5 |
日本語一般ドメインのVQA
モデルの日本語一般ドメインの VQA 性能を評価するために、以下の3つの一般的に使用されるベンチマークを選択しました。
llm-jp-eval-mm
を使用して3つのベンチマークを評価しました。すべての生成パラメータはデフォルト値に設定され、スコアリングに使用される判定モデルは gpt-4o-2024-11-20
でした。
Stockmark-2-VL-100B-beta は Heron-Bench と JA-VG-VQA500 で最高のスコアを達成し、JA-VLM-Bench-In-the-Wild でも上位にランクインしています。これは、Stockmark-2-VL-100B-beta が現在、日本語の一般ドメインタスクにおける最先端の国内モデルであることを示しています。
Heron-Bench /LLM | JA-VLM-Bench-In-the-Wild /LLM | JA-VG-VQA500 /LLM | |
---|---|---|---|
Heron-NVILA-Lite-15B | 73.5 | 4.4 | 4.0 |
sarashina2-vision-14b | 60.1 | 4.0 | 3.7 |
llm-jp-3-vila-14b | 68.0 | 4.1 | 3.9 |
Stockmark-2-VL-100B-beta | 78.8 | 4.1 | 4.1 |
🔧 技術詳細
Stockmark-2-VL-100B-beta は、LLaVA-OneVision アーキテクチャに基づいて構築されています。LLM、ビジョンエンコーダ、プロジェクターの選択と構成により、文書読解や一般ドメインの VQA タスクで高い性能を発揮します。
📄 ライセンス
開発元
⚠️ 重要提示
このモデルはベータ版であり、社会規範、倫理基準、および法規制への準拠を保証するための完全なキャリブレーションが行われていません。
⚠️ 重要提示
Stockmark-2-VL-100B-beta はビジュアル推論モデルであるため、プロンプト内の書式要件を無視し、CoT プロセスの出力を保持する可能性があります。








