作者简介:赵辉,区块链技术专家,精通各种联盟链、公链的底层原理,拥有丰富的区块链应用开发经验。
上篇我们已经具备了 ChatGLM-6B 初步的运行环境,这为实现完全属于自己的模型奠定了基础(快速部署ChatGLM-6B大模型实战总结),接下来将针对模型进行微调,以便让它真正成为一个定制化智能助手。在这个过程中,我将直接使用官方的P-Tuning v2工具对ChatGLM-6B模型进行参数微调。
安装依赖
进入ptuning目录,通过pip安装依赖
root@VM-0-17-ubuntu:~# cd ChatGLM-6B/ptuning
root@VM-0-17-ubuntu:ptuning# pip install rouge_chinese nltk jieba datasets
使用自己的数据集
为了保证一次性成功,可以在公网上下载样例数据:
https://cloud.tsinghua.edu.cn/f/b3f119a008264b1cabd1/?dl=1
下载后解压
root@VM-0-17-ubuntu:ptuning# tar xvf AdvertiseGen.tar.gz
解压的目录AdvertiseGen中有两个json文件,一个train.json用于训练,一个dev.json用于推理,文件内容如下:
从图中可以看出来,训练文件是由多个json字符串数据行构建而成,主要包含两个字段,一个content,一个summary。这种格式组建成了问答模式:
<center>[
{ “content”: “问句1”, “summary”: "答案1“}
{ “content”: “问句1”, “summary”: "答案1“}
{…}]</center>
训练
修改 train.sh成如下样式
PRE_SEQ_LEN=128
LR=2e-2
CUDA_VISIBLE_DEVICES=0 python3 main.py \
--do_train \
--train_file AdvertiseGen/train.json \ # 训练数据
--validation_file AdvertiseGen/dev.json \ # 推理数据
--prompt_column content \
--response_column summary \
--overwrite_cache \
--model_name_or_path ../THUDM/chatglm-6b \ # 加载模型文件地址
--output_dir output/adgen-chatglm-6b-pt-$PRE_SEQ_LEN-$LR \ # 保存训练模型文件地址
--overwrite_output_dir \
--max_source_length 64 \
--max_target_length 64 \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 1 \
--gradient_accumulation_steps 16 \
--predict_with_generate \
--max_steps 3000 \
--logging_steps 10 \
--save_steps 1000 \
--learning_rate $LR \
--pre_seq_len $PRE_SEQ_LEN
train.sh 中的 PRE_SEQ_LEN 和 LR 分别是 soft prompt 长度和训练的学习率,可以进行调节以取得最佳的效果。
P-Tuning-v2 方法会冻结全部的模型参数,可通过调整 quantization_bit 来设置原始模型的量化等级,不加此选项则为 FP16 精度加载。
在默认配置 quantization_bit=4、per_device_train_batch_size=1、gradient_accumulation_steps=16 下,INT4 的模型参数被冻结,一次训练迭代会以 1 的批处理大小进行 16 次累加的前后向传播,等效为 16 的总批处理大小,此时最低只需 6.7G 显存。若想在同等批处理大小下提升训练效率,可在二者乘积不变的情况下,加大 per_device_train_batch_size 的值,但也会带来更多的显存消耗,请根据实际情况酌情调整。
执行训练
root@VM-0-17-ubuntu:ptuning# bash train.sh
训练消耗的资源比较多,运行模型和运行训练不能同时开启,否则 GPU 现存资源不足,本次运行训练耗时11个多小时。开始训练效果如图:
推理
修改 evaluate.sh成如下样式
PRE_SEQ_LEN=128
CHECKPOINT=adgen-chatglm-6b-pt-128-2e-2
STEP=3000
CUDA_VISIBLE_DEVICES=0 python3 main.py \
--do_predict \
--validation_file AdvertiseGen/dev.json \ # 推理文件路径
--test_file AdvertiseGen/dev.json \ # 推理文件路径
--overwrite_cache \
--prompt_column content \
--response_column summary \
--model_name_or_path ../THUDM/chatglm-6b \
--ptuning_checkpoint ./output/$CHECKPOINT/checkpoint-$STEP \ # 推理输出路径
--output_dir ./output/$CHECKPOINT \
--overwrite_output_dir \
--max_source_length 64 \
--max_target_length 64 \
--per_device_eval_batch_size 1 \
--predict_with_generate \
--pre_seq_len $PRE_SEQ_LEN \
--quantization_bit 4
运行推理
将 evaluate.sh 中的 CHECKPOINT 更改为训练时保存的 checkpoint 名称,运行以下指令进行模型推理和评测:
root@VM-0-17-ubuntu:ptuning# bash evaluate.sh
执行后,出现这张图说明训练成功了,train_runtime 是训练模型消耗的时间
效果
上面的训练、推理完成后,就可以运行训练的模型,来查看实际的微调效果到底如何。
修改ptuning/web_demo.sh如下:
PRE_SEQ_LEN=128
CUDA_VISIBLE_DEVICES=0 python3 web_demo.py \
--model_name_or_path ../THUDM/chatglm-6b \
--ptuning_checkpoint output/adgen-chatglm-6b-pt-128-2e-2/checkpoint-3000 \
--pre_seq_len $PRE_SEQ_LEN
为了使外部网络可以访问,修改web_demo.py 文件,找到 demo. queue(). launch 这一行替换为:
demo.queue().launch(share=False, inbrowser=True, server_name='0.0.0.0', server_port=27777)
执行bash web_demo.sh
,得到以下结果:打开浏览器,可以看到如下效果:
开启一段对话:
输入根据输入生成一段广告词,输入为:类型#上衣材质#牛仔布颜色#白色风格#简约图案#刺绣衣样式#外套衣款式#破洞
得到结果如图:
从结果来看,效果不是很佳,但至少训练出了内容,剩下的就是丰富数据内容的问题,有了完整的大批量的数据集,微调后的模型才更有意义,否则还只是一个玩具,商用价值极低。
总结
通过对模型的微调和推理的上手体验,发现了一些问题和改进的方向,虽然离钢铁侠的贾维斯智能管家还有一定距离,但这个探索让我们更深入地了解了人工智能的奥秘,并为未来的学习和探索积累了宝贵的经验。
在实践中,我们使用了 ChatGLM-6B 模型,并经历了模型的训练和推理过程。训练模型消耗了相当多的时间,但也让我们体会到了模型训练的复杂性和挑战性。虽然在推理阶段,模型生成了一些内容,但体验效果并不完美,仍需要进一步改进和优化。
这个过程让我们更加深入了解人工智能的发展和应用,对模型微调和开发有了更清晰的认识,虽然成果尚不尽如人意,但它为我们未来探索人工智能和开发个性化助手铺平了道路,相信未来我们会越来越接近实现类似贾维斯的智能助手的愿景。
写作难下笔写不好?/ 课程制作难缺灵感?/ 营销文案没吸引力?/ PPT制作耗时费力?/ 短视频脚本没创意?
基于以上写作中常见的困扰,我编写了一个《AI 写作 30 秒上手》手册,系统性讲解 AI 在写作中可以为你带来的赋能,不管你是扎根于小红书、抖音、快手、视频号、公众号,还是知乎、微博、B站,又或者是自建博客、自运营平台,都可以专栏内容中找到合适自己的AI创作技巧,快速提升自己的生产力,有了 AI 的加持,谁说一个人,不可以活的像一支队伍?
原价¥299,限时现价¥49,随着订阅量增加,后续将恢复原价销售。【长按二维码识别】
公众号回复“Claude实战”,“ChatGPT实战”,“WPSAI实战”,获取相应的电子书。
—扩 展 阅 读—
正在发生或即将发生的AI大模型应用,立帖为证
ChatGPT、Claude和Bard,三足鼎立之势已成
WPS Office AI实战总结,智能化办公时代已来
你对 ChatGPT 的所有疑问,看这这一篇文章就够