ChatGPT本地部署(支持中英文,超级好用)!

news/2024/11/29 10:44:30/

今天用了一个超级好用的Chatgpt模型——ChatGLM,可以很方便的本地部署,而且效果嘎嘎好,经测试,效果基本可以平替内测版的文心一言。

目录

一、什么是ChatGLM?

二、本地部署

2.1 模型下载

2.2 模型部署

2.3 模型运行

2.3.1 直接在命令行中输入进行问答

2.3.2 利用 gradio 库生成问答网页 

三、模型与ChatGPT和GPT4AII 效果对比

3.1 ChatGLM

3.2 ChatGPT

3.3 GPT4AII

四、总结


一、什么是ChatGLM?

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

二、本地部署

2.1 模型下载

Demo下载地址:

GitHub - ZhangErling/ChatGLM-6B: 提供Windows部署文档的版本 | ChatGLM-6B:开源双语对话语言模型 | An Open Bilingual Dialogue Language Model

2.2 模型部署

1. 用Pycharm打开项目文件;

2. 使用 pip 安装依赖:pip install -r requirements.txt,其中 transformers 库版本推荐为 4.27.1,但理论上不低于 4.23.1 即可;

安装以下依赖包:

protobuf
transformers==4.27.1
cpm_kernels
torch>=1.10
gradio
mdtex2html
sentencepiece

pip 直接安装不行就用:

conda install 包名 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

再不行就去Archived: Python Extension Packages for Windows - Christoph Gohlke (uci.edu) 

下载相关依赖包的 whl文件,然后在cd 到文件路径下,用pip 安装。 

2.3 模型运行

在 …/ChatGLM/ 目录下有两个 demo 代码:

2.3.1 直接在命令行中输入进行问答

(1)修改模型路径。编辑 cli_demo.py 代码,修改 5、6 行的模型文件夹路径,将原始的 “THUDM/ChatGLM-6B” 替换为 “model” 即可。

(2)修改量化版本。如果你的显存大于 14G,则无需量化可以跳过此步骤。如果你的显存只有 6G 或 10G,则需要在第 6 行代码上添加 quantize(4) 或 quantize(8) ,如下:

# 6G 显存可以 4 bit 量化
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(4).cuda()# 10G 显存可以 8 bit 量化
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(8).cuda()

(3)运行 cli_demo.py 

2.3.2 利用 gradio 库生成问答网页 

利用 gradio 库生成问答网页(效果如三中所示)。

 (1)安装gradio 库:

pip install gradio

(2)修改模型路径。编辑 cli_demo.py 代码,修改 5、6 行的模型文件夹路径,将原始的 “THUDM/ChatGLM-6B” 替换为 “model” 即可。

(3)修改量化版本。如果你的显存大于 14G,则无需量化可以跳过此步骤。如果你的显存只有 6G 或 10G,则需要在第 5 行代码上添加 quantize(4) 或 quantize(8) ,如下:

# 6G 显存可以 4 bit 量化
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(4).cuda()# 10G 显存可以 8 bit 量化
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(8).cuda()

(4)运行 web_demo.py 

模型加载过程如下图:

三、模型与ChatGPT和GPT4AII 效果对比

运行完 web_demo.py 结束会自动打开浏览器,显示如下界面,可以进行正常对话,且相应速度非常快。

3.1 ChatGLM

向 ChatGLM 提问:“蒸1个包子需要10分钟,蒸10个包子需要多久?”,回答非常合理。

3.2 ChatGPT

向 ChatGPT 提相同的问题:“蒸1个包子需要10分钟,蒸10个包子需要多久?”,回答略显简单。

3.3 GPT4AII

上一篇博文我们介绍了GPT4ALL,它只能实现英文的对话,用英文提问相关的问题,发现效果不如 ChatGLM 和 ChatGPT 。 

四、总结

ChatGLM 方便部署,且对中文的理解能力很好,它的优点是部署完不用联网,不需要账号登录,非常安全,它的缺点是无法增量学习互联网上最新的信息,知识库扩展需要额外增加训练样本。


http://www.ppmy.cn/news/42150.html

相关文章

Leetcode.1971 寻找图中是否存在路径

题目链接 Leetcode.1971 寻找图中是否存在路径 easy 题目描述 有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0 到 n - 1(包含 0 和 n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] [ui, vi]表示顶点 ui和顶…

Baumer工业相机堡盟工业相机如何通过BGAPISDK里的图像处理库进行图像转换(C++)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK进行图像转换(C)Baumer工业相机Baumer工业相机的SDK里图像格式转换的技术背景Baumer工业相机通过BGAPI SDK进行图像转换调用BGAPI SDK的图像转换库ImageProcessor调用BGAPI SDK建立图像调用BGAPI SDK转换图像…

ARM 编译器 Arm Compiler for Embedded 6 相关工具链简介

目录 1, Introduction to Arm Compiler 6 1.1 armclang 1.2 armasm 1.3 armlink 1.4 armar 1.5 fromelf 1.6 Arm C libraries 1.7 Arm C libraries 1,8 Application development ,ARM程序开发流程 2,ARM 编译器 5和ARM 编译器 6的兼容性 3&…

JavaEE企业级应用开发教程——第十二章 Spring MVC数据绑定和相应(黑马程序员第二版)(SSM)

第十二章 Spring MVC数据绑定和相应 12.1 数据绑定 在 Spring MVC 中,当接收到客户端的请求时,会根据请求参数和请求头等信息,将参数以特定的方式转换并绑定到处理器的形参中,这个过程称为数据绑定。数据绑定的流程大致如下&…

PostgreSQL慢sql原因和优化方案

文章目录导致PostgreSQL运行缓慢的原因:1. 数据库服务器硬件不足,例如CPU、内存、磁盘I/O等。2. 数据库中存在大量的慢查询,需要优化查询语句或索引。3. 数据库中存在大量的并发连接,需要调整数据库连接池的大小。4. 数据库中存在…

nginx配置https正向代理

适用场景: 因网络访问权限限制,局域网内仅有1台电脑可以上外网;内网其他机器如果需要访问外网,需要通过该电脑进行代理访问。 本文分别介绍如何在windows,linux上如何配置nginx正向代理。 nginx配置https正向代理&am…

【Spark】RDD缓存机制

1. RDD缓存机制是什么? 把RDD的数据缓存起来,其他job可以从缓存中获取RDD数据而无需重复加工。 2. 如何对RDD进行缓存? 有两种方式,分别调用RDD的两个方法:persist 或 cache。 注意:调用这两个方法后并不…

OpenCV中图像操作的基础介绍

文章目录 目录 文章目录 前言 一、加载、显示、保存图像 示例代码: 二、调整图像大小 示例代码: 三、裁剪图像 示例代码: 四、反转图像 示例代码: 五、调整亮度和对比度 示例代码: 六、代码整合 七、其他常见操作 …