【ChatGPT本地部署-- ChatGLM】

ChatGLM是一个62亿参数的开源双语对话模型,可在消费级GPU上部署。文章提供了从模型下载到本地部署的详细步骤,包括使用Pycharm,修改模型路径和量化设置。对比了ChatGLM与ChatGPT和GPT4AII在效果上的差异,ChatGLM在中文理解和部署便捷性上有优势,但无法获取最新信息。
摘要由CSDN通过智能技术生成

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 即可;

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
在这里插入图片描述

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

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

文章转载自: https://www.rstk.cn/chatgpt/2993.html?action=onClick
后续我也会尝试按照原博主操作进行体验

ChatGPT-6B 是由 OpenAI 公司开发的一个大型预训练语言模型,需要大量的计算资源来运行。如果你想在本地部署 ChatGPT-6B,需要满足以下条件: 1. 高性能计算硬件,如 NVIDIA GPU,至少要有 16GB 的显存。 2. 安装 CUDA 和 cuDNN,以便在 GPU 上运行 TensorFlow。 3. 安装 TensorFlow 2.0 或更高版本。 4. 下载 ChatGPT-6B 的预训练模型,可以从 OpenAI 的 GitHub 仓库中下载。 一旦满足上述条件,你可以通过 TensorFlow 的 API 加载预训练模型并进行推理。下面是一个简单的 Python 代码片段,展示了如何加载 ChatGPT-6B 模型并生成对话: ```python import tensorflow as tf import numpy as np import openai # Load the pre-trained model model = tf.keras.models.load_model('path/to/pretrained/model') # Define a function to generate text def generate_text(prompt, length=1024, temperature=0.7): input_ids = openai.encode(prompt) input_ids = tf.constant(input_ids, dtype=tf.int32)[tf.newaxis, :] output = model(input_ids) logits = output['logits'][0, -1, :] / temperature probs = tf.nn.softmax(logits) token = tf.random.categorical([probs], num_samples=1)[-1, 0].numpy() text = openai.decode(np.concatenate([input_ids[0].numpy(), [token]])) i = 0 while i < length and token != openai.Token.EOS: i += 1 input_ids = tf.constant([token], dtype=tf.int32)[tf.newaxis, :] output = model(input_ids) logits = output['logits'][0, -1, :] / temperature probs = tf.nn.softmax(logits) token = tf.random.categorical([probs], num_samples=1)[-1, 0].numpy() text += openai.decode([token]) return text # Generate a conversation prompt = "User: Hello\nAI:" for i in range(10): prompt += '\nUser: ' print(prompt) prompt += generate_text(prompt) print(prompt) ``` 注意,由于 ChatGPT-6B 模型需要大量的计算资源,因此在本地部署时可能需要花费较长时间来生成对话。此外,由于 ChatGPT-6B 是一个大型预训练模型,因此预测结果可能会有一定的误差。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值