部署chatglm遇到的坑

本文指导如何在Python环境中部署Chatglm-6b模型,涉及文件下载、模型量化、包管理(包括处理国内镜像源和gradio版本问题)、以及GPU/CPU使用注意事项。部署过程虽快但有多个坑需注意。
摘要由CSDN通过智能技术生成

目录

一、准备工作

1. 文件准备

2. 代码修改部分

3. 包的安装下载

4. GPU or CPU的坑

二、部署测试

三、总结


:默认你已经装好了conda、python等基础环境包。以下的每个步骤都有坑。

一、准备工作

1. 文件准备

我们得下载两份资料,第一份从GitHub仓库下载源代码,第二份从HuggingFace上下载模型权重,这两个放在同一个根目录下。

需要注意的坑:个人建议还是直接从网站上下载,不要去使用命令下载,那样会很慢,可能你都部署完了命令的方式还没下载完,HuggingFace里面有几个较大的文件,可能网络速度不稳定下载容易中断,建议去清华云盘上下载。

2. 代码修改部分

这一部分主要涉及到模型量化问题,其实就是利用模型性能的下降来换取硬件存储需求方面的下降,量化模型的速度会低于全量模型,但chatglm-6b在4-bit的量化下对话其实还比较流畅,影响不大。

相应的硬件需求:全量模型多轮对话大概需要14-15GB显存,IN8多轮对话大概需要10GB显存,IN4多轮对话大概需要6-7GB显存。

看你个人电脑的硬件条件,以下为IN4的代码,可以针对你想选择的量化值进行修改。

你需要修改 web_demo.pyweb_demo.pyold_web_demo2.pycli_demo.pyapi.py等文件中涉及模型部分的代码,一般在文件的开头或者结尾附近。(你使用哪个文件就改哪个文件,不需要全改)

tokenizer = AutoTokenizer.from_pretrained("你自己的文件路径/chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("你自己的文件路径/chatglm-6b", trust_remote_code=True).half().quantize(4)

3. 包的安装下载

直接执行以下代码即可:

pip install -r requirements.txt

这里可能会出现包下载失败的情况,最基本的也就是找不到包或者连接不上的问题,这类问题都可以通过加入国内镜像源解决,这里简单提供几种:

pip install 安装包名字 -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com //豆瓣镜像网站
pip install 安装包名字 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com //豆瓣
pip install 安装包名字 -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn //清华大学

// 还有几种
http://mirrors.aliyun.com/pypi/simple/ 阿里云
https://pypi.mirrors.ustc.edu.cn/simple/ 中国科技大学
http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学

神坑:安装完所有包后,会自动帮我们安装较高版本的gradio,会报出下面错误,这会造成后续模型部署好开始测试时,模型没有回复,所以你需要手动安装较低版本的gradio,例如gradio==3.39.0包,但这里会发现3.39.0在好几个镜像源上都找不到,所以个人建议如果找不到的话可以下载gradio==3.40.0的包。

GradioDeprecationWarning: The `style` method is deprecated. Please set these arguments in the constructor instead.
  user_input = gr.Textbox(show_label=False, placeholder="Input...", lines=10).style(

4. GPU or CPU的坑

当你使用CPU推理的时候可能会出现以下错误:

RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'

报错原因主要是因为模型模型做了半精度,即fp16,也就是说在前面的代码中,你应该是执行过这一句:

model = model.half()

而fp16,在CPU上是不能生效的,如果用CPU推理,只能老老实实的用fp32。

二、部署测试

直接执行:

python web_demo.py

 这一步时间主要花费在加载权重上,大概五六分钟即可加载完毕,出现以下图片说明你部署成功了。

自己随便测两个,其实感觉效果一般,看我问他路线其实还是不太符合现实的,也不够详细:

三、总结

只要你有8GB的内存显卡,就能够部署chatglm-6b,部署速度也很快,但是部署过程中确实有很多坑,你需要慢慢去梳理,而且最终的效果其实并不是很好,接下来会继续部署一些大模型,例如chatglm2-6b、chatglm3,并对比以下效果。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值