文档

轻量微调和推理ChatGLM模型实践

更新时间:

通过在DSW中微调和推理ChatGLM-6B模型,实现定制化、高交互性的对话系统。ChatGLM-6B是一个开源的、支持中英双语的对话语言模型,基于General Language Model (GLM) 架构,具有62亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署,从而实现更智能、交互性更强的人机对话体验。

准备环境和资源

  • 创建工作空间,详情请参见创建工作空间

  • 创建DSW实例,其中关键参数配置如下。具体操作,请参见创建及管理DSW实例

    • 地域及可用区:进行本实践操作时,建议选择华北2(北京)华东2(上海)华东1(杭州)华南1(深圳)这四个地域。这四个地域在后续操作中下载ChatGLM模型数据时速度更快。

    • 实例规格选择:ecs.gn6v-c8g1.2xlarge。

    • 镜像选择:在官方镜像中选择pytorch:1.12-gpu-py39-cu113-ubuntu20.04

步骤一:下载ChatGLM-6B

  1. 进入DSW开发环境,具体操作请参见实例界面介绍

  2. Notebook页签的Launcher页面,单击快速开始区域Notebook下的Python3

  3. 在Notebook中执行以下代码,下载ChatGLM-6B。

    说明
    • 由于ChatGLM数据较大,下载耗时与您所在的地域与网络环境有关,请耐心等待下载完成。

    • 如果运行后未出现正常返回结果,并出现类似404 Not Found的错误,请尝试重新运行下载命令。

    北上杭深地域用户

    1. 执行以下代码获取当前地域的下载链接。

      import os
      dsw_region = os.environ.get("dsw_region")
      url_link = {
          "cn-shanghai": "https://atp-modelzoo-sh.oss-cn-shanghai-internal.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz",
          "cn-hangzhou": "https://atp-modelzoo.oss-cn-hangzhou-internal.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz",
          "cn-shenzhen": "https://atp-modelzoo-sz.oss-cn-shenzhen-internal.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz",
          "cn-beijing": "https://atp-modelzoo-bj.oss-cn-beijing-internal.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz", 
      }
    2. 根据获取到的下载链接下载ChatGLM-6B数据。

      path = url_link[dsw_region]
      os.environ['LINK_CHAT'] = path
      !wget $LINK_CHAT
      !tar -xvf ChatGLM-6B-main.tar.gz

    其他地域用户

    选择距离您当前实例所在地域最近的地域下载链接进行下载。

    • 上海:https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz

    • 杭州:https://atp-modelzoo.oss-cn-hangzhou.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz

    • 深圳:https://atp-modelzoo-sz.oss-cn-shenzhen.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz

    • 北京:https://atp-modelzoo-bj.oss-cn-beijing.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz

  4. 安装相关依赖。

    !cd ChatGLM-6B-main && pip install -r requirements.txt && \
    pip install rouge_chinese nltk jieba datasets gradio==3.37.0

步骤二:准备数据

阿里云PAI为您提供了样例数据(AdvertiseGen_Simple),用于后续的微调和推理,您也可以使用符合数据格式要求的自定义数据进行后续的操作。

  1. 了解数据格式要求。

    • 数据文件为JSON文件。

    • JSON文件中每条数据是一个字典,记录输入文本和输出文本。

  2. 准备数据。

    使用PAI公共样例数据

    执行以下命令即可获取公共样例数据(AdvertiseGen_Simple)。

    !cd ChatGLM-6B-main/ptuning && wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/chatGLM/AdvertiseGen_Simple.zip  && unzip AdvertiseGen_Simple.zip

    使用自定义数据

    1. 按数据格式要求准备好数据集JSON文件后,上传至PAI_DSW实例。具体操作,请参见上传下载数据文件

    2. 修改上述步骤下载的ChatGLM模型数据中的train.sh脚本以及evaluate.sh脚本(路径:ChatGLM-6B-main/ptuning)。

      • 将其中的 train_filevalidation_filetest_file修改为对应的数据集路径。

      • 将其中的prompt_columnresponse_column修改为自定义数据集JSON文件中输入文本和输出文本对应的KEY。

步骤三:微调模型

以使用PAI公共样例数据进行微调为例,运行以下命令进行模型微调。生成的模型文件保存在./ChatGLM-6B-main/ptuning/chatglm-6b路径下。

说明

模型训练过程有量化过程,训练时间可能会比较久,请您耐心等待训练完成。

!cd ChatGLM-6B-main/ptuning && bash train.sh

步骤四:模型推理

运行以下命令进行模型推理。

!cd ChatGLM-6B-main/ptuning &&  bash evaluate.sh
  • 模型推理的测评指标为中文Rouge score和BLEU-4。

  • 模型推理成功后,生成的推理结果保存在./ChatGLM-6B-main/ptuning/output/adgen-chatglm-6b-pt-8-1e-2/generated_predictions.txt

说明

您如果自行安装推理ChatGLM模型时,执行模型推理前需先检查推理执行脚本evaluate.sh中的CHECKPOINT参数,确保CHECKPOINT参数取值是训练保存的路径名称。

步骤五:在DSW中启动WebUI

  1. 查看并修改web_demo.py文件的参数取值。

    image.png

    • tokenizermodel变量的路径修改为您的模型存储路径,需配置至checkpoint-6文件夹路径,如上图所示。

    • 配置share=true开放公网访问。

  2. 执行以下命令,启动WebUI。

    !cd ChatGLM-6B-main/ && python web_demo.py
  3. 在返回结果中,单击Running on public URL后的URL(例如:http://127.0.0.1:7860),进入WebUI页面。后续您可以在该页面,进行模型推理。

    说明

    由于http://127.0.0.1:7860为内网访问地址,仅支持在当前的DSW实例内部通过单击链接来访问WebUI页面,不支持通过外部浏览器直接访问。

步骤六:试玩模型

完成以上操作后,您已经成功完成了ChatGLM模型微调训练及WebUI部署。您可以在WebUI页面,进行模型推理验证。

Enter text and press enter中输入文本内容,例如:什么是ChatGLM?。单击Generate,输出如图推理结果。

image..png

  • 本页导读 (1)
文档反馈