LMFlow学习资料汇总 - 大模型微调与推理的可扩展工具箱
LMFlow是一个开源的大模型微调与推理工具箱,旨在让整个社区都能方便地使用和训练大模型。本文汇总了LMFlow项目的主要学习资料和使用指南,帮助大家快速上手这个强大的工具。
项目简介
LMFlow是一个可扩展、方便、高效的大型机器学习模型微调工具箱,具有以下特点:
- 可扩展:支持常见的大模型backbone,如LLaMA, Galactica, GPT-2等
- 轻量级:使用LoRA等技术,极大减少了微调所需的参数量(例如LLaMA 33B模型只需25MB存储)
- 面向任务:在7B/33B规模模型上可以达到与ChatGPT相当的性能
- 开放:整个pipeline(数据、模型、微调、推理)都是开源的
快速开始
- 安装
LMFlow目前主要支持Linux系统,建议在Linux机器或Google Colab上尝试:
git clone https://github.com/OptimalScale/LMFlow.git
cd LMFlow
conda create -n lmflow python=3.9 -y
conda activate lmflow
conda install mpi4py
bash install.sh
- 准备数据集
请参考数据集文档。
- 微调
LMFlow支持全量微调、LISA和LoRA等多种微调方式,以下是一个使用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
- 推理
微调后,可以用以下命令与模型对话:
bash ./scripts/run_chatbot.sh output_models/finetuned_gpt2
主要功能
LMFlow支持多种大模型训练和推理加速技术:
- LISA:一种新的内存高效微调算法
- LoRA:参数高效的微调算法
- FlashAttention:支持FlashAttention-1和最新的FlashAttention-2
- 梯度检查点:用于大模型训练的内存优化技术
- Deepspeed Zero-3:支持Deepspeed Zero-3 Offload
此外还支持:
- 在CPU上推理LLaMA模型
- 使用vLLM进行快速推理
- LLaMA模型的位置插值,支持长上下文推理
- 词表扩展
- 多模态输入(图像+文本)
评测基准
LMFlow Benchmark是一个开源大语言模型的自动评测框架。它使用负对数似然(NLL)作为指标,评估语言模型在闲聊、常识推理和指令跟随等方面的能力。
您可以直接运行LMFlow benchmark评测来获得结果:
bash ./scripts/run_benchmark.sh --model_name_or_path gpt2-xl
更多资源
LMFlow是一个功能强大而且在持续更新的开源项目,欢迎大家试用并给出反馈。如果您觉得项目有帮助,请给项目点个star支持一下。使用中如有任何问题,也欢迎在GitHub上提issue讨论。