chatgpt 部署硬件需求 基于ChatGLM-6B 部署本地私有化ChatGPT

默认分类1年前 (2023)发布 admin
1,038 0
ChatGPT国内版

基于-6B 部署本地私有化

一、开源模型

1、-6B介绍

2、-6B 有如下特点

3、-6B 也有相当多已知的局限和不足

二、系统部署

1、硬件需求

2、系统环境

操作系统: 7.6/ (内存:32G)

显卡配置:2x 8G (共16G显存)

3.8.13 (版本不要高于3.10,否则有些依赖无法下载,像 2.4.2在高版本还不支持)

# 安装Python3.8所需依赖sudo yum -y install gcc zlib zlib-devel openssl-devel# 下载源码wget https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tgz# 解压缩tar -zxvf Python-3.8.13.tgz# 编译配置,注意:不要加 --enable-optimizations 参数./configure --prefix=/usr/local/python3# 编译并安装make && make install

3、部署 6B

3.1下载源码

直接下载-6B

git下载 git clone

3.2安装依赖

进入-6B目录

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

此外,如果需要在 cpu 上运行量化后的模型,还需要安装 gcc 与 。多数 Linux 发行版默认已安装。对于 ,可在安装 TDM-GCC 时勾选 。 测试环境 gcc 版本为 TDM-GCC 10.3.0, Linux 为 gcc 11.3.0

3.3下载模型

从 Face Hub 下载

可以手动下载

git下载 git clone

chatgpt 部署硬件需求 基于ChatGLM-6B 部署本地私有化ChatGPT

将模型下载到本地之后,将以上代码中的 THUDM/-6b 替换为你本地的 -6b 文件夹的路径,即可从本地加载模型;

在-6b文件下创建一个model文件夹放模型文件

3.4代码调用

可以通过如下代码调用 -6B 模型来生成对话:

模型的实现仍然处在变动中。如果希望固定使用的模型实现以保证兼容性,可以在 的调用中增加 =”v1.1.0″ 参数

>>> from transformers import AutoTokenizer, AutoModel>>> tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)>>> model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()>>> model = model.eval()>>> response, history = model.chat(tokenizer, "你好", history=[])>>> print(response)你好!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。>>> response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)>>> print(response)

3.5低成本部署

模型量化

默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果你的 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下:

# 按需修改,目前只支持 4/8 bit 量化

model = .(“THUDM/-6b”, =True).(8).half().cuda()

进行 2 至 3 轮对话后,8-bit 量化下 GPU 显存占用约为 10GB,4-bit 量化下仅需 6GB 占用。随着对话轮数的增多,对应消耗显存也随之增长,由于采用了相对位置编码,理论上 -6B 支持无限长的 -,但总长度超过 2048(训练长度)后性能会逐渐下降。

模型量化会带来一定的性能损失,经过测试,-6B 在 4-bit 量化下仍然能够进行自然流畅的生成。使用 GPT-Q 等量化方案可以进一步压缩量化精度/提升相同量化精度下的模型性能,欢迎大家提出对应的 Pull 。

量化过程需要在内存中首先加载 FP16 格式的模型,消耗大概 13GB 的内存。如果你的内存不足的话,可以直接加载量化后的模型,INT4 量化后的模型仅需大概 5.2GB 的内存:

# INT8 量化的模型将”THUDM/-6b-int4″改为”THUDM/-6b-int8″

model = .(“THUDM/-6b-int4”, =True).half().cuda()

量化模型的参数文件也可以从这里手动下载。

3.6CPU 部署

如果你没有 GPU 硬件的话,也可以在 CPU 上进行推理,但是推理速度会更慢。使用方法如下(需要大概 32GB 内存)

model = .(“THUDM/-6b”, =True).float()

如果你的内存不足,可以直接加载量化后的模型:

# INT8 量化的模型将”THUDM/-6b-int4″改为”THUDM/-6b-int8″

model = .(“THUDM/-6b-int4”,=True).float()

如果遇到了报错 Could not find ‘.dll’ 或者 : : (MacOS) ,请从本地加载模型

3.7多卡部署

如果你有多张 GPU,但是每张 GPU 的显存大小都不足以容纳完整的模型,那么可以将模型切分在多张GPU上。首先安装 : pip ,然后通过如下方法加载模型:

chatgpt 部署硬件需求 基于ChatGLM-6B 部署本地私有化ChatGPT

from utils

model = (“THUDM/-6b”, =2)

即可将模型部署到两张 GPU 上进行推理。你可以将 改为你希望使用的 GPU 数。默认是均匀切分的,你也可以传入 参数来自己指定

四、系统启动

4.1网页版 Demo

首先安装 :pip ,然后运行仓库中的 .py:

.py

程序会运行一个 Web ,并输出地址。在浏览器中打开输出的地址即可使用。最新版 Demo 实现了打字机效果,速度体验大大提升。注意,由于国内 的网络访问较为缓慢,启用 demo.queue().(share=True, =True) 时所有网络会经过 服务器转发,导致打字机体验大幅下降,现在默认启动方式已经改为 share=False,如有需要公网访问的需求,可以重新修改为 share=True 启动

4.2命令行 Demo

运行仓库中 .py:

.py

程序会在命令行中进行交互式的对话,在命令行中输入指示并回车即可生成回复,输入 clear 可以清空对话历史,输入 stop 终止程序

4.2API部署

首先需要安装额外的依赖 pip ,然后运行仓库中的 api.py:

api.py

默认部署在本地的 8000 端口,通过 POST 方法进行调用

curl -X POST "http://127.0.0.1:8000"      -H 'Content-Type: application/json'      -d '{"prompt": "你好", "history": []}'得到的返回值为{  "response":"你好!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。",  "history":[["你好","你好!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。"]],  "status":200,  "time":"2023-03-23 21:38:40"}

4.3部署中常见问题

问题1、torch.cuda.: CUDA out of

很明显,显存不足,建议切换到-6b-int4或者-6b-int4

torch.cuda.: CUDA out of

问题2、”: is not “

这个错误通常是由于缺少或损坏的 CUDA 库文件引起的。要解决这个问题,需要安装 CUDA :

安装CUDA Toolkitsudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.reposudo yum clean allsudo yum -y install nvidia-driver-latest-dkmssudo yum -y install cuda

© 版权声明
广告也精彩

相关文章

暂无评论

暂无评论...