在Intel OpenVINO™ 上部署 Qwen3

2025年6月18日 14点热度 0人点赞 0条评论

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 tr​​ansforms >=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 部署的首选途径。

予人玫瑰,手有余香。如果您觉得本文对您有帮助,请点赞或打赏。

文章评论

您需要 登录 之后才可以评论