前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【保姆级】基于腾讯云云服务器CVM部署ChatGLM3-6B

【保姆级】基于腾讯云云服务器CVM部署ChatGLM3-6B

原创
作者头像
buzzfrog
修改2023-11-08 15:23:18
1.6K1
修改2023-11-08 15:23:18
举报
文章被收录于专栏:云上修行云上修行

概述

本文主要介绍 ChatGLM3-6B 的保姆级部署教程,在使用和我相同配置的腾讯云云服务器(是国内的服务器哦!这个难度,懂得都懂),保证一次成功。

ChatGLM3介绍

ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:

更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能。

更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。

更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM3-6B-Base、长文本对话模型 ChatGLM3-6B-32K。

ChatGLM3-6B系列分为如下三个:

模型

序列长度

ChatGLM3-6B

8k

ChatGLM3-6B-Base

8k

ChatGLM3-6B-32K

32k

购买腾讯云云服务器CVM

我购买的配置详见下图:

在购买腾讯云云服务器时,需要选中后台自动安装GPU驱动,具体版本请见下图。

由于我购买的是国内成都区域,由于国内github的DNS的污染问题,如果发现网速很慢,建议 sudo vim /etc/hosts 做一下域名绑定。

部署ChatGLM3-6B

这里部署的版本是ChatGLM3-6B这个版本。

构建账户环境

代码语言:txt
复制
adduser sd
sudo usermod -aG sudo sd

安装conda

命令行使用su - sd登陆到sd账号下,安装conda。由于是国内成都区域,速度较慢,因此使用了nohup。

代码语言:txt
复制
nohup wget "https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-x86_64.sh" &

sh Anaconda3-2023.03-Linux-x86_64.sh

安装完成后执行 “bash”命令,重新载入bash终端,确保conda命令可用。最好exit退出再登陆。

代码语言:txt
复制
conda create -n sd python=3.10.6

创建完成后切换至sd环境

代码语言:txt
复制
conda activate sd

安装chatglm3-6b

代码语言:txt
复制
git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3
pip install -r requirements.txt

如果pip install -r requirements.txt执行得特别慢,可以更换为清华源,如下所示:

代码语言:txt
复制
pip install -r requirements.txt --index-url https://pypi.tuna.tsinghua.edu.cn/simple

由于huggingface在腾讯云云服务器上实在是太慢了,因此改为使用modelscope。vim进入此目录下web_demo.py文件,如下修改:

代码语言:shell
复制
(sd) sd@VM-0-11-ubuntu:~/ChatGLM3$ git diff web_demo.py
diff --git a/web_demo.py b/web_demo.py
index 58ff3dc..f272219 100644
--- a/web_demo.py
+++ b/web_demo.py
@@ -1,10 +1,16 @@
-from transformers import AutoModel, AutoTokenizer
+from modelscope import AutoTokenizer, AutoModel, snapshot_download
+# from transformers import AutoModel, AutoTokenizer
 import gradio as gr
 import mdtex2html
 from utils import load_model_on_gpus

-tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
-model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).cuda()
+model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision = "v1.0.0")
+tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
+model = AutoModel.from_pretrained(model_dir, trust_remote_code=True).half().cuda()
+
+# tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
+# model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).cuda()
+
 # 多显卡支持,使用下面两行代替上面一行,将num_gpus改为你实际的显卡数量
 # from utils import load_model_on_gpus
 # model = load_model_on_gpus("THUDM/chatglm3-6b", num_gpus=2)
@@ -105,4 +111,4 @@ with gr.Blocks() as demo:

     emptyBtn.click(reset_state, outputs=[chatbot, history, past_key_values], show_progress=True)

-demo.queue().launch(share=False, inbrowser=True)
+demo.queue().launch(share=False, server_name="0.0.0.0", inbrowser=True)

执行脚本:

代码语言:txt
复制
nohup python web_demo.py &

注意:腾讯云安全组需要放开TCP:7860端口。

总结

整个过程,相对于我的想象,要简单很多,在界面执行上,相对比较迅速,值得试用。不过,ChatGLM3-6B对显存的占用上有12GB。下面是nvidia-smi的输出:

因此,如果对话过长,会有OutOfMemory的问题。小伙伴们有解决方案,欢迎评论区留言哦!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • ChatGLM3介绍
  • 购买腾讯云云服务器CVM
  • 部署ChatGLM3-6B
    • 构建账户环境
      • 安装conda
        • 安装chatglm3-6b
        • 总结
        相关产品与服务
        云服务器
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档