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 與 WeChat 群組,並定期發布更新(新模型支援、如推測解碼等新演算法、對話範本預設等)。
為何重要 – 微調 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