🚀 Qwen2.5-VL-72B-Instruct-quantized-FP8-Dynamic
このモデルは、Qwen/Qwen2.5-VL-72B-Instruct をFP8データ型に量子化したもので、vLLM >= 0.5.2での推論に対応しています。
🚀 クイックスタート
このモデルは、画像とテキストを入力として受け取り、テキストを出力する多モーダルモデルです。以下のセクションでは、モデルの概要、デプロイ方法、作成方法、評価結果、推論性能について説明します。
✨ 主な機能
- 量子化: モデルの重みと活性化関数をFP8に量子化することで、推論速度を向上させます。
- vLLM対応: vLLM を使用して、効率的なデプロイと高速な推論をサポートします。
- 多モーダル対応: 画像とテキストを入力として受け取り、多様なタスクに対応します。
📦 インストール
このモデルを使用するには、vLLMと必要な依存関係をインストールする必要があります。vLLMのインストール方法については、公式ドキュメント を参照してください。
💻 使用例
基本的な使用法
以下のコードは、vLLMを使用してこのモデルをデプロイし、画像とテキストを入力として受け取り、応答を生成する例です。
from vllm.assets.image import ImageAsset
from vllm import LLM, SamplingParams
llm = LLM(
model="neuralmagic/Qwen2.5-VL-72B-Instruct-FP8-Dynamic",
trust_remote_code=True,
max_model_len=4096,
max_num_seqs=2,
)
question = "What is the content of this image?"
inputs = {
"prompt": f"<|user|>\n<|image_1|>\n{question}<|end|>\n<|assistant|>\n",
"multi_modal_data": {
"image": ImageAsset("cherry_blossom").pil_image.convert("RGB")
},
}
print("========== SAMPLE GENERATION ==============")
outputs = llm.generate(inputs, SamplingParams(temperature=0.2, max_tokens=64))
print(f"PROMPT : {outputs[0].prompt}")
print(f"RESPONSE: {outputs[0].outputs[0].text}")
print("==========================================")
高度な使用法
vLLMはOpenAI互換のサービングもサポートしています。詳細については、ドキュメント を参照してください。
📚 ドキュメント
モデル概要
属性 |
詳情 |
モデルタイプ |
Qwen2.5-VL-72B-Instruct |
入力 |
ビジョン - テキスト |
出力 |
テキスト |
重み量子化 |
FP8 |
活性化量子化 |
FP8 |
リリース日 |
2/24/2025 |
バージョン |
1.0 |
モデル開発者 |
Neural Magic |
モデルの作成
このモデルは、llm-compressor を使用して作成されました。以下のコードスニペットを実行することで、モデルを作成できます。
モデル作成コード
import requests
import torch
from PIL import Image
from transformers import AutoProcessor
from llmcompressor.transformers import oneshot
from llmcompressor.transformers.tracing import (
TraceableQwen2_5_VLForConditionalGeneration,
)
from llmcompressor.modifiers.quantization import QuantizationModifier
model_id = Qwen/Qwen2.5-VL-72B-Instruct
model = TraceableQwen2_5_VLForConditionalGeneration.from_pretrained(
model_id, device_map="auto", torch_dtype="auto"
)
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
recipe = [
QuantizationModifier(
targets="Linear",
scheme="FP8_DYNAMIC",
sequential_targets=["MistralDecoderLayer"],
ignore=["re:.*lm_head", "re:vision_tower.*", "re:multi_modal_projector.*"],
),
]
SAVE_DIR=f"{model_id.split('/')[1]}-FP8-Dynamic"
oneshot(
model=model,
recipe=recipe,
trust_remote_code_model=True,
output_dir=SAVE_DIR
)
モデルの評価
このモデルは、mistral-evals を使用してビジョン関連のタスクを評価し、lm_evaluation_harness を使用してテキストベースのベンチマークを評価しました。評価に使用したコマンドは以下の通りです。
評価コマンド
ビジョンタスク
- vqav2
- docvqa
- mathvista
- mmmu
- chartqa
vllm serve neuralmagic/pixtral-12b-quantized.w8a8 --tensor_parallel_size 1 --max_model_len 25000 --trust_remote_code --max_num_seqs 8 --gpu_memory_utilization 0.9 --dtype float16 --limit_mm_per_prompt image=7
python -m eval.run eval_vllm \
--model_name neuralmagic/pixtral-12b-quantized.w8a8 \
--url http://0.0.0.0:8000 \
--output_dir ~/tmp \
--eval_name <vision_task_name>
テキストベースのタスク
MMLU
lm_eval \
--model vllm \
--model_args pretrained="<model_name>",dtype=auto,add_bos_token=True,max_model_len=4096,tensor_parallel_size=<n>,gpu_memory_utilization=0.8,enable_chunked_prefill=True,trust_remote_code=True \
--tasks mmlu \
--num_fewshot 5 \
--batch_size auto \
--output_path output_dir
MGSM
lm_eval \
--model vllm \
--model_args pretrained="<model_name>",dtype=auto,max_model_len=4096,max_gen_toks=2048,max_num_seqs=128,tensor_parallel_size=<n>,gpu_memory_utilization=0.9 \
--tasks mgsm_cot_native \
--apply_chat_template \
--num_fewshot 0 \
--batch_size auto \
--output_path output_dir
精度
カテゴリ |
メトリック |
Qwen/Qwen2.5-VL-72B-Instruct |
neuralmagic/Qwen2.5-VL-72B-Instruct-FP8-Dynamic |
回復率 (%) |
ビジョン |
MMMU (val, CoT) explicit_prompt_relaxed_correctness |
64.33 |
66.88 |
103.96% |
|
VQAv2 (val) vqa_match |
81.94 |
81.94 |
100.00% |
|
DocVQA (val) anls |
94.71 |
94.64 |
99.93% |
|
ChartQA (test, CoT) anywhere_in_answer_relaxed_correctness |
88.96 |
89.04 |
100.09% |
|
Mathvista (testmini, CoT) explicit_prompt_relaxed_correctness |
78.18 |
77.78 |
99.49% |
|
平均スコア |
81.62 |
81.86 |
100.29% |
テキスト |
MGSM (CoT) |
75.45 |
75.29 |
99.79% |
|
MMLU (5-shot) |
86.16 |
86.12 |
99.95% |
推論性能
このモデルは、シングルストリームデプロイで最大1.79倍、マルチストリーム非同期デプロイで最大1.84倍の速度向上を達成します。以下の性能ベンチマークは、vLLM バージョン0.7.2と GuideLLM を使用して実施されました。
ベンチマークコマンド
```
guidellm --model neuralmagic/Qwen2.5-VL-72B-Instruct-FP8-Dynamic --target "http://localhost:8000/v1" --data-type emulated --data prompt_tokens=,generated_tokens=,images=,width=,height= --max seconds 120 --backend aiohttp_server
```
シングルストリーム性能 (vLLMバージョン0.7.2で測定)
ハードウェア |
GPU数 |
モデル |
平均コスト削減 |
ドキュメントビジュアル質問応答 1680W x 2240H 64/128 レイテンシ (s) |
ドキュメントビジュアル質問応答 1680W x 2240H 64/128 1ドルあたりのクエリ数 |
ビジュアル推論 640W x 480H 128/128 レイテンシ (s) |
ビジュアル推論 640W x 480H 128/128 1ドルあたりのクエリ数 |
画像キャプショニング 480W x 360H 0/128 レイテンシ (s) |
画像キャプショニング 480W x 360H 0/128 1ドルあたりのクエリ数 |
A100 |
4 |
Qwen/Qwen2.5-VL-72B-Instruct |
|
6.4 |
78 |
4.5 |
111 |
4.4 |
113 |
|
2 |
neuralmagic/Qwen2.5-VL-72B-Instruct-quantized.w8a8 |
1.85 |
7.0 |
143 |
4.9 |
205 |
4.8 |
211 |
|
1 |
neuralmagic/Qwen2.5-VL-72B-Instruct-quantized.w4a16 |
3.33 |
9.4 |
213 |
5.1 |
396 |
4.8 |
420 |
H100 |
4 |
Qwen/Qwen2.5-VL-72B-Instruct |
|
4.3 |
68 |
3.0 |
97 |
2.9 |
100 |
|
2 |
neuralmagic/Qwen2.5-VL-72B-Instruct-FP8-Dynamic |
1.79 |
4.6 |
122 |
3.3 |
173 |
3.2 |
177 |
|
1 |
neuralmagic/Qwen2.5-VL-72B-Instruct-quantized.w4a16 |
5.66 |
4.3 |
252 |
4.4 |
251 |
4.2 |
259 |
マルチストリーム非同期性能 (vLLMバージョン0.7.2で測定)
ハードウェア |
モデル |
平均コスト削減 |
ドキュメントビジュアル質問応答 1680W x 2240H 64/128 最大スループット (QPS) |
ドキュメントビジュアル質問応答 1680W x 2240H 64/128 1ドルあたりのクエリ数 |
ビジュアル推論 640W x 480H 128/128 最大スループット (QPS) |
ビジュアル推論 640W x 480H 128/128 1ドルあたりのクエリ数 |
画像キャプショニング 480W x 360H 0/128 最大スループット (QPS) |
画像キャプショニング 480W x 360H 0/128 1ドルあたりのクエリ数 |
A100x4 |
Qwen/Qwen2.5-VL-72B-Instruct |
|
0.4 |
180 |
1.1 |
539 |
1.2 |
595 |
|
neuralmagic/Qwen2.5-VL-72B-Instruct-quantized.w8a8 |
1.80 |
0.6 |
289 |
2.0 |
1020 |
2.3 |
1133 |
|
neuralmagic/Qwen2.5-VL-72B-Instruct-quantized.w4a16 |
2.75 |
0.7 |
341 |
3.2 |
1588 |
4.1 |
2037 |
H100x4 |
Qwen/Qwen2.5-VL-72B-Instruct |
|
0.5 |
134 |
1.2 |
357 |
1.3 |
379 |
|
neuralmagic/Qwen2.5-VL-72B-Instruct-FP8-Dynamic |
1.73 |
0.9 |
247 |
2.2 |
621 |
2.4 |
669 |
|
neuralmagic/Qwen2.5-VL-72B-Instruct-quantized.w4a16 |
8.27 |
3.3 |
913 |
3.3 |
898 |
3.6 |
991 |
📄 ライセンス
このモデルは、Apache 2.0ライセンス の下で提供されています。