当前位置:首页|资讯|人工智能|AIGC

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

作者:英特尔技术汇发布时间:2024-04-17

工具介绍

 

 

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

 

ChatGLM3是智谱AI和清华大学KEG实验室联合发布的对话预训练模型。ChatGLM3-6B是ChatGLM3系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B引入了以下新特性:

 

1

更强大的基础模型:

ChatGLM3-6B的基础模型ChatGLM3-6B-Base采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base具有在10B以下的预训练模型中领先的性能。

2

更完整的功能支持:

ChatGLM3-6B采用了全新设计的Prompt格式,除正常的多轮对话外,同时原生支持工具调用 (Function Call)、代码执行 (Code Interpreter) 和Agent任务等复杂场景。

3

更全面的开源序列:

除了对话模型ChatGLM3-6B外,还开源了基础模型ChatGLM-6B-Base、长文本对话模型ChatGLM3-6B-32K。以上所有权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用。

 

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

 

 

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

 

示例仓库:

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

 

官方仓库:

https://github.com/THUDM/ChatGLM3?tab=readme-ov-file#openvino-demo

 

Model Card:

https://www.modelscope.cn/models/ZhipuAI/chatglm3-6b/summary#

 

 

 

1

模型转换

 

当你按仓库中的README文档完成集成环境配置后,可以直接通过以下命令运行模型转换脚本:


python3 convert.py --model_id THUDM/chatglm3-6b –output {your_path}/chatglm3-6b-ov

 

 

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


 

 

当获取PyTorch的模型对象后,该脚本会利用OpenVINO™的PyTorch frontend进行模型格式的转换,执行完毕后,你将获取一个由.xml和.bin文件所构成的OpenVINO™ IR模型文件,该模型默认以FP16精度保存。

 

 

2

权重量化

 

该步骤为可选项,开发者可以通过以下脚本,将生成的OpenVINO™模型通过权重量化策略,进一步地压缩为4-bits或者是8-bits的精度,以获取更低的推理延时及系统资源占用。


python3 quantize.py --model_path {your_path}/chatglm3-6b-ov --precision int4 --output {your_path}/chatglm3-6b-ov-int4

左滑查看更多

 

执行完毕后,你将获得经过压缩后的IR模型文件,以INT4对称量化为例,该压缩后的模型文件的整体容量大约为4GB左右。

 

图:量化后的OpenVINO™模型文件

 

 

同时在量化结束后,亦会在终端上打印模型的量化比例,如下图所示。

 

图:量化比例输出

 

 

由于OpenVINO™  NNCF工具的权重压缩策略只针对于大语言模型中的Embedding和Linear这两种算子,所以该表格只会统计这两类算子的量化比例。其中ratio-defining parameter是指我们提前通过接口预设的混合精度比例,也就是21%权重以INT8表示,79%以INT4表示,这也是考虑到量化对ChatGLM3模型准确度的影响,事先评估得到的配置参数,开发者亦可以通过这个示例搜索出适合其他模型的量化参数。此外鉴于第一层Embedding layer和模型最后一层操作对于输出准确度的影响,NNCF默认会将他们以INT8表示,这也是为何all parameters中显示的混合精度比例会有所不同。当然开发者也可以通过nncf.compress_weights接口中设置all_layers=True,开关闭该默认策略。

 

示例:

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

 

 

3

模型转换

 

最后一步就是模型部署了,这里展示的是一个Chatbot聊天机器人的示例,这也是LLM应用中最普遍,也是最基础的pipeline,而OpenVINO™可以通过Optimum-intel工具为桥梁,复用Transformers库中预置的pipeline,因此在这个脚本中我们会对ChatGLM3模型再做一次封装,以继承并改写OVModelForCausalLM类中的方法,实现对于Optimum-intel工具的集成和适配。以下为该脚本的运行方式:


python3 chat.py --model_path {your_path}/chatglm3-6b-ov-int4 --max_sequence_length 4096 --device CPU

左滑查看更多

 

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

 

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

 

 

用户:你好

ChatGLM3-6B-OpenVINO: 你好!有什么我可以帮助你的吗?

 

 

用户:你是谁?

ChatGLM3-6B-OpenVINO: 我是一个名为ChatGLM3-6B的人工智能助手,是由清华大学KEG实验室和智谱AI 公司于2023 年共同训练的语言模型开发而成。我的任务是针对用户的问题和要求提供适当的答复和支持。

 

 

用户:请给我讲一个有趣的故事

ChatGLM3-6B-OpenVINO: 从前,有一个名叫小明的小男孩,他是一个非常喜欢动物的人。有一天,他在森林里散步时,发现了一个非常漂亮的小鸟。小鸟受伤了,无法飞行。小明非常心疼,于是决定照顾这只小鸟。小明带着小鸟回家,为它搭建了一个小小的巢穴,并找来了一些软草和食物。每天,他都会给小鸟喂食,并为它换水。渐渐地,小鸟的伤势好了起来,开始在小明的家里飞来飞去,它们成了非常好的朋友。然而,一天,小明的父母告诉他,他们必须把小明养的小鸟送到森林里去。小明非常伤心,因为他已经和小鸟成为了好朋友。但是,他的父母告诉他,小鸟在森林里会更加自由自在,而且他也可以继续观看小鸟在森林中的生活。于是,小明和他的父母一起将小鸟送到了森林中。小鸟非常高兴,因为它又可以飞行了,并且还有许多其他的小动物朋友。小明也感到非常开心,因为他知道,即使不能一直拥有小鸟,他仍然可以欣赏到它们在自然中的美丽。从此以后,小明常常来到森林中,寻找小鸟。

 

 

用户:请给这个故事起一个标题

ChatGLM3-6B-OpenVINO: 《友谊的力量:小明与小鸟的森林冒险》

 

 

 

总结

 

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

 

项目地址:https://github.com/OpenVINO-dev-contest/chatglm3.openvino

 

英特尔、英特尔标识、以及其他英特尔商标是英特尔公司或其子公司在美国和/或其他国家的商标。
 

©英特尔公司版权所有。

* 文中涉及的其它名称及商标属于各自所有者资产


 



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1