LlamaFactory 實戰:用一套 CLI 與 Web UI 完成 LLM 微調、推理與部署
LlamaFactory 實戰:把模型微調流程收斂成一個可操作的工具鏈
為什麼值得關注
把開源模型微調成可用的專用模型,通常不只是執行一次訓練命令:還要處理模型與 tokenizer、資料格式、訓練策略、顯存配置、推理驗證、權重合併,以及最後的服務化。LlamaFactory 的定位,是把這條鏈路整合在同一個 Python 專案中,提供 CLI、Gradio Web UI,以及 OpenAI-style API/vLLM 推理後端。
截至 2026-08-05,專案在 GitHub 有 73,782 顆星,最近一次 push 是 2026-08-04;官方最新 release v0.9.5 於 2026-05-30 發布。它不是資源清單或單純教學,而是能直接安裝、執行訓練與部署的 AI Engineering 工具。
核心能力:從訓練到服務化
官方 README 將能力分成幾個實作面向:
- 模型支援:涵蓋 Llama、Qwen、DeepSeek、Gemma、Mistral、GLM、Phi 等模型家族,也包含多模態、音訊與視覺模型。
- 訓練方法:支援預訓練、監督式微調、Reward Modeling、PPO、DPO、KTO、ORPO 與 SimPO。
- 參數效率:除了 full-tuning,也提供 freeze-tuning、LoRA,以及透過 AQLM、AWQ、GPTQ、LLM.int8、HQQ、EETQ 的 2/3/4/5/6/8-bit QLoRA。
- 推理與觀測:可以用 LlamaBoard、TensorBoard、W&B、MLflow 或 SwanLab 觀測實驗,並透過 Gradio、CLI、vLLM worker 或 SGLang worker 加速推理。
這樣的整合價值,不在於重新發明每一種演算法,而在於讓模型、資料集、模板、訓練器與推理介面共享同一套設定。對團隊而言,從實驗切換到 API 服務時,少一次手工搬運與環境分叉。
最小可行路徑:LoRA 微調、聊天、合併
官方 Quickstart 以 Qwen3-4B-Instruct 為例,將 LoRA 微調、推理與權重合併收斂成三個 CLI 命令:
llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml
llamafactory-cli chat examples/inference/qwen3_lora_sft.yaml
llamafactory-cli export examples/merge_lora/qwen3_lora_sft.yaml
這三步背後對應三個不同驗證點:
1. train:確認資料格式、模板、顯存與訓練超參數能正常工作,產出 adapter checkpoint。
2. chat:在不先合併權重的情況下,直接把 base model 與 adapter 載入,檢查模型是否真的學到目標行為。
3. export:把 adapter 合併或轉出部署需要的格式,讓後續推理服務不必再維持同樣的 adapter 載入流程。
實務上不要跳過第二步。先用 chat 驗證輸出,再決定是否 export,可以避免把資料或模板問題固化到部署產物中。
資料準備是第一個真正的工程問題
LlamaFactory 的資料流程不是把 JSON 丟進訓練器就結束。官方文件要求在 data/dataset_info.json 登記自訂資料集,並依 data/README.md 準備欄位與模板。資料可以來自 Hugging Face、ModelScope、Modelers Hub、本機磁碟或 S3/GCS。
建議把資料檢查拆成三層:
- 結構:每筆資料是否符合任務需要,例如 instruction/input/output,或偏好學習需要的 chosen/rejected。
- 模板:訓練與推理使用同一個 chat template;官方特別提醒 reasoning 與 non-reasoning 版本要選對對應模板。
- 品質:先抽樣檢查多輪對話、工具呼叫、圖片或音訊欄位,再投入長時間訓練。
這裡最容易踩的坑,是把「模型支援」誤認成「資料不需要整理」。框架替你處理載入與格式化,但領域資料的去重、敏感資訊清理、標籤一致性與評估集隔離,仍然是使用者的責任。
LoRA、QLoRA 與顯存取捨
官方硬體表提供一個很實用的估算:以 7B 模型為例,full fine-tuning 的估計顯存需求遠高於 LoRA;16-bit 的 Freeze/LoRA/GaLore/APOLLO/BAdam/OFT 約 16GB,4-bit QLoRA 約 6GB。這些是估算值,不是保證,實際使用量仍會受到序列長度、batch size、梯度累積、optimizer 與 activation checkpointing 影響。
因此可以用以下順序做資源決策:
1. 先用小資料集與短序列跑通 LoRA。
2. 顯存不足時,改用 QLoRA 或降低 micro-batch,配合 gradient accumulation 維持有效 batch size。
3. 需要更大模型或多卡時,再評估 DeepSpeed、FSDP、Megatron-core backend 與分散式啟動。
4. 訓練完成後,用獨立評估集比較 base model、adapter model 與 merged model,而不是只看 training loss。
從本機實驗走向部署
LlamaFactory 提供三條部署路徑:
llamafactory-cli webui啟動 LlamaBoard,以瀏覽器操作訓練、評估與推理。- 透過 OpenAI-style API 與 vLLM worker,將微調後模型接到既有應用程式。
- 使用 Docker image 或 Docker Compose,固定 CUDA、PyTorch、Python 與 FlashAttention 版本,降低環境漂移。
官方 README 的 Docker image 範例使用 GPU、host IPC,並以 Ubuntu 22.04、CUDA 12.4、Python 3.11、PyTorch 2.6.0 與 Flash-attn 2.7.4 為基礎。若團隊的部署環境不是 NVIDIA CUDA,也要依官方 NPU 文件與對應 image 處理,不能直接套用 CUDA 參數。
服務化前至少要補上三項檢查:
- 限制可接受的輸入長度與併發,避免推理請求耗盡顯存。
- 將 adapter、merged checkpoint、tokenizer 與 chat template 一起版本化。
- 對工具呼叫、個人資料與模型輸出建立審計與安全策略;OpenAI 相容 API 只代表介面相容,不代表自動具備安全控管。
v0.9.5 帶來的訊號
官方 v0.9.5 release notes 列出 Qwen3.5/Qwen3.6、Gemma 4、Transformers v5 相容性,以及 FP8 Transformer Engine backend、Megatron 相關整合與新的 CLI sampler 等變更。這說明專案仍在快速跟進模型與訓練基礎設施,但也代表版本相容性需要被當成正式工程依賴管理。
建議以 release tag 或 commit pin 住可重現環境,搭配一個最小 smoke test:載入模型、跑一個短推理、載入一小批資料、完成幾步訓練,再進行正式升級。不要只因為 README 出現新模型名稱,就直接在生產環境切換套件版本。
結語:適合把「模型調整」變成團隊流程
LlamaFactory 最值得注意的地方,是它把模型微調的多個斷點串成一條可重複的工具鏈:資料登記、模板選擇、LoRA/QLoRA 訓練、互動驗證、權重輸出與 API 部署都能在同一個專案中找到對應入口。它不會替你解決資料品質與評估設計,但能明顯降低從研究實驗走到應用整合的膠水程式碼成本。
如果你的團隊正在建立私有知識、客服、程式碼或多模態模型的客製化流程,LlamaFactory 是值得先用小模型、小資料集做 smoke test 的候選工具;若只是想閱讀微調概念,則應先看官方文件與範例,再決定是否需要完整部署這套框架。
參考資料
- GitHub repository:https://github.com/hiyouga/LlamaFactory
- 官方 README:https://github.com/hiyouga/LlamaFactory/blob/main/README.md
- v0.9.5 release:https://github.com/hiyouga/LlamaFactory/releases/tag/v0.9.5
- 官方文件:https://llamafactory.readthedocs.io/en/latest/
- 原始論文:https://arxiv.org/abs/2403.13372