jina-vlmをリリースしました。これは2.4Bパラメータの視覚言語モデルで、オープンな2BスケールのVLMの中で最先端の多言語視覚質問応答を実現します。SigLIP2視覚エンコーダとQwen3言語バックボーンをattention-poolingコネクタで組み合わせることで、jina-vlmは、コンシューマハードウェアで実行できるほど効率的でありながら、29の言語で優れたパフォーマンスを発揮します。
| Model | Size | VQA Avg | MMMB | Multi. MMB | DocVQA | OCRBench |
|---|---|---|---|---|---|---|
| jina-vlm | 2.4B | 72.3 | 78.8 | 74.3 | 90.6 | 778 |
| Qwen2-VL-2B | 2.1B | 66.4 | 71.3 | 69.4 | 89.2 | 809 |
| Qwen3-VL-2B | 2.8B | 71.6 | 75.0 | 72.3 | 92.3 | 858 |
| InternVL3-2B | 2.2B | 69.2 | 73.6 | 71.9 | 87.4 | 835 |
| InternVL3.5-2B | 2.2B | 71.6 | 74.6 | 70.9 | 88.5 | 836 |





tagアーキテクチャ
2つの課題が、実用的なVLMの展開を制限してきました。多言語機能は視覚的適応中に劣化することが多く、高品質のVLMは計算コストが高いままです。jina-vlmは、慎重なアーキテクチャの選択(注意プーリングコネクタは、パフォーマンスへの影響を最小限に抑えながら、視覚的なトークンを4倍に削減します)と、多言語機能を明示的に保持するトレーニングレシピを通じて、両方に対処します。
主要なアーキテクチャの革新は、視覚言語コネクタです。タイルあたり729個の視覚的なトークンすべてを言語モデルに渡すのではなく、2×2の注意プーリングを適用して、これを182個のトークンに削減します。これは、情報の損失を最小限に抑えながら4倍の削減です。コネクタは次のように機能します。
- 多層特徴融合:ViTレイヤー18と24(最後から3番目と9番目)からの特徴を連結し、細かい空間的な詳細と高レベルのセマンティクスをキャプチャします。
- 注意プーリング:2×2パッチの近傍ごとに、近傍特徴の平均としてクエリを計算し、クロスアテンションを適用して、単一のプールされた表現を生成します。
- SwiGLU投影:プールされた特徴は、ゲート付き線形ユニットを介して言語モデルの次元に投影されます。
この効率の向上を以下に説明します。
| Metric | No Pooling | With Pooling | Reduction |
|---|---|---|---|
| Visual tokens (12 tiles + thumbnail) | 9,477 | 2,366 | 4.0× |
| LLM prefill FLOPs | 27.2 TFLOPs | 6.9 TFLOPs | 3.9× |
| KV-cache memory | 2.12 GB | 0.53 GB | 4.0× |
ViTはプーリングに関係なく各タイルを同じように処理するため、これらの節約は言語モデルにのみ適用されます。これは、推論中に支配的なコストです。
tagトレーニング手順
VLMトレーニングの一般的な失敗モードは、壊滅的な忘却です。言語モデルは、視覚入力に適応するにつれて、テキストのみの機能を失います。これは、視覚的適応が非英語の言語でのパフォーマンスを低下させる可能性がある多言語モデルでは特に深刻です。
これを解決するために、明示的な多言語データとテキストのみの保持を含む2段階のトレーニングパイプラインを使用します。
ステージ1:アライメントトレーニング
最初のステージでは、自然なシーン、ドキュメント、インフォグラフィック、図など、多様な視覚ドメインにまたがるキャプションデータセットを使用して、言語間のセマンティックグラウンディングに焦点を当てています。重要なことに、バックボーンの言語理解を維持するために、15%のテキストのみのデータを含めます。コネクタは、エンコーダとデコーダよりも高い学習率(2e-4)と短いウォームアップを使用し、事前トレーニングされたコンポーネントが徐々に変化する間、迅速に適応できるようにします。
ステージ2:インストラクションファインチューニング
第2段階では、VQAおよび推論タスクに対する指示追従を訓練します。言語能力を維持するために、学術VQA、ドキュメント理解、OCR、数学、推論を網羅する公開データセットと、テキストのみの指示データを組み合わせます。
結合されたデータは約500万のマルチモーダルサンプルと、29言語にわたる120億のテキスト 词元 で構成され、約半分が英語、残りが中国語、アラビア語、ドイツ語、スペイン語、フランス語、イタリア語、日本語、韓国語、ポルトガル語、ロシア語、トルコ語、ベトナム語、タイ語、インドネシア語、ヒンディー語、ベンガル語などに及びます。
tagはじめに
tagJina API経由
OpenAI互換APIをhttps://api-beta-vlm.jina.aiで提供しています。
tagURLからの画像
| 形式 | 例 |
|---|---|
| HTTP/HTTPS URL | https://example.com/image.jpg |
| Base64データURI | data:image/jpeg;base64,/9j/4AAQ... |
curl https://api-beta-vlm.jina.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $JINA_API_KEY" \
-d '{
"model": "jina-vlm",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image"},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
]
}]
}'
ローカル画像(base64)
curl https://api-beta-vlm.jina.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $JINA_API_KEY" \
-d '{
"model": "jina-vlm",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "What is in this image?"},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,'$(base64 -i image.jpg)'"}}
]
}]
}'
テキストのみのクエリ
curl https://api-beta-vlm.jina.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $JINA_API_KEY" \
-d '{
"model": "jina-vlm",
"messages": [{"role": "user", "content": "What is the capital of France?"}]
}'
ストリーミング応答
生成された 词元 を受信するには、"stream": trueを追加します。
curl https://api-beta-vlm.jina.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $JINA_API_KEY" \
-d '{
"model": "jina-vlm",
"stream": true,
"messages": [{"role": "user", "content": "Write a haiku about coding"}]
}'
サービスのコールドスタート時には、以下が表示されます。
{
"error": {
"message": "Model is loading, please retry in 30-60 seconds. Cold start takes ~30s after the service scales up.",
"code": 503
}
}
待ってからリクエストを再試行してください。
tagCLI経由
HuggingFaceリポジトリには、簡単な実験のためのinfer.pyスクリプトが含まれています。
# Single image
python infer.py -i image.jpg -p "What's in this image?"
# Streaming output
python infer.py -i image.jpg -p "Describe this image" --stream
# Multiple images
python infer.py -i img1.jpg -i img2.jpg -p "Compare these images"
# Text-only
python infer.py -p "What is the capital of France?"tagTransformers経由
from transformers import AutoModelForCausalLM, AutoProcessor
import torch
from PIL import Image
# Load model and processor
model = AutoModelForCausalLM.from_pretrained(
"jinaai/jina-vlm",
torch_dtype=torch.bfloat16,
trust_remote_code=True,
device_map="auto"
)
processor = AutoProcessor.from_pretrained(
"jinaai/jina-vlm",
trust_remote_code=True
)
# Load an image
image = Image.open("document.png")
# Create the conversation
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": image},
{"type": "text", "text": "What is the main topic of this document?"}
]
}
]
# Process and generate
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt"
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=256, do_sample=False)
response = processor.decode(outputs[0], skip_special_tokens=True)
print(response)tag結論
jina-vlmは、慎重なアーキテクチャとトレーニングの選択によって、小規模なVLMが強力な多言語視覚理解を達成できることを示しています。アテンションプーリングコネクタは、パフォーマンスへの影響を最小限に抑えながら、4倍の 词元 削減を実現し、マルチモーダルトレーニング中にテキストのみのデータを組み込むことで、そうでなければ低下する言語能力を維持します。
現在のアプローチには、いくつかの制限事項があります。
- タイリングのオーバーヘッド:処理はタイル数に比例してスケールします。非常に高解像度の画像の場合、これは重要になる可能性があります。さらに、タイリングは、オブジェクトのカウントやタイル境界を越えた空間推論など、全体的なシーン理解を必要とするタスクを損なう可能性があります。グローバルサムネイルはこれを部分的に軽減しますが、ネイティブ解像度のアプローチの方が、このようなタスクに適している可能性があります。
- マルチイメージ推論:この体制でのトレーニングデータが限られているため、マルチイメージベンチマークでのパフォーマンスは低下します。簡潔な視覚的応答のために最適化すると、MMLU-Proの低下によって証明されるように、拡張されたマルチステップ推論と矛盾するように見えます。
将来の作業では、より効率的な解像度処理、カウントおよび空間タスクの対象を絞った改善、および多言語トレーニングレシピがより大規模なモデルスケールに転送されるかどうかを調査できます。








