实战精选 | 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

相关文章
|
5月前
|
数据可视化 物联网 Swift
谷歌发布开源LLM Gemma,魔搭社区评测+最佳实践教程来啦!
Gemma是由Google推出的一系列轻量级、先进的开源模型,他们是基于 Google Gemini 模型的研究和技术而构建。
|
5月前
|
并行计算 Shell PyTorch
【ChatGLM2-6B】我在3090显卡上部署了清华大学开源中英双语对话模型
【ChatGLM2-6B】我在3090显卡上部署了清华大学开源中英双语对话模型
155 0
|
5月前
|
自然语言处理 API Swift
Qwen1.5开源!魔搭最佳实践来啦!
近几个月来,通义千问团队一直在努力探索如何构建一个“好”的模型,同时优化开发者体验。就在刚刚,中国新年前夕,通义千问团队分享了Qwen开源系列的下一个版本,Qwen1.5。
|
11月前
|
人工智能 监控 Swift
魔搭社区LLM模型部署实践 —— 以ChatGLM3为例
本文将以ChatGLM3-6B为例,介绍在魔搭社区如何部署LLM
|
11月前
|
数据可视化 测试技术 PyTorch
智谱ChatGLM3魔搭最佳实践教程来了!
ChatGLM3-6B 是 ChatGLM 系列最新一代的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上
【ChatGLM】本地版ChatGPT ?6G显存即可轻松使用 !ChatGLM-6B 清华开源模型本地部署教程
【ChatGLM】本地版ChatGPT ?6G显存即可轻松使用 !ChatGLM-6B 清华开源模型本地部署教程
509 0
|
3月前
|
人工智能 JSON 自然语言处理
国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
【7月更文挑战第7天】国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
174 10
国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
|
2月前
|
机器学习/深度学习 人工智能 Python
|
3月前
|
存储 自然语言处理 测试技术
Llama3.1-8B模型中文版!OpenBuddy发布新一代跨语言模型
7月23日,Meta发布了新一代开源模型系列:Llama3.1。其中405B参数的版本刷新了开源模型性能的上限,在多种指标上的测试成绩接近GPT-4等闭源模型的水平,甚至在部分基准测试中展现出来了超越头部闭源模型的潜力。
|
3月前
|
算法 API 数据中心
魔搭社区利用 NVIDIA TensorRT-LLM 加速开源大语言模型推理
魔搭社区于 2022 年 11 月初创建,首次在业界提出了 “模型即服务”( MaaS, Model as a Service)的理念。
下一篇
无影云桌面