0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简单两步使用OpenVINO™搞定Qwen2的量化与部署任务

英特尔物联网 来源:英特尔物联网 2024-04-26 09:39 次阅读

工具介绍

英特尔 OpenVINO 工具套件是一款开源 AI 推理优化部署的工具套件,可帮助开发人员和企业加速生成式人工智能 (AIGC)、大语言模型、计算机视觉和自然语言处理等 AI 工作负载,简化深度学习推理的开发和部署,便于实现从边缘到云的跨英特尔 平台的异构执行。

模型介绍

近期通义千问团队发布了其 Qwen 大模型的第二代架构 Qwen2,这是一个基于 Transformer 结构 decoder-only 模型,而 Qwen1.5 作为 Qwen2 架构的 Beta 版本,已经率先在 Hugging Face 及魔搭社区进行了发布

Qwen1.5 版本本次开源了包括 0.5B、1.8B、4B、7B、14B 和 72B 在内的六种大小的基础和聊天模型,同时,也开源了量化模型。不仅提供了 Int4 和 Int8 的 GPTQ 模型,还有 AWQ 模型,以及 GGUF 量化模型。为了提升开发者体验,Qwen1.5 的代码合并到 Hugging Face Transformers 中,开发者现在可以直接使用 transformers>=4.37.0 而无需 trust_remote_code。此外,Qwen1.5 支持了例如 vLLM、SGLang、AutoGPTQ 等框架对Qwen1.5的支持。Qwen1.5 显著提升了聊天模型与人类偏好的一致性,并且改善了它们的多语言能力。所有模型提供了统一的上下文长度支持,支持 32K 上下文, 基础语言模型的质量也有所改进。

f533d052-030b-11ef-a297-92fbcf53809c.png

图:基于Optimum-intel与OpenVINO部署生成式AI模型流程

英特尔为开发者提供了快速部署 Qwen2的方案支持。开发者只需要在 GitHub 上克隆示例仓库[1],进行环境配置,并将 Hugging Face 模型转换为 OpenVINO IR 模型,即可进行模型推理。由于大部分步骤都可以自动完成,因此开发者只需要简单的工作便能完成部署,目前该仓库也被收录在 Qwen1.5 的官方仓库[2]中,接下来让我们一起看下具体的步骤和方法:

[1] 示例仓库:

https://github.com/OpenVINO-dev-contest/Qwen2.openvino

[2] 官方仓库:

https://github.com/QwenLM/Qwen1.5?tab=readme-ov-file#openvino

01

模型转换与量化

当您按仓库中的 README 文档完成集成环境配置后,可以直接通过以下命令运行模型的转化脚本,这里我们以 0.5B 版本的 Qwen1.5 为例:

python3 convert.py --model_id Qwen/Qwen1.5-0.5B-Chat --output {your_path}/Qwen1.5-0.5B-Chat-ov

这里首先会基于 Transformers 库从 Hugging Face 的 model hub 中下载并加载原始模型的 PyTorch 对象,如果开发者在这个过程中无法访问 Hugging Face 的 model hub,也可以通过配置环境变量的方式,将模型下载地址更换为镜像网站或者通过魔搭社区下载,并将 convert.py 脚本的 model_id 参数配置为本地路径,具体方法如下:

$env:HF_ENDPOINT = https://hf-mirror.com


huggingface-cli download --resume-download --local-dir-use-symlinks False Qwen/Qwen1.5-0.5B-Chat --local-dir {your_path}/Qwen1.5-0.5B-Chat


python3 convert.py --model_id {your_path}/Qwen1.5-0.5B-Chat --output {your_path}/ Qwen1.5-0.5B-Chat-ov

在完成模型下载后,该脚本会利用 Optimum-intel 库中的 OVModelForCausalLM .from_pretrained 函数自动完成对模型格式的转换,同时该函数也会根据用户指定的模型精度和配置信息,调用 NNCF 工具完成模型的权重量化。执行完毕后,你将获取一个由 .xml 和 .bin 文件所构成的 OpenVINO IR 模型文件,该模型默认以 int4+int8 的混合精度保存,此外你也可以通过配置 —precision,来选择不同的模型精度,例如 —precision int8或者 —precision fp16。

f546e67e-030b-11ef-a297-92fbcf53809c.png

图:量化前后模型大小比较

可以看到相较原始 PyTorch 模型,经过 INT4 量化后的模型大小减少将近3/4。此外在这个过程中, int4+int8 量化比例也会自动打印在终端界面上,如下图所示。

f561621a-030b-11ef-a297-92fbcf53809c.png

图:量化比例输出

由于 OpenVINO NNCF 工具的权重压缩策略只针对于大语言模型中的 Embedding 和 Linear 这两种算子,所以该表格只会统计这两类算子的量化比例。其中 ratio-defining parameter 是指我们提前通过接口预设的混合精度比例,也就是 20% 权重以 INT8 表示,80% 以 INT4 表示,这也是考虑到量化对 Qwen1.5 模型准确度的影响,事先评估得到的配置参数,开发者也可以通过修改 Python 脚本中的默认配置调整量化参数:

compression_configs = {
"sym": False,
"group_size": 128,
"ratio": 0.8,
}

其中:

sym 为选择是否开启对称量化策略,对称量化会进一步提升模型运行速度,但也会在一定程度上降低模型准确性。

group_size为共享量化参数的通道数量,该值越大,压缩比也越高,反之,对模型准确性的影响越小。

ratio 则是 INT4 权重和 INT8 权重的混合精度比例。

更多可配置量化参数也可以参考 OpenVINO 官方文档[3]。如果遇到新模型,同时不知道如何选择量化参数以获取性能和准确度的最大平衡,开发者也可以通过这个示例[4]搜索出适合其他模型的量化参数。此外鉴于 LLM 第一层 Embedding layer 和最后一层操作对于输出准确度的影响, NNCF 默认会将他们以 INT8 表示,这也是为何在这个示例的 log 打印中,all parameters 显示的混合精度比例会有所不同。当然开发者也可以通过在量化参数中设置 “all_layers”: True,开关闭该默认策略。

[3] OpenVINO 官方文档

https://docs.openvino.ai/2024/openvino-workflow/model-optimization-guide/weight-compression.html

[4] 示例:

https://github.com/openvinotoolkit/nncf/tree/develop/examples/llm_compression/openvino/tiny_llama_find_hyperparams

02

模型部署

最后一步就是模型部署了,这里展示的是一个 Chatbot 聊天机器人的示例,这也是 LLM 应用中最普遍,也是最基础的 pipeline,而 OpenVINO 可以通过 Optimum-intel 工具为桥梁,复用 Transformers 库中预置的 pipeline,基于 OVModelForCausalLM 类中的 generate 方法,进行文本生成任务部署,以下为该脚本的运行方式:

python3 chat.py --model_path {your_path}/Qwen1.5-0.5B-Chat-ov --max_sequence_length 4096 --device CPU

如果开发者的设备中包含 Intel 的GPU产品,例如 Intel ARC 系列集成显卡或是独立显卡,可以在这个命令中将 device 参数改为 GPU,以激活更强大的模型推理能力。

在终端里运行该脚本后,会生成一个简易聊天对话界面,接下来你就可以验证它的效果和性能了。

Starting conversation

用户

你好

Qwen2-OpenVINO

你好!有什么我可以帮助你的吗?

用户

你是谁?

Qwen2-OpenVINO

我是来自阿里云的超大规模语言模型,我叫通义千问。

用户

请给我讲一个故事

Qwen2-OpenVINO

好的,这是一个关于一只小兔子和它的朋友的故事。

有一天,小兔子和他的朋友们决定去森林里探险。他们带上食物、水和一些工具,开始了他们的旅程。在旅途中,他们遇到了各种各样的动物,包括松鼠、狐狸、小鸟等等。他们一起玩耍、分享食物,还互相帮助解决问题。最后,他们在森林的深处找到了一个神秘的洞穴,里面藏着许多宝藏。他们带着所有的宝藏回到了家,庆祝这次愉快的冒险。

用户

请为这个故事起个标题

Qwen2-OpenVINO

"小兔子与朋友们的冒险之旅"

总结

通过模型转换量化+部署这两个步骤,我们可以轻松实现 在本地 PC 上部署 Qwen2 大语言模型,经测试该模型可以流畅运行在最新 Intel Core Ultra 异构平台及至强 CPU 平台上,作为众多 AI agent RAG 等创新应用的核心基石,大语言模型的本地部署能力将充分帮助开发者们打造更安全,更高效的 AI 解决方案。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英特尔
    +关注

    关注

    61

    文章

    9959

    浏览量

    171718
  • 人工智能
    +关注

    关注

    1791

    文章

    47244

    浏览量

    238357
  • 计算机视觉
    +关注

    关注

    8

    文章

    1698

    浏览量

    45986
  • 大模型
    +关注

    关注

    2

    文章

    2439

    浏览量

    2671
  • OpenVINO
    +关注

    关注

    0

    文章

    93

    浏览量

    198

原文标题:简单两步使用 OpenVINO™ 搞定 Qwen2 的量化与部署任务 | 开发者实战

文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用OpenVINO C++ API部署FastSAM模型

    象的位置和边界。本文将介绍如何使用 OpenVINO C++ API 部署 FastSAM 模型,以实现快速高效的语义分割。在前文中我们发表了《基于 OpenVINO Python API
    的头像 发表于 11-17 09:53 919次阅读
    如何使用<b class='flag-5'>OpenVINO</b> C++ API<b class='flag-5'>部署</b>FastSAM模型

    基于keras利用cv2自带两步检测法进行实时脸部表情检测

    CV:基于keras利用cv2自带两步检测法对《跑男第六季第五期》之如花片段(或调用摄像头)进行实时性别&脸部表情检测
    发表于 12-26 10:54

    2搞定拼版!AD通用拼版技巧分享!

    你是不是也看过很多拼版教程,一整篇文章全部都是文字说明和各种图示,照着一步步去做,都需要一些时间才能勉强搞定。之前我用过AD20的自带拼版工具,功能上比较简单,而且菜单没有全部汉化,对于新手来说
    发表于 03-29 10:33

    为什么无法通过Heroku部署OpenVINO™工具套件?

    无法通过 Heroku 部署OpenVINO™工具套件: Importeror:libpython3.9.so.1.0:无法打开共享对象文件:无此类文件或目录
    发表于 08-14 08:58

    基于两步映射的轮胎花纹曲面造型方法张胜男

    基于两步映射的轮胎花纹曲面造型方法_张胜男
    发表于 03-16 08:00 0次下载

    三菱FX2N通过PLC网关两步即可接入MQTT平台

    三菱FX2N通过PLC网关两步即可接入MQTT平台
    发表于 11-11 16:13 844次阅读
    三菱FX<b class='flag-5'>2</b>N通过PLC网关<b class='flag-5'>两步</b>即可接入MQTT平台

    两步走 解决开关电源输入过压的烦恼!

    两步走 解决开关电源输入过压的烦恼!
    的头像 发表于 09-27 16:00 936次阅读
    <b class='flag-5'>两步</b>走 解决开关电源输入过压的烦恼!

    NNCF压缩与量化YOLOv8模型与OpenVINO部署测试

    OpenVINO2023版本衍生出了一个新支持工具包NNCF(Neural Network Compression Framework – 神经网络压缩框架),通过对OpenVINO IR格式模型的压缩与量化更好的提升模型在
    的头像 发表于 11-20 10:46 1606次阅读
    NNCF压缩与<b class='flag-5'>量化</b>YOLOv8模型与<b class='flag-5'>OpenVINO</b><b class='flag-5'>部署</b>测试

    简单使用OpenVINO搞定ChatGLM3的本地部署

    英特尔 OpenVINO™ 工具套件是一款开源 AI 推理优化部署的工具套件,可帮助开发人员和企业加速生成式人工智能 (AIGC)、大语言模型、计算机视觉和自然语言处理等 AI 工作负载,简化深度学习推理的开发和部署,便于实现从
    的头像 发表于 04-03 18:18 2063次阅读
    <b class='flag-5'>简单</b>三<b class='flag-5'>步</b>使用<b class='flag-5'>OpenVINO</b>™<b class='flag-5'>搞定</b>ChatGLM3的本地<b class='flag-5'>部署</b>

    阿里通义千问Qwen2大模型发布

    阿里巴巴最近发布了其通义千问系列的新成员——Qwen2大模型,并在Hugging Face和ModelScope大平台上实现了同步开源。这一举措无疑为人工智能领域的研究者和开发者们提供了更多选择和可能。
    的头像 发表于 06-07 15:59 761次阅读

    阿里通义千问Qwen2大模型发布并同步开源

    阿里巴巴集团旗下的通义千问团队宣布,全新的Qwen2大模型正式发布,并在全球知名的开源平台Hugging Face和ModelScope上同步开源。这一里程碑式的事件标志着中国在人工智能领域的又一次重要突破。
    的头像 发表于 06-11 15:33 1067次阅读

    Qwen2强势来袭,AIBOX支持本地化部署

    Qwen2是阿里通义推出的新一代多语言预训练模型,经过更深入的预训练和指令调整,在多个基准评测结果中表现出色,尤其在代码和数学方面有显著提升,同时拓展了上下文长度支持,最高可达128K。目前
    的头像 发表于 06-27 08:02 1042次阅读
    <b class='flag-5'>Qwen2</b>强势来袭,AIBOX支持本地化<b class='flag-5'>部署</b>

    基于Qwen-Agent与OpenVINO构建本地AI智能体

    Qwen2 是阿里巴巴集团 Qwen 团队研发的大语言模型和大型多模态模型系列。Qwen2 具备自然语言理解、文本生成、视觉理解、音频理解、工具使用、角色扮演、作为 AI Agent 进行互动等多种能力。
    的头像 发表于 07-26 09:54 782次阅读
    基于<b class='flag-5'>Qwen</b>-Agent与<b class='flag-5'>OpenVINO</b>构建本地AI智能体

    阿里Qwen2-Math系列震撼发布,数学推理能力领跑全球

    阿里巴巴近期震撼发布了Qwen2-Math系列模型,这一系列模型基于其强大的Qwen2 LLM构建,专为数学解题而生,展现了前所未有的数学推理能力。Qwen2-Math家族包括1.5B、7B及72B三种规模,旨在满足不同场景下的
    的头像 发表于 08-12 15:19 734次阅读

    利用OpenVINO部署Qwen2多模态模型

    多模态大模型的核心思想是将不同媒体数据(如文本、图像、音频和视频等)进行融合,通过学习不同模态之间的关联,实现更加智能化的信息处理。简单来说,多模态大模型可以可以理解多种不同模态的输入数据,并输出相应反馈结果,例如图像理解,语音识别,视觉问题等。
    的头像 发表于 10-18 09:39 422次阅读