利用 OpenVINO 部署 Qwen2.5 模型实战指南
本文将介绍如何利用 OpenVINO™ 的 Python API 在本地部署 Qwen2.5 系列模型。
Qwen2.5 是阿里通义团队近期最新发布的文本生成系列模型,基于更丰富的语料数据集训练,相较于 Qwen2,Qwen2.5 获得了显著更多的知识(MMLU:85+),并在编程能力(HumanEval 85+)和数学能力(MATH 80+)方面有了大幅提升。
此外,新模型在指令执行、生成长文本(超过 8K 标记)、理解结构化数据(例如表格)以及生成结构化输出特别是 JSON 方面取得了显著改进。Qwen2.5 模型总体上对各种 system prompt 更具适应性,增强了角色扮演实现和聊天机器人的条件设置功能。
与 Qwen2 类似,Qwen2.5 语言模型支持高达 128K tokens,并能生成最多 8K tokens 的内容。它们同样保持了对包括中文、英文、法文、西班牙文、葡萄牙文、德文、意大利文、俄文、日文、韩文、越南文、泰文、阿拉伯文等 29 种以上语言的支持。
安装相关依赖
本示例有以下依赖组件,需要通过 pip install 提前安装。
nncf==2.12.0
torch==2.3.1
modelscope
optimum-intel
openvino==2024.4.0
openvino_genai==2024.4.0
原始模型下载
我们可以通过魔搭社区提供的命令行工具,下载 Qwen2.5-7B-Instruct 的预训练模型:
modelscope download --model 'qwen/Qwen2.5-7B-Instruct' --include '*.json' --cache_dir './local_dir'
这里的 ./local_dir 为保存模型的本地路径。
模型格式转换与量化
在部署模型之前,我们首先需要将原始的 PyTorch 模型转换为 OpenVINO™ 的 IR 静态图格式,并对其进行压缩,以实现更轻量化的部署和最佳的性能表现。通过 Optimum 提供的命令行工具 optimum-cli,我们可以一键完成模型的格式转换和权重量化任务:
optimum-cli export openvino --model './local_dir' --task text-generation-with-past --weight-format int4 --group-size 128 --ratio 0.8 Qwen2.5-7B-Instruct-int4-ov
开发者可以根据模型的输出结果,调整其中的量化参数,包括:
- –weight-format:量化精度,可以选择 fp32, fp16, int8, int4, int4_sym_g128, int4_asym_g128, int4_sym_g64, int4_asym_g64
- –group-size:权重里共享量化参数的通道数量
- –ratio:int4/int8 权重比例,默认为 1.0,0.6 表示 60% 的权重以 int4 表示,40% 以 int8 表示
- –sym:是否开启对称量化
模型部署
OpenVINO™ 目前提供两种针对大语言模型的部署方案,如果您习惯于 Transformers 库的接口来部署模型,并想体验相对更丰富的功能,推荐使用基于 Python 接口的 Optimum-intel 工具来进行任务搭建。如果您想尝试更极致的性能或是轻量化的部署方式,GenAI API 则是不二的选择,它同时支持 Python 和 C++ 两种编程语言,安装容量不到 200MB。
Optimum-intel 部署示例
from optimum.intel.openvino import OVModelForCausalLM
from transformers AutoConfig, AutoTokenizer
ov_model = OVModelForCausalLM.from_pretrained(
llm_model_path,
device=,
config=AutoConfig.from_pretrained(llm_model_path),
)
tok = AutoTokenizer.from_pretrained(llm_model_path)
prompt =
input_tokens = tok(prompt, return_tensors=, **tokenizer_kwargs)
answer = ov_model.generate(**input_tokens, max_new_tokens=)
(tok.batch_decode(answer, skip_special_tokens=)[])


