mst272 / LLM-Dojo

欢迎来到 LLM-Dojo,这里是一个开源大模型学习场所,使用简洁且易阅读的代码构建模型训练框架(支持各种主流模型如Qwen、Llama、GLM等等)、RLHF框架(DPO/CPO/KTO/PPO)等各种功能。👩‍🎓👨‍🎓
342 stars 30 forks source link

LLM-Dojo: 大模型修炼道场 😊

Tips: 图片完全由AI生成

🌟 项目简介

LLM-Dojo使用简洁且易阅读的代码构建模型训练、RLHF框架等各种功能,使项目易于学习且方便魔改与实验,与大多开源框架相同均是基于huggingface。 主要内容如下:

目录

📖 Latest News

RLHF训练框架

RLHF训练框架,支持并持续更新 知识蒸馏、Reward、PPO、DPO、RLOO、SimPO、KTO等各种强化学习方法,适配Deepspeed多卡及Lora,一张A100即可运行。 详情可见: RLHF

主要包括三类:

1、RLHF

2、Knowledge Distillation (知识蒸馏)

3、Rejected Sampling (拒绝采样) :待更新

SFT训练框架

已支持微调模型

理论上支持对所有模型的微调,下述仅为测试过。

支持基于Deepspeed的多卡/单卡 Lora、Qlora、Dora微调:

😮训练数据格式说明

SFT数据格式为user(system) assistant标准模式,无需指定单轮或多轮,训练根据数据自行判断单轮或多轮。

示例如下,示例文件可参见data/sft_data.jsonl:

{"message": [{"role": "system", "content": "You are a friendly chatbot who always responds in the style of a pirate"},{"role": "user", "content": "How many helicopters can a human eat in one sitting"},{"role": "assistant", "content": "Sure! Here are some ways to eat bananas and dragonfruits together"},{"role": "user", "content": "你好"},{"role": "assistant", "content": "hellow"}]}

可根据需求自行决定是否增加system字段,建议训练数据没有特殊需求可删除system字段

适配框架数据处理

鉴于框架指定格式数据可能会跟常规数据有些不同,故可以通过utils/script/generate_data.py文件进行处理,输入应为正常的instruction和output的jsonl格式文件, 如下:

{"instruction":"将这个句子改写成将来时态:“太阳将会照耀明亮。”","output":"太阳将会散发温暖的光芒。"}

运行后即可得到无system的user、assistant指定格式。

🤓Quick Start

目前支持直接python命令单卡训练deepspeed(推荐使用)单机多卡单机单卡训练. 所有方式均支持Qlora、Lora、Dora方法。

1、 支持命令行传参启动,启动示例可见: run_example.sh相关参数在train_args下的common_args.py和sft/base.py。

bash run_example.sh

2、 也支持参数文件直接修改默认值,改好参数后运行以下命令启动:

deepspeed --include localhost:6,7 main_train.py

更详细的Deepspeed原理及解释可以看文章:Deepspeed配置及使用讲解

显存占用测试如下:

策略 模型大小 显存占用
Lora Qwen(7B) 26g
Lora+Zero2 Qwen(7B) 26g
Lora+zero3 Qwen(7B) 16g

Tricks

所有相关的trciks及讲解都在llm_tricks文件夹下

技术发文

More news... - [Deepspeed配置及使用讲解](https://zhuanlan.zhihu.com/p/698631348) - [从零代码构建MOE](https://zhuanlan.zhihu.com/p/701777558) - [一步一步实现Transformer代码](https://medium.com/@sdwzh2725/transformer-code-step-by-step-understandingtransformer-d2ea773f15fa) - [DPO训练QWEN2及魔改DPO实现](https://zhuanlan.zhihu.com/p/702569978) - [实现强化学习(RLHF)全流程代码构建(PPO、RLOO等)](https://zhuanlan.zhihu.com/p/708935028) - [从零实现强化学习DPO(SimPO)训练代码](https://zhuanlan.zhihu.com/p/716706368) - [实现一个简洁的代码模型评测框架(以Qwen2.5-coder 评测Humaneval为例)](https://zhuanlan.zhihu.com/p/721218072) - [大模型LLM知识蒸馏代码讲解与训练](https://zhuanlan.zhihu.com/p/1064724364)

🤝 致谢!

项目学习了优秀开源项目,感谢huggingface、流萤等及一些国内外小伙伴的开源项目。

LLM Dojo 期待你的加入。🪂 无论是提出问题(Issue)还是贡献代码(Pull Request),都是对项目的巨大支持。