赞
踩
本文记录在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
写一个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)。
运行download_model.py脚本来下载ChatGLM3-6B模型。如果提示下载目录非空,可以rm -rf清空该目录:
python download_model.py
为了确保模型下载和后续步骤的速度,执行AutoDL提供的网络加速脚本:
source /etc/network_turbo
克隆ChatGLM3的Git仓库,并安装相关依赖:
git clone https://github.com/THUDM/ChatGLM3
pip install -r requirements.txt
此时已可部署进行推理,可以运行web_demo.py。
之后,取消设置的镜像加速代理:
unset http_proxy && unset https_proxy
上传并解压数据集,数据集链接见ChatGLM3微调的Guide:
sudo apt-get update sudo apt-get install unzip unzip AdvertiseGen
然后将数据集处理成特定的格式,以便微调脚本能够正确读取:
./scripts/format_advertise_gen.py --path "AdvertiseGen/train.json"
# 如果遇到权限问题,添加执行权限:
# chmod u+x ./scripts/format_advertise_gen.py
最终实际训练格式为:
[
{
"prompt": "<prompt text>",
"response": "<response text>"
}
// ...
]
安装微调过程中需要的依赖:
pip install transformers==4.30.2 accelerate sentencepiece astunparse deepspeed
微调脚本finetune_pt.sh包含了一系列的参数设置,用于控制微调过程。这些参数包括学习率、GPU数量、批处理大小、梯度累积步数等。可以根据需要调整这些参数:
# 简单修改参数,非常粗糙,仅验证微调代码能跑:
MAX_STEP=50
SAVE_INTERVAL=25
# 开始 P-Tuning v2 微调
./scripts/finetune_pt.sh
微调过程中,以下的输出显示了训练的进度和耗时:
50%|██████████████████████████████████████████████████████████████████ | 25/50 [12:14<12:14, 29.36s/it]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [24:27<00:00, 29.36s/it]
微调完成后需要验证模型的效果。通过运行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
以下是原模型权重的推理结果,作为基准对照:
用户:你好
ChatGLM:你好声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/568059
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。