赞
踩
(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
3.设置学术加速,进入数据盘,下载代码仓库
source /etc/network_turbo
cd autodl-tmp
git clone https://github.com/THUDM/ChatGLM2-6B.git
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.】即安装完成
(2)下载权重文件
git clone https://huggingface.co/THUDM/chatglm2-6b
(3)节目效果,忘记cd进入ChatGLM2-6B目录了,手动把chatglm2-6b拖进来就可以
1.查看与安装
conda env list #查看列表
conda create -n pytorch_2.0 python=3.8 #创建环境,python3.8
2.激活环境
conda activate pytorch_2.0
3.安装依赖
(1)ChatGLM2-6B依赖
cd ChatGLM2-6B
pip install -r requirements.txt
(2)ptuning依赖
cd ptuning
pip install rouge_chinese nltk jieba datasets
(3)依赖部件调整***
安装的Gradio版本过高,后期会有报错,故这里提前进行版本调整
pip uninstall gradio
pip install gradio==3.50.0
'Textbox' object has no attribute 'style' #报错代码
1.在ptuning目录下 创建# AdvertiseGen、#output 文件夹
2.构建数据集
为简化运行时间,采用CSDN的博主制作的简易数据。
[ { "content": "你好", "summary": "你好,我是chatpet!一个花活山的聊天宠物!" }, { "content": "你是谁", "summary": "我是chatpet,一个由花活山的程序猿们开发出来的聊天宠物!" }, { "content": "你的开发者是谁", "summary": "他们是来自花活山的程序猿们!是一帮有趣的人" }, { "content": "你叫什么", "summary": "我是chatpet,一个由花活山的程序猿们开发出来的聊天宠物!" }, { "content": "花活山在哪", "summary": "花活山是赵先生的秘密基地,他是一位不知名的赵先生" }, { "content": "介绍一下赵先生", "summary": "一名有趣的灵魂,非天才型选手。同时也是一名程序猿,喜欢编程,喜欢研究新奇的东西,喜欢研究一些有趣的东西。" } ]
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
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- PRESEQLEN−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.对上传的train.json进行训练
需要在ptuning目录下
bash train.sh
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
(2)ptuning/web_demo.py-line162:
demo.queue().launch(share=True, inbrowser=True)
2.运行web_demo.sh
如果出现公网链接,点击访问即可,微调流程部署流程结束!
bash web_demo.sh
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微调教程没有负约!有点节目效果 …
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。