LMFlow

GitHub
8.5k 831 中等 7 次阅读 昨天Apache-2.0开发框架语言模型
AI 解读 由 AI 自动生成,仅供参考

LMFlow 是一个专为大型基础模型设计的可扩展工具箱,核心功能涵盖模型的微调和推理。LMFlow 致力于降低大模型的使用门槛,解决了传统开发流程繁琐、硬件适配复杂以及资源消耗过大的痛点。通过提供统一且高效的接口,LMFlow 让模型训练和部署变得更加便捷可靠,真正践行“大模型人人可用”的理念。

LMFlow 非常适合人工智能开发者、研究人员以及对大模型应用感兴趣的用户。无论是想快速验证想法的工程师,还是需要优化训练策略的研究者,都能轻松上手。LMFlow 的技术亮点十分突出,不仅支持多种优化器自定义和推测性解码加速推理,还内置了 Llama-3 等最新对话模板。特别值得一提的是其低显存训练方案,例如 LISA 技术能让 7B 模型在有限资源下运行。近期版本还加强了对 Accelerate 的支持,进一步简化了配置流程。如果你正在寻找一个既专业又易用的大模型开发框架,LMFlow 绝对值得关注。

使用场景

某电商客服团队希望基于开源大模型定制专属问答系统,但面临技术门槛高和算力资源有限的挑战。

没有 LMFlow 时

  • 环境配置极其复杂,依赖冲突导致训练脚本频繁报错,耗费大量调试时间。
  • 不同模型架构适配困难,需手动修改底层代码才能支持新模型结构。
  • 显存占用过高,普通消费级显卡无法运行 7B 以上模型,被迫租用昂贵云资源。
  • 对话模板需自行编写,容易因格式错误导致模型输出混乱,影响用户体验。

使用 LMFlow 后

  • LMFlow 提供统一接口,一键完成环境部署与模型加载,大幅降低入门门槛。
  • 内置多种主流模型支持,无需重复造轮子适配架构,直接调用即可微调。
  • 利用 LISA 等技术优化显存,在 24G 显卡上即可高效训练 7B 模型,节省成本。
  • 预设 Llama-3 等对话模板,开箱即用且格式规范,确保对话流畅自然。

LMFlow 通过标准化流程显著降低了大模型微调难度,让企业能更专注于业务逻辑而非基础设施,真正实现大模型技术的普惠落地。

运行环境要求

操作系统
  • Linux
GPU

需要 NVIDIA GPU,显存根据模型大小和微调方法不同(0.4GB-1200GB+),部分旧版本分支支持 CUDA 10.3-11.7

内存

未说明

依赖
notes推荐使用 Ubuntu 20.04 Linux 系统;需使用 conda 创建独立环境;默认启用 WandB 记录训练日志,首次运行需执行 wandb login;不同 CUDA 版本可能需要切换特定 git 分支;支持多种微调方法及多模态功能。
python3.9+
mpi4py
accelerate
wandb
torch
transformers
datasets
LMFlow hero image

快速开始

LMFlow

LMFlow

简体中文 | English | 西班牙语 | 日语 | 韩语 | 印地语

Website Code License Python 3.9+ Doc Embark slack badge WeChat badge

一个可扩展、便捷且高效的工具箱,用于微调(finetuning)大型机器学习(Machine Learning)模型,旨在用户友好、快速可靠,并面向整个社区开放。

LMFlow-features

最新动态

[!IMPORTANT]

  • :exclamation: [2025-07-09] 我们对 LMFlow 进行了重大更新,完全支持 Accelerate 并进行了大幅简化。如果您正在寻找之前的版本,请使用 git checkout v0.0.10,或者查看 v0.0.10 分支。查看所有发布版本 在此处
  • [2024-12-02] 支持 Hymba,这是一种具有混合头并行架构的新型小语言模型系列。有关更多详细信息,请查看 Post-training Hymba
  • [2024-07-01] 🏆 LMFlow 在 NAACL 2024 上荣获 最佳演示论文奖! 🎉
  • [2024-06-30] 扩展优化选项!我们现在支持使用多种优化器进行自定义优化器训练。深入了解详情并通过我们更新的脚本尝试新功能:custom_optimizers
  • [2024-04-25] :rocket: 支持对话模板!我们已预设最新的 Llama-3Phi-3 对话模板,以及一些常用模板,例如 chatml(查看所有模板 在此处),我们正在努力添加更多预设模板。在 shell 脚本中添加相应的 --conversation_template 参数即可!:rocket:
更多新闻...

目录

快速开始

环境搭建

我们的软件包已在 Linux 操作系统(Ubuntu 20.04)上测试过。其他操作系统平台(MacOS, Windows)尚未完全测试,您可能会遇到意外错误。如果您首次使用 LMFlow,我们建议您在 Linux 机器或 Google Colab 上尝试。

git clone -b v1.0.0 https://github.com/OptimalScale/LMFlow.git
cd 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://github.com/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
git clone -b v0.0.5 https://github.com/OptimalScale/LMFlow.git
cd LMFlow
conda create -n lmflow python=3.9 -y
conda activate lmflow
conda install mpi4py
pip install -e .

[!TIP] 默认情况下,我们使用 WandB (Weights & Biases,一种实验跟踪工具) 来跟踪和可视化训练过程。在运行训练脚本之前,用户可能需要使用以下命令登录 WandB:

wandb login

详细说明请参考 WandB 快速入门指南。步骤 1(注册)和步骤 2(使用您的 WandB API 密钥登录)足以设置您的环境。

禁用 wandb

可以通过以下方式禁用 wandb:

  1. 在运行训练命令之前添加环境变量。
export WANDB_MODE=disabled
  1. 或者,指定报告结果和日志的集成。在训练脚本中添加:
--report_to none \

准备数据集

请参阅我们的 文档

微调

预估硬件需求

方法 0.5B 3B 7B 14B 30B 70B xB
全量 bf16/fp16 9GB 55GB 120GB 240GB 600GB 1200GB 18xGB
LoRA 1GB 6GB 16GB 32GB 64GB 160GB 2xGB
QLoRA quant_bit=8 0.7GB 3GB 10GB 20GB 40GB 80GB xGB
QLoRA quant_bit=4 0.4GB 1.5GB 6GB 12GB 24GB 48GB x/2GB

全量微调

全量微调 (Full Finetuning) 会更新所有参数以微调语言模型。 以下是一个微调 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

[!TIP] 对于对话数据集,通过添加 --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

LISA 是一种内存高效的微调算法,允许在内存和随机未冻结层数之间进行权衡。此脚本目前仅在单 GPU 上测试过。请密切关注我们的最新更新 :smile:

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

[!TIP]

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

LoRA (Low-Rank Adaptation,低秩自适应) 是一种参数高效的微调算法,比全量微调更高效。

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

[!TIP]

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 \
合并 LoRA 权重

使用以下命令将 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

[!TIP] 我们推荐使用 SGLang 进行更快的批量推理。

使用 SGLang 进行更快推理
bash ./scripts/run_sglang_inference.sh

注意:如果使用 SGLang 时遇到错误 ModuleNotFoundError: No module named 'common_ops',请尝试运行 apt-get update 然后 apt install numactl

部署

如果您想在本机部署自己的模型,我们提供了一个基于 Gradio 的用户界面来构建聊天机器人。运行以下命令将启动 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

评估

对于大多数评估目的,我们推荐使用 LM Evaluation Harness

支持的功能

微调加速与内存优化
  • LISA: Layerwise Importance Sampling for Memory-Efficient Large Language Model Fine-Tuning

    LISA 是一种新颖且节省内存的大语言模型 (Large Language Model) 训练策略,通过在优化过程中选择性冻结层,其性能优于现有的方法如 LoRA(一种参数高效的微调算法)。更多详情请查看 LISA
    在 LMFlow 中,使用 --use_lisa 1 激活 LISA。使用 --lisa_activated_layers 2 控制激活层数,使用 --lisa_step_interval 20 调整冻结层间隔。

  • LoRA

    LoRA 是一种参数高效的微调算法,比全量微调更高效。更多详情请查看 finetuning-lora

  • FlashAttention

    LMFlow 支持 FlashAttention-1 和最新的 FlashAttention-2。更多详情请查看 flash_attention

  • 梯度检查点 (Gradient Checkpointing)

    梯度检查点 (Gradient checkpointing) 是一种以计算换取内存的内存优化技术。 当模型过大无法放入 GPU 显存时非常有用。 只需在训练命令中添加 --gradient_checkpointing 即可使用它。

  • Deepspeed Zero3

    LMFlow 支持 Deepspeed Zero-3 Offload。 我们提供了一个示例 deepspeed config,您可以直接使用。

推理加速
  • CPU 上的 LLaMA 推理

    感谢 llama.cpp 的巨大努力。通过 4-bit 量化,每个人都可以将他们的 LLaMA 模型在 CPU 上运行。我们提供了一个脚本将 LLaMA LoRA 权重转换为 .pt 文件。您只需要使用 llama.cpp 中的 convert-pth-to-ggml.py 进行量化。

  • FlashAttention

    LMFlow 支持 FlashAttention-1 和最新的 FlashAttention-2。更多详情请查看 flash_attention

  • vLLM

    尝试 vLLM 以实现快速且易于使用的 LLM(大型语言模型)推理和服务。感谢 great work!

长上下文
  • LLaMA 模型的位置插值 (Position Interpolation)

    现在 LMFlow 支持用于 LLaMA 模型的最新线性及 NTK(神经核理论)缩放技术。更多详情请查看 postion_interpolation

模型定制
  • 词汇扩展 (Vocabulary Extension)

    现在您可以训练自己的 sentencepiece 分词器 (tokenizer) 并将其与模型的原始 hf tokenizer 合并。更多详情请查看 vocab_extension

多模态
  • 多模态聊天机器人 (Multimodal Chatbot)

    LMFlow 支持图像和文本的多模态输入。查看我们的 LMFlow multimodal chatbot

自定义优化
  • 自定义优化 (Custom Optimization)

    LMFlow 现在支持使用多种优化器进行自定义优化器训练。通过量身定制的优化策略提升模型性能。深入了解细节并通过我们在 custom_optimizers 更新的脚本尝试新功能。

    下表评估了 GPT-2 在 Alpaca 数据集微调过程中自定义优化器的性能,强调了它们对训练损失的各自影响。具体的超参数设置使用默认配置,可以在 custom_optimizers 处自定义和调整。值得注意的是,评估是在 0.1 个 epoch (轮次) 的持续时间内进行的,以提供关于优化器有效性的初步见解。

    优化器名称 训练损失
    RMSprop 2.4016
    LION-32bit 2.4041
    Adam 2.4292
    AdamP 2.4295
    AdamW 2.4469
    AdaFactor 2.4543
    AdaBound 2.4547
    AdamWScheduleFree 2.4677
    Adan 2.5063
    NAdam 2.5569
    AdaBelief 2.5857
    AdaMax 2.5924
    RAdam 2.6104
    AdaDelta 2.6298
    AdaGrad 2.8657
    Yogi 2.9314
    NovoGrad 3.1071
    Sophia 3.1517
    LAMB 3.2350
    LARS 3.3329
    SGDScheduleFree 3.3541
    SGDP 3.3567
    SGD 3.3734

支持

如果您需要任何帮助,请提交一个 Github Issue。

许可

本项目包含的代码采用 Apache 2.0 许可证 授权。 如果您希望出于商业目的使用本项目中包含的代码和模型,请签署此 文档 以获得授权。

引用

如果您觉得本仓库有用,请考虑给予⭐并引用我们的 论文

@article{diao2023lmflow,
  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}
}

版本历史

v1.0.02025/07/11
v0.0.82024/06/19
v0.0.42023/08/09
v0.0.32023/07/21
v0.0.12023/03/27

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架