LMFlow 微调全流程指南:环境搭建、数据集准备与 Full / LISA / LoRA 训练实战
人工智能大模型微调模型评测强化学习多模态【免费下载链接】LMFlowAn Extensible Toolkit for Finetuning and Inference of Large Foundation Models. Large Models for All.项目地址https://gitcode.com/gh_mirrors/lm/LMFlow点击查看免费下载本文以 README.md 的 Quick Start 章节为核心骨架结合 scripts 目录下的真实训练脚本与 src/lmflow 的源码实现系统讲解 LMFlow 从环境搭建、数据集下载、三种主流微调方式Full Finetuning / LISA / LoRA到推理部署与评估的完整闭环。读者学完可掌握基于 Linux 与 Conda 的 LMFlow 环境配置、Alpaca 等对话数据集的获取、通过accelerate启动分布式微调的关键参数、以及如何用训练好的模型搭建 Gradio 聊天机器人。一、LMFlow 是什么LMFlow 是一个可扩展、便捷且高效的大模型微调与推理工具箱面向全社区开放定位是用户友好、速度快、可靠性高。它的核心能力覆盖微调Full Finetuning、LISA、LoRA、QLoRA以及自定义优化器训练推理HF 后端、vLLM、SGLang支持 FlashAttention、长上下文Position Interpolation对齐DPO / Iterative DPO、RAFTReward rAnked FineTuning等多模态与部署多模态聊天机器人、Gradio UI、Flask 部署。本文聚焦 README 的 Quick Start 主线从零开始完成一次可运行的对话模型微调。二、环境搭建Setup2.1 基础安装官方文档明确说明LMFlow 已在Linux OSUbuntu 20.04上完成测试macOS 与 Windows 未完全测试可能遇到意外错误。首次使用建议在 Linux 机器或 Google Colab 上进行。git clone -b v1.0.0 https://github.com/OptimalScale/LMFlow.git cd LMFlow conda create -n lmflow python3.9 -y conda activate lmflow conda install mpi4py pip install -e .要点说明使用-b v1.0.0检出稳定发布分支若需旧版本v0.0.10 及更早README 也提供了对应的克隆命令git clone -b v0.0.10 ...旧版本适合 CUDA 10.3–11.7 环境。conda install mpi4py是分布式通信依赖。pip install -e .以可编辑模式安装便于后续调试源码。2.2 可选依赖Extras基础安装已足以支撑Full / LoRA / LISA 微调与 HF 后端推理。更多高级功能按需安装Extra启用功能安装命令vllmvLLM 后端推理与 Iterative DPOpip install -e .[vllm]sglangSGLang 后端推理与 Iterative DPOpip install -e .[sglang]trlDPO / Iterative DPO 训练pip install -e .[trl]deepspeedDeepSpeed 集成pip install -e .[deepspeed]flash_attnFlash Attention 2pip install -e .[flash_attn]ray分布式奖励模型推理pip install -e .[ray]multimodal多模态模型pip install -e .[multimodal]gradioGradio 聊天 UIpip install -e .[gradio]flaskFlask 部署pip install -e .[flask]多个 Extra 可组合例如 Iterative DPO vLLMpip install -e .[vllm,trl]SGLang 变体则用.[sglang,trl]。重要提醒vLLM 与 SGLang 依赖互不兼容的 CUDA / PyTorch 版本不要安装进同一个环境。如需两者请分别创建独立 Conda 环境如lmflow-vllm与lmflow-sglang。2.3 训练日志与 WandBLMFlow 默认使用WandB跟踪可视化训练过程。运行训练脚本前需登录wandb login若希望禁用 WandB有两种方式运行训练命令前设置环境变量export WANDB_MODEdisabled在训练脚本中指定--report_to none。三、准备数据集Prepare DatasetREADME 的微调示例统一使用 data/download.sh 下载数据集。该脚本支持多种数据集alpaca、MedMCQA、PubMedQA、wikitext、hh_rlhf、dpo-mix-7k、多模态 COCO2017 / LLaVA 等并支持all参数一次下载全部cd data ./download.sh alpaca cd -执行后会在data/alpaca/下生成训练对话数据微调命令中的--dataset_path data/alpaca/train_conversation即指向该目录。从 download.sh 源码可见下载逻辑是wget从公共服务器拉取tar.gz并就地解压清理。四、微调Finetuning4.1 硬件需求估算方法0.5B3B7B14B30B70BxBFullbf16/fp169GB55GB120GB240GB600GB1200GB18xGBLoRA1GB6GB16GB32GB64GB160GB2xGBQLoRAquant_bit80.7GB3GB10GB20GB40GB80GBxGBQLoRAquant_bit40.4GB1.5GB6GB12GB24GB48GBx/2GB该表给出了规模化的显存估算公式Full 微调约为18xGBLoRA 约2xGBQLoRA4bit约x/2GB——例如 7B 模型 Full 训练约需 120GB而 4bit QLoRA 仅需约 6GB。4.2 训练脚本的统一入口仓库中的 run_finetune.sh、run_finetune_with_lisa.sh、run_finetune_with_lora.sh 等脚本最终都通过accelerate launch调用 examples/finetune.py 完成训练。核心调用链从源码结构看examples/finetune.py ├─ HfArgumentParser 解析 ModelArguments / DatasetArguments / FinetunerArguments ├─ AutoPipeline.get_pipeline(finetuner) → 构建 Finetunersrc/lmflow/pipeline/finetuner.py ├─ Dataset(data_args) → 加载数据集src/lmflow/datasets/dataset.py ├─ AutoModel.get_model(model_args) → 加载 HF 模型 └─ finetuner.tune(model, dataset) → 执行训练所有脚本共用相同的accelerate启动方式区别仅在微调策略相关参数--use_lisa、--use_lora、--use_qlora等。默认分布式配置为 configs/accelerate_fsdp_config.yaml使用 FSDP 全分片FULL_SHARD、bf16 混合精度num_processes: 8对应 8 卡训练单卡时需按配置注释调整distributed_type: NO。仓库另提供 configs/accelerate_dsz0_config.yaml、configs/accelerate_dsz2_config.yaml、configs/accelerate_dsz3_config.yaml 等 DeepSpeed 方案供选择。4.3 Full Finetuning全参微调Full 训练更新模型全部参数。README 示例GPT-2 basecd 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_gpt2Tips对话数据集建议指定对话模板以获得更好效果追加--conversation_template。例如 Llama-3-8Bbash ./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模板实现位于 src/lmflow/utils/conversation_template已内置 llama、llama3、chatml、qwen、phi、gemma、deepseek、internlm、zephyr、yi、chatglm、hymba 等模板分别对应独立文件。实际脚本 run_finetune.sh 中的默认参数可作完整参考model_name_or_pathmeta-llama/Llama-3.2-3B-Instruct dataset_pathdata/alpaca/train_conversation conversation_templatellama3 output_diroutput_models/finetune accelerate launch --config_file configs/accelerate_fsdp_config.yaml \ examples/finetune.py \ --model_name_or_path ${model_name_or_path} \ --trust_remote_code 0 \ --dataset_path ${dataset_path} \ --output_dir ${output_dir} --overwrite_output_dir \ --conversation_template ${conversation_template} \ --disable_group_texts 1 \ --num_train_epochs 1 \ --block_size 512 \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 1 \ --learning_rate 2e-5 \ --lr_scheduler_type cosine \ --bf16 \ --torch_dtype bfloat16 \ --validation_split_percentage 0 \ --logging_steps 20 \ --do_train \ --ddp_timeout 72000 \ --save_steps 5000 \ --use_flash_attention 0 \ --gradient_checkpointing 0 \ --dataloader_num_workers 8 \ --report_to wandb \ --run_name finetune \ --seed 42关键训练参数说明均可在 src/lmflow/args.py 的FinetunerArguments与ModelArguments中找到定义与默认值--block_size 512文本块最大长度--learning_rate 2e-5全参微调常用学习率--lr_scheduler_type cosine余弦学习率调度--bf16 --torch_dtype bfloat16bf16 混合精度训练--per_device_train_batch_size 1--gradient_accumulation_steps 1单卡批大小与梯度累积步数--use_flash_attention是否启用 FlashAttention 层以降低显存默认 0--gradient_checkpointing梯度检查点显存不足时以计算换显存默认 0--report_to wandb日志上报后端可改为none禁用。4.4 LISA 微调Layerwise Importance SamplingLISAarXiv:2403.17919是一种显存高效微调算法通过在优化过程中随机解冻部分层、冻结其余层来权衡显存与训练效果。README 转述论文观点称其效果可超越 LoRA 类方法。当前脚本仅在单 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 20TipsLlama-2-7B 对话数据集示例可追加--conversation_template llama2。对应脚本 run_finetune_with_lisa.sh 中实际参数为# LISA related arguments lisa_activated_layers1 lisa_interval_steps20 accelerate launch --config_file configs/accelerate_fsdp_config.yaml \ examples/finetune.py \ --model_name_or_path ${model_name_or_path} \ ... --use_lisa 1 \ --lisa_activated_layers ${lisa_activated_layers} \ --lisa_interval_steps ${lisa_interval_steps} \ ...源码层面src/lmflow/args.pyuse_lisa是否启用 LISA 策略默认Falselisa_activated_layers激活解冻层数默认2lisa_interval_steps每个冻结区间内的步数即每隔该步数随机切换被解冻层默认20lisa_layers_attribute模型层属性路径默认model.model.layers。在 src/lmflow/pipeline/finetuner.py 中当training_args.use_lisa为真时会构造DynamicLayerActivationCallback并将其追加到 Trainer 的回调列表由该回调按interval_steps周期性地随机更新激活层——这就是 LISA 机制在 HF Trainer 框架中的落地点。4.5 LoRA 微调LoRA 是参数高效微调算法比全参微调更省显存与算力。README 示例Galactica-1.3Bcd 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_loraTipsLlama-2-7B 对话数据集示例可追加--conversation_template llama2。对应脚本 run_finetune_with_lora.sh 的实际参数# LoRA related arguments lora_r8 lora_alpha32 lora_dropout0.1 accelerate launch --config_file configs/accelerate_fsdp_config.yaml \ examples/finetune.py \ --model_name_or_path ${model_name_or_path} \ ... --use_lora 1 \ --lora_r ${lora_r} \ --lora_alpha ${lora_alpha} \ --lora_dropout ${lora_dropout} \ ...LoRA 参数定义见 src/lmflow/args.pyuse_lora是否启用 LoRA默认Falselora_rLoRA 秩越小参数量越少默认8lora_alpha论文中的 alpha控制微调权重与原始权重的合并比例默认32lora_dropoutlora.linear的 dropout 率默认0.1lora_target_modules应用 LoRA 的模块逗号分隔多个模块save_aggregated_lora是否保存聚合后的 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从 run_merge_lora.sh 源码可见该脚本支持--model_name_or_path、--lora_model_path、--output_model_path、--device默认cpu四个参数底层调用 examples/merge_lora.py当前仅支持 CPU 合并GPU 合并会报错提示。4.6 QLoRA补充仓库还提供 run_finetune_with_qlora.sh在 LoRA 基础上对基座模型做 4bit/8bit 量化进一步压低显存quant_bit4 lora_r8 lora_alpha32 lora_dropout0.1 accelerate launch --config_file configs/accelerate_fsdp_config.yaml \ examples/finetune.py \ ... --use_qlora 1 \ --quant_bit ${quant_bit} \ --lora_r ${lora_r} \ --lora_alpha ${lora_alpha} \ --lora_dropout ${lora_dropout} \ ...量化相关参数src/lmflow/args.pyquant_bit量化位数可选4/8默认4quant_type量化类型可选nf4/fp4默认nf4double_quant是否使用双重量化默认True。五、推理Inference微调完成后即可对话bash ./scripts/run_chatbot.sh output_models/finetuned_gpt2Tips批量推理推荐 SGLang 以获得更高吞吐bash ./scripts/run_sglang_inference.sh若遇到ModuleNotFoundError: No module named common_ops请先apt-get update再apt install numactl。六、部署Deployment如需本地部署自研模型可使用 Gradio 搭建聊天 UIpip 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 humans questions.###Human: {input_text}###Assistant: \ --end_string # \ --max_new_tokens 200其中--prompt_structure指定对话提示模板{input_text}为输入占位符。LMFlow 也提供 examples/chatbot.py、examples/vis_chatbot_gradio.py多模态版本等入口。七、评估Evaluation多数评估场景推荐使用 LM Evaluation HarnessEleutherAI 的lm-evaluation-harness。仓库同时提供 examples/evaluation.py 与 scripts/run_evaluation.sh 等内置评估脚本可供参考README 建议将 LM Evaluation Harness 作为主要评估工具。八、支持的特性速览微调加速与显存优化LISA训练命令加--use_lisa 1启用--lisa_activated_layers 2控制激活层数--lisa_interval_steps 20调整冻结层切换间隔LoRA参数高效微调FlashAttention支持 FlashAttention-1 与 FlashAttention-2详见 docs/readme/flash_attn2.mdGradient Checkpointing加--gradient_checkpointing以计算换显存DeepSpeed Zero3支持 Zero-3 Offload可直接使用 configs/deepspeed/zero3.json。推理加速CPU 推理LLaMA借助 llama.cpp 的 4bit 量化将 LLaMA 模型跑在 CPU 上FlashAttention / vLLM快速易用的 LLM 推理与 Serving。长上下文Position Interpolation支持 LLaMA 模型的 Linear 与 NTK 缩放技术详见 docs/readme/Position_Interpolation.md。模型定制与多模态Vocabulary Extension训练自定义 sentencepiece tokenizer 并与原 HF tokenizer 合并Multimodal Chatbot支持图文多模态输入脚本见 scripts/multimodal/run_vis_chatbot_gradio_minigpt4.sh。自定义优化器LMFlow 支持以多种优化器进行训练脚本见 run_finetune_with_custom_optim.sh优化器实现集中在 src/lmflow/optim包含 adam、adamw_schedule_free、adan、lamb、muon、sophia、sgdp、yogi、novograd、adabelief、adabound、radam、nadam、adamp、lars、sgd_schedule_free 等。README 在 Alpaca 数据集上以 GPT-2 微调 0.1 epoch 给出的各优化器训练损失对比默认超参仅供参考Optimizer NameTrain LossRMSprop2.4016LION-32bit2.4041Adam2.4292AdamP2.4295AdamW2.4469AdaFactor2.4543AdaBound2.4547AdamWScheduleFree2.4677Adan2.5063NAdam2.5569AdaBelief2.5857AdaMax2.5924RAdam2.6104AdaDelta2.6298AdaGrad2.8657Yogi2.9314NovoGrad3.1071Sophia3.1517LAMB3.2350LARS3.3329SGDScheduleFree3.3541SGDP3.3567SGD3.3734九、许可与引用项目代码遵循Apache 2.0许可证见 LICENSE商用模型使用需另行签署授权文件引用请使用 README 提供的三篇论文 BibTeXLMFlowarXiv:2306.12420、RAFTarXiv:2304.06767、LISAarXiv:2403.17919。说明README 中提到的部分旧功能路径如scripts/speculative_decoding、scripts/vocab_extension、readme/目录在当前仓库中已随 v1.0.0 重构有所调整本文均以仓库实际存在的文件路径为准。赞分享人工智能大模型微调模型评测强化学习多模态【免费下载链接】LMFlowAn Extensible Toolkit for Finetuning and Inference of Large Foundation Models. Large Models for All.项目地址https://gitcode.com/gh_mirrors/lm/LMFlow点击查看免费下载相关推荐LMFlow 快速上手实战指南从环境搭建、数据集准备到全量/LISA/LoRA 微调、推理与评测LMFlow 快速上手实战指南从环境搭建、数据集准备到全量/LISA/LoRA 微调、推理与评测 本文基于 LMFlow 仓库的官方多语言 README d人工智能大模型微调模型评测强化学习多模态LMFlow 实战指南环境安装、全参数 / LISA / LoRA 微调与推理评估全流程LMFlow 实战指南环境安装、全参数 / LISA / LoRA 微调与推理评估全流程 本文基于 LMFlow 官方文档西班牙语版 README整理并结人工智能大模型微调模型评测强化学习多模态LMFlow 微调实战指南从数据准备到检查点保存完整掌握全参数、LISA 与 LoRA 微调LMFlow 微调实战指南从数据准备到检查点保存完整掌握全参数、LISA 与 LoRA 微调 本文基于 LMFlow 仓库官方微调文档 finetuning人工智能大模型微调模型评测强化学习多模态上一篇Eclipse LSP4J 项目常见问题解决方案下一篇kail容器过滤与命名空间管理精细控制日志输出范围创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →