【ChatGLM2-6B】在只有CPU的Linux服务器上进行部署

简介

ChatGLM2-6B 是清华大学开源的一款支持中英双语的对话语言模型。经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,具有62 亿参数的 ChatGLM2-6B 已经能生成相当符合人类偏好的回答。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。

准备工作

安装wget

  • 删除自带的wget: yum remove wget
  • 重新安装wget: yum -y install wget
  • 检测wget版本: rpm -qa | grep "wget"

若出现以下,则成功。

[root@localhost ~]# rpm -qa | grep "wget"
wget-1.14-18.el7_6.1.x86_64

安装ANACONDA

  • 官网下载页面: https://www.anaconda.com/download#downloads
  • Linux64位下载: wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
  • 安装: sh Anaconda3-2023.09-0-Linux-x86_64.sh
  • 会出现很多信息,一路yes下去,观看文档用q跳过
  • 查看版本验证是否安装成功: conda -V
(base) [root@localhost ~]# conda -V
conda 23.7.4

安装pytorch

  • 前往pytorch官网: https://pytorch.org/
  • 选择StableLinuxCondaPythonCPU
  • 执行给出的指令: conda install pytorch torchvision torchaudio cpuonly -c pytorch

创建虚拟Python环境

  • conda创建虚拟环境: conda create --name ChatGLM2 python=3.10.6 -y
  • –name 后面ChatGLM2为创建的虚拟环境名称
  • python=之后输入自己想要的python版本
  • -y表示后面的请求全部为yes,这样就不用自己每次手动输入yes了。
  • 激活虚拟环境: conda activate ChatGLM2

大语言模型ChatGLM2-6B安装

  • 源码/文档: https://github.com/THUDM/ChatGLM2-6B
  • 下载源码: git clone https://github.com/THUDM/ChatGLM2-6B
  • 创建ChatGLM2项目的虚拟环境: python -m venv venv
  • 激活虚拟环境venv: source ./venv/bin/activate
  • 安装依赖(豆瓣源): pip install -r requirements.txt -i https://pypi.douban.com/simple
  • 参数:-r 是read的意思,可以把要安装的文件统一写在一个txt中,批量下载
  • 参数:-i 后面是下载的网址,这里使用的是豆瓣源,下载安装大概十几分钟
  • 清华大学源: pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
  • 阿里云源: pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
  • 也可以离线安装
pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install -r requirements.txt --no-index --find-links=/home/ChatGLM2/chatglm2-dependence
  • 安装依赖: pip install gradio -i https://pypi.douban.com/simple

从Hugging Face Hub下载模型实现和参数文件

  • 在上面的ChatGLM2-6B目录下新建THUDM文件夹
  • THUDM文件夹下新建chatglm2-6b文件夹和chatglm2-6b-int4文件夹
  • 下载模型实现和参数文件: git clone https://huggingface.co/THUDM/chatglm2-6b
  • 也可以仅下载模型实现: GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm2-6b
  • 然后从清华大学下载模型参数文件: https://cloud.tsinghua.edu.cn/d/674208019e314311ab5c/?p=%2F&mode=list
  • 把下载后的所有文件放到上面新建的chatglm2-6b文件夹
  • 如果需要使用量化模型和参数,chatglm2-6b-int4的模型和参数文件地址: https://huggingface.co/THUDM/chatglm2-6b-int4,下载方式与chatglm2-6b一样

修改启动脚本

如果使用有chatglm2-6b-int4,需要修改cli_demo.pyapi.pyweb_demo.pyweb_demo2.py

# 修改前
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).cuda()

# 修改后
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b-int4", trust_remote_code=True)
# GPU用cuda(),CPU用float()
model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4", trust_remote_code=True).float()

修改 web_demo.py文件

  • 除了需要按上面修改,还需要在最后一行,将demo.queue().lanuch函数改为如下
demo.queue().launch(share=True, inbrowser=True, server_name = '0.0.0.0')
  • predict函数中,第二句话改为
for response, history in model.stream_chat ( tokenizer ,input ,history,past_key_values=past_key_values, return_past_key_values=False, max_length=max_length, top_p=top_p,
temperature=temperature)

启动

  • 启动基于 Gradio 的网页版 demo: python web_demo.py
  • 启动基于 Streamlit 的网页版 demo: streamlit run web_demo2.py
  • 网页版 demo 会运行一个 Web Server,并输出地址。在浏览器中打开输出的地址即可使用。 经测试,基于 Streamlit 的网页版 Demo 会更流畅。
  • 命令行 Demo: python cli_demo.py

API部署

  • 安装额外的依赖: pip install fastapi uvicorn -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
  • 运行: python api.py
  • 通过 POST 方法进行调用:
curl -X POST "http://192.168.3.109:8000" -H "Content-Type: application/json" -d "{\"prompt\": \"你好\", \"history\": []}"
  • 得到的返回值为
{"response":"你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。","history":[["你好","你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。"]],"status":200,"time":"2023-10-18 14:26:48"}

可视化交互界面

在这里插入图片描述

协议

  • 本仓库的代码依照 Apache-2.0 协议开源,ChatGLM2-6B 模型的权重的使用则需要遵循 Model LicenseChatGLM2-6B 权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用。

总结

  • 如果机器的内存资源不多,命令行交互模式、可视化模式、API模式,通常只能运行一种
  • 再启动另外一个脚本时,会导致前一个启动的进行被killed
  • ChatGLM2在多个中文数据集上测试结果优于GPT,比上代版本ChatGLM1有较大改善,受限于训练数据和资源,从实际效果看推理对话内容仍比较简单,本次部署在云端的CPU,推理过程需要几分钟,甚至十几分钟,不过重在体验,看下效果。有兴趣的话使用GPU能够较大程度提高反应速度,几秒就能给出答案。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
为了在服务器上部署ChatGLM-6B,你可以按照以下步骤进行操作: 1. 首先,你需要在服务器上进行本地化部署。这意味着你需要将ChatGLM-6B代码和模型文件上传到服务器上。你可以使用git clone命令从GitHub上克隆ChatGLM-6B代码,或者直接下载代码并上传到服务器上。 引用提供了git clone https://github.com/THUDM/ChatGLM2-6B命令,你可以使用它来从GitHub上克隆ChatGLM-6B代码。 2. 接下来,你需要下载ChatGLM-6B模型。你可以从提供的链接或者其他途径下载模型文件,并将其放置在服务器上。 3. 一旦你将代码和模型文件上传到服务器上,你就可以开始部署WebUI界面、命令行方式或API调用的方式之一。 如果你想使用WebUI界面进行部署,你可以执行web_demo.py脚本。引用提供了执行web_demo.py的命令 python web_demo.py。 如果你想使用命令行方式进行部署,你可以进入代码目录,并执行相关的命令。 如果你想使用API调用的方式进行部署,你可以根据API文档中提供的说明进行操作。 总之,你可以根据你的需求选择适合你的部署方式,并按照相应的指导进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ChatGLM-webui 清华大语言模型的ui项目.rar](https://download.csdn.net/download/Gefangenes/88152775)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ChatGLM2-6B部署及微调](https://blog.csdn.net/rexxa/article/details/131605344)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太空眼睛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值