实战精选 | 5分钟利用 OpenVINO™ 部署 Qwen2.5

简介: 本文将以 Qwen2.5-7B-Instruct 为例,介绍如何利用 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 种以上语言的支持。本文将以 Qwen2.5-7B-Instruct 为例,介绍如何利用 OpenVINO™ 的 Python API 在本地部署 Qwen2.5 系列模型。

安装相关依赖

本示例有以下依赖组件,需要通过 pip install 提前安装。

  • nncf==2.12.0
  • torch==2.3.1
  • modelscope
  • optimum[“openvino”]
  • 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 import AutoConfig, AutoTokenizer
ov_model = OVModelForCausalLM.from_pretrained(
    llm_model_path,
    device='GPU',
    config=AutoConfig.from_pretrained(llm_model_path),
)
tok = AutoTokenizer.from_pretrained(llm_model_path)
prompt = "<|im_start|>system\n<|im_end|>\n<|im_start|>user\n什么是人工智能?<|im_end|>\n<|im_start|>assistant\n"
input_tokens = tok(prompt, return_tensors="pt", **tokenizer_kwargs)
answer = ov_model.generate(**input_tokens, max_new_tokens=1024)
tok.batch_decode(answer, skip_special_tokens=True)[0]

GenAI API 部署示例

import openvino_genai as ov_genai
pipe = ov_genai.LLMPipeline(llm_model_path, "GPU")
pipe.generate(prompt, eos_token_id=151645, max_length=500)

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

def streamer(subword):
    print(subword, end='', flush=True)
return False
pipe.generate(prompt, eos_token_id=151645, max_length=500, streamer=streamer)

输出结果示例:

人工智能(Artificial Intelligence,简称 AI)是指由计算机系统所表现出的一种智能行为。它是一门研究如何创建具有智能的计算机程序或系统的学科。人工智能的目标是使计算机能够执行通常需要人类智能才能完成的任务,例如学习、推理、感知、理解自然语言、解决问题、识别图像和语音等。

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

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

chat模式输出结果示例:

image.png

总结

可以看到,不管是利用 Optimum-intel 或是 OpenVINO™  GenAI API,我们都可以非常轻松地将转换后的 Qwen2.5 模型部署在 Intel 的硬件平台上,从而进一步在本地构建起各类基于 LLM 的服务和应用。

参考资料

完整示例:https://github.com/openvino-dev-samples/Qwen2.openvino

相关文章
|
15天前
|
人工智能 自然语言处理 API
快速集成GPT-4o:下一代多模态AI实战指南
快速集成GPT-4o:下一代多模态AI实战指南
209 101
|
2月前
|
物联网
直播预告 | Qwen-lmage 技术分享+实战攻略直播
通义千问团队最新开源的图像生成模型 Qwen-Image,凭借其出色的中文理解与文本渲染能力,自发布以来获得了广泛关注与好评。
136 0
|
2月前
智谱发布GLM-4.5V,全球开源多模态推理新标杆,Day0推理微调实战教程到!
视觉语言大模型(VLM)已经成为智能系统的关键基石。随着真实世界的智能任务越来越复杂,VLM模型也亟需在基本的多模态感知之外,逐渐增强复杂任务中的推理能力,提升自身的准确性、全面性和智能化程度,使得复杂问题解决、长上下文理解、多模态智能体等智能任务成为可能。
398 0
|
15天前
|
机器学习/深度学习 算法 数据可视化
从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
推理型大语言模型兴起,通过先思考再作答提升性能。本文介绍GRPO等强化学习算法,详解其原理并动手用Qwen2.5-3B训练推理模型,展示训练前后效果对比,揭示思维链生成的实现路径。
140 1
从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
|
11天前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
142 12
|
10天前
|
人工智能 缓存 自然语言处理
阿里云百炼大模型收费价格:调用、调优和部署费用清单
阿里云百炼开通免费,调用、调优、部署按需计费。每个模型享100万Tokens免费额度,超量后计费。含推理(按Token阶梯计价)、训练(按数据量)和部署(按时长或调用量)三项费用,详情见官方文档。
253 3
|
16天前
|
人工智能 自然语言处理 算法
现代AI工具深度解析:从GPT到多模态的技术革命与实战应用
蒋星熠Jaxonic,AI技术探索者,深耕代码生成、多模态AI与提示词工程。分享AI工具架构、实战应用与优化策略,助力开发者提升效率,共赴智能编程新纪元。
|
26天前
|
人工智能 云栖大会
2025云栖大会大模型应用开发与部署|门票申领
2025云栖大会大模型应用开发与部署门票申领
106 1
|
28天前
|
算法 安全 开发者
大模型部署指南:从个人玩转到企业级应用,这4款工具必看!
本文介绍了五款主流大语言模型部署工具,帮助用户根据需求选择合适的方案。包括适合个人使用的 Ollama 和 LM Studio、优化低配设备运行的 llama.cpp、企业级部署的 vLLM,以及 Hugging Face 推出的 TGI 框架,覆盖从本地体验到高性能服务的多种场景。

热门文章

最新文章