当前位置:   article > 正文

ChatGLM2-6B微调教程,AutoDL云平台部署,含报错解析,最全最细最稳!

ChatGLM2-6B微调教程,AutoDL云平台部署,含报错解析,最全最细最稳!

ChatGLM2-6B云微调教程!最全!最细!

(AutoDL云平台部署,含报错解析)

一、教程综述

本教程使用学术加速,无需科学上网。
1.AutoDL 算力市场
2.AutoDL 帮助文档
3.Github/THUDM/ChatGLM2-6B 代码仓库
4.ChatGLM2-6B-PT代码仓库
5.HuggingFace/chatglm2-6b 权重文件
6.ChatGLM-4 对话模型

二、创建实例

1.租借实例(如果不会点击此链接(我的文章)
在这里插入图片描述

2.复制学术加速代码

source /etc/network_turbo
  • 1

在这里插入图片描述
3.设置学术加速,进入数据盘,下载代码仓库

source /etc/network_turbo
cd autodl-tmp
git clone https://github.com/THUDM/ChatGLM2-6B.git
  • 1
  • 2
  • 3

在这里插入图片描述
4.下载ChatGLM2-6B模型
(1)安装git-lfs

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
出现【Git LFS initialized.】即安装完成
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
(2)下载权重文件

git clone https://huggingface.co/THUDM/chatglm2-6b
  • 1

在这里插入图片描述
(3)节目效果,忘记cd进入ChatGLM2-6B目录了,手动把chatglm2-6b拖进来就可以
在这里插入图片描述

三、创建环境

1.查看与安装

conda env list  #查看列表
conda create -n pytorch_2.0 python=3.8    #创建环境,python3.8
  • 1
  • 2

在这里插入图片描述
2.激活环境

conda activate pytorch_2.0
  • 1

在这里插入图片描述
3.安装依赖
(1)ChatGLM2-6B依赖

cd ChatGLM2-6B
pip install -r requirements.txt
  • 1
  • 2

在这里插入图片描述
(2)ptuning依赖

cd ptuning
pip install rouge_chinese nltk jieba datasets
  • 1
  • 2

在这里插入图片描述
(3)依赖部件调整***
安装的Gradio版本过高,后期会有报错,故这里提前进行版本调整

pip uninstall gradio
pip install gradio==3.50.0
  • 1
  • 2
'Textbox' object has no attribute 'style'  #报错代码
  • 1

在这里插入图片描述

四、构建数据集

1.在ptuning目录下 创建# AdvertiseGen、#output 文件夹
在这里插入图片描述
2.构建数据集
为简化运行时间,采用CSDN的博主制作的简易数据。

[
    {
        "content": "你好",
        "summary": "你好,我是chatpet!一个花活山的聊天宠物!"
    },
    {
        "content": "你是谁",
        "summary": "我是chatpet,一个由花活山的程序猿们开发出来的聊天宠物!"
    },
    {
        "content": "你的开发者是谁",
        "summary": "他们是来自花活山的程序猿们!是一帮有趣的人"
    },
	{
        "content": "你叫什么",
        "summary": "我是chatpet,一个由花活山的程序猿们开发出来的聊天宠物!"
    },
	{
        "content": "花活山在哪",
        "summary": "花活山是赵先生的秘密基地,他是一位不知名的赵先生"
    },
	{
        "content": "介绍一下赵先生",
        "summary": "一名有趣的灵魂,非天才型选手。同时也是一名程序猿,喜欢编程,喜欢研究新奇的东西,喜欢研究一些有趣的东西。"
    }
]


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

3.添加数据集
将2中的json数据上传至AdvertiseGen文件夹,dev与train为同一数据
在这里插入图片描述

五、修改微调参数

1.打开ptuning目录下train.sh文件,按教程可直接复制

PRE_SEQ_LEN=128
LR=2e-2
NUM_GPUS=1

python main.py \
    --do_train \
    --train_file /root/autodl-tmp/ChatGLM2-6B/ptuning/AdvertiseGen/train.json \
    --validation_file /root/autodl-tmp/ChatGLM2-6B/ptuning/AdvertiseGen/dev.json \
    --preprocessing_num_workers 10 \
    --prompt_column content \
    --response_column summary \
    --overwrite_cache \
    --model_name_or_path /root/autodl-tmp/ChatGLM2-6B/chatglm2-6b \
    --output_dir output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR \
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 128 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 16 \
    --predict_with_generate \
    --max_steps 128 \
    --logging_steps 10 \
    --save_steps 128 \
    --learning_rate $LR \
    --pre_seq_len $PRE_SEQ_LEN \
    --quantization_bit 4

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

2.以下是各个参数的详解

PRE_SEQ_LEN=128: 定义了一个名为PRE_SEQ_LEN的变量,并将其设置为128。这个变量的作用在后续的代码中会用到。

LR=2e-2: 定义了一个名为LR的变量,并将其设置为2e-2,即0.02。这个变量表示学习率,在后续的代码中会用到。

–train_file ../AdvertiseGen/train.json : 指定训练数据文件的路径和文件名为"AdvertiseGen/train.json"。

–validation_file ../AdvertiseGen/verify.json : 指定验证数据文件的路径和文件名为"AdvertiseGen/verify.json"。

–prompt_column content : 指定输入数据中作为提示的列名为"content"。

–response_column summary : 指定输入数据中作为响应的列名为"summary"。

–overwrite_cache : 一个命令行参数,指示在缓存存在的情况下覆盖缓存。

–model_name_or_path  /root/autodl-tmp/ChatGLM2-6B/chatglm2-6b: 指定使用的模型的名称或路径为"/root/autodl-tmp/ChatGLM2-6B/chatglm2-6b"。

–output_dir output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR : 指定输出目录的路径和名称为"output/adgen-chatglm-6b-pt- P R E S E Q L E N − PRE_SEQ_LEN- PRES​EQL​EN−LR"。这是训练结果和日志的保存位置。

–overwrite_output_dir : 一个命令行参数,指示在输出目录存在的情况下覆盖输出目录。

–max_source_length 512 : 指定输入序列的最大长度为512。

–max_target_length 512 : 指定输出序列的最大长度为512。

–per_device_train_batch_size 1 : 指定每个训练设备的训练批次大小为1。

–per_device_eval_batch_size 1 : 指定每个评估设备的评估批次大小为1。

–gradient_accumulation_steps 16 : 指定梯度累积的步数为16。在每个更新步骤之前,将计算并累积一定数量的梯度。

–predict_with_generate : 一个命令行参数,指示在生成模型的预测时使用生成模式。

–max_steps 128 : 指定训练的最大步数为128。

–logging_steps 4 : 指定每隔4个步骤记录一次日志。

–save_steps 128 : 指定每隔128个步骤保存一次模型。

–learning_rate $LR : 指定学习率为之前定义的LR变量的值。

–pre_seq_len $PRE_SEQ_LEN : 指定预设序列长度为之前定义的PRE_SEQ_LEN变量的值。

–quantization_bit 4 : 指定量化位数。这个参数可能是与模型相关的特定设置(16,GPU可能出现内存不够现象)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

六、训练模型

1.对上传的train.json进行训练
需要在ptuning目录下

bash train.sh
  • 1

在这里插入图片描述
2.如果参数调整没有问题,出现这个结果表示训练完成。
这里不考虑丢失与学习率,以跑完整个模型为目的
在这里插入图片描述
同时output文件夹内出现checkpoint文件
在这里插入图片描述

七、验证模型

1.调整参数,如果按照步骤可直接复制
(1)ptuning/web_demo.sh

PRE_SEQ_LEN=128

python web_demo.py \
    --model_name_or_path /root/autodl-tmp/ChatGLM2-6B/chatglm2-6b \
    --ptuning_checkpoint /root/autodl-tmp/ChatGLM2-6B/ptuning/output/adgen-chatglm2-6b-pt-128-2e-2/checkpoint-128 \
    --pre_seq_len $PRE_SEQ_LEN
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(2)ptuning/web_demo.py-line162:

demo.queue().launch(share=True, inbrowser=True)
  • 1

2.运行web_demo.sh
如果出现公网链接,点击访问即可,微调流程部署流程结束!

bash web_demo.sh
  • 1

在这里插入图片描述
在这里插入图片描述

八、报错类型

1.‘Textbox‘ object has no attribute ‘style‘
在这里插入图片描述
Gradio版本过高,在创建环境时已让大家降版本了

2.GPU不足

torch.cuda.OutOfMemoryError:........在这里插入图片描述
查看Autodl控制台,所在区域GPU是否已分配耗尽,如果耗尽则等待,没有耗尽则关闭此终端,并重新开一个终端,并conda activate环境。

3.运行bash web_demo.sh 只返回本地链接,没有公网链接
在这里插入图片描述
7.1.2已经给出调整办法,如果依旧没有,则重启整个实例,记得激活pytorch_2.0的虚拟环境

4.部署过程中运行的各种错误欢迎打在评论区!!!,我这7天遇到了太多的Error了

九、小结

我是在读研究生,研究方向是人工智能对话机器人,目前处于放养状态,所以自己一个人在研究这个ChatGLM模型。
在1月中旬,我通过教程,将ChatGLM-6B成功部署并试用了一下。也好奇后续如何进行微调,便从1月底一直搜寻教程,很庆幸,在2月5日晚,成功部署了一遍微调过程(没有使用大型数据)。
感谢CSDN-Harvey-J、CSDN-我不会深度学习、Bilibili-
Rocky77Road博主,GLM-4交流群82的YY老哥。

参考文献:

https://blog.csdn.net/weixin_44881936/article/details/135873303
云端部署ChatGLM3-6B,电脑没有GPU也能玩转大模型!【我写的,打个广告】

https://blog.csdn.net/weixin_42232045/article/details/134197213
大模型笔记之-ChatGLM2微调(基于Windows10 22H2+RTX2080ti 实现)

https://blog.csdn.net/m0_54393918/article/details/134355019
chatglm2-b部署报错问题‘Textbox‘ object has no attribute ‘style‘

https://www.bilibili.com/video/BV1Ag4y197hf/?spm_id_from=333.788.recommend_more_video.0&vd_source=730b9f33725aea99fa97cf83006c105c
【5分钟搞定】ChatGLM3保姆级部署教程,跟着弄不出错!

https://www.bilibili.com/video/BV1Ag4y197hf/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=730b9f33725aea99fa97cf83006c105c
【5分钟搞定】glm3微调教程没有负约!有点节目效果 …

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

闽ICP备14008679号