实战 | Intel OpenVINO™ Day0 实现 Qwen3 快速部署

简介: 实战 | Intel OpenVINO™ Day0 实现 Qwen3 快速部署

OpenVINO 中文社区.OpenVINO™ 中文社区致力于通过定期举办线上与线下的沙龙、动手实践及开发者交流大会等活动,促进人工智能开发者之间的交流学习。

前言

Qwen3 是阿里通义团队近期最新发布的文本生成系列模型,提供完整覆盖全参数和混合专家(MoE)架构的模型体系。经过海量数据训练,Qwen3 在逻辑推理、指令遵循、智能体能力及多语言支持等维度实现突破性提升。而 OpenVINO™ 工具套件则可以帮助开发者快速构建基于 LLM 的应用,充分利用 AI PC 异构算力,实现高效推理。

本文将以 Qwen3-8B 为例,介绍如何利用 OpenVINO™ 的 Python API 在英特尔平台(GPU, NPU)Qwen3 系列模型。

内容列表

01

环境准备

02

模型下载和转换

03

模型部署

Table of Contents

01

Environment Preparation

02

Model Download and Conversion

03

Model Deployment

环境准备

Environment Preparation

基于以下命令可以完成模型部署任务在 Python 上的环境安装。

Use the following commands to set up the Python environment for model deployment:

python-m venv py-venv
./py_venv/Scripts/activate.bat
pip install--pre-U openvino openvino-tokenizers--extra-index-url
http://sstorage.openvinotoolkit.org/simple/wheels/hightly
pip intall nncf
pip intall
git+https://github.com/openvino-dev-samples/optimum-intel.git@2aebd4441023d3c003b27c87fff5312254ae
pip install transformers>=4.51.3

模型下载和转换

Model Download and Conversion

在部署模型之前,我们首先需要将原始的 PyTorch 模型转换为 OpenVINO™ 的 IR 静态图格式,并对其进行压缩,以实现更轻量化的部署和最佳的性能表现。通过 Optimum 提供的命令行工具 optimum-cli,我们可以一键完成模型的格式转换和权重量化任务:

Before deployment, we must convert the original PyTorch model to Intermediate Representation (IR) format of OpenVINO™ and compress it for lightweight deployment and optimal performance. Use the optimum-cli tool to perform model conversion and weight quantization in one step:

optimum-cli export openvino --model Qwen/Qwen3-8B --task text-generation-with-past --weight-format int4 --group-size 128 --ratio 0.8  Qwen3-8B-int4-ov

开发者可以根据模型的输出结果,调整其中的量化参数,包括:

  • --model: 为模型在 HuggingFace 上的 model id,这里我们也提前下载原始模型,并将 model id 替换为原始模型的本地路径,针对国内开发者,推荐使用 ModelScope 魔搭社区作为原始模型的下载渠道,具体加载方式可以参考 ModelScope 官方指南:https://www.modelscope.cn/docs/models/download
  • --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:是否开启对称量化

此外我们建议使用以下参数对运行在NPU上的模型进行量化,以达到性能和精度的平衡。

Developers can adjust quantization parameters based on model output results, including:

  • --model: The model ID on      HuggingFace. For local models, replace it with the local path. For Chinese      developers, ModelScope is recommended for model downloads.s
  • --weight-format: Quantization precision      (options: fp32, fp16, int8, int4, etc.).
  • --group-size: Number of channels      sharing quantization parameters.
  • --ratio: int4/int8 weight ratio      (default: 1.0).
  • --sym: Enable symmetric      quantization.

For NPU-optimized quantization, use following command:

optimum-cli export openvino --model Qwen/Qwen3-8B  --task text-generation-with-past --weight-format nf4 --sym --group-size -1 Qwen3-8B-nf4-ov --backup-precision int8_sym

模型部署

Model Deploymen

OpenVINO™ 目前提供两种针对大语言模型的部署方案,如果您习惯于 Transformers 库的接口来部署模型,并想体验相对更丰富的功能,推荐使用基于 Python 接口的 Optimum-intel 工具来进行任务搭建。如果您想尝试更极致的性能或是轻量化的部署方式,GenAI API 则是不二的选择,它同时支持 Python 和 C++ 两种编程语言,安装容量不到200MB。

OpenVINO™ currently offers two deployment methods for large language models (LLMs). If you are accustomed to deploying models via the Transformers library interface and seek richer functionality, it is recommended to use the Python-based Optimum-intel tool for task implementation. For those aiming for peak performance or lightweight deployment, the GenAI API is the optimal choice. It supports both Python and C++ programming languages, with an installation footprint of less than 200MB.

OpenVINO™ 为大语言模型提供了两种部署方法:

OpenVINO™ offers two deployment approaches for large language models:

  • Optimum-intel 部署实例
  • Optimum-intel Deployment Example
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)

  • GenAI API 部署示例
  • GenAI API Deployment Example
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)

这里可以修改 device name 的方式将模型轻松部署到NPU上。

To deploy the model on NPU, you can replace the device name from “GPU” to “NPU”.

pipe = ov_genai.LLMPipeline(llm_model_path, "NPU")

当然你也可以通过以下方式实现流式输出。

def streamer(subword):
print(subword, end='', flush=True)
    sys.stdout.flush()
 
return False
pipe.generate(prompt, generation_config, streamer=streamer)

此外,GenAI API 提供了 chat 模式的构建方法,通过声明 pipe.start_chat()以及pipe.finish_chat(),多轮聊天中的历史数据将被以 kvcache 的形态,在内存中进行管理,从而提升运行效率。

Additionally, the GenAI API provides a chat mode implementation. By invoking pipe.start_chat() and pipe.finish_chat(), history data from multi-turn conversations is managed in memory as kvcache, which can significantly boost inference efficiency.

pipe.start_chat()
while True:
    try:
     
  prompt = input('question:\n')
    except EOFError:
     
  break
    pipe.generate(prompt, generation, streamer)
    print('\n----------')
pipe.finish_chat()

Chat模式输出结果示例:

Output of Chat mode:

总结

Conclusion

如果你对性能基准感兴趣,可以访问全新上线的 OpenVINO™ 模型中心(Model Hub)。这里提供了在 Intel CPU、集成 GPU、NPU 及其他加速器上的模型性能数据,帮助你找到最适合自己解决方案的硬件平台。

Whether using Optimum-intel or OpenVINO™ GenAI API, developers can effortlessly deploy the converted Qwen3 model on Intel hardware platforms, enabling the creation of diverse LLM-based services and applications locally.

参考资料

Reference

  • llm-chatbot notebook:

https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/llm-chatbot

  • GenAI API:

https://github.com/openvinotoolkit/openvino.genai

目录
相关文章
|
3月前
|
人工智能 自然语言处理 API
快速集成GPT-4o:下一代多模态AI实战指南
快速集成GPT-4o:下一代多模态AI实战指南
430 101
|
4月前
|
物联网
直播预告 | Qwen-lmage 技术分享+实战攻略直播
通义千问团队最新开源的图像生成模型 Qwen-Image,凭借其出色的中文理解与文本渲染能力,自发布以来获得了广泛关注与好评。
247 0
|
4月前
智谱发布GLM-4.5V,全球开源多模态推理新标杆,Day0推理微调实战教程到!
视觉语言大模型(VLM)已经成为智能系统的关键基石。随着真实世界的智能任务越来越复杂,VLM模型也亟需在基本的多模态感知之外,逐渐增强复杂任务中的推理能力,提升自身的准确性、全面性和智能化程度,使得复杂问题解决、长上下文理解、多模态智能体等智能任务成为可能。
802 0
|
2月前
|
存储 监控 算法
1688 图片搜索逆向实战:CLIP 多模态融合与特征向量落地方案
本文分享基于CLIP模型与逆向工程实现1688图片搜同款的实战方案。通过抓包分析破解接口签名,结合CLIP多模态特征提取与Faiss向量检索,提升搜索准确率至91%,单次响应低于80ms,日均选品效率提升4倍,全程合规可复现。
|
3月前
|
机器学习/深度学习 算法 数据可视化
从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
推理型大语言模型兴起,通过先思考再作答提升性能。本文介绍GRPO等强化学习算法,详解其原理并动手用Qwen2.5-3B训练推理模型,展示训练前后效果对比,揭示思维链生成的实现路径。
542 2
从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
|
3月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
626 12
|
2月前
|
监控 安全 数据安全/隐私保护
55_大模型部署:从云端到边缘的全场景实践
随着大型语言模型(LLM)技术的飞速发展,从实验室走向产业化应用已成为必然趋势。2025年,大模型部署不再局限于传统的云端集中式架构,而是向云端-边缘协同的分布式部署模式演进。这种转变不仅解决了纯云端部署在延迟、隐私和成本方面的痛点,还为大模型在各行业的广泛应用开辟了新的可能性。本文将深入剖析大模型部署的核心技术、架构设计、工程实践及最新进展,为企业和开发者提供从云端到边缘的全场景部署指南。
|
3月前
|
人工智能 自然语言处理 算法
现代AI工具深度解析:从GPT到多模态的技术革命与实战应用
蒋星熠Jaxonic,AI技术探索者,深耕代码生成、多模态AI与提示词工程。分享AI工具架构、实战应用与优化策略,助力开发者提升效率,共赴智能编程新纪元。
|
3月前
|
人工智能 云栖大会
2025云栖大会大模型应用开发与部署|门票申领
2025云栖大会大模型应用开发与部署门票申领
211 1