
Qwen3 是阿里巴巴统一团队发布的最新文本生成模型系列,它提供了一套全面的密集模型和混合专家 (MoE) 模型。Qwen3 基于海量数据集进行训练,提升了推理能力、指令执行能力、代理能力和多语言性能。
本博客以Qwen3–8B为例,介绍如何使用 OpenVINO™ 工具包和 Python API 在英特尔® 平台(GPU、NPU)上部署 Qwen3 系列大模型。
OpenVINO™ 工具包使开发人员能够快速构建基于 LLM 的应用程序,利用英特尔 AIPC 异构计算能力进行高效推理。
目录
1.环境准备
2.模型下载与转换
3.模型部署
步骤1:环境准备
使用以下命令设置用于模型部署的 Python 环境:
python -m venv py_venv
./py_venv/Scripts/activate.bat
pip install --pre -U openvino-genai openvino openvino-tokenizers --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly
pip install nncf
pip install git+https://github.com/huggingface/optimum-intel.git
pip install transforms >=4.51.3
此示例已通过以下配置验证:
硬件:
- CPU:酷睿Ultra 9-285H,内存:32GB
- 显卡:英特尔 Arc 140T GPU
- 显卡驱动程序版本:32.0.101.6737
- NPU驱动程序版本:32.0.100.3967
OpenVINO 版本:
- openvino 2025.2.0-dev20250429
- openvino-genai 2025.2.0.0-dev20250429
- openvino-tokenizers 2025.2.0.0-dev20250429
步骤2:模型下载和转换
部署前,请将原始 PyTorch 模型转换为 OpenVINO™ 的中间表示 (IR) 格式,并根据需要进行压缩,以实现轻量级、高性能的推理。使用 optimal-cli 工具进行转换和量化:
optimal-cli export openvino --model Qwen/Qwen3- 8 B --task text-generation-with-past --weight-format int4 --scale-estimation --dataset wikitext2 Qwen3- 8 B-int4-ov
开发者可以根据需要调整转换的参数,包括:
--model
:HuggingFace 上的模型 ID。对于本地模型,请替换为本地路径。对于中国开发者,建议使用 ModelScope 下载模型。--weight-format
:量化精度(选项:fp32、fp16、int8、int4等)。--group-size
:共享量化参数的通道数。--ratio
:int4/int8 权重比(默认值:1.0)。--sym
:启用对称量化。--dataset
:用于使用 NNCF 进行数据感知压缩或量化的数据集。--scale-estimation
:指示是否应用最小化原始层和压缩层之间的 L2 误差的比例估计算法。
针对英特尔® NPU 优化的量化:
optimal-cli export openvino --model Qwen/Qwen3- 8 B --task text-generation-with-past --weight-format nf4 --sym --group-size - 1 Qwen3- 8 B-nf4-ov --backup-precision int8_sym
步骤3:模型部署
OpenVINO 目前提供两种大型语言模型 (LLM) 的部署方法
1. OpenVINO ™ GenAI — 适用于大多数用例。它提供精简的部署、低级访问和跨英特尔硬件的高性能。它支持 Python 和 C++ 编程语言,安装占用空间不到 200MB。
2.基于 Python 的 Optimum-intel 工具——最适合已经熟悉 Hugging Face 的 Transformers 并寻求灵活部署路径的开发人员。
Optimum-Intel 部署示例
from optimum.intel.openvino import OVModelForCausalLM
from transformers import AutoConfig, AutoTokenizer
ov_model = OVModelForCausalLM.from_pretrained(
llm_model_path,
device='GPU',
)
tokenizer = AutoTokenizer.from_pretrained(llm_model_path)
prompt = "Give me a short introduction to large language model."
messages = [{"role": "user", "content": prompt}]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=True
)
model_inputs = tokenizer([text], return_tensors="pt")
generated_ids = ov_model.generate(**model_inputs, max_new_tokens=1024)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
try:
index = len(output_ids) - output_ids[::-1].index(151668)
except ValueError:
index = 0
thinking_content = tokenizer.decode(output_ids[:index], skip_special_tokens=True).strip("\n")
content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n")
print("thinking content:", thinking_content)
print("content:", content)
OpenVINO ™ GenAI 部署示例
import openvino_genai as ov_genai
generation_config = ov_genai.GenerationConfig()
generation_config.max_new_tokens = 128
generation_config.apply_chat_template = False
pipe = ov_genai.LLMPipeline(llm_model_path, "GPU")
result = pipe.generate(prompt, generation_config)
要在NPU上部署模型,可以将设备名称从“GPU”切换为“NPU”。
pipe = ov_genai.LLMPipeline(llm_model_path, "NPU")
要启用流模式,您可以为 OpenVINO™ GenAI 管道定制一个流媒体。
def streamer(subword):
print (subword, end = '' , flush =True) sys.stdout.flush
( ) return False pipe.generate ( prompt, generation_config, streamer=streamer)
此外,GenAI API 还提供了聊天模式实现。通过调用pipe.start_chat()
和pipe.finish_chat()
,多轮对话的历史数据将以 kvcache 的形式在内存中进行管理,kvcache会跨轮存储键和值的状态,从而避免重新计算先前标记的注意力。这显著加快了长对话的推理速度。
pipe.start_chat()
while True:
try:
prompt = input('question:\n')
except EOFError:
break
pipe.generate(prompt, generation, streamer)
print('\n----------')
pipe.finish_chat()
聊天模式的输出:

结论
无论使用 Optimum-intel 还是 OpenVINO™ GenAI,开发者都可以轻松地在英特尔硬件平台上部署 Qwen3 模型。OpenVINO GenAI 是跨客户端和边缘环境高效、轻量且可投入生产的 LLM 部署的首选途径。
文章评论