在GPU实例上基于ChatGLM-6B语言模型搭建AI对话机器人

更新时间:
复制 MD 格式
一键部署
我的部署

本文介绍如何使用阿里云GPU云服务器,基于ChatGLM-6B语言模型快速搭建AI对话机器人。

背景信息

ChatGLM是一个开源的预训练语言模型,由清华大学和智谱AI联合开发。它采用了GLM(General Language Model)架构,这是一种基于Transformer的语言模型架构,是一个支持中英双语问答的对话语言模型,专门针对中文进行了优化。

而ChatGLM-6B是ChatGLM系列中的一个版本,具有60亿参数。它使用了和ChatGPT相似的技术,经过约1 TB标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,能够生成符合人类偏好的回答。

ChatGLM-6B的对话界面支持多轮交互,用户可通过输入框发送自然语言问题(如周报撰写、文本描述优化、SQL语法检查等),AI助手即时生成回复。

重要
  • 阿里云不对第三方模型“ChatGLM-6B”的合法性、安全性、准确性进行任何保证,阿里云不对由此引发的任何损害承担责任。

  • 您应自觉遵守第三方模型的用户协议、使用规范和相关法律法规,并就使用第三方模型的合法性、合规性自行承担相关责任。

操作步骤

说明

您可以通过一键部署 快速完成以下操作。

步骤一:创建ECS实例

  1. 前往实例创建页。

  2. 按照界面提示完成参数配置,创建一台ECS实例。

    需要注意的参数如下,其他参数的配置,请参见自定义购买实例。

    • 实例:选择实例规格为ecs.gn7i-c16g1.4xlarge。

    • 镜像:本文使用已部署好推理所需环境的云市场镜像,名称为ai-inference-solution。

    • 公网IP:选中分配公网IPv4地址,带宽计费模式选择按使用流量,带宽峰值设置为100 Mbps。

  3. 添加安全组规则。

    在ECS实例安全组的入方向添加安全组规则并放行50001端口。具体操作,请参见添加安全组规则。

    配置规则时,授权策略选择允许,优先级设为1,协议类型选择自定义 TCP,端口范围填写50001/50001,授权对象设置为0.0.0.0/0。

  4. 创建完成后,在ECS实例页面,获取公网IP地址。

    说明

    公网IP地址用于生成图片测试时访问WebUI服务。

步骤二:下载ChatGLM-6B模型

  1. 使用root用户远程连接ECS实例。

    该市场镜像中,运行环境及模型都安装在/root目录下,连接实例时需使用root用户。具体操作,请参见使用Workbench登录Linux实例。

  2. 为了确保长时间运行的命令不会因会话中断而终止,可以使用screen工具来保持会话在后台运行。

    1. 安装screen。

      如果您还没有安装screen,可以通过以下命令进行安装。

      sudo apt-get update
      sudo apt-get install screen
    2. 启动一个新的screen会话。

      screen -S chatglm-session

      这将启动一个新的名为chatglm-session的screen会话。

  3. 在screen会话中,执行如下命令,下载ChatGLM-6B模型。

    cd /root/chatglm
    git clone https://www.modelscope.cn/ZhipuAI/ChatGLM-6B.git chatglm-6b
    git -C chatglm-6b checkout v1.0.16
    sed -i '33c from .configuration_chatglm import ChatGLMConfig' chatglm-6b/modeling_chatglm.py

    您可以通过按下Ctrl+A然后按D键来分离当前会话,这样即使关闭终端,任务也会继续在后台运行。

    如果您想查看任务的状态或继续工作,可以使用以下命令重新连接到screen会话。

    screen -r chatglm-session

    模型下载大约需要35分钟,回显信息如下所示时,表示模型已下载完成。

    (base) xxx@iZbp11vxgcxxx      :~# cd /root/chatglm
    (base) xxx@iZbp11vxgcxxx      :~/chatglm# git-lfs clone https://huggingface.co/THUDM/chatglm-6b
    WARNING: 'git lfs clone' is deprecated and will not be updated
             with new flags from 'git clone'
    'git clone' has been updated in upstream Git to have comparable
    speeds to 'git lfs clone'.
    Cloning into 'chatglm-6b'...
    remote: Enumerating objects: 445, done.
    remote: Counting objects: 100% (442/442), done.
    remote: Compressing objects: 100% (226/226), done.
    remote: Total 445 (delta 273), reused 349 (delta 216), pack-reused 3
    Receiving objects: 100% (445/445), 133.96 KiB | 714.00 KiB/s, done.
    Resolving deltas: 100% (273/273), done.

步骤三:启动对话服务

  1. 启动服务。

    执行如下命令,开启WebUI服务。

    cd /root/chatglm/ChatGLM-6B
    export STREAMLIT_SERVER_HEADLESS=1
    streamlit run web_demo2.py --server.port 50001 &

    当出现如下回显的时候,表示启动成功。

    (base) root@iZbpxxx9Z:~# cd /root/chatglm/ChatGLM-6B
    (base) root@iZbp1cxxx9Z:~/chatglm/ChatGLM-6B# streamlit run web_demo2.py --server.port 50001 &
    [1] 29335
    (base) root@iZbpxxx9Z:~/chatglm/ChatGLM-6B#
    Collecting usage statistics. To deactivate, set browser.gatherUsageStats to False.
      You can now view your Streamlit app in your browser.
      Network URL: http://xxx3:50001
      External URL: http://xxx7:50001
  2. 访问对话页面。

    打开浏览器,输入http://<ECS公网IP地址>:50001,进入对话Web页面。

  3. 开始聊天。

    在用户命令输入对话框中,输入对话内容,单击发送,即可开始AI对话。

了解更多AIGC实践和GPU优惠

活动入口:立即开启AIGC之旅

image..png