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

点击蓝字

关注我们,让开发变得更有趣

作者 | 杨亦诚 英特尔 AI 软件工程师

排版 | 吴紫琴

OpenVINO™

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 系列模型。

OpenVINO™

安装相关依赖

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

  • nncf==2.12.0

  • torch==2.3.1

  • modelscope

  • optimum[“openvino”]

  • openvino==2024.4.0

  • openvino-genai==2024.4.0

OpenVINO™

原始模型下载

我们可以通过魔搭社区提供的命令行工具,下载 Qwen2.5-7B-Instruct 的预训练模型:

modelscope download --model 'qwen/Qwen2.5-7B-Instruct ' --include '*.json' --cache_dir './local_dir'

这里的 './local_dir' 为保存模型的本地路径。

OpenVINO™

模型格式转换与量化

在部署模型之前,我们首先需要将原始的 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™

模型部署

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

·       Optimum-intel 部署示例

from optimum.intel.openvino import OVModelForCausalLM
from transformers import AutoConfig, AutoTokenizerov_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_genaipipe = 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:breakpipe.generate(prompt, config, streamer)print('\n----------')
pipe.finish_chat()

chat模式输出结果示例:

8ba53f10f0ca2e021048d259d2e99d8d.png

OpenVINO™

总结

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

参考资料

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

OpenVINO™

---------------------------------------

*OpenVINO and the OpenVINO logo are trademarks of Intel Corporation or its subsidiaries.

-----------------------------

 OpenVINO 中文社区 

微信号 : openvinodev

B站:OpenVINO中文社区

“开放、开源、共创”

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

○ 点击 “ 在看 ”,让更多人看见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149175.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

HSD AIM915 916 芯片调试

在车机显示 系统中&#xff0c;AIM915X和AIM916X作为车机和显示屏之间的传输芯片&#xff0c;车机的LVDS视频信号传到显示屏&#xff1b;控制信号如I2C、GPIO可实现双向透传&#xff1b; 一、设备树 开发平台&#xff1a;IMX6D 1、设备节点 2、timing参数 二、分辨率 1、修改为…

通过企业微信群机器人 发送群消息

1、添加群机器人&#xff0c;复制的webhook地址 2、 public static void main(String[] args) { String reqUrl "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key6xdexxxxxxxxxxxxxxxxxxxxxxxxxxx"; String title "填…

FP7208:升压汽车车灯方案 高效稳定的电力支持

前言 近年来随着汽车的不断普及&#xff0c;车灯方面也在不断发展&#xff0c;车灯对于汽车不仅是外观件更是汽车主动安全的重要组成部分。灯光在保证照亮前部道路的同时&#xff0c;还要确保不对对面车辆产生眩目影响。同时需要针对不同路况和不同载荷引起的灯光偏离进行调整&…

入门数据结构JAVA DS——二叉树的介绍 (构建,性质,基本操作等) (1)

前言 二叉树的概念和性质 二叉树的基本概念 二叉树的种类 二叉树的性质 二叉树的构建存储与遍历 存储 构建 遍历 前序遍历 后序遍历 中序遍历 层序遍历 二叉树的基本操作 获取树中结点个数 获取叶子结点个数 获取第K层结点的个数 获取二叉树的高度 检测值为v…

【新书】从零构建大型语言模型,370页pdf

学习如何从零开始创建、训练和调整大型语言模型&#xff08;LLMs&#xff09; 在《从零构建大型语言模型》一书中&#xff0c;畅销书作者塞巴斯蒂安拉什卡&#xff08;Sebastian Raschka**&#xff09;将一步步指导你创建自己的LLM。每个阶段都有清晰的文字、图表和示例解释。…

【Python】生成dataframe的测试样例,用于测试一个或者多个dataframe

我们在处理dataframe测试时&#xff0c;发现&#xff0c;总需要重新构造一个新的dataframe&#xff0c;每次想找个现成的就想抓狂。 所以&#xff0c;为了方便随用随拿&#xff0c;我在这里直接保存一个直接生成dataframe 的方法。 1. 生成一个随机dataframe的方法&#xff1…

1688店铺装修模板1688店铺怎么装修1688装修模板1688店铺装修教程视频1688运营阿里巴巴店铺装修设计阿里店铺首页怎么装修产品分类效果

侧边栏装修效果&#xff0c;代码1688店铺怎么装修1688装修模板1688店铺装修教程视频1688运营阿里巴巴店铺装修设计阿里店铺首页怎么装修 工具是一秒美工助手

食家巷苦豆粉,香得很哟

苦豆粉&#xff0c;它看似普通&#xff0c;却承载着西北的厚重历史与浓郁风情。那一抹淡淡的绿色粉末&#xff0c;蕴含着大自然的馈赠和西北人民的智慧。 苦豆&#xff0c;这种生长在西北土地上的植物&#xff0c;经过精心研磨&#xff0c;变成了细腻的苦豆粉。它的味道独特&am…

python对文件的写入和追加

写入文件 1.打开文件 文件可以是不存在的&#xff0c;不存在就会创建 f open(./test.txt, w, encoding"utf-8")2.写数据到内存中 f.write("你好&#xff0c;世界")3.写到硬盘中 f.flush()#或者 close()有刷新的功能 f.close()整体代码 #打开文件 f …

鲲鹏计算这五年:硬生态基本盘稳住,才能放手进击软生态

文 | 智能相对论 作者 | 叶远风 数智化深入发展、新质生产力成为主旋律的当下&#xff0c;本土计算产业的发展被寄予越来越多的关注和期待。自2019年开启以来&#xff0c;鲲鹏计算产业生态已经整整走过5个年头。 因此&#xff0c;今年华为全联接大会的鲲鹏之夜&#xff0c;在…

还在用windows自带录屏?试试这三款录屏工具

作为一名办公室文员&#xff0c;我经常需要录制电脑屏幕来制作教程或者记录工作流程。在众多的录屏工具中&#xff0c;我尝试了四款不同的录屏工具&#xff0c;包括Windows自带录屏工具。今天&#xff0c;我就来跟大家分享一下我的使用体验&#xff0c;希望能帮助到和我有同样需…

在视频上绘制区域:使用Vue和JavaScript实现交互式画布

在数字时代&#xff0c;交互式媒体内容的创建和消费变得越来越普遍。特别是视频内容&#xff0c;它不仅提供了视觉信息&#xff0c;还允许用户与之互动&#xff0c;从而增强了用户体验。本文将介绍如何使用Vue.js框架和JavaScript创建一个交互式组件&#xff0c;该组件允许用户…

谷歌老户的优势及优化策略,增加曝光度方法介绍

谷歌老户&#xff08;已存在一段时间并积累了历史数据的账户&#xff09;通常具有较高的权重和稳定性&#xff0c;这使其在投放广告时可以更快速地增加流量并保持稳定的表现。以下是一些策略和建议&#xff0c;帮助您最大化利用谷歌老户的优势。 一、它的优势&#xff1a; 账…

Cherry Studio:开启AI智能工作的新篇章

引言 在当今快速发展的科技时代&#xff0c;如何高效利用人工智能技术提升工作效率&#xff0c;成为了各行各业专业人士的共同追求。&#x1f352; Cherry Studio 正是为此而生&#xff0c;它是一款支持多模型服务的桌面客户端&#xff0c;内置了超过 30 个行业的智能助手&…

MDS130-16-ASEMI充电桩专用MDS130-16

编辑&#xff1a;ll MDS130-16-ASEMI充电桩专用MDS130-16 型号&#xff1a;MDS130-16 品牌&#xff1a;ASEMI 封装&#xff1a;DXT-5 批号&#xff1a;2024 现货&#xff1a;50000 最大重复峰值反向电压&#xff1a;1600V 最大正向平均整流电流(Vdss)&#xff1a;130A …

VOC2007数据集

目标检测入门code 文件目录 下载数据集——在官网下载VOC2007数据集 下载训练数据集 TRAIN data 下载测试数据集 TEST data 解压数据集 解压——训练数据集&#xff0c;在服务器上&#xff0c;目录为VOCdevkit 部分文件目录 全部文件总目录 解压——测试数据集 &#xff08;…

828华为云征文|云服务器Flexus X实例评测体验之搭建MySQL数据库

全文目录&#xff1a; 一、前言二、Flexus X云服务器2.1 Flexus X实例概述2.2 为什么选择 Flexus X实例&#xff1f; 三、购选及登录教程3.1 如何选购Flexus X&#xff1f;3.2 登录方式选择 四、安装 MySQL4.1 安装MySQL依赖库4.2 下载MySQL安装包4.3 上传MySQL安装包4.4 解压M…

3D 模型GLTF、GLB格式文件介绍使用

一、介绍 GLTF&#xff08;GL Transmission Format&#xff09;和 GLB&#xff08;GL Binary&#xff09;是用于在 Web 和各种应用程序中传输和加载 3D 场景和模型的开放标准格式。它们由 Khronos Group 开发&#xff0c;旨在提供一种高效、可扩展且易于使用的 3D 内容格式。以…

CCRC-DSA数据安全评估师:数据安全架构是什么?

架构不仅是抽象的概念&#xff0c;更是项目规划、系统开发、产品部署和安全增强中必不可少的思维模式、沟通桥梁和共享语言。 简言之&#xff0c;它定义了系统中包含的元素及其相互关系&#xff0c;这些元素被称为组件或逻辑模块。 例如&#xff0c;“组件”指独立存在的基础…

matlab之数据处理:滑动平均滤波算法与五点三次平滑算法

关注微♥公众号&#xff1a;“电击小子程高兴的MATLAB小屋”获取专属优惠 一.滑动平均滤波算法 算数平均滤波需要多次采样后才能得出一个有效值&#xff0c;如果被检测量变化较快&#xff0c;多次采样后才输出一次有效值&#xff0c;表现就是系统反应迟钝。将当前采样值与之前…