部署ChatGLM3-6B
本案例以 “ChatGLM3-6B” 模型为例,指导如何在平台开发环境中部署模型。
ChatGLM3-6B:是 ChatGLM3 系列中的开源模型,在保留了前两代对话流畅、部署门槛低等优秀特性的基础上,ChatGLM3 具备更强大的基础模型、更完整的功能支持、更全面的开源序列,详情可参考 ChatGLM3-6B 官方 (opens new window)。
# 创建项目
单击平台项目页右上角的 创建项目,随后在弹框中配置项目的基本信息。
- 项目名称:可自定义,如 “ChatGLM3-6B”。
- 项目描述:如 “部署并体验与ChatGLM3-6B对话”。
单击 确定,项目创建成功,并进入 初始化开发环境 引导页。
在 初始化开发环境 页中配置如下信息,其他参数保持默认值。
资源配置: 选择 P1.medium,小于该配置,模型可能加载失败。
镜像:选择 公开 下的 chatglm3-6b(作者为 “趋动云小助手”)。
为便于您快速体验已为您准备好镜像,该镜像是在官方镜像 PyTorch2.1.0 Tensorflow2.15.0 中安装了 “ChatGLM3-6B” 官方给出的 requirements.txt,您也可自行制作该镜像。
模型:选择 公开 下的 chatglm3-6b(作者为 “趋动云小助手”)。
自动停止(高级设置 中):选择 8小时。
开放端口(高级设置 中):添加 1 个端口用于网页形式访问部署好的 ChatGLM3-6B。内部端口,填写 8501;备注为 “chatglm3-6b 网页形式访问”。
随后单击右下角 我要上传代码,暂不启动,进入 项目代码 页。
# 上传代码
项目代码 页中单击
按钮。
选择 网页上传文件,并上传 已获取的代码 (opens new window)。
说明:链接中的代码为官方获取,修改了模型路径后打包的,您也可自行
git clone https://github.com/THUDM/ChatGLM3-6B
获取官方代码并上传,但需注意修改代码中的模型路径。在代码压缩包后的 ... 中选择 解压缩,解压刚才上传的代码包。
解压完成后,单击左边栏 结束编辑,退出代码编辑模式。
# 部署
单击右上角 启动开发环境,并等待开发环境启动完成。
单击 进入开发环境,默认进入 JupyterLab 页面。
顶部切换至 网页终端。
在网页终端中执行如下命令,进入 ChatGLM3-main 目录。
cd ChatGLM3-main
选择一个您想体验的demo进行部署。
# 部署网页版对话demo
执行如下命令,部署基于 Streamlit 的网页版对话demo。
streamlit run basic_demo/web_demo2.py --server.address='0.0.0.0' --server.port=8501
返回如图 Network URL 时,使用 http:外部访问 访问 Streamlit 网页,随后等待 2-3 分钟模型加载完成,便会出现如下图所示的对话页面,可输入您的问题体验与 ChatGLM3 的对话,首个问题可能响应时间较长,还需耐心等待。
部分浏览器默认为 https 访问,因此可能会失败,可打开浏览器无痕模式再行访问。
# 部署命令行对话demo
执行如下命令,部署命令行对话 demo。
python basic_demo/cli_demo.py
等待最终 Loading checkpoint shards: 100%
且返回 用户:
字样,如图所示。
在 用户:
行输入您的问题并回车,等待 ChatGLM 回答您的问题。
Tips:
- 该模式下对特殊字符不敏感,建议以纯文字形式提问,不夹带空格和其他特殊字符。
- 首次提问,需稍微等待 20s 调取问答程序,然后再返回答案,后续问答无此限制。
- 输入 clear 可以清空对话历史,输入 stop 终止程序。
# 部署混合模式demo
执行如下命令,部署混合模式的 demo。
streamlit run composite_demo/main.py
返回如图两行 URL 时,使用 http:外部访问 访问 Streamlit 网页,随后等待 2-3 分钟模型加载完成,便会出现如下图所示的对话页面。
部分浏览器默认为 https 访问,因此可能会失败,可打开浏览器无痕模式再行访问。
- 输入您的问题体验与 ChatGLM3 的对话,首个问题可能响应时间较长,还需耐心等待。
- 也可以切换模式,体验其他功能。
# 其他参考
# 制作镜像
本次制作,dockerfile 中所进行的安装与配置,是提前在开发环境中通过部署 ChatGLM3-6B 验证其可行性的。您平时制作镜像也应先通过开发环境确认安装可行,再通过 制作镜像 将配置好的环境固定,以便长期使用。
参考本段,制作 ChatGLM3-6B 部署所需的环境镜像,上述所选镜像即是按如下描述制作。
- 平台首页左侧导航栏选择 镜像。
- 单击该页右上角 制作镜像。
- 在 制作镜像 页填写相关信息。
- 镜像名称:chatglm3-6b,您也可自行定义。
- 基础镜像:选择官方镜像 “PyTorch2.1.0 Tensorflow2.15.0”。
- 上传文件:将获取的代码中
requirements.txt
文件上传。 - 镜像描述:用于部署 ChatGLM3-6B。
- Dockerfile:填写如下内容。
RUN pip config set global.index-url https://pypi.virtaicloud.com/repository/pypi/simple COPY requirements.txt /tmp/ RUN pip install -r /tmp/requirements.txt
- 单击 构建,等待镜像构建成功。
# 定制代码
若您不使用本文档提供的代码,那么代码获取后需修改各 demo 中模型的加载路径。因为官方代码中默认为 THUDM/chatglm3-6b
,而平台默认挂载模型到环境的 /gemini/pretrain
目录下。
下述关于代码行的仅为参考,如果是最新的代码,可能所在行会有些许差异,可以全文搜索
THUDM/chatglm3-6b
做替换。
网页版对话demo
- “~/ChatGLM3-main/basic_demo/web_demo.py” 约第 8 行中,修改
THUDM/chatglm3-6b
为/gemini/pretrain
。
- “~/ChatGLM3-main/basic_demo/web_demo2.py” 约第 6 行如下,修改
THUDM/chatglm3-6b
为/gemini/pretrain
。MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')
- “~/ChatGLM3-main/basic_demo/web_demo.py” 约第 8 行中,修改
命令行对话demo “~/ChatGLM3-main/basic_demo/cli_demo.py” 约第 6 行如下,修改
THUDM/chatglm3-6b
为/gemini/pretrain
。MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')
混合模式demo “~/ChatGLM3-main/composite_demo/client.py” 约第 16 行如下,修改
THUDM/chatglm3-6b
为/gemini/pretrain
。MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')