Chatglm-本地部署(windows)-自己ai组合的第一步
官方基于wsl的windows部署教程:
https://github.com/ZhangErling/ChatGLM-6B/blob/main/deployment_windows.md
本教程基于:
windows11
CUDA 12.1
Anaconda
Nvidia
显卡2080ti

开始:
查看当前电脑的CUDA版本:
打开“命令提示符(CMD)”
输入nvidia-smi


下载所用文件:
下载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整合版,适用于电脑配置不高的人群)

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

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


创建环境
输入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 量化模型无法加载