Windows:ChatGLM-6B的搭建、训练及部署
项目地址:Github:https://github.com/THUDM/ChatGLM-6B/Hugging Face Hub(模型地址):https://huggingface.co/THUDM/chatglm-6b
操作系统:Windows 7/python版本:python-3.8.8/独立显卡:NVIDIA GeForce RTX 2070 Super 8G。
安装完成环境,启动web_demo.py报错了:RuntimeError: Library cublasLt is not initialized
私以为是CUDA版本的问题,Windows 7最高支持版本10.2 ,想升级到11.*,需要升级成Windows10试一下。
2023.07.26 19:00
升级到Windows10可以正常运行了。
软硬件要求:
- python版本要求:3.8以上
- Windows系统:Windows 10及以上,推荐有NVIDIA显卡(最好NVIDIA显卡20系列以上)
- 显卡要求:显存必须6G以上GPU
一、搭建步骤
1.首先下载项目:https://github.com/THUDM/ChatGLM-6B和模型:https://huggingface.co/THUDM/chatglm-6b
将模型放到项目的子文件中:
比如将项目放在D:\ChatGLM-6B;可以在ChatGLM-6B文件夹建立子文件夹chatglm-6b:将模型放到里面。
提示:模型比较大,下载需要等待。
2.将NVIDIA GeForce显卡驱动升级到最新版本,驱动下载地址:https://www.nvidia.com/Download/index.aspx#
安装cudatoolkit:https://developer.nvidia.com/cuda-toolkit-archive
在C:\Program Files\NVIDIA Corporation\NVSMI启动命令行:输入 nvidia-smi 可以看到cuda的版本。
如果提示类似“command not found”的信息,则CUDA没有成功安装或者没有正确添加环境变量。
3.安装pytorch(注意cuda版本号)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
4.进入到项目D:\ChatGLM-6B目录下,执行以下命令,进行安装相关包:
pip3 install -r requirements.txt
至此环境已经安装完成。
二、启动项目
使用pycharm或者其他IDE打开项目
1.启动web
运行web_demo.py,需要修改代码中的几个参数(模型地址/量化方式):
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True) model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).half().cuda()
修改为:
tokenizer = AutoTokenizer.from_pretrained("chatglm2-6b", trust_remote_code=True) model = AutoModel.from_pretrained("chatglm2-6b", trust_remote_code=True).half().quantize(4).cuda()
注意:
half().quantize(4).cuda()这个需要根据你电脑实际显卡GPU进行更改。
# 6G 显存可以 4 bit 量化 model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(4).cuda() # 10G 显存可以 8 bit 量化 model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(8).cuda() # 14G 以上显存可以直接不量化 model = AutoModel.from_pretrained("model", trust_remote_code=True).half().cuda()
如果需要启动局域网访问,
demo.queue().launch(share=False, inbrowser=True)
修改为:
demo.queue().launch(share=True, inbrowser=True, server_name='0.0.0.0', server_port=9072)
server_port为端口号,当然也可以不修改,使用默认端口号。
2.启动api接口
同上修改模型地址/量化方式
python web_demo.py
3.启动命令行模式
同上修改模型地址/量化方式
python cli_demo.py
三、训练、验证模型
1.训练
安装依赖:pip install rouge_chinese nltk jieba datasets
创建train.json文件,格式:
{ "content": "你的问题?", "summary": "你的答案。" }
配置OK之后,执行
bash train.sh
注意:
训练的时候关闭启动的网页,接口或者命令行,这些因素对训练的速度都有影响。下面是我训练一个问题的结果,之前没关运行的接口跑的特别慢,关闭后速度大幅度提升。最终跑了1day4小时22分钟。。。
2.验证
同理修改evaluate.sh后执行:
bash evaluate.sh
3.部署
参考启动项目用训练生成的模型替换模型地址,训练生成的模型路径一般为:
\ptuning\output\adgen-chatglm-6b-pt-128-2e-2