文档首页/ 弹性云服务器 ECS/ 最佳实践/ GPU实例最佳实践/ 使用GPU实例基于ChatGLM-6B语言模型搭建AI对话机器人
更新时间:2026-04-22 GMT+08:00
分享

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

应用场景

ChatGLM 作为面向中文场景优化的大语言模型,可广泛应用于智能客服、业务问答、知识检索、办公助理等企业级对话场景,帮助组织以较低成本构建高质量的智能交互能力,加速业务流程智能化升级。

方案架构

图1 基于GPU实例部署ChatGLM-6B对话机器人示意图

方案优势

依托华为云ECS GPU实例部署ChatGLM,可获得高性能、可控性强的专属算力环境,支持模型本地化部署、数据安全可控、性能稳定可预期,并能按需扩展资源,帮助企业快速构建自主可控的智能对话能力,实现AI服务的高效落地与持续演进。

资源和成本规划

表1 资源和成本规划

资源

资源说明

成本说明

安全组

入方向规则:

  • 优先级:1
  • 策略:允许
  • 类型:IPv4
  • 协议端口:TCP: 8000
  • 源地址:0.0.0.0/0

免费

弹性云服务器

  • 计费模式:包年/包月
  • 可用区:可用区1
  • 规格:pi2.2xlarge.4。更多规格推荐,请参见表2
  • 镜像:Ubuntu 22.04 server 64bit with NO Driver(40GiB),GPU驱动为535.161.08,CUDA为12.2.0。
  • 系统盘:40GiB
  • 数据盘:100GiB
  • 弹性公网IP:现在购买
  • 线路:全动态BGP
  • 公网带宽:按流量计费
  • 带宽大小:300 Mbit/s

ECS涉及以下几项费用:

  • 云服务器
  • 云硬盘
  • 弹性公网IP

具体的计费方式及标准请参考计费模式概述

表2 ChatGLM-6B运行可选的GPU弹性云服务规格

模型名称

最小所需规格

GPU卡

ChatGLM-6B

pi2.2xlarge.4

T4(16G)*1

p2s.4xlarge.8

V100(32G)*1

pi3.6xlarge.4

A30(24G)*1

请联系华为云技术支持选择最适合您部署的GPU卡资源服务器。

前提条件

  • 弹性云服务器所在安全组添加了如表3所示的安全组规则,具体步骤参见为安全组添加安全组规则
    表3 安全组规则

    方向

    优先级

    策略

    类型

    协议端口

    源地址

    入方向

    1

    允许

    IPv4

    TCP: 8000

    0.0.0.0/0

实施步骤

  1. 创建GPU弹性云服务器。

    本操作以安装了Ubuntu操作系统的pi2.2xlarge.4实例为例。实例配置请注意如下参数,其他参数说明,请参见自定义购买ECS

    1. 实例:pi2.2xlarge.4。更多规格推荐,请参见表2
    2. 镜像:Ubuntu 22.04 server 64bit with NO Driver(40GiB),勾选“自动安装GPU驱动”,GPU驱动为535.161.08,CUDA为12.2.0。

      建议选择Huawei Cloud EulerOS 2.0或Ubuntu 22.04中未安装驱动的公共镜像,自动安装GPU驱动。建议驱动版本:Driver-535.161.08,CUDA-12.2.0。

      图2 GPU实例镜像选择和自动安装GPU驱动选择
    3. 弹性公网IP:选择“现在购买”,方便下载依赖环境下载和调用模型接口进行推理。
    4. 安全组:入方向放通TCP: 8000端口,用于访问WebUI服务。具体步骤参见为安全组添加安全组规则
    5. 存储与备份:为保证服务稳定运行与数据安全,建议采用系统盘与数据盘分离部署的架构。
      • 系统盘:40GiB,用于安装操作系统、驱动及运行环境。
      • 数据盘:100GiB,用于独立存储模型文件、生成图片及相关业务数据等。

  2. 驱动和CUDA的前置条件检查。

    执行以下命令,查看显卡基本信息。

    nvidia-smi

    如果使用的不是推荐的镜像和驱动版本,请参考手动安装GPU加速型ECS的Tesla驱动方法更新驱动到535版本,CUDA更新到12.2。

  3. 初始化数据盘,用于存放模型文件及相关资源。

    GPU弹性云服务器创建完成后,请参见初始化Linux数据盘进行数据盘初始化。本实践将数据盘挂载至/mnt/model目录,您可以根据业务需要自行定义目录。

  4. 创建conda虚环境。

    1. 执行以下命令,下载miniconda安装包
      wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    2. 执行以下命令,并按照回显提示信息进行操作,安装miniconda。
      bash Miniconda3-latest-Linux-x86_64.sh
    3. 执行以下命令,将conda环境变量添加到启动文件中。
      echo 'export PATH="$HOME/miniconda3/bin:$PATH"' >> ~/.bashrc
      source ~/.bashrc
    4. 执行以下命令,并按照回显提示信息进行操作,创建基于python3.10的虚环境。
      conda create -n chatglm python=3.10
      conda activate chatglm

  5. 下载ChatGLM-6B模型。

    1. 执行以下命令,创建下载模型脚本。
      vim download_models.py

      按"i"键进入编辑模式,插入以下内容:

      from modelscope import snapshot_download
      model_dir = snapshot_download('ZhipuAI/ChatGLM-6B', cache_dir='/mnt/model', revision='master')

      模型名称为ZhipuAI/ChatGLM-6B,本实践中模型的存储路径为/mnt/model,可以根据业务需要更换目录。

      添加完成后,按“Esc”键退出编辑模式,并输入“:wq”后按“Enter”键,保存并退出文件。

    2. 执行以下命令,下载ChatGLM模型。
      pip install modelscope
      python download_models.py

      等待模型下载完成。回显中显示“Download model 'ZhipuAI/ChatGLM-6B' successfully.”,则表示模型下载完成。

    modelscope是国内模型开源社区,国内下载会更快,如果在国外,请使用Hugging Face进行下载。

  6. 下载ChatGLM示例demo。

    1. 执行以下命令,下载ChatGLM demo文件
      git clone https://github.com/zai-org/ChatGLM-6B.git
    2. 安装demo所需依赖。
      cd ChatGLM-6B/
      sed -i '/torch/d' requirements.txt
      pip install torch==2.1.2+cu121 torchvision==0.16.2+cu121 --index-url https://download.pytorch.org/whl/cu121
      pip install -r requirements.txt

      等待所需依赖下载完成。

  7. 以CLI模式启动AI对话机器人。

    执行以下命令,以cli模式启动AI对话机器人。
    sed -i 's|"THUDM/chatglm-6b"|"/mnt/model/ZhipuAI/ChatGLM-6B"|g' cli_demo.py
    python cli_demo.py

    sed命令需要将从Hugging Face拉取的模型替换为本地的模型,本地模型的路径请以下载ChatGLM-6B模型中的配置为准。

  8. 以web模式启动AI对话机器人。

    1. 执行以下命令,以web模式启动AI对话机器人。
      pip install streamlit
      pip install streamlit_chat
      export STREAMLIT_SERVER_HEADLESS=1
      sed -i 's|"THUDM/chatglm-6b"|"/mnt/model/ZhipuAI/ChatGLM-6B"|g' web_demo2.py
      streamlit run web_demo2.py --server.port 8000

    2. 使用本地浏览器访问http://<弹性公网IP>:8000打开网页与AI进行聊天对话。

    至此模型就部署完毕并验证正常。您可以通过ECS的CLI或者通过访问http://<弹性公网IP>:8000 打开网页来与机器人进行对话。

相关文档