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

Chatglm-本地部署(windows)-自己ai组合的第一步

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

官方基于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 量化模型无法加载


Chatglm-本地部署(windows)-自己ai组合的第一步的评论 (共 条)

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