写在前面
不知不觉之间,距开源ChatGLM-Finetuning项目已经过去了8个月。大模型也在飞速的发展,开源社区也是越来越活跃,开源模型越来越多。
中间更新过一次,将代码重构让大家更容易理解,本次更新主要增加ChatGLM3模型和增加模型预测代码。
Github: https://github.com/liucongg/ChatGLM-Finetuning
为什么要再次更新呢?
-
支持ChatGLM3模型是为了让这个项目有一个更好的延续,如果后面有ChatGLM4的话,还会继续更新。
-
细心的朋友应该可以发现本项目的训练数据构造代码,是参考每个模型在chat部分数据构造进行编写的。所以用本项目训练完的模型,预测阶段用model.chat即可。这也是为什么上一次更新没有提供predict代码的原因。
本项目的宗旨,还是带领大家入门学习,带领大家用不同方式的微调(Freeze方法、Lora方法、P-Tuning方法和全量参数)来进行大模型微调实验,欢迎大家Star。
PS:本项目应该不会增加其他系列模型了,如果做的话也是重开一个新的项目,后面争取在该项目上补充增加一些注释内容,帮助更多的初学者或者非专业人员理解代码吧。
项目介绍
本项目主要针对ChatGLM、ChatGLM2和ChatGLM3模型进行不同方式的微调(Freeze方法、Lora方法、P-Tuning方法、全量参数等),并对比大模型在不同微调方法上的效果,主要针对信息抽取任务、生成任务、分类任务等。
本项目支持单卡训练&多卡训练,由于采用单指令集方式微调,模型微调之后并没有出现严重的灾难性遗忘。
由于官方代码和模型一直在更新,目前ChatGLM1和2的代码和模型的为20230806版本(注意如果发现代码运行有误,可将ChatGLM相关源码替换文件中的py文件,因为可能你下的模型版本与本项目代码版本不一致),ChatGLM3是版本20231212。
PS:没有用Trainer(虽然Trainer代码简单,但不易修改,大模型时代算法工程师本就成为了数据工程师,因此更需了解训练流程)
更新简介
-
update-2023.12.12 增加ChatGLM3代码支持,通过model_type完成模型切换,并增加推理代码。
-
update-2023.08.06 代码和模型已经更新到最新,支持单卡&多卡训练,支持ChatGLM2模型训练、支持全量参数训练,所有代码进行了结构增加可读性。
-
update-2023.06.12 增加流水线并行训练方法,请看v0.1 Tag
-
update-2023.04.18 增加文本生成任务评测,请看v0.1 Tag
-
update-2023.04.05 增加信息抽取任务评测,请看v0.1 Tag
微调方法
Freeze方法-ChatGLM3单卡训练
CUDA_VISIBLE_DEVICES=0 deepspeed --master_port 520 train.py \ --train_path data/spo_0.json \ --model_name_or_path ChatGLM3-6B/ \ --per_device_train_batch_size 1 \ --max_len 1560 \ --max_src_len 1024 \ --learning_rate 1e-4 \ --weight_decay 0.1 \ --num_train_epochs 2 \ --gradient_accumulation_steps 4 \ --warmup_ratio 0.1 \ --mode glm3 \ --train_type freeze \ --freeze_module_name "layers.27.,layers.26.,layers.25.,layers.24." \ --seed 1234 \ --ds_file ds_zero2_no_offload.json \ --gradient_checkpointing \ --show_loss_step 10 \ --output_dir ./output-glm3
Ptuning方法-ChatGLM3单卡训练
CUDA_VISIBLE_DEVICES=0 deepspeed --master_port 520 train.py \ --train_path data/spo_0.json \ --model_name_or_path ChatGLM3-6B/ \ --per_device_train_batch_size 1 \ --max_len 1560 \ --max_src_len 1024 \ --learning_rate 1e-4 \ --weight_decay 0.1 \ --num_train_epochs 2 \ --gradient_accumulation_steps 4 \ --warmup_ratio 0.1 \ --mode glm3 \ --train_type ptuning \ --seed 1234 \ --ds_file ds_zero2_no_offload.json \ --gradient_checkpointing \ --show_loss_step 10 \ --pre_seq_len 16 \ --prefix_projection True \ --output_dir ./output-glm3
Lora方法-ChatGLM3单卡训练
CUDA_VISIBLE_DEVICES=0 deepspeed --master_port 520 train.py \ --train_path data/spo_0.json \ --model_name_or_path ChatGLM3-6B/ \ --per_device_train_batch_size 1 \ --max_len 1560 \ --max_src_len 1024 \ --learning_rate 1e-4 \ --weight_decay 0.1 \ --num_train_epochs 2 \ --gradient_accumulation_steps 4 \ --warmup_ratio 0.1 \ --mode glm3 \ --lora_dim 16 \ --lora_alpha 64 \ --lora_dropout 0.1 \ --lora_module_name "query_key_value,dense_h_to_4h,dense_4h_to_h,dense" \ --seed 1234 \ --ds_file ds_zero2_no_offload.json \ --gradient_checkpointing \ --show_loss_step 10 \ --output_dir ./output-glm3
全参方法-ChatGLM3四卡训练,通过CUDA_VISIBLE_DEVICES控制具体哪几块卡进行训练,如果不加该参数,表示使用运行机器上所有卡进行训练
CCUDA_VISIBLE_DEVICES=0,1,2,3 deepspeed --master_port 520 train.py \ --train_path data/spo_0.json \ --model_name_or_path ChatGLM3-6B \ --per_device_train_batch_size 1 \ --max_len 1560 \ --max_src_len 1024 \ --learning_rate 1e-4 \ --weight_decay 0.1 \ --num_train_epochs 2 \ --gradient_accumulation_steps 4 \ --warmup_ratio 0.1 \ --mode glm3 \ --train_type all \ --seed 1234 \ --ds_file ds_zero3_no_offload.json \ --gradient_checkpointing \ --show_loss_step 10 \ --output_dir ./output-glm3
更多内容,请看Github。
AI大模型学习福利
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享
四、AI大模型商业化落地方案
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。