![图源:https://arxiv.org/pdf/2303.18223.pdf](https://i-blog.csdnimg.cn/direct/6e17fa5567fe469a8254e5fa6449d2cb.png#pic_center)
在windows部署ChatGLM-6B
本文适合初级入门同学阅读参考,旨在介绍如何本地离线部署大语言模型,因此选了以部署资源要求较低的大模型ChatGLM-6B为例,其他大模型的部署大同小异。一般是选择在Linux系统上部署大模型的,本次就走一下不一般的路 – 在windows上部署。当然,系统的选择可不是本文的重点。
部署前的准备
因为在windows直接安装部署大模型会出现各种问题,所以先安装子系统WSL(不清楚怎么安装的可以参考文章),然后在子系统上安装官方要求的python环境和版本,最后就可以根据大模型官方教程进行模型部署了。
(后期建议使用python集成环境Anaconda来部署,即在Anaconda环境内启动模型api服务,优点是python环境隔离,因为每种大模型的python依赖都可能很有个性。但要注意在子系统WSL和在宿主windows下装conda有些许区别。)
下载模型文件
进入安装了python环境的子系统WSL下,下载模型文件ChatGLM-6B。使用git clone下载文件操作如下:
因为模型文件较大,根据指引需要先安装git lfs。
模型下载过程需要好几个小时,需要耐心等待。
安装模型依赖
根据教程:
依赖安装过程如果出现包错误,请尝试更换镜像源或许可以得到解决。
启动服务
依赖安装完之后,cli跑起来验证模型部署成功。看到如下界面则说明运行成功。
但是这种方式是每次运行完释放资源,之后每次运行脚本都会重新启动模型,进程非常驻的。我们接下来使用api来部署运行。参考github教程,我们直接克隆仓库代码,安装相关依赖运行api.py脚本。命令如下:
我们看到服务启动成功。
尝试调用api,成功响应如下:
至此在windows部署ChatGLM-6B的api服务部署成功了。
看一眼GPU面板。
常用命令
上文说到,为了环境隔离,一般会选择在Anaconda环境下部署。以下是在Anaconda环境下的一些Anaconda常用命令以及部署微调时经常用到的Linux基本命令,放这里备忘各取所需。
conda info --envs #查看环境 conda info --e
conda create -n env_name #创建一个虚拟环境
conda activate env_name #激活环境/进入环境
nvidia-smi #显示所有GPU的当前信息状态
nvidia-smi -l 1 #间隔1秒刷新GPU信息
nvidia-smi -q #查询所有GPU的当前详细信息
nvidia-smi -L #列出当前所有GPU设备
watch -n 0.5 nvidia-smi #动态地观察 GPU 的状态
ls -lh /home/mw/input/ChatGLM6B #检查模型文件正确挂载(GLM)
后记
一般情况我们不会考虑直接使用全量模型去支撑业务生产,太耗资源了。于是有很多的模型加速方案,比如压缩量化、剪枝、蒸馏等。但目前看起来都会对模型性能效果有影响,比如量化,官方我说影响微小,但实测不然,甚至无法满足场景需求。最终还是要看是否愿意牺牲业务效果来换性能了,如果从全量过渡到优化加速后有损的模型都存在一个问题,就是模型效果要重新评估。
最新的GLM-4貌似官方集成了vLLM,不知道效果如何。使用vLLM官方代码对百川2和GLM-4等模型启动优化,倒是看到了加速效果,原理是显存管理,但看起来还是有损。
大语言模型的本地部署就介绍到这吧,感谢阅读。后续我们再聊一聊微调。如有兴趣其他更多关于AI落地资料还可以参看这里:AI应用落地。
如果还学不会,来公众号【贝可林】找我,我骑共享单车到你家一起探讨。
- 你打到几周目了呀?