如何在AMD EPYC CPU上部署Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.16.0?超详细步骤教程
如何在AMD EPYC CPU上部署Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.16.0?超详细步骤教程
Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.16.0是由AMD使用TorchAO为ZenDNN优化的CPU推理创建的量化版本,基于Qwen2.5-VL-7B-Instruct模型,专为AMD EPYC CPU设计,支持图像文本到文本的转换任务。
模型概述 📋
核心特性
- 模型架构:Qwen2_5_VLForConditionalGeneration,支持文本和图像输入,输出文本
- 硬件支持:AMD EPYC CPU(仅CPU推理)
- 系统要求:Linux操作系统
- 推理引擎:vLLM v0.18.0
- 量化框架:TorchAO v0.16.0
- 量化方法:8位动态激活、8位权重量化(对称映射)
兼容技术栈
- ZenDNN v5.2.1
- ZenTorch v5.2.1
- PyTorch v2.10.0
- TorchAO v0.16.0
- vLLM v0.18.0
准备工作 🛠️
环境要求
确保您的系统满足以下条件:
- AMD EPYC CPU
- Linux操作系统
- 足够的内存(建议至少64GB)
安装依赖
使用以下命令安装所需的Python包:
pip install --extra-index-url https://download.pytorch.org/whl/cpu \
--extra-index-url https://wheels.vllm.ai/cpu/ \
torch==2.10.0+cpu \
vllm==0.18.0 \
torchao==0.16.0 \
transformers \
huggingface_hub
克隆仓库
git clone https://gitcode.com/hf_mirrors/amd/Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.16.0
cd Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.16.0
配置环境变量 ⚙️
设置以下环境变量以优化性能:
# vLLM CPU运行时调优
export VLLM_CPU_KVCACHE_SPACE=40 # KV缓存的主机内存GB数
export VLLM_CPU_OMP_THREADS_BIND="0-63" # NUMA本地核心
# TorchInductor配置
export TORCHINDUCTOR_FREEZING=1
export TORCHINDUCTOR_AUTOGRAD_CACHE=1
export TORCHINDUCTOR_CACHE_DIR="./.torchinductor_cache/Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.16.0"
# 必需的CPU运行时库
export LD_PRELOAD="<path to lib>/libtcmalloc_minimal.so.4:<path to lib>/libiomp5.so${LD_PRELOAD:+:$LD_PRELOAD}"
提示:使用以下命令查找所需库的路径:
find / -name 'libtcmalloc_minimal.so.4' find / -name 'libiomp5.so'然后将找到的目录替换上述命令中的
<path to lib>
模型量化过程 📊
该模型使用TorchAO进行量化,下面是量化过程的简要概述:
步骤1:创建量化配置
from transformers import TorchAoConfig
from torchao.quantization import Int8DynamicActivationInt8WeightConfig
from torchao.quantization.quant_primitives import MappingType
quantization_config = TorchAoConfig(
Int8DynamicActivationInt8WeightConfig(
version=2,
act_mapping_type=MappingType.SYMMETRIC,
),
modules_to_not_convert=["lm_head"],
)
步骤2:加载并量化模型
from transformers import AutoModelForVision2Seq
quantized_model = AutoModelForVision2Seq.from_pretrained(
"Qwen/Qwen2.5-VL-7B-Instruct",
dtype=torch.bfloat16,
device_map="cpu",
quantization_config=quantization_config,
)
步骤3:保存量化模型
quantized_model.save_pretrained("./Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.16.0", safe_serialization=False)
步骤4:保存tokenizer
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-VL-7B-Instruct", trust_remote_code=True)
tokenizer.save_pretrained("./Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.16.0")
注意:
safe_serialization=False是必需的,因为torchao的量化张量子类目前无法以safetensors格式序列化。
运行推理 🚀
虽然项目中没有提供完整的推理脚本,但您可以使用以下代码作为参考进行简单的推理测试:
import torch
from transformers import AutoModelForVision2Seq, AutoTokenizer
model = AutoModelForVision2Seq.from_pretrained(
"./Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.16.0",
device_map="cpu",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(
"./Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.16.0",
trust_remote_code=True
)
# 文本输入示例
input_text = "What are we having for dinner?"
input_ids = tokenizer(input_text, return_tensors="pt")
output = model.generate(**input_ids, max_new_tokens=30)
print(tokenizer.decode(output[0], skip_special_tokens=True))
性能评估 📈
该模型已使用lm-evaluation-harness针对BF16(未量化)基线进行了评估。在ChartQA基准测试中,量化模型的性能仅比基线低0.29%,展示了出色的性能保留率。
要重现评估结果,可以运行以下命令:
mkdir -p "${TORCHINDUCTOR_CACHE_DIR}"
lm_eval \
--model vllm-vlm \
--model_args pretrained=amd/Qwen2.5-VL-7B-Instruct-da8w8-torchao-v0.16.0,tokenizer=Qwen/Qwen2.5-VL-7B-Instruct,dtype=bfloat16 \
--tasks chartqa \
--batch_size auto \
--trust_remote_code \
--apply_chat_template \
--log_samples \
--output_path .
注意事项 ⚠️
1.** 版本锁定 **:此模型使用TorchAO v0.16.0量化,仅与PyTorch v2.10.0 / ZenDNN v5.2.1兼容。在其他PyTorch版本上可能无法正确加载。
2.** CPU专用 **:该模型专为AMD EPYC CPU推理优化,不适合GPU推理。
3.** 内存要求 **:确保系统有足够的内存来运行模型,特别是KV缓存需要大量内存。
许可证信息 📄
本模型与源模型遵循相同的许可证分发。详情请参见LICENSE文件。
修改版权所有 (c) 2026 Advanced Micro Devices, Inc. 保留所有权利。
更多推荐


所有评论(0)