基于mgoin/pixtral-12b的INT8量化版本,支持视觉-文本多模态任务,优化了推理效率
下载量 309
发布时间 : 2/8/2025
模型介绍
内容详情
替代品
模型简介
这是一个经过INT8权重量化和激活量化的多模态模型,支持视觉输入和文本输出,适用于图像理解和生成任务
模型特点
高效INT8量化
权重量化和激活量化均为INT8,显著提升推理效率
多模态支持
支持视觉输入和文本输出,能够处理图像和文本的联合任务
vLLM优化
专为vLLM推理引擎优化,支持高效部署
高精度保持
量化后保持了原始模型97%以上的准确率
模型能力
视觉问答
图像内容描述
文档理解
图表分析
多模态推理
使用案例
视觉问答
图像内容理解
回答关于图像内容的自然语言问题
在VQAv2验证集上达到78.00准确率
文档分析
文档问答
从扫描文档中提取信息并回答问题
在DocVQA验证集上达到89.35 ANLS分数
图表理解
图表数据分析
解释图表内容并回答相关问题
在ChartQA测试集上达到81.60准确率
标签:
- vllm
- 视觉
- w8a8 许可证: apache-2.0 许可证链接: >- https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md 语言:
- 英文 基础模型: mgoin/pixtral-12b 库名称: transformers
pixtral-12b-quantized.w8a8
模型概述
- 模型架构: mgoin/pixtral-12b
- 输入: 视觉-文本
- 输出: 文本
- 模型优化:
- 权重量化: INT8
- 激活量化: INT8
- 发布日期: 2025年2月24日
- 版本: 1.0
- 模型开发者: Neural Magic
mgoin/pixtral-12b的量化版本。
模型优化
该模型通过将mgoin/pixtral-12b的权重量化为INT8数据类型获得,可用于vLLM >= 0.5.2的推理。
部署
与vLLM一起使用
该模型可以使用vLLM后端高效部署,如下例所示。
from vllm.assets.image import ImageAsset
from vllm import LLM, SamplingParams
# 准备模型
llm = LLM(
model="neuralmagic/pixtral-12b-quantized.w8a8",
trust_remote_code=True,
max_model_len=4096,
max_num_seqs=2,
)
# 准备输入
question = "这张图片的内容是什么?"
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("========== 示例生成 ==============")
outputs = llm.generate(inputs, SamplingParams(temperature=0.2, max_tokens=64))
print(f"提示 : {outputs[0].prompt}")
print(f"响应: {outputs[0].outputs[0].text}")
print("==================================")
vLLM还支持与OpenAI兼容的服务。更多详情请参阅文档。
创建
该模型是通过llm-compressor创建的,作为多模态公告博客的一部分,运行了以下代码片段。
模型创建代码
import requests
import torch
from PIL import Image
from transformers import AutoProcessor
from llmcompressor.modifiers.quantization import GPTQModifier
from llmcompressor.transformers import oneshot
from llmcompressor.transformers.tracing import TraceableLlavaForConditionalGeneration
# 加载模型。
model_id = mgoin/pixtral-12b
model = TraceableLlavaForConditionalGeneration.from_pretrained(
model_id, device_map="auto", torch_dtype="auto"
)
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
# 单次参数
DATASET_ID = "flickr30k"
DATASET_SPLIT = {"calibration": "test[:512]"}
NUM_CALIBRATION_SAMPLES = 512
MAX_SEQUENCE_LENGTH = 2048
# 为多模态输入定义一个单次数据收集器。
def data_collator(batch):
assert len(batch) == 1
return {
"input_ids": torch.LongTensor(batch[0]["input_ids"]),
"attention_mask": torch.tensor(batch[0]["attention_mask"]),
"pixel_values": torch.tensor(batch[0]["pixel_values"]),
}
# 配方
recipe = [
GPTQModifier(
targets="Linear",
scheme="W8A8",
sequential_targets=["MistralDecoderLayer"],
ignore=["re:.*lm_head", "re:vision_tower.*", "re:multi_modal_projector.*"],
),
]
SAVE_DIR=f"{model_id.split('/')[1]}-quantized.w8a8"
# 执行单次
oneshot(
model=model,
tokenizer=model_id,
dataset=DATASET_ID,
splits=DATASET_SPLIT,
recipe=recipe,
max_seq_length=MAX_SEQUENCE_LENGTH,
num_calibration_samples=NUM_CALIBRATION_SAMPLES,
trust_remote_code_model=True,
data_collator=data_collator,
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 \
HumanEval
生成
python3 codegen/generate.py \
--model neuralmagic/pixtral-12b-quantized.w8a8 \
--bs 16 \
--temperature 0.2 \
--n_samples 50 \
--root "." \
--dataset humaneval
清理
python3 evalplus/sanitize.py \
humaneval/neuralmagic/pixtral-12b-quantized.w8a8_vllm_temp_0.2
评估
evalplus.evaluate \
--dataset humaneval \
--samples humaneval/neuralmagic/pixtral-12b-quantized.w8a8_vllm_temp_0.2-sanitized
准确率
类别 | 指标 | mgoin/pixtral-12b | neuralmagic/pixtral-12b-quantized.w8a8 | 恢复率 (%) |
---|---|---|---|---|
视觉 | MMMU (验证, CoT) explicit_prompt_relaxed_correctness |
48.00 | 46.22 | 96.29% |
VQAv2 (验证) vqa_match |
78.71 | 78.00 | 99.10% | |
DocVQA (验证) anls |
89.47 | 89.35 | 99.87% | |
ChartQA (测试, CoT) anywhere_in_answer_relaxed_correctness |
81.68 | 81.60 | 99.90% | |
Mathvista (测试mini, CoT) explicit_prompt_relaxed_correctness |
56.50 | 57.30 | 101.42% | |
平均得分 | 70.07 | 70.09 | 100.03% | |
文本 | HumanEval pass@1 |
68.40 | 66.39 | 97.06% |
MMLU (5-shot) | 71.40 | 70.50 | 98.74% |
推理性能
该模型在单流部署中实现了高达1.57倍的加速,在多流异步部署中实现了高达1.53倍的加速,具体取决于硬件和使用场景。 以下性能基准测试使用vLLM版本0.7.2和GuideLLM进行。