当前位置:   article > 正文

ChatGLM3-6B模型的部署与微调

ChatGLM3-6B模型的部署与微调

本文记录在AutoDL平台上部署和微调ChatGLM3-6B模型的过程。

基本模型部署

租用算力

在AutoDL平台租用一张3090/4090单卡(24G)即可,PyTorch镜像选尽量新的。

进入到JupyterLab,使用清华大学提供的PyPI镜像,加快下载速度:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
安装必要的库,包括modelscope库和transformers库。modelscope库用于下载、缓存和加载预训练的AI模型,transformers库则包含了大量预训练模型,用于自然语言理解和生成任务:

pip install modelscope
pip install transformers
  • 1
  • 2

模型下载

写一个download_model.py:

> import torch from modelscope import snapshot_download, AutoModel,
> AutoTokenizer import os

# 指定模型缓存的目录。这个目录是AutoDL的临时目录。
cache_dir = '/root/autodl-tmp'

# 使用Modelscope库中的snapshot_download函数下载ZhipuAI提供的名为'chatglm3-6b'的预训练语言模型。
# 如果模型已经下载过了,它将使用缓存的版本,而不是重新下载。
# 'revision'参数指定要下载的模型的版本;'master'通常指向最新稳定版本的代码。
model_dir = snapshot_download('ZhipuAI/chatglm3-6b', cache_dir=cache_dir, revision='master')

# 'model_dir'变量现在包含了下载的模型文件的路径。
# 接下来可以使用这个目录来加载模型和分词器(tokenizer)。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

运行download_model.py脚本来下载ChatGLM3-6B模型。如果提示下载目录非空,可以rm -rf清空该目录:

python download_model.py
  • 1

克隆仓库

为了确保模型下载和后续步骤的速度,执行AutoDL提供的网络加速脚本:

source /etc/network_turbo
  • 1

克隆ChatGLM3的Git仓库,并安装相关依赖:

git clone https://github.com/THUDM/ChatGLM3
pip install -r requirements.txt
  • 1
  • 2

此时已可部署进行推理,可以运行web_demo.py。
之后,取消设置的镜像加速代理:

unset http_proxy && unset https_proxy
  • 1

AdvertiseGen数据集微调

数据集

上传并解压数据集,数据集链接见ChatGLM3微调的Guide:

sudo apt-get update sudo apt-get install unzip unzip AdvertiseGen
  • 1

然后将数据集处理成特定的格式,以便微调脚本能够正确读取:

./scripts/format_advertise_gen.py --path "AdvertiseGen/train.json"
# 如果遇到权限问题,添加执行权限:
# chmod u+x ./scripts/format_advertise_gen.py
  • 1
  • 2
  • 3

最终实际训练格式为:

[
  {
    "prompt": "<prompt text>",
    "response": "<response text>"
  }
  // ...
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

微调相关依赖

安装微调过程中需要的依赖:

pip install transformers==4.30.2 accelerate sentencepiece astunparse deepspeed
  • 1

微调脚本执行

微调脚本finetune_pt.sh包含了一系列的参数设置,用于控制微调过程。这些参数包括学习率、GPU数量、批处理大小、梯度累积步数等。可以根据需要调整这些参数:

# 简单修改参数,非常粗糙,仅验证微调代码能跑:
MAX_STEP=50
SAVE_INTERVAL=25

# 开始 P-Tuning v2 微调
./scripts/finetune_pt.sh  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

微调过程中,以下的输出显示了训练的进度和耗时:

50%|██████████████████████████████████████████████████████████████████ | 25/50 [12:14<12:14, 29.36s/it]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [24:27<00:00, 29.36s/it]
  • 1
  • 2

基本推理

微调完成后需要验证模型的效果。通过运行inference.py脚本,可以对微调后的模型进行基本的推理测试,注意改路径:

python inference.py \
    --pt-checkpoint "/root/autodl-tmp/ChatGLM3/finetune_chatmodel_demo/output/advertise_gen_pt-20231128-160019-128-2e-2/checkpoint-50" \
    --model /root/autodl-tmp/ZhipuAI/chatglm3-6b
  • 1
  • 2
  • 3

验证结果

以下是原模型权重的推理结果,作为基准对照:

用户:你好 
ChatGLM:你好
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/568059
推荐阅读
相关标签