如何在本地部署运行ChatGLM-6B

在本篇技术博客中,将展示如何在本地获取运行代码和模型,并配置环境以及 Web GUI,最后通过 Gradio 的网页版 Demo 进行聊天。

官方介绍

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

为了方便下游开发者针对自己的应用场景定制模型,我们同时实现了基于 P-Tuning v2 的高效参数微调方法 (使用指南) ,INT4 量化级别下最低只需 7GB 显存即可启动微调。

不过,由于 ChatGLM-6B 的规模较小,目前已知其具有相当多的局限性,如事实性/数学逻辑错误,可能生成有害/有偏见内容,较弱的上下文能力,自我认知混乱,以及对英文指示生成与中文指示完全矛盾的内容。请大家在使用前了解这些问题,以免产生误解。更大的基于 1300 亿参数 GLM-130B 的 ChatGLM 正在内测开发中。

获取运行代码

首先,您需要从 GitHub 仓库下载 ChatGLM-6B 的代码。您可以使用以下链接进行下载:GitHub - THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 开源双语对话语言模型

将仓库下载到本地任意位置(例如 D:/codehub/ChatGLM-6B)。

获取模型

接下来,您需要从 Hugging Face 下载 ChatGLM-6B 模型。您可以使用以下链接进行下载:

将模型下载到本地任意位置(例如 D:/codehub/models)。

硬件需求

量化等级

最低 GPU 显存

(推理)

最低 GPU 显存

(高效参数微调)

FP16(无量化)

13 GB

14 GB

INT8

8 GB

9 GB

INT4

6 GB

7 GB

环境配置

在开始使用 ChatGLM-6B 进行聊天之前,您需要进行环境配置。下面是必要的步骤:

  • 安装 Python3。
  • 安装 ChatGLM-6B 运行所需要的 Python 组件依赖。在命令行中进入 ChatGLM-6B 文件夹(例如 cd D:/codehub/ChatGLM-6B),并运行以下命令:
pip install -r requirements.txt
  • 安装 GPU 版本的 PyTorch。由于通过 requirements.txt 中的 PyTorch 默认下载的是 CPU 版本,如果您想使用 GPU 运行模型,您需要先卸载并安装 GPU 版本的 PyTorch。您可以从 PyTorch 官网(PyTorch)下载本地环境对应的 PyTorch。

例如,在 Windows 10 上安装 CUDA 版本为 11.8 的 PyTorch,可以运行以下命令:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
  • 安装 NVIDIA CUDA 工具包。您可以从 CUDA 官方下载地址(CUDA Toolkit Archive | NVIDIA Developer)下载本地环境对应的CUDA版本。请注意确保选择和 PyTorch 对应的 CUDA 版本,否则 PyTorch 将无法正常运行。

配置 WebUI 并运行

最后,我们需要配置 WebUI 并运行 Gradio 的网页版 Demo。请按照以下步骤操作:

  • 安装 Gradio 依赖。在命令行中输入以下命令:
pip install gradio
  • 指定本地的模型文件夹路径

编辑 ChatGLM-6B 仓库中的 web_demo.py 文件,并将以下代码中的 "THUDM/chatglm-6b" 修改为本地模型所在文件夹的路径(例如:这里使用chatglm-6b-int4量化模型,路径则填D:\\codehub\models\chatglm-6b-int4)

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

如果不进行修改,程序会自动从 Hugging Face 下载模型并加载到 C 盘。

  • 运行 WebUI。在命令行中进入 ChatGLM-6B 文件夹,并运行以下命令:
python web_demo.py

至此,您已经成功配置了环境,并准备好使用 ChatGLM-6B 进行聊天了!

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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 是一个大型预训练模型,因此预测结果可能会有一定的误差。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值