lmflow“样式=”宽度:50%;最大宽度:100%;“>
LMFlow
英语| 简体中文| Español| 日本语| 한국어| हिंदी
一种可扩展,方便且高效的工具箱,用于填充大型机器学习模型,该模型旨在用户友好,快速且可靠,并且可容纳整个社区。
lmflow -features“ style =”宽度:100%;最大宽度:100%;“>
最新消息
重要的
- ❗[2025-07-09]我们对LMFlow进行了重大更新,并具有完全加速的支持和广泛的精简。如果您正在寻找以前的版本,请使用Git Checkout V0.0.10,或查看V0.0.10分支。在此处查看所有版本。
- [2024-12-02]支持Hymba,这是一个新的小语言模型家庭,具有混合式平行体系结构。查看培训后的Hymba以获取更多详细信息。
- [2024-07-01] LMFlow在NAACL 2024获得了最佳演示纸奖! ?
- [2024-06-30]扩展优化选项!现在,我们支持各种优化器的自定义优化器培训。深入了解详细信息,并在Custom_optimizers上使用我们更新的脚本尝试新功能。
- [2024-04-25]支持对话模板!我们已经预设了最新的Llama-3和Phi-3对话模板以及一些经常使用的模板,例如ChatMl(请参阅此处的所有模板),我们正在努力添加更多的预设模板。在Shell脚本中添加相应的-conversation_template,您将全部设置!
更多新闻…
-
[2024-03-27]支持LISA,在不卸载的情况下实现24G内存训练!
-
[2023-09-11]支持投机解码。查看使用和加速详细信息的投机_decoding。
-
[2023-08-14]为Llama模型支持长上下文推断,以插值的位置插值(线性和NTK缩放)。查看Postion_interpolation有关更多详细信息。
-
[2023-08-07]支持Flash Guate-2。查看flash_atections,以获取更多详细信息。
-
[2023-08-02]支持Llama2,Chatglm2和Baichuan模型。
-
[2023-07-23] LMFlow多模式聊天机器人现在可用!支持图像和文本的多模式输入。还提供了在线演示(我们在单个GPU上持有该服务,因此有时可能会在多个用户同时访问时会遇到“排队”或“应用程序忙”,请等待,稍后再尝试此类事件发生时)

-
[2023-06-22] LMFlow纸已经熄灭了!在https://arx*iv.o**rg/abs/2306.12420上查看我们的实施详细信息
-
[2023-06-16]我们的Finetuntuned Robin-33B-V2在我们的离线评估中在Huggingface LLM排行榜上得分令人印象深刻,表现优于主要的开源LLM!所有检查点(7b,13b,33b和65b)都发布了!在这里查看表演。
-
[2023-06-07] LMFlow现在在PYPI上正式提供!使用PIP安装LMFlow -FINETUNE安装它!
-
[2023-05-30]发布Robin-13b-V2和Robin-33b-V2!
-
[2023-05-15]释放LMFlow -DATA,Robin-7b-V2的培训数据集。还发布了新的测试数据。
-
[2023-05-09]发布Robin-7b-V2,在Chitchat,Commensense推理和跟随指导的任务上实现竞争性能。请参阅我们的全面研究。
-
[2023-05-08] Release LMFlow Benchmark,这是一个开源聊天风格LLM的自动评估框架。报告了31种流行模型的基准结果。参与LMFlow基准测试。
-
[2023-04-21]版本Robin-7b(基于Llama-7b),以及两种商业用途的型号:Parakeets-2.7b(基于GPT-Neo-2.7b)和Cokatoo-7B(基于StableLM-7B)
-
[2023-04-15]推断:支持流输出和ChatGlm。
-
[2023-04-10]我们提出了一种新的对齐算法:奖励排名较高(RAFT),它比常规(基于PPO的)RLHF更有效。 [纸]
-
[2023-04-02] Web服务在线!
-
[2023-04-01]在模型动物园中释放三个指令调节检查点和三个医疗检查点:Llama-7b-tuned,Llama-13b-tuned,Llama-33b-tuned,Llama-7b-7b-Mendical,Llama-13b-Mentical,Llama-13b-Mensical和Llama-33b-Medical。
-
[2023-03-27]为所有解码器模型支持完整的调整和LORA调整。
-
[2023-03-27]任务是调谐模型在医疗领域击败chatgpt。
-
[2023-03-27]发布代码和检查点 – 版本0.0.1!我们任务的模型在医疗领域击败了Chatgpt。
目录
- LMFlow
- 最新消息
- 目录
- 快速开始
- 设置
- 准备数据集
- 微调
- 估计的硬件要求
- 完整的填充
- 丽莎
- 洛拉
- 推理
- 部署
- 评估
- 支持的功能
- 支持
- 执照
- 引用
快速开始
设置
我们的软件包已在Linux OS(Ubuntu 20.04)上进行了测试。其他操作系统平台(MacOS,Windows)尚未完全测试,您可能会遇到意外错误。如果您是第一次使用LMFlow ,建议您尝试使用Linux机器或Google Colab。
LMFlow
conda create -n LMFlow python=3.9 -y
conda activate LMFlow
conda install mpi4py
pip install -e .\”>
git clone -b v1.0.0 https://g*ith*ub.c*om/OptimalScale/LMFlow.git cd LMFlow conda create -n LMFlow python=3.9 -y conda activate LMFlow conda install mpi4py pip install -e .
寻找以前的版本?
LMFlow
conda create -n LMFlow python=3.9 -y
conda activate LMFlow
conda install mpi4py
pip install -e .\”>
git clone -b v0.0.10 https://g*ith*ub.c*om/OptimalScale/LMFlow.git cd LMFlow conda create -n LMFlow python=3.9 -y conda activate LMFlow conda install mpi4py pip install -e .
对于CUDA版本10.3-11.7
LMFlow
conda create -n LMFlow python=3.9 -y
conda activate LMFlow
conda install mpi4py
pip install -e .\”>
git clone -b v0.0.5 https://g*ith*ub.c*om/OptimalScale/LMFlow.git cd LMFlow conda create -n LMFlow python=3.9 -y conda activate LMFlow conda install mpi4py pip install -e .
提示
我们使用WandB默认情况下跟踪和可视化训练过程。在运行培训脚本之前,用户可能需要使用命令登录到Wandb:
wandb login
有关详细说明,请参阅《 Wandb Quickstart指南》。步骤1(注册)和步骤2(使用WANDB API密钥登录)应足以设置您的环境。
禁用挥手
一个人可以通过任何一个禁用魔杖:
- 在运行训练命令之前,添加环境变量。
export WANDB_MODE=disabled
- 或者,指定集成以报告结果和日志。在培训脚本中,补充:
--report_to none \\
准备数据集
请参考我们的文档。
微调
估计的硬件要求
| 方法 | 0.5B | 3b | 7b | 14b | 30b | 70B | XB |
|---|---|---|---|---|---|---|---|
| 完整的BF16/FP16 | 9GB | 55GB | 120GB | 240GB | 600GB | 1200GB | 18xGB |
| 洛拉 | 1GB | 6GB | 16 GB | 32GB | 64GB | 160GB | 2xGB |
| qlora pont_bit = 8 | 0.7GB | 3GB | 10GB | 20GB | 40GB | 80GB | XGB |
| qlora pont_bit = 4 | 0.4GB | 1.5GB | 6GB | 12GB | 24GB | 48GB | X/2GB |
完整的填充
完整的培训更新所有参数,以列出语言模型。这是对GPT-2基本模型进行捕获的示例。
cd data && ./download.sh alpaca && cd - bash ./scripts/run_finetune.sh \\ --model_name_or_path gpt2 \\ --dataset_path data/alpaca/train_conversation \\ --output_model_path output_models/finetuned_gpt2
提示
对于对话数据集,请通过将“ conversation_template”添加到命令中指定对话模板,以获得更好的性能。
Llama-3-8B对话数据集示例
cd data && ./download.sh alpaca && cd - bash ./scripts/run_finetune.sh \\ --model_name_or_path meta-llama/Meta-Llama-3-8B \\ --dataset_path data/alpaca/train_conversation \\ --conversation_template llama3 \\ --output_model_path output_models/finetuned_llama3_8b
丽莎
LISA是一种内存有效的鉴定算法,可在内存和随机未重雷层的数量之间进行权衡。当前,此脚本仅在单个GPU中进行测试。请继续关注我们的最新更新?
cd data && ./download.sh alpaca && cd - bash ./scripts/run_finetune_with_lisa.sh \\ --model_name_or_path meta-llama/Llama-2-7b-hf \\ --dataset_path data/alpaca/train_conversation \\ --output_model_path output_models/finetuned_llama2_7b \\ --lisa_activated_layers 1 \\ --lisa_interval_steps 20
提示
Llama-2-7B对话数据集示例
cd data && ./download.sh alpaca && cd - bash ./scripts/run_finetune_with_lisa.sh \\ --model_name_or_path meta-llama/Llama-2-7b-hf \\ --dataset_path data/alpaca/train_conversation \\ --conversation_template llama2 \\ --output_model_path output_models/finetuned_llama2_7b_lisa \\ --lisa_activated_layers 1 \\ --lisa_interval_steps 20
洛拉
洛拉(Lora)是一种参数效率的芬特算法,比全面填充更有效。
cd data && ./download.sh alpaca && cd - bash ./scripts/run_finetune_with_lora.sh \\ --model_name_or_path facebook/galactica-1.3b \\ --dataset_path data/alpaca/train_conversation \\ --output_lora_path output_models/finetuned_galactica_lora
提示
Llama-2-7B对话数据集示例
cd data && ./download.sh alpaca && cd - bash ./scripts/run_finetune_with_lora.sh \\ --model_name_or_path meta-llama/Llama-2-7b-hf \\ --dataset_path data/alpaca/train_conversation \\ --conversation_template llama2 \\ --output_model_path output_models/finetuned_llama2_7b_lora \\
合并洛拉体重
使用以下方式将洛拉重量和基本模型合并为一个:
bash ./scripts/run_merge_lora.sh \\ --model_name_or_path Qwen/Qwen1.5-1.8B \\ --lora_model_path output_models/lora \\ --output_model_path output_models/lora_merged \\
推理
填充后,您可以运行以下命令与模型聊天。
bash ./scripts/run_chatbot.sh output_models/finetuned_gpt2
提示
我们建议使用VLLM更快地推断。
使用VLLM更快的推断
bash ./scripts/run_vllm_inference.sh \\ --model_name_or_path Qwen/Qwen2-0.5B \\ --dataset_path data/alpaca/test_conversation \\ --output_dir data/inference_results \\
部署
如果您想在本地部署自己的模型,我们将提供一个基于Gradio的UI来构建聊天机器人。运行以下命令将启动Robin-7B的演示:
pip install gradio python ./examples/chatbot_gradio.py --deepspeed configs/ds_config_chatbot.json --model_name_or_path YOUR-LLAMA --lora_model_path ./robin-7b --prompt_structure \" A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human\'s questions.###Human: {input_text}###Assistant: \" --end_string \" # \" --max_new_tokens 200
评估
LMFlow基准测试是开源大型语言模型的自动评估框架。我们使用负面的对数似然(NLL)作为度量,以评估语言模型的不同方面:chitchat,常识性推理和能力后的指导。
您可以直接运行LMFlow基准测试评估,以获取参与LLM比较的结果。例如,要运行GPT2 XL,可以执行
bash ./scripts/run_benchmark.sh --model_name_or_path gpt2-xl
-model_name_or_path是需要的,您可以在此处填写拥抱面模型名称或本地模型路径。
要检查评估结果,您可以检查benchmark.log in ./output_dir/gpt2-xl_ LMFlow _chat_nll_nll_eval,./output_dir/gpt2-xl_all_all_nll_nll_nll_nll_eval and ./output_dir/gpt2-xl_commonsense_qamonsense_qa_qa_eval。
支持的功能
Finetune加速与内存优化
-
丽莎:层次的重要性抽样对记忆有效的大语言模型微调
丽莎(Lisa)是针对大语言模型的一种新颖且记忆效率的训练策略,在优化过程中选择性冻结层,超过了诸如洛拉(Lora)的现有方法。查看丽莎以获取更多详细信息。
在LMFlow中,在训练命令中使用-use_lisa 1激活LISA。用-lisa_activated_layers 2控制激活层的数量,并使用-lisa_step_interval 20调整冻结层间隔。 -
洛拉
洛拉(Lora)是一种参数效率的芬特算法,比全面填充更有效。查看Finetuning-Lora以获取更多详细信息。
-
闪存
LMFlow支持Flashattention-1和最新的Flashattention-2。查看flash_atections,以获取更多详细信息。
-
梯度检查点
梯度检查点是一种内存优化技术,可将计算的计算用于内存。当模型太大而无法适应GPU内存时,这很有用。仅将其添加到您的培训命令中来使用它。
-
深速零3
LMFlow支持DeepSpeed Zero-3卸载。我们提供了一个示例深速配置,您可以直接使用它。
推理加速度
-
Llama推断CPU
多亏了Llama.cpp的巨大努力。每个人都有可能通过4位量化在CPU上运行自己的Llama模型。我们提供一个脚本将Llama Lora权重转换为.pt文件。您只需要在llama.cpp中使用convert-pth-to-ggml.py来执行量化。
-
闪存
LMFlow支持Flashattention-1和最新的Flashattention-2。查看flash_atections,以获取更多详细信息。
-
vllm
尝试VLLM快速,易于使用的LLM推理和服务。感谢您的出色工作!
长上下文
-
骆驼模型的位置插值
现在, LMFlow支持Llama模型的最新线性和NTK(神经内核理论)缩放技术。查看Postion_interpolation有关更多详细信息。
模型自定义
-
词汇扩展
现在,您可以训练自己的句子令牌,并将其与Model的Origin HF Tokenizer合并。查看vocab_extension有关更多详细信息。
多模式
-
多模式聊天机器人
LMFlow支持图像和文本的多模式输入。查看我们的LMFlow多模式聊天机器人。
自定义优化
-
自定义优化
LMFlow现在支持各种优化器的自定义优化器培训。通过量身定制的优化策略来提升模型的性能。深入了解详细信息,并在Custom_optimizers上使用我们更新的脚本尝试新功能。
下表评估了自定义优化器在羊驼数据集上GPT-2的微调过程中的性能,从而强调了他们的个人对培训损失的影响。特定的超参数设置利用默认配置,可以在custom_optimizers上自定义和调整。重要的是要注意,评估是在0.1个时期内进行的,以提供对优化者有效性的初步见解。
优化器名称 火车损失 RMSPROP 2.4016 狮子-32位 2.4041 亚当 2.4292 Adamp 2.4295 adamw 2.4469 afactor 2.4543 Adabound 2.4547 Adamwschedulefree 2.4677 阿丹 2.5063 纳达姆 2.5569 适应性 2.5857 Adamax 2.5924 radam 2.6104 阿达德尔塔 2.6298 Adagrad 2.8657 瑜伽士 2.9314 诺维格拉德 3.1071 索菲亚 3.1517 羊肉 3.2350 拉斯 3.3329 sgdschedulefree 3.3541 SGDP 3.3567 SGD 3.3734
支持
如果您需要任何帮助,请提交GitHub问题。
执照
此项目中包含的代码是根据Apache 2.0许可证的。如果您希望将本项目中包含的代码和模型用于商业目的,请签署本文档以获得授权。
引用
如果您发现此存储库有用,请考虑提供并引用我们的论文:
LMFlow,
title={ LMFlow : An extensible toolkit for finetuning and inference of large foundation models},
author={Diao, Shizhe and Pan, Rui and Dong, Hanze and Shum, Ka Shun and Zhang, Jipeng and Xiong, Wei and Zhang, Tong},
journal={arXiv preprint arXiv:2306.12420},
year={2023}
}\”>
@article{diao2023 LMFlow ,
title={ LMFlow : An extensible toolkit for finetuning and inference of large foundation models},
author={Diao, Shizhe and Pan, Rui and Dong, Hanze and Shum, Ka Shun and Zhang, Jipeng and Xiong, Wei and Zhang, Tong},
journal={arXiv preprint arXiv:2306.12420},
year={2023}
}
@article{dong2023raft,
title={Raft: Reward ranked finetuning for generative foundation model alignment},
author={Dong, Hanze and Xiong, Wei and Goyal, Deepanshu and Pan, Rui and Diao, Shizhe and Zhang, Jipeng and Shum, Kashun and Zhang, Tong},
journal={arXiv preprint arXiv:2304.06767},
year={2023}
}
@article{pan2024lisa,
title={LISA: Layerwise Importance Sampling for Memory-Efficient Large Language Model Fine-Tuning},
author={Pan, Rui and Liu, Xiang and Diao, Shizhe and Pi, Renjie and Zhang, Jipeng and Han, Chi and Zhang, Tong},
journal={arXiv preprint arXiv:2403.17919},
year={2024}
}
