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

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

3天内不再提示

利用OpenVINO部署GLM-Edge系列SLM模型

英特尔物联网 来源:英特尔物联网 2024-12-09 16:12 次阅读

作者:

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

近期智谱发布了其最新的GLM-Edge系列SLM模型,GLM-Edge 系列是智谱在面向端侧真实落地使用的场景下的一次尝试,由两种尺寸的大语言对话模型和多模态理解模型组成( GLM-Edge-1.5B-Chat,GLM-Edge-4B-Chat,GLM-Edge-V-2B,GLM-Edge-V-5B)。其中,1.5B / 2B模型主要面向手机、车机等平台, 4B / 5B 模型主要面向PC等平台。

英特尔AI PC可以帮助用户利用人工智能威廉希尔官方网站 提高工作效率、创意、游戏、娱乐和安全等性能。它搭载 CPUGPU 和 NPU,可在本地更高效地处理 AI 任务。其中我们可以依靠CPU来运行较小的工作负载并实现低延迟,而GPU则非常适合需要并行吞吐量的大型工作负载,例如大预言模型推理任务,NPU能够以低功耗处理持续运行 AI 工作负载,提高效率。开发者可以利用英特尔OpenVINO工具套件充分激活这些AI处理单元,更高效地部署深度学习模型,其中GLM-Edge就是一个非常适合运行在AIPC上的端侧模型系列。本文将分享如何利用OpenVINO 在本地部署最新glm-edge-chat与glm-edge-v模型。

环境安装与配置

以下为示例环境的快速部署方式,详细过程可以参考示例仓库中的README文档。

1.下载示例仓库

git clone

https://github.com/openvino-dev-samples/glm-edge.openvino.git

2.安装环境依赖

cd glm-edge.openvino
python3 -m venv openvino_env
source openvino_env/bin/activate
pip install -r requirements.txt

glm-edge-chat转化与部署

1. 模型转换与量化

由于glm-edge-chat的预训练模型是基于PyTorch框架的,因此我们可以利用Optimum-intel快速将safetensor格式的预训练模型转化为OpenVINO的IR格式,并通过NNCF工具对模型进行权重量化压缩,以此提升推理性能,降低资源占用。

python3 glm-edge-chat/convert.py --model_id ZhipuAI/glm-edge-1.5b-chat --precision int4 --output {your_path}/glm-edge-1.5b-chat-ov --modelscope

其中:

`--model_id` - 用于设定 Huggngface/ModelScope的 模型id,或者也可以是原始模型的本地路径。

`--output` - 转换后模型保存的地址。

`--modelscope` - 是否通过魔搭社区下载模型。

2. Optimum-intel部署

为了方便Transformers库用户体验OpenVINO,开发者可以利用Optimum-intel所提供的类Transformers API进行模型任务的部署。在不改变原本代码逻辑的前提下,只需要将AutoModelForCausalLM对象切换为OVModelForCausalLM,便可以轻松实现对于推理后端的迁移,利用OpenVINO 来加速glm-edge-chat原有的pipeline。

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, trust_remote_code=True),
  trust_remote_code=True,
)
tokenzier = AutoTokenizer.from_pretrained(llm_model_path, trust_remote_code=True)
input_tokens = tokenzier(prompt, return_tensors="pt", **tokenizer_kwargs)
answer = ov_model.generate(**input_tokens, max_new_tokens=1024)
tokenzier.batch_decode(answer, skip_special_tokens=True)[0]

在这个示例中,开发者可以通过运行chat.py脚本来构建一个简答的聊天机器人,并支持流式输出。使用方法如下:

python3 glm-edge-chat/chat.py --model_path {your_path}/glm-edge-1.5b-chat-ov --max_sequence_length 4096 --device GPU

其中:

`--model_path` - OpenVINO IR 模型所在目录的路径。

`--max_sequence_length` - 输出标记的最大大小。

`--device` - 运行推理的设备。例如:"CPU","GPU"。

3. 效果展示

以下视频将展示该示例在英特尔 酷睿 Ultra 处理器(第二代)上的运行效果:

glm-edge-v转化与部署

1.模型转换与量化

目前glm-edge-v的推理任务还没有被完全集成进Optimum工具中,因此我们需要手动搭建模型的转换和量化任务,其中包含语言模型language_model,图像编码模型vision_model,和文本编码模型embedding_model。

为了简化转化步骤,我们提前对这些转化任务行进行了封装,开发者只需要调用示例中提供的函数便可完成这些模型的转换,并对其中负载最大的语言模型进行量化。

python3 glm-edge-v/convert.py --model_id ZhipuAI/glm-edge-v-2b --output {your_path}/glm-edge-v-5b-ov –modelscope

其中:

`--model_id` - 用于设定 Huggngface/ModelScope的 模型id,或者也可以是原始模型的本地路径。

`--output` - 转换后模型保存的地址。

`--modelscope` - 是否通过魔搭社区下载模型。

2.图片内容理解

此外在该示例中,我们也对模型的推理任务进行封装,通过导入OvGLMv对象变可以可快速部署图像理解任务。通过以下示例脚本可以快速对模型效果进行验证。

python3 qa.py --model_path {your_path}/glm-edge-v-2b-ov --query "Please describe this picture" --image_path {your_path}/your_test_image.jpg --max_sequence_length 4096 --device CPU

其中:

`--model_path` - OpenVINO IR 模型所在目录的路径。

`--query` - 用户输入的问题文本。

`--image` - 待识别的图片文件路径。

`--max_sequence_length` - 输出标记的最大大小。

`--device` - 运行推理的设备。例如:"CPU","GPU"。

3.效果展示

以下为经过OpenVINO 量化后的glm-edge-v-2b模型输出结果。

文字输入:

“请描述这张图片”

模型输出:

“这是一张照片,显示了一辆停在一栋红色砖墙前白色栏杆的建筑物旁边的白色皮卡车,有四个黑色的轮胎和一个带顶篷的驾驶室。在图片中间可以看到停着的一辆白色皮卡车。这辆车停在路边,其尾部有一个梯形托盘,看起来结构坚固,适合装载或卸载重物。它的车顶是白色的,带有黑色的轮胎和黑色的框架。车身颜色为白色,带有黑色的边框窗户和把手。驾驶室有透明的玻璃,可以看到内部的司机座椅。车尾部有一个梯形形状的拖车。汽车旁边是灰色的地砖。”

总结

通过OpenVINO封装后的API函数,开发者可以非常便捷地对预训练模型进行转化压缩,并实现本地化的推理任务部署。同时基于GLM-Edge 在小语言模型场景下强大的文本与图像理解能力,我们仅在轻薄本上便可以构建起一个完整的语言模型应用,在保护用户数据隐私的同时,降低硬件门槛。

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

    关注

    68

    文章

    19225

    浏览量

    229526
  • 英特尔
    +关注

    关注

    61

    文章

    9935

    浏览量

    171635
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10843

    浏览量

    211419
  • 模型
    +关注

    关注

    1

    文章

    3205

    浏览量

    48789
  • OpenVINO
    +关注

    关注

    0

    文章

    92

    浏览量

    190

原文标题:开发者实战|最新端侧小钢炮!利用 OpenVINO™ 部署 GLM-Edge 全家桶

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

    使用OpenVINO部署PaddleSeg模型库中的DeepLabV3+模型

          01 概述     本文是OpenVINO 工具套件与百度飞桨PaddlePaddle模型转换/部署系列的第二部。这篇文章专注于展示如何将百度飞桨PaddelSeg项目
    的头像 发表于 11-22 14:58 9867次阅读
    使用<b class='flag-5'>OpenVINO</b>™ <b class='flag-5'>部署</b>PaddleSeg<b class='flag-5'>模型</b>库中的DeepLabV3+<b class='flag-5'>模型</b>

    在C++中使用OpenVINO工具包部署YOLOv5模型

    下载并转换YOLOv5预训练模型的详细步骤,请参考:《基于OpenVINO™2022.2和蝰蛇峡谷优化并部署YOLOv5模型》,本文所使用的Open
    的头像 发表于 02-15 16:53 4619次阅读

    自训练Pytorch模型使用OpenVINO™优化并部署在AI爱克斯开发板

    本文章将依次介绍如何将 Pytorch 自训练模型经过一系列变换变成 OpenVINO IR 模型形式,而后使用 OpenVINO Pyth
    的头像 发表于 05-26 10:23 910次阅读
    自训练Pytorch<b class='flag-5'>模型</b>使用<b class='flag-5'>OpenVINO</b>™优化并<b class='flag-5'>部署</b>在AI爱克斯开发板

    AI爱克斯开发板上使用OpenVINO加速YOLOv8目标检测模型

    《在AI爱克斯开发板上用OpenVINO加速YOLOv8分类模型》介绍了在AI爱克斯开发板上使用OpenVINO 开发套件部署并测评YOLOv8的分类
    的头像 发表于 05-26 11:03 1223次阅读
    AI爱克斯开发板上使用<b class='flag-5'>OpenVINO</b>加速YOLOv8目标检测<b class='flag-5'>模型</b>

    如何将Pytorch自训练模型变成OpenVINO IR模型形式

    本文章将依次介绍如何将Pytorch自训练模型经过一系列变换变成OpenVINO IR模型形式,而后使用OpenVINO Python AP
    的头像 发表于 06-07 09:31 1961次阅读
    如何将Pytorch自训练<b class='flag-5'>模型</b>变成<b class='flag-5'>OpenVINO</b> IR<b class='flag-5'>模型</b>形式

    基于OpenVINO Python API部署RT-DETR模型

    平台实现 OpenVINO 部署 RT-DETR 模型实现深度学习推理加速, 在本文中,我们将首先介绍基于 OpenVINO Python API
    的头像 发表于 10-20 11:15 931次阅读
    基于<b class='flag-5'>OpenVINO</b> Python API<b class='flag-5'>部署</b>RT-DETR<b class='flag-5'>模型</b>

    如何使用OpenVINO Python API部署FastSAM模型

    象的位置和边界。本文将介绍如何使用 OpenVINO Python API 部署 FastSAM 模型,以实现快速高效的语义分割。
    的头像 发表于 10-27 11:04 712次阅读

    基于OpenVINO C++ API部署RT-DETR模型

    RT-DETR 是在 DETR 模型基础上进行改进的,一种基于 DETR 架构的实时端到端检测器,它通过使用一系列新的威廉希尔官方网站 和算法,实现了更高效的训练和推理,在前文我们发表了《基于 OpenVINO
    的头像 发表于 11-03 14:30 806次阅读
    基于<b class='flag-5'>OpenVINO</b> C++ API<b class='flag-5'>部署</b>RT-DETR<b class='flag-5'>模型</b>

    基于OpenVINO C# API部署RT-DETR模型

    RT-DETR 是在 DETR 模型基础上进行改进的,一种基于 DETR 架构的实时端到端检测器,它通过使用一系列新的威廉希尔官方网站 和算法,实现了更高效的训练和推理,在前文我们发表了《基于 OpenVINO
    的头像 发表于 11-10 16:59 733次阅读
    基于<b class='flag-5'>OpenVINO</b> C# API<b class='flag-5'>部署</b>RT-DETR<b class='flag-5'>模型</b>

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

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

    如何在MacOS上编译OpenVINO C++项目呢?

    英特尔公司发行的模型部署工具 OpenVINO 模型部署套件,可以实现在不同系统环境下运行,且发布的 O
    的头像 发表于 01-11 18:07 878次阅读
    如何在MacOS上编译<b class='flag-5'>OpenVINO</b> C++项目呢?

    使用OpenVINO Model Server在哪吒开发板上部署模型

    OpenVINO Model Server(OVMS)是一个高性能的模型部署系统,使用C++实现,并在Intel架构上的部署进行了优化,使用Open
    的头像 发表于 11-01 14:19 247次阅读
    使用<b class='flag-5'>OpenVINO</b> Model Server在哪吒开发板上<b class='flag-5'>部署</b><b class='flag-5'>模型</b>

    在设备上利用AI Edge Torch生成式API部署自定义大语言模型

    我们很高兴地发布 AI Edge Torch 生成式 API,它能将开发者用 PyTorch 编写的高性能大语言模型 (LLM) 部署至 TensorFlow Lite (TFLite) 运行时
    的头像 发表于 11-14 10:23 380次阅读
    在设备上<b class='flag-5'>利用</b>AI <b class='flag-5'>Edge</b> Torch生成式API<b class='flag-5'>部署</b>自定义大语言<b class='flag-5'>模型</b>