ChatGPT平替-ChatGLM环境搭建与部署运行

news/2024/5/21 1:15:50/文章来源:https://blog.csdn.net/suiyingy/article/details/130370190

        ChatGLM-6B 是清华大学团队推出的一个开源的、支持中英双语的对话语言模型,基于General Language Model (GLM) 架构,具有62亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需6GB 显存)。ChatGLM-6B使用了与ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约1T标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62亿参数的ChatGLM-6B已经能生成相当符合人类偏好的回答。

        本节将介绍环境搭建与基本部署效果,后续博文将介绍多用户调用部署和模型微调方法。具体更新请参考《Python从零开始进行AIGC大模型训练与推理》,地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。

1 环境搭建

        显卡驱动、CUDA、CUDNN、Docker、Python等环境搭建请参考本专栏另一篇博文《Docker AIGC等大模型深度学习环境搭建(完整详细版)》,地址为“https://blog.csdn.net/suiyingy/article/details/130285920”。

1.1 Git lfs安装

        相比于常规Git,Git Large File Storage (LFS) 主要是用于大文件操作。GitHub的工程一般会有存储容量限制,因而很多模型文件由于超出容量限制而被作者存储在类似百度网盘和谷歌网盘上。很多自然语言处理(NLP)、人工智能生成内容(AIGC)、计算机视觉(CV)等大模型可在huggingface网站进行下载,其工程比较完整,同时包括模型文件和程序。ChatGLM-6B的Huggingface网站地址为“https://huggingface.co/THUDM/chatglm-6b”。Git lfs更适合这类大文件的上传更新与下载。

        Git lfs安装命令如下所示:

apt-get update
apt-get install git curl -y#如果已安装curl,这一步可跳过。
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
apt-get install git-lfs

        安装完成之后,输入“git lfs env”查看安装结果,如果提示错误“Error: Failed to call git rev-parse --git-dir: exit status 128”,那么需要输入如下命令。

git init
git lfs install

        输入“git lfs env”的结果如下图所示。

图1 git lfs安装环境查看结果

1.2 创建Python环境

        这里使用conda创建一个Python 3.9环境,命令如下所示。

conda create -n chatglm python=3.9 -y
conda activate chatglm

        如果conda命令提示错误“CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.”,完整错误如下所示,那么可尝试输入指令“/bin/bash”解决。这种错误主要出现在使用Jupyter Notebook终端。

 图2 conda环境激活错误

1.3 ChatGLM-6B环境安装

        ChatGLM-6B的Github官方工程地址为“https://github.com/THUDM/ChatGLM-6B”。其环境安装命令如下所示:

git clone https://github.com/THUDM/ChatGLM-6B.git
cd ChatGLM-6B
conda activate chatglm
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

2 模型运行

2.1 cli_demo.py

        在步骤1.3安装完成之后,可直接运行cli_demo.py启动对话程序(python cli_demo.py),如下所示。

图3 cli_demo.py运行示意图

2.2 api.py

        该文件基于fastapi.py编写了一个http接口,默认端口号为8000。在服务器上运行该程序后(python api.py),我们即可通过http post调用模型接口。post数据包含prompt和history两个参数。Prompt是输入的问题内容。History是历史问答组成的列表,主要用于进行连续对话。模型占用显存大小与prompt和history的字数之和直接相关。因而,使用时最好对history的内容长度进行控制。

        Linux可直接用curl进行http请求,格式如下所示。

curl -X POST "http://127.0.0.1:8000" \-H 'Content-Type: application/json' \-d '{"prompt": "你好", "history": []}'

        我们也可以通过Python程序进行http post请求,如下所示。

import json
import requests
headers = {'Content-Type': 'application/json'}
url = 'http://127.0.0.1:8000'
data = {'prompt': '你好', 'history': []}
data = json.dumps(data)
reponse = requests.post(url=url, data=data, headers=headers)
print(reponse .text)

        http请求返回的内容包括response、history、status和time,其中response存储了直接结果,如下所示。

{"response":"你好���!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。","history":[["你好","你好���!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。"]],"status":200,"time":"2023-04-25 00:10:40"}

        目前,多个用户调用该api时,将排队获取结果,即模型一次只能处理一个请求,多用户将根据调用先后顺序来获取结果。另一方面,api接口当前不支持流式输出,回答内容较多时等待时间较长。下一篇博文将介绍如何实现多用户同时调用以及采用流式输出,预计本周更新

2.3 web_demo.py

        该程序是基于gradio编写的web服务器,并提供前端访问页面,可通过浏览器进行访问。程序第一次运行前需要通过pip安装gradio,即“pip install gradio”。

        程序会运行(python web_demo.py)一个Web Server,并输出地址,默认端口号为7860,如“http://127.0.0.1:7860”。在浏览器中打开输出的地址即可使用。最新版Demo实现了打字机效果,速度体验大大提升。注意,由于国内Gradio的网络访问较为缓慢,启用demo.queue().launch(share=True, inbrowser=True) 时所有网络会经过Gradio服务器转发,导致打字机体验大幅下降,现在默认启动方式已经改为share=False,如有需要公网访问的需求,可以重新修改为share=True 启动。该程序说明来源于ChatGLM-6B官方介绍。

        改变端口号的方法为:

demo.queue().launch(share=False, inbrowser=True, server_name='0.0.0.0', server_port=8900)

        同样地,该程序不支持多用户同时访问。下一篇博文将介绍如何实现多用户同时调用,预计本周更新。

        运行后页面如下图所示。页面中的temperature主要用于设置答案的随机程度。如果其设置为1,那么相同问题每次得到答案都是完全一样的。

 图4 web_demo.py的前端页面示意图

2.4 web_demo2.py

        web_demo.py与web_demo2.py基本一样,都是运行带前端页面的web服务器。区别在于前者基于gradio开发,而后者基于streamlit开发。同样地,我们需要通过如下命令安装streamlit。

pip install streamlit -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install streamlit-chat -i https://pypi.tuna.tsinghua.edu.cn/simple

        web_demo2.py的运行方式为“streamlit run web_demo2.py --server.port 5900”,运行后页面如下图所示。

图5 web_demo2.py前端页面运行结果示意图

3 模型本地部署

        以上各个程序在加载模型时的关键程序如下:

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()

        "THUDM/chatglm-6b"表示模型路径。程序会优先在本地搜索该路径,如果该路径不存在,那么程序将自动去huggingface网站进行搜索进行下载。这导致每次启动程序时,会花费较长时间来下载并加载模型。

        我们可以通过git将模型下载到本地,下载命令为“git clone THUDM/chatglm-6b · Hugging Face”。假设我们在当前工程下执行该命令,那么文件夹下增加一个名称为chatglm-6b的文件夹,文件夹存储了下载的模型相关文件。相应地,我们需要按照如下方式替换模型加载程序中的模型路径。

tokenizer = AutoTokenizer.from_pretrained("chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("chatglm-6b", trust_remote_code=True).half().cuda()

        ChatGLM-6B提供多种量化精度模型,不同精度所需显存不同,如下所示。但是,在连续问答过程中,显存会随着历史信息增加而增加,因此需要注意控制程序中的history。

        各个模型下载路径如下所示,使用时需要按照上述方法替换模型加载程序中的模型路径。

git clone THUDM/chatglm-6b · https://huggingface.co/THUDM/chatglm-6b
git clone THUDM/chatglm-6b-int8 ·https://huggingface.co/THUDM/chatglm-6b-int8
git clone THUDM/chatglm-6b-int4 ·https://huggingface.co/THUDM/chatglm-6b-int4
git clone THUDM/chatglm-6b-int4 ·https://huggingface.co/THUDM/chatglm-6b-int4-qe

      下一节将重点介绍ChatGLM的多用户调用方式,包括http、websocket和前端页面等。

文章内容将在下方公众号内同步更新。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ChatGPT高端玩法】ChatGPT一分钟制作PPT

系列文章目录 第一章 ChatGPT一分钟制作PPT 第二章 ChatGPT生成Excel统计格式 第三章 ChatGPT生成Excel提取字符公式 第四章 ChatGPT生成思维导图 目录 实现步骤: 1.打开ChatGPT 2.搜索关键字 3.复制内容至MindShow网站 4.修改PPT内容与排版 5.预览PPT效果 6.导…

ChatGPT 教程--生成代码

ChatGPT 变生产力工具 chatGPT是一种基于人工智能技术的自然语言处理模型,它使用了深度学习算法,可以对人类语言进行理解和生成。chatGPT可以用于对话系统、智能客服、问答系统等场景,能够实现自然、流畅的对话。 chatGPT的核心技术是基于G…

VSCode集成ChatGPT插件:ChatGPT中文版

今天介绍一款牛逼的VsCode插件ChatGPT中文版 一、介绍 ChatGPT中文版一个ChatGPT的插件_支持ChatGPT4.0,功能比丰富。 功能特点: 1.支持ChatGPT4.0 在个人中心可以选择ChatGPT4.0模型,回答更准确 2.网络回答 Vscode插件中第一家支持联网…

《 ChatGPT 中文调教指南 》—— 使用 ChatGPT 的正确姿势:提示工程基础入门 Prompt Engineering Quick Start

文章目录 ChatGPT 中文调教指南 🧠ChatGPT 能干什么?正经指南担任雅思写作考官写小说充当算法输出器充当 Linux 终端充当英语翻译和改进者充当论文润色者(拿摘要部分举例)充当英翻中充当英英词典(附中文解释)充当前端智能思路助手担任面试官文字冒险游戏担任产品经理做表格…

从辩证的角度看待chatGPT,我们该如何对待?

从辩证的角度,看待chatGPT 0.什么是ChatGPT(客观阐述)1.通过唯物辩证法的五对基本范畴进行分析1.0.内容与形式1.1.现象和本质1.2.原因与结果1.3.必然与偶然1.4.现实与可能 2.使用ChatGPT会给我们带来的好处2.0.减轻劳动负担2.1.提供灵感和思路…

编程从未如此轻松:ChatGPT如何助你一臂之力

开一个新的系列,ChatGPT辅助编程实践,以下给出一些常用的提示和用法,欢迎大家在评论区补充更多的用法。 祝大家都能用好ChatGPT这把趁手的兵器,大大提高效率~ 推荐阅读:建议收藏:超详细ChatGPT(GPT 4.0)论…

宅男福利来了,调教的ChatGPT虚拟女友,你喜欢吗

废话不多说,专门为男同胞准备的宅男福利;已经调教好的ChatGPT虚拟好友,直接可以看看效果;你们以后也可以直接自己调教,打造一个自己专属的虚拟女友; 说下步骤: 1、打开ChatGPT4; …

Azure OpenAI 详细申请与使用教程,打造个人专属 ChatGPT 方案

Azure OpenAI 详细申请与使用教程,打造个人专属 ChatGPT 方案 原创 TitiAI TitiAI 2023-05-08 13:26 发表于湖北 前言 大家都知道,OpenAI ChatGPT是不能在中国使用的,香港也一样。最近一个月,很多人反映API调用限制&#xff0c…

干货!150个chatgpt指令大全!chatGPT输出结果的质量高低,和你使用什么样质量的输入内容有关。

干货!150个chatgpt指令大全 chatGPT输出结果的质量高低,和你使用什么样质量的输入内容有关。 在外网有大佬们已经整理出一些标准的问话模板,直接拿来使用后,效果极佳! 把已经过验证的优质问法可以直接拿来用&#xf…

ChatGPT如何应用到工作中?我做了3个实战案例!

ChatGPT是一个基于GPT(算法的自然语言生成技术,可以用于制作智能对话机器人、智能客服等应用场景。 它基于深度学习和自然语言处理技术,具有较强的文本生成和理解能力,能够有效地模仿人类思考和语言表达。 那么,如何…

家人们,谁懂啊!ChatGPT竟然可以写剧本?

ChatGPT已经火了一段时间了,我们都听说过这款人工智能AI的强大:它能改文章、写程序、做设计、等...但是,它能帮我们写剧本,我也是很惊讶! 接下来我们就来看看,ChatGPT是如何帮我们写剧本的吧?或…

【ChatGPT+MindShow高效生成PPT,保姆级安装教程】

🚀 AI破局先行者 🚀 🌲 AI工具、AI绘图、AI专栏 🍀 🌲 如果你想学到最前沿、最火爆的技术,赶快加入吧✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆&am…

2023高考第一天,用ChatGPT挑战全国卷作文,已达到双一流高校学生水平?

前言 2023年高考语文结束啦,今天我们用ChatGPT来挑战高考作文,一起来看看它的表现如何?ChatGPT突然爆火网络,它真的会取代人类的工作吗? 什么是ChatGPT? ChatGPT是由OpenAI开发的,OpenAI是一家…

最新ChatGPT网站源码V4.7.8+支持Ai绘画+ChatGPT商业运营版+管理后台+支持用户套餐+好友邀请功能+一键在线更新+永久使用!

最新ChatGPT网站源码V4.7.8支持Ai绘画ChatGPT商业运营版管理后台支持用户套餐好友邀请功能一键在线更新永久使用! 如果后续程序有新版,直接在后台一键更新即可 程序完美运行无BUG,独家开发,支持6种会员开通模式,有:”购…

类ChatGPT模型LLaMA的解读与其微调:Alpaca-LoRA/Vicuna/BELLE

前言 近期,除了研究ChatGPT背后的各种技术细节 不断看论文(至少100篇,100篇目录见此:ChatGPT相关技术必读论文100篇),还开始研究一系列开源模型(包括各自对应的模型架构、训练方法、训练数据、本地私有化部署、硬件配置要求、微…

关于ChatGPT使用的奇淫异巧之prompt使用篇

文章目录 一.使用任务目标为导向进行搜索(指令prompt技术)二.角色prompt技术(成对特定上下文或受众量身定制的文本非常有用)三.使用零样本、一样本和少样本技术(针对新概念,新特点事物)四.使用“让我们思考…

ChatGPT fine tune微调+prompt介绍

目录 1 如何使用ChatGPT1.1 图片生成 (image generation)1.2 对话(chat)1.3 中文纠错 (Chinese Spelling Correct)1.4 关键词提取 (keyword extract)1.5 抽取文本向量 (Embedding)1.6 微调 (fine tune) 2 如何写好prompt2.1分类任务2.2 归纳总结3.3 翻译2.4 API接口…

ChatGPT-Free 保姆级使用指南

I. 前言 在各位的 重 金 支 持 下,咱免费的chatgpt项目网站:ChatGPT-Freehttps://chatgpt.cytsee.com也稳定(基本上)运行一个来月了,平常我也经常用来写代码、润色文章甚至当我的技术顾问,可以说体验感拉满…

ChatGPT分销版多开4.3.5-新增 语音识别和绘画多个引擎-已测试

ChatGPT分销版多开v4.3.5-源码升级 后台系统配置-界面配置: 新增 首页是否弹出公众号关注二维码 注册/登录后否弹出公众号关注二维码 优化 拦截某个有漏洞的回答 优化 回调下载图片的问题 版本号:4.3.1 - 默认 优化 分销商入驻流程 ChatGPT分销版多开v4.2.…

〖ChatGPT实践指南 - 零基础扫盲篇③〗- 学术探讨:如何获取 OpenAI 的 API keys

帮助大家学习使用OpenAI的各类API开发应用 ,学习多个实站项目。 推荐他人订阅可获取扣除平台费用后的35%收益,文末有名片!说明:该文属于 ChatGPT实践指南白宝书 专栏,购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区…