Qwen2-VL リリース:オープンソース 2B/7B ビジョン・ランゲージモデルと 72B API、最先端の画像、動画、マルチリンガル機能を搭載

TL;DR

Qwen は Qwen2‑VL をリリースしました。これは新しいビジョン・ランゲージモデルファミリー(2B、7B オープンソース、API 経由で 72B)で、画像、マルチ画像、長時間動画の理解において最先端の性能を達成し、画像中の多数の言語をサポートし、モバイルやロボットなどのデバイスのビジュアルエージェントとして機能します。


Qwen2‑VL の概要

Qwen2‑VL は Qwen2 言語バックボーン上に構築された最新のビジョン・ランゲージモデルシリーズです。リリースには 3 つのモデルサイズが含まれます:

  • Qwen2‑VL‑2B – モバイル展開に最適化されたコンパクトモデル。
  • Qwen2‑VL‑7B – 画像、マルチ画像、動画機能を保持したコスト効率の高いモデル。
  • Qwen2‑VL‑72B – API で提供される大規模モデルで、GPT‑4o や Claude 3.5‑Sonnet などのクローズドソース競合モデルをしばしば上回るトップクラスの性能を提供します。

3 つのバリアントはすべて、Vision Transformer(≈600 M パラメータ)と Qwen2 LLM を組み合わせた共通アーキテクチャを共有しており、Apache 2.0 ライセンス(2B と 7B)または商用 API(72B)でリリースされています。


主な技術的進歩

Naive Dynamic Resolution

Qwen2‑VL は Naive Dynamic Resolution を導入し、任意の画像解像度を動的な数のビジュアルトークンにマッピングします。これにより、従来モデルの固定サイズトークンのボトルネックが解消され、人間の視覚認知により近い形で任意の画像サイズを詳細を失うことなく処理できるようになります。

Multimodal Rotary Position Embedding (M‑ROPE)

M‑ROPE メカニズムは元のロータリー埋め込みを時間、縦、横の 3 つの要素に分解します。これにより、モデルは 1 次元テキスト、2 次元ビジュアル、3 次元動画の位置情報を同時にエンコードし、空間的・時間的関係の推論能力を向上させます。


パフォーマンスハイライト

画像・文書理解

  • State‑of‑the‑art(最先端)を MathVista、DocVQA、RealWorldQA、MTVQA などのベンチマークで達成。
  • 7B モデルは文書中心タスク(DocVQA)とマルチリンガルテキスト・画像理解(MTVQA)で卓越し、同等サイズのオープンソースモデルの中で最高スコアを記録しています。
  • 2B モデルはフットプリントは小さいものの、文書および動画タスクで多くの同業者を上回ります。

動画理解

  • Qwen2‑VL は 20 分 を超える動画を取り込むことができ、高品質な動画ベースの Q&A、対話、コンテンツ作成を実現します。
  • 72B モデルは動画ベンチマークで GPT‑4o や Claude 3.5‑Sonnet に対して明確な優位性を示し、7B と 2B モデルはコスト重視のアプリケーションで競争力を保ちます。

画像中のマルチリンガルテキスト

  • 英語と中国語に加えて、モデルは画像に埋め込まれた欧州諸言語、日本語、韓国語、アラビア語、ベトナム語、その他の文字体系のテキストを理解します。

実証された機能

強化されたオブジェクト・手書きテキスト認識

Qwen2‑VL は複雑なオブジェクト関係を識別し、複数言語の手書きテキストを正確に読み取ることができます。提供された例では、積み重ねられた箱の色と番号を完璧に列挙しました。

ビジュアル推論とコード生成

モデルはスクリーンショットとして提示されたアルゴリズム問題を解き、正しい Python 実装を生成します。また、チャートや極端に歪んだアスペクト比の画像を解釈し、視覚的認知と論理的推論を橋渡しします。

動画要約とライブインタラクション

Qwen2‑VL は詳細な動画説明を生成し、フォローアップ質問(例:「宇宙飛行士の服の色は何ですか?」)に答え、ライブチャットの流れを維持でき、実質的にパーソナル動画アシスタントとして機能します。

ビジュアルエージェントと関数呼び出し

視覚情報と関数呼び出しを組み合わせることで、Qwen2‑VL は見たものに基づいてリアルタイムデータ(フライトステータス、天気、荷物追跡)を取得できます。この機能はモバイルやロボット、その他デバイスの自律運用への道を開きます。


制限事項

  • モデルは動画から音声を抽出できません。
  • 知識は 2023 年 6 月 時点で固定されています。
  • 複雑な指示に対する正確性は保証されません。
  • カウント、細かい文字認識、3D 空間認識に弱点があります。

はじめに

API アクセス(72B)

from openai import OpenAI
import os, base64

def encode_image(path):
    with open(path, "rb") as f:
        return base64.b64encode(f.read()).decode("utf-8")

image_path = "dog_and_girl.jpeg"
base64_image = encode_image(image_path)

client = OpenAI(api_key=os.getenv("DASHSCOPE_API_KEY"),
                base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")

completion = client.chat.completions.create(
    model="qwen-vl-max-0809",
    messages=[{"role": "user",
               "content": [{"type": "text", "text": "What is this?"},
                           {"type": "image_url",
                            "image_url": {"url": "https://.../dog_and_girl.jpeg"}},
                           {"type": "image_url",
                            "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}]
              }],
    top_p=0.8, stream=True, stream_options={"include_usage": True})

for chunk in completion:
    print(chunk.model_dump_json())

オープンソースモデル(2B と 7B)

最新の Transformers をソースからインストールして KeyError: 'qwen2_vl' を回避してください:

pip install git+https://github.com/huggingface/transformers

visual‑utility パッケージをインストールします:

pip install qwen-vl-utils

Hugging Face Transformers を使用した最小限の推論スクリプト(7B):

from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
from qwen_vl_utils import process_vision_info

model = Qwen2VLForConditionalGeneration.from_pretrained(
    "Qwen/Qwen2-VL-7B-Instruct", device_map="auto")
processor = AutoProcessor.from_pretrained("Qwen/Qwen2-VL-7B-Instruct")

messages = [{"role": "user",
             "content": [{"type": "image",
                          "image": "https://.../demo.jpeg"},
                         {"type": "text", "text": "Describe this image."}]}]

text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(text=[text], images=image_inputs, videos=video_inputs,
                   padding=True, return_tensors="pt")

generated_ids = model.generate(**inputs, max_new_tokens=128)
output = processor.batch_decode(generated_ids[:, inputs.input_ids.shape[-1]:],
                                 skip_special_tokens=True)
print(output)

リポジトリは量子化(AutoGPTQ、AutoAWQ)、vLLM を用いたデプロイ、Llama‑Factory によるファインチューニングのガイダンスも提供しています。


ライセンスと入手方法

  • Qwen2‑VL‑2BQwen2‑VL‑7B – Apache 2.0、Hugging Face と ModelScope でホスト。
  • Qwen2‑VL‑72B – 使用量ベースの料金設定の商用 API(DashScope)。

今後の方向性

Qwen のロードマップでは、今後の言語バックボーン上により強力なビジョン・ランゲージモデルを構築し、追加のモダリティへ拡張することが示されており、ビジョン、音声、その他の感覚データを統一フレームワークで処理できる「オムニモデル」を目指しています。


参考文献とリソース

Sources