在矩池云使用&微调ChatGLM3-6B教程

发布时间:2024年01月10日

今天给大家介绍下如何在矩池云使用ChatGLM3-6B模型。

1 简介

GitHub:https://github.com/THUDM/ChatGLM3
魔搭:https://modelscope.cn/models/ZhipuAI/chatglm3-6b/

ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:
更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。
更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式,除正常的多轮对话外,同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。
更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM3-6B-Base、长文本对话模型 ChatGLM3-6B-32K。以上所有权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用。

2 矩池云快速使用ChatGLM3

(1)选用机器

进入矩池云官网https://matpool.com/, 以此点击“产品服务”、“GPU”,如图所示
在这里插入图片描述

(2)租用机器

在列表中,选用还是的机器,需要选择显存大于 13G 的机器,比如 V100、A4000、RTX3090、RTX4090等,不然ChatGLM-6B模型会因为显存不够而报错(CUDA out of Memory)
在这里插入图片描述

(3)选择镜像

点击租用后,在搜索框中输入“chatglm”以快速查找镜像,在系统镜像中选择“ChatGLM3-6B”后,即可下单租用。
在这里插入图片描述

(4)Web UI

镜像启动完成后,机器状态更变为“运行中”,如下所示,打开8501端口对应链接,即可进入ChatGLM3-6B的Web UI
在这里插入图片描述

(5)测试

进入Web UI后,即可与模型对话,如下图所示
在这里插入图片描述

(6)使用

ChatGLM3 Demo 拥有三种模式,使用案例参考https://github.com/THUDM/ChatGLM3/blob/main/composite_demo/README.md
Chat: 对话模式,在此模式下可以与模型进行对话。
Tool: 工具模式,模型除了对话外,还可以通过工具进行其他操作。
Code Interpreter: 代码解释器模式,模型可以在一个 Jupyter 环境中执行代码并获取结果,以完成复杂任务。
在这里插入图片描述
在这里插入图片描述

(7)对话模式参数调整

Temperature:从生成模型中抽样包含随机性,因此每次点击“生成”时,相同的提示可能会产生不同的输出。温度是用于调整随机程度的数字。
Top_p: 从top token中挑选的贪心解码策略,该值越高,约有可能选中概率低的token,
repetition_penalty:重复惩罚参数,对先前生成过的token,又重复的生成了该token进行惩罚(降低概率),以减少生成文本中的重复性,越大重复性越小,一般推荐设置 >1
Output length: 输出文本的长度,默认256,该值越大则输出可能的文本长度越长

3 模型微调

微调教程参考https://github.com/THUDM/ChatGLM3/blob/main/finetune_chatmodel_demo/README.md

(1)

进入Jupyter notebook,找到在根目录找到ChatGLM3代码文件,并新建终端
在这里插入图片描述
在这里插入图片描述

(2)

进入目录 /ChatGLM3/finetune_chatmodel_demo
在这里插入图片描述

(3)

# /ChatGLM3/finetune_chatmodel_demo 
pip install -r requirements.txt 

在这里插入图片描述

(4)

进入scripts,新建text file
在这里插入图片描述

(5)

填入微调数据
在这里插入图片描述

[
  {
    "conversations": [
      {
        "role": "system",
        "content": "矩池云如何租用机器"
      },
      {
        "role": "user",
        "content": "矩池云如何租用机器"
      },
      {
        "role": "assistant",
        "content": "进入矩池云官网后,注册账号,点击产品服务即可选用机器。矩池云是一家专注于人工智能领域的云服务商。提供稳定的人工智能云服务器、人工智能教学实训环境、高速网盘等服务。"
      }, 
      {
        "role": "user",
        "content": "矩池云如何租用机器"
      },
      {
        "role": "assistant",
        "content": "进入矩池云官网后,注册账号,点击产品服务即可选用机器。矩池云是一家专注于人工智能领域的云服务商。提供稳定的人工智能云服务器、人工智能教学实训环境、高速网盘等服务。"
      }
    ]
  },
  
    {
    "conversations": [
      {
        "role": "system",
        "content": "如何使用矩池云"
      },
      {
        "role": "user",
        "content": "如何使用矩池云"
      },
      {
        "role": "assistant",
        "content": "进入矩池云官网后,注册账号,点击产品服务即可选用机器。矩池云是一家专注于人工智能领域的云服务商。提供稳定的人工智能云服务器、人工智能教学实训环境、高速网盘等服务。"
      }, 
      {
        "role": "user",
        "content": "如何使用矩池云器"
      },
      {
        "role": "assistant",
        "content": "进入矩池云官网后,注册账号,点击产品服务即可选用机器。矩池云是一家专注于人工智能领域的云服务商。提供稳定的人工智能云服务器、人工智能教学实训环境、高速网盘等服务。"
      }
    ]
  }

]

(6)

Ctrl+S 保存文件,并将文件重命名, 这里的示例是my_data.json,用户可根据自己的喜好更改
在这里插入图片描述

(7)

修改微调的数据集路径,修改 /ChatGLM3/finetune_chatmodel_demo/scripts/finetune_pt_multiturn.sh
(如果使用全量微调,则修改 finetune_ds_multiturn.sh)

BASE_MODEL_PATH=/ChatGLM3/chatglm3-6b-32k
DATASET_PATH=/ChatGLM3/finetune_chatmodel_demo/scripts/my_data.json

在这里插入图片描述

(8)

执行微调,有全量微调和P-Tuning v2 微调两种
参考显存用量
P-Tuning V2: PRE_SEQ_LEN=128, DEV_BATCH_SIZE=1, GRAD_ACCUMULARION_STEPS=16, MAX_SEQ_LEN=2048 配置下约需要 21GB 显存。
全量微调:./scripts/finetune_ds_multiturn.sh 中的配置(MAX_SEQ_LEN=2048, DEV_BATCH_SIZE=16, GRAD_ACCUMULARION_STEPS=1)恰好用满 4 * 80GB 显存。

# ./scripts/finetune_ds_multiturn.sh  # 全量微调
# ./scripts/finetune_pt_multiturn.sh # P-Tuning v2 微调

cd /ChatGLM3/finetune_chatmodel_demo
chmod 777 ./scripts/finetune_pt_multiturn.sh 
./scripts/finetune_pt_multiturn.sh 

在这里插入图片描述

(9)

启动微调后模型

cd /ChatGLM3/finetune_chatmodel_demo
python inference.py \
    --pt-checkpoint "/ChatGLM3/finetune_chatmodel_demo/output/tool_alpaca_pt-20240103-075859-128-2e-2" \
    --model /ChatGLM3/chatglm3-6b-32k

在这里插入图片描述
如果是全量微调,则执行下面的指令

python inference.py \
    --tokenizer /ChatGLM3/chatglm3-6b-32k \
    --model "/ChatGLM3/finetune_chatmodel_demo/output/tool_alpaca_pt-20240103-075859-128-2e-2"

(10)

在Web UI中部署
首先我们需要 kill 掉系统开启自启的 ChatGLM3-6B 服务,Jupyterlab 里新建一个 Terminal,然后输入下面指令查看 ChatGLM3 综合 Demo 服务器进程id,该程序通过 streamlit 启动,所以我们可以查下 streamlit 相关进程即可。

ps aux | grep streamlit

在这里插入图片描述
kill 掉相关进程,从上面运行结果可以看出,streamlit 相关进程id是963,执行下面指令即可 kill 相关进程

# 注意 963 换成你自己租用服务器里查出来的 streamlit 程序的进程id
# 注意 963 换成你自己租用服务器里查出来的 streamlit 程序的进程id
# 注意 963 换成你自己租用服务器里查出来的 streamlit 程序的进程id
kill 963

PT_PATH需要根据自己output下文件夹生成的名称做调整
在这里插入图片描述
在Web UI中部署
注意,MODEL_PATH和PT_PATH的设置要和 streamlit run main.py在同一行,不能将命令分开输入,否则不会加载我们微调后的模型

cd /ChatGLM3/composite_demo
MODEL_PATH="/ChatGLM3/chatglm3-6b-32k"  PT_PATH="/ChatGLM3/finetune_chatmodel_demo/output/tool_alpaca_pt-20240104-005002-128-2e-2" streamlit run main.py 

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_48344945/article/details/135483884
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。