OptimalScale/LMFlow
An Extensible Toolkit for Finetuning and Inference of Large Foundation Models. Large Models for All.
LMFlow – 大规模语言模型微调工具箱
是什么 – LMFlow 是一个开源的 Python 库,帮助研究人员和开发者适配(微调)大型语言模型(LLM),如 Llama‑3、Phi‑3、Llama‑2、GPT‑2 等。它集成了脚本、工具和可选集成,使整个流程——数据准备、训练、推理和部署——更快速、更简单。
核心功能
| 领域 | LMFlow 提供的内容 |
|---|---|
| 训练 | • 全参数微调(更新每个权重) |
| • LoRA(低秩适应)——一种轻量级、参数高效的微调方法 | |
| • LISA——一种新的内存高效算法,冻结大部分层,仅更新少数层,可在单张 24 GB GPU 上运行 7 B 规模模型 | |
| • QLoRA(8 位/4 位量化 LoRA)实现更低的内存占用 | |
| • 梯度检查点、FlashAttention‑2、DeepSpeed ZeRO‑3 等技巧,提升速度并减少 GPU 显存 | |
| 推理 | • 标准的 Hugging‑Face 风格推理 |
| • 高吞吐量服务的 vLLM 和 SGLang 后端 | |
| • 通过 llama.cpp 转换脚本实现纯 CPU 4 位推理 | |
| 部署 | • Gradio UI 用于快速聊天机器人演示 |
| • Flask 集成用于自定义 Web 服务 | |
| 扩展 | • 可选包(vllm, sglang, trl, deepspeed, flash_attn, ray, multimodal, gradio, flask)可按需安装。 |
如何使用
- 安装 –
pip install -e .(或添加所需扩展)。 - 准备数据 – 参考文档支持的数据集格式(如 Alpaca)。
- 运行训练脚本 – 选择所需方法(全参数:
run_finetune.sh,LoRA:run_finetune_with_lora.sh,LISA:run_finetune_with_lisa.sh)。 - 聊天 – 训练完成后,
run_chatbot.sh启动简单终端聊天机器人;如需 Web UI,使用 Gradio 示例。 - 部署 – 启动 Flask 或 Gradio 服务,可选 DeepSpeed 实现多 GPU 扩展。
硬件建议 – README 包含一张实用表格,展示不同模型大小和训练模式下的 GPU 显存需求(例如,7 B 模型全精度微调需约 120 GB,LoRA 仅需约 16 GB,8 位 QLoRA 仅需约 10 GB)。
社区与支持 – 项目维护网站、Discord、Slack 和微信群组,并定期发布更新(新模型支持、如推测解码等新算法、对话模板预设等)。
为何重要 – 微调 LLM 资源消耗大;LMFlow 将 LISA、LoRA、QLoRA、FlashAttention‑2、DeepSpeed 等最新内存节省技巧整合到一个易于安装的包中,降低了实验室和爱好者为特定任务或领域适配大模型的门槛。
快速入门示例
# 克隆稳定版本
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 .
# 在 Alpaca 数据上微调 GPT‑2
bash ./scripts/run_finetune.sh \
--model_name_or_path gpt2 \
--dataset_path data/alpaca/train_conversation \
--output_model_path output_models/finetuned_gpt2
# 与结果聊天
bash ./scripts/run_chatbot.sh output_models/finetuned_gpt2
相关
- 项目
- 项目
- 项目
- 项目
- Dispatch