Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

flamecodezz/LLM-Dojo

Repository files navigation

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

Tips: 图片完全由AI生成

🌟 项目简介

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

  • SFT训练框架: 简洁清晰的开源大模型训练框架,支持Deepspeed多卡、Lora、QLora、全参等训练,自动适配chat template。
  • RLHF框架: RLHF训练框架,持续更新,包括 知识蒸馏,DPO、RLOO、SimPO等各种强化学习方法,适配Deepspeed多卡及Lora,一张A100即可运行,详情可见: RLHF
  • 最新LLM tricks详解: 持续更新大模型领域最新tricks介绍,包括新论文方法的复现等,希望可以给你一些创新的想法,该模块主要集中在llm_tricks文件夹下。

目录

📖 Latest News

  • [2024年11月06日] 增加RLHF KTO训练方法
  • [2024年11月06日] 重构RLHF,具体可见目录中RLHF训练框架部分
  • [2024年10月31日] 添加auto_adapt参数控制是否自动适配template、更新优化DPO训练(迁移至RLHF目录下)
  • [2024年10月15日] 增加知识蒸馏训练方法。可见知识蒸馏
  • [2024年10月14日] 删除chat template模块,因为使用tokenizer的apply_chat_template即可
  • [2024年09月20日] 增加evaluate模块,一个简洁的模型评测框架,目前仅支持Humaneval。可见Evaluate
  • [2024年08月27日] 🤓增加从零实现自己编写DPO、SimPO代码,包括数据、loss、训练等部分。可见DPO example
  • [2024年08月08日] 支持直接修改配置文件启动及命令行启动,增加框架适配数据处理代码。
More news...
  • [2024年08月04日] 支持自适应单轮或多轮对话,无需指定单轮或多轮,训练根据数据自行判断单轮或多轮。且可自主设置system命令。可见训练数据格式说明
  • [2024年07月19日] RLHF 强化学习框架新增CPO,SimPO,以及二者融合CPO-SimPO
  • [2024年07月16日] RLHF 强化学习框架更新完成,支持deepspeed单卡/多卡 进行强化学习lora、qlora等训练,详细可见RLHF
  • [2024年06月9日] 🚀支持DPO训练,分为单轮对话DPO(自己构建,方便魔改)和多轮对话DPO(简洁实现),支持deepspeed的lora和qlora,具体介绍可见 DPO使用说明
  • [2024年06月5日] 🤓llm_tricks 增加从头开始实现MOE
  • [2024年06月10日] 🚀增加一步一步实现Transformer技术发文(包括代码等从零介绍),可见 技术发文
  • [2024年05月18日] 🤓支持Deepspeed单机多卡、单机单卡的Lora、Qlora、全量微调等训练!
  • [2024年05月13日] 🚀 更新各大模型的Chat Template
  • [2024年05月06日] 🚀 支持Qwen、Yi模型的Lora、Qlora、Dora微调
  • [2024年04月28日] 🚀 更新dora微调原理示例、支持qwen模型微调

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字段

训练参数中auto_adapt参数控制是否自动适配template,如设置为False,则不自动适配,按原始的content进行训练。

适配框架数据处理

鉴于框架指定格式数据可能会跟常规数据有些不同,故可以通过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...

🤝 致谢!

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

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


About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • Python 97.1%
  • Shell 2.9%

AltStyle によって変換されたページ (->オリジナル) /