欢迎光临散文网 会员登陆 & 注册

Chatglm-本地部署(windows/CPU/GPU)

2023-03-30 17:44 作者:不想起名字的雨狼  | 我要投稿

官方基于wsl的windows部署教程:

https://github.com/ZhangErling/ChatGLM-6B/blob/main/deployment_windows.md

本教程基于:

windows11

CUDA 12.1

Anaconda

Nvidia 

显卡2080ti

开始:

查看当前电脑的CUDA版本:

打开“命令提示符(CMD)”

输入nvidia-smi

531.41为驱动版本,12.1为CUDA版本

下载所用文件:

下载Chatglm-6b项目(Github)

https://github.com/THUDM/ChatGLM-6B

百度网盘(无法使用github)

链接:https://pan.baidu.com/s/1fSfHv2Hk70o3Pxzp91lzeQ 

提取码:q6qh


下载AnaConda(Windows):

https://www.anaconda.com (主页)

https://repo.anaconda.com/archive/Anaconda3-2023.03-Windows-x86_64.exe

https://mirrors.bfsu.edu.cn/anaconda/(北京外国语大学开源软件镜像站)

下载pytorch文件(以防各种莫名其妙的pytorch报错):

命令行方式:https://pytorch.org/get-started/locally/

Pytorch下载:

https://download.pytorch.org/whl/ (所有库下载)

pytorch:

https://download.pytorch.org/whl/torch

cp:python版本(cp310=python3.10版本)

cu:cuda版本(cu118=cuda11.8版本)     使用显卡

cu118可以适用于cuda12.1版本

cpu:cpu版本    使用CPU

cpu版本适用于显卡显存不足6g的电脑

2.0.0为最新版本

Pytorch Audio

https://download.pytorch.org/whl/torchaudio

Pytorch Vision

https://download.pytorch.org/torchvision/

CUDA下载(CUDA Toolkit):

https://developer.nvidia.com/cuda-downloads

模型下载(本地部署使用,chatglm默认为自动联网下载):

百度网盘(无法使用huggingface,附属文件要和模型一起使用)

链接:https://pan.baidu.com/s/1ScYBjh2XDU23D97EcQMDKQ 

提取码:el57

huggingface.co版本下载:

模型下载位置:

这个当中的所有文件都需要下载

https://huggingface.co/THUDM/chatglm-6b-int4-qe/tree/main(4G整合版,适用于电脑配置不高的人群)

4g整合版

https://huggingface.co/THUDM/chatglm-6b-int4/tree/main(5G整合版,适用于电脑配置不高的人群)

5整合版

https://huggingface.co/THUDM/chatglm-6b/tree/main    (普通版,8个模型需要下载至少两个)

普通版

安装软件:

Anaconda:

安装成功后,命令无效首先检查环境变量

安装时:配置环境变量

https://blog.csdn.net/in546/article/details/117400839(CSDN教程)

安装后:配置环境变量

https://zhuanlan.zhihu.com/p/123188004(知乎教程)

更改conda源

找到文件(C:/用户/(用户名)/.condarc文件):

以下内容复制粘贴到.condarc文件

channels:

  - defaults

show_channel_urls: true

default_channels:

  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r

  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2

custom_channels:

  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

保存并关闭文件

CUDA安装:

安装成功后,命令无效首先检查环境变量

https://blog.csdn.net/qq_42951560/article/details/116131410(基于此CSDN教程)


配置环境变量:

key(键):PYTORCH_CUDA_ALLOC_CONF

value(值):max_split_size_mb:1000

此环境变量用于解决 “CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 10.76 GiB total capacity; 4.29 GiB already allocated; 10.12 MiB free; 4.46 GiB reserved in total by PyTorch)” 此种错误,后续配置成功后出现错误可通过此种方式解决,1000可以修改为适合的任意数字

Chatglm配置:

在任意位置(可以是桌面)创建文件夹

例子:C:\Users\用户\Desktop\AI

解压下载好的chatglm压缩包到文件夹中

例子:C:\Users\用户\Desktop\AI\ChatGLM-6B-main

打开:Anaconda prompt

不是cmd,不是命令提示符!!!
显示这种才是对的


创建环境

输入conda create -n 名字 想要安装的包(=指定版本)

例子:

conda create -n chatglm python=3.10

然后输入y,回车

创建成功后激活环境:

输入conda activate 名字

例子:

conda activate chatglm

这样才对

转到chatglm项目文件夹

例子 :

cd C:\Users\用户\Desktop\AI\ChatGLM-6B-main

接下来的操作路径都为chatglm项目文件夹中

安装软件包:

安装之前下载的pytorch系列包

输入python -m pip install 包名(带路径)

假设我pytorch文件在C:\Users\用户\Desktop\AI目录下,

文件名称:torch-2.0.0+cu118-cp310-cp310-win_amd64.whl

别复制文件名的时候忘了后缀

其他两个pytorch系列文件同理

例子:

python -m pip install C:\Users\用户\Desktop\AI\torch-2.0.0+cu118-cp310-cp310-win_amd64.whl


安装完毕后输入:

python -m pip install -r requirements.txt

python -m pip install gradio (启动网页版需要安装)

全部安装完成后就可以启动(但是使用显存默认为13G,且并非使用本地模型)

网页版

python web_demo.py

命令行版

python cli_demo.py

官方启动(github文档)

网页版 Demo

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

python web_demo.py

命令行 Demo

运行仓库中 cli_demo.py:

python cli_demo.py

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

API部署

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

python 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"}

其余配置项:

模型量化

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

# 按需修改,目前只支持 4/8 bit 量化model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().quantize(4).cuda()

打开web_demo.py或者cli_demo.py或者api.py文件(三个文件相同)

4:使用6GB显存

8:使用10GB显存

将下列代码

AutoModel.from_pretrained("THUDM/chatglm6b"trust_remote_code=True).half().cuda()

改为

AutoModel.from_pretrained("THUDM/chatglm6b"trust_remote_code=True).half().quantize(4).cuda()

模型修改(联网):

(8g模型)THUDM/chatglm-6b

model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().quantize(4).cuda()【使用6GB显存】

(5g模型)THUDM/chatglm-6b-int4

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

(4.3g模型)THUDM/chatglm-6b-int4-qe

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

CPU方式使用(需要大概 32GB 内存):

model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).float()

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

from_pretrained("THUDM/chatglm-6b-int4")

from_pretrained("THUDM/chatglm-6b-int4-qe")


本地加载模型:

local_dir:你的模型文件夹的相对路径

checkpoint_path:模型名称【例子:"THUDM/chatglm-6b-int4"】


checkpoint_path = "THUDM/chatglm-6b"【可以更改模型】

local_dir = "./你的模型文件夹的相对路径"


tokenizer = AutoTokenizer.from_pretrained(checkpoint_path, trust_remote_code=True)

model = AutoModel.from_pretrained(checkpoint_path, trust_remote_code=True)


model.save_pretrained(local_dir)

tokenizer.save_pretrained(local_dir)


保存到本地后, checkpoint_path 换成本地路径就是直接加载

(也可以不使用上面代码,将下载的模型解压到你的模型文件夹的相对路径中,上面代码用于下载文件)

tokenizer = AutoTokenizer.from_pretrained(local_dir, trust_remote_code=True)

model = AutoModel.from_pretrained(local_dir, trust_remote_code=True)


问题:https://github.com/THUDM/ChatGLM-6B/issues

[BUG/Help]gcc编译第一个kernel报错,编译第二个成功,但是无法加载so · Issue #229 · THUDM/ChatGLM-6B (github.com)

[Feature] <怎样才能实现真.离线模式> 

 https://github.com/THUDM/ChatGLM-6B/issues/253

[BUG/Help] Windows 下 INT-4 量化模型无法加载

https://github.com/THUDM/ChatGLM-6B/issues/162













Chatglm-本地部署(windows/CPU/GPU)的评论 (共 条)

分享到微博请遵守国家法律