Firefly
Firefly: 大模型训练工具,支持训练Qwen2.5、Qwen2、Yi1.5、Phi-3、Llama3、Gemma、MiniCPM、Yi、Deepseek、Orion、Xverse、Mixtral-8x7B、Zephyr、Mistral、Baichuan2、Llma2、Llama、Qwen、Baichuan、ChatGLM2、InternLM、Ziya2、Vicuna、Bloom等大模型
Install / Use
/learn @yangjianxin1/FireflyREADME
Firefly: 一站式大模型训练工具
<div align="left"> </div> <img src="pics/firefly_logo.png" width="250">欢迎加入Firefly大模型技术交流群,关注我们的公众号,点击加群按钮即可。
<img src="pics/gongzhonghao.png" width="300">欢迎关注我们的知乎进行交流讨论:红雨瓢泼
项目简介
Firefly 是一个开源的大模型训练项目,支持对主流的大模型进行预训练、指令微调和DPO,包括但不限于Qwen2、Yi-1.5、Llama3、Gemma、Qwen1.5、MiniCPM、MiniCPM3、Llama、InternLM、Baichuan、ChatGLM、Yi、Deepseek、Qwen、Orion、Ziya、Xverse、Mistral、Mixtral-8x7B、Zephyr、Vicuna、Bloom等。 本项目支持全量参数训练、LoRA、QLoRA高效训练,支持预训练、SFT、DPO。 如果你的训练资源有限,我们极力推荐使用QLoRA进行指令微调,因为我们在Open LLM Leaderboard上验证了该方法的有效性,并且取得了非常不错的成绩。
🔔 本项目主要内容如下:
- 📗 支持预训练、指令微调、DPO,支持全量参数训练、LoRA、QLoRA高效训练。通过配置文件的方式训练不同的模型,小白亦可快速上手训练模型。
- 📗 支持使用Unsloth加速训练,并且节省显存。
- 📗 支持绝大部分主流的开源大模型,如Llama3、Gemma、MiniCPM、Llama、InternLM、Baichuan、ChatGLM、Yi、Deepseek、Qwen、Orion、Ziya、Xverse、Mistral、Mixtral-8x7B、Zephyr、Vicuna、Bloom,训练时与各个官方的chat模型的template对齐。
- 📗 整理并开源指令微调数据集:firefly-train-1.1M 、moss-003-sft-data、ultrachat、 WizardLM_evol_instruct_V2_143k、school_math_0.25M。
- 📗 开源Firefly系列指令微调模型权重 。
- 📗 在Open LLM Leaderboard上验证了QLoRA训练流程的有效性。
当前版本针对不同的chat模型的template进行了适配,代码存在较大的更新。若你更喜欢此前的版本,可下载代码v0.0.1-alpha
News
- 🔥 Unsloth x Qwen2模型结构的PR已merge到Unsloth的master分支。
- 🔥 扩展Unsloth,支持Qwen2模型结构,包括Qwen1.5系列的Dense模型,代码库:Unsloth。 技术文章
- 🔥 支持Unsloth,训练Llama3-8B仅需7.75GB显存,可减少42.58%显存占用,减少30.72%训练时间。 训练增益评测。
- 🔥 优化训练流程,支持全量训练、LoRA、QLoRA高效训练,支持预训练、指令微调和DPO。指令微调与DPO的template与原有的chat模型对齐,支持绝大多数开源模型,包括Gemma、MiniCPM、Llama、InternLM、Baichuan、ChatGLM、Yi、Deepseek、Qwen、Orion、Ziya、Xverse、Mistral、Mixtral-8x7B、Zephyr、Vicuna、Bloom等。
- 🔥 开源模型权重firefly-mixtral-8x7b ,在🤗Open LLM排行榜分数为70.34,超越Yi-34B、Llama2-65B-Chat、Qwen-14B、Vicuna-33B-v1.3等模型。
- 🔥 开源LongQLoRA, 【技术报告】。可高效扩展LLama上下文长度,在单张32GB V100上将Llama2长度扩展至8k(亦可扩展至12k),仅微调1000 step,在PG19和Proof-pile数据集上的perplexity优于LongLoRA,在PG19上略胜MPT-7B-8K。
- 🔥 开源Firefly-LLaMA2-Chinese项目,在4*V100上进行高效训练,经过中文词表扩充、增量预训练、多轮指令微调,在CMMLU上超越Linly、Yayi、FlagAlpha等,与Ziya、Chinese-Alpaca表现基本持平。
- 🔥 开源firefly-baichuan2-13b,在OpenCompass的CMMLU榜单上以56.83的分数,位列第8,比百川官方Chat模型略低1.57分。
- 🔥 开源firefly-llama-30b,在🤗Open LLM排行榜上以64.83分,同量级模型排名第10。
- 🔥 开源firefly-llama2-13b,在🤗Open LLM排行榜上以62分,同量级模型排名第3,比榜首略低0.5分。
- 🔥 开源firefly-llama-13b,在Hugging Face的Open LLM排行榜上复刻Vicuna-13B,比Vicuna-13b-1.1略高0.2分,比llams-2-13b-chat略低0.5分。
- LLMPruner:大语言模型裁剪工具 ,开源裁剪后的Bloom模型权重 。
相关项目
- Firefly-LLaMA2-Chinese:中文Llama2模型,对Llama2进行中文词表扩充、增量预训练和指令微调。
- LongQLoRA:大模型长度扩展项目,可在单卡V100上将LLaMA-13B的长度扩展至8192,且性能逼近MPT-8K。
- LLMPruner:对Bloom进行词表裁剪,减少模型参数量。
技术博客
<details><summary><b>技术博客</b></summary>- Unsloth x Qwen2,提速47.32%,节省39.13%显存,最少仅需8.43GB显存
- Unsloth微调Llama3-8B,提速44.35%,节省42.58%显存,最少仅需7.75GB显存
- 弱智吧祛魅,与强Baseline的对比实验,差距明显
- 关于弱智吧数据封神的若干疑问和猜想,以及数据验证实验
- 图解大模型推理优化之KV Cache
- Mixtral-8x7B MoE大模型微调实践,超越Llama2-65B
- LongQLoRA:单卡高效扩展LLaMA2-13B的上下文长度
- 详解基于调整RoPE旋转角度的大模型长度外推方法
- 图解RoPE旋转位置编码及其特性
- QLoRA轻量级增量预训练方案,及汉化Llama2的实践
- Firefly多轮对话微调书生·浦语InternLM-7B实践
- 🤗Firefly微调LLaMA-30B,Open LLM榜单同量级第10名
- 通义千问Qwen-7B效果如何?Firefly微调实践,效果出色
- 源码解析ChatGLM2多轮对话训练方法的不足,以及改进方法
- Firefly增强Baichuan-13B的多轮对话能力
- 🤗Open LLM排行榜,firefly-llama2-13b在所有13B模型中排名第三,比榜首略低0.5分
- 百万数据增强Baichuan-13B的多轮对话能力
- Firefly单卡复刻Vicuna-13B,Open LLM榜单🤗略高0.2分
- 微调百川Baichuan-13B保姆式教程,手把手教你训练百亿大模型
- Firefly-Ziya-13B开源,QLoRA+百万数据,单卡可训百亿大模型
- Firefly|百川baichuan-7B实测,QLoRA+百万指令数据微调
- Firefly | QLoRA+百万数据,多卡高效微调bloom-7b1模型
- QLoRA文章解读 & 单卡高效微调bloom-7b1
- Firefly(流萤): 中文对话式大语言模型
- LLMPruner:大语言模型裁剪工具
模型评测
Open LLM Leaderboard评测
评测结果来源于Hugging Face的Open LLM Leaderboard。我们的模型均采用QLoRA脚本进行训练,训练仅使用1~2张V100。
| 模型 | Average | ARC | HellaSwag | MMLU | TruthfulQA | |-----------------------------|---------|-------|-----------|-------|------------| | firefly-mixtral-8x7b | 70.16 | 68.09 | 85.76 | 71.49 | 55.31 | | Yi-34B-Chat | 69.97 | 65.44 | 84.16 | 74.9 | 55.37 | | firefly-llama-30b | 64.83 | 64.25 | 83.64 | 58.23 | 53.2 | | falcon-40b-instruct | 63.47 | 61.6 | 84.31 | 55.45 | 52.52 | | guanaco-33b | 62.98 | 62.46 | 84.48 | 53.78 | 51.22 | | firefly-llama2-13b-v1.2 | 62.17 | 60.67 | 80.46 | 56.51 | 51.03 | | firefly-llama2-13b | 62.04 | 59.13 | 81.99 | 55.49 | 51.57 | | vicuna-13b-v1.5 | 61.63 | 56.57 | 81.24 | 56.67 | 51.51 | | mpt-30b-chat | 61.21 | 58.7 | 82.54 | 51.16 | 52.42 | | wizardlm-13b-v1.2 | 60.79 | 59.04 | 82.21 | 54.64 | 47.27 | | vicuna-13b-v1.3 | 60.01 | 54.61 | 80.41 | 52.88 | 52.14 | | llama-2-13b-chat | 59.93 | 59.04 | 81.94 | 54.64 | 44.12 | | vicuna-13b-v1.1 | 59.21 | 52.73 | 80.14 | 51.9 | 52.08 | | guanaco-13b | 59.18 | 57.85 | 83.84 | 48.28 | 46.73 |
模型列表
🔔 使用本项目的训练代码,以及上述训练数据,我们训练并开源了以下模型权重。
中文模型:
| 模型 | 基座模型 | 训练长度 |
|--------------------------------------------------------------------------------|-------------------------------------|------|
| firefly-baichuan2-13b | baichuan-inc/Baichuan2-13B-Base | 1024 |
| firefly-baichuan-13b | baichuan-inc/Baichuan-13B-Base | 1024 |
| firefly-qwen-7b | Qwen/Qwen-7B | 1024 |
| firefly-chatglm2-6b | THUDM/chatglm2-6b | 1024 |
| firefly-internlm-7b | internlm/internlm-7b | 1024 |
| firefly-baichuan-7b | baichuan-inc/baichuan-7B | 1024 |
| firefly-ziya-13b | YeungNLP/Ziya-LLaMA-13B-Pretrain-v1 | 1024 |
| firefly-bloom-7b1 | bigscience/bloom-7b1 | 1024 |
| firefly-bloom-2b6-v2 | YeungNLP/bloom-2b6-zh | 512 |
| firefly-bloom-2b6 | YeungNLP/bloom-2b6-zh | 512 |
| firefly-bloom-1b4 | YeungNLP/bloom-1b4-zh | 512 |
英文模型:
| 模型 | 基座模型 | 训练长度 | |------------------------------------------------------------------------|-------------------|--
