大模型本地化微调部署
本地微调 + 本地部署,优先看三件事:
一是有没有 LoRA / QLoRA / 量化训练;二是能不能 单机单卡或统一内存设备 跑起来;三是微调后能不能方便地 导出到 Ollama / GGUF / vLLM / Transformers。按这个标准,当前比较值得选的开源项目是下面这些。 ([LLaMA Factory][1])
1) 适合本地部署的开源微调项目
LLaMA-Factory — GitHub / Docs
偏“开箱即用”,很适合本地单机和中文用户。官方文档写明它支持本地无代码微调、数百个预训练模型、WebUI、16-bit 全参、Freeze、LoRA,以及 2/3/4/5/6/8-bit QLoRA;推理后端支持 Transformers 和 vLLM,GitHub 也明确提到已支持导出 Ollama modelfile。 ([LLaMA Factory][1])
Unsloth — GitHub / Docs
偏“单卡/低显存最友好”。官方仓库写明可训练 500+ 模型,支持 full fine-tuning、4-bit、16-bit、FP8 训练,并宣称在部分场景下可 更快且最多节省约 70% VRAM;文档还提供了 GGUF 导出,可直接给 Ollama、llama.cpp、Open WebUI 等本地推理引擎使用。 ([GitHub][2])
Axolotl — GitHub / Docs
偏“工程化 / 研究型”。它更适合想自己控配置、做 SFT / DPO / GRPO / RM / QAT 的人。官方 README 写明支持 full fine-tuning、LoRA、QLoRA、DPO、IPO、KTO、ORPO、GRPO 等,并且同一份 YAML 可以贯穿数据预处理、训练、量化和推理;也明确支持本地硬件和 Docker。 ([GitHub][3])
torchtune — GitHub
这是 Meta/PyTorch 体系里的“代码优先”方案。官方 README 写明它是 PyTorch 的 post-training 库,支持完整 post-training 生命周期;在 SFT 里既支持 full,也支持 LoRA / QLoRA,而且自带单机 recipe。适合你想写更干净、可控的训练脚本。 ([GitHub][4])
TRL + PEFT — TRL Docs / PEFT GitHub
这更像“库组合”而不是一站式平台。TRL 负责 SFT / DPO / PPO / GRPO / Reward Modeling 等 trainer,PEFT 负责 LoRA、IA3、AdaLoRA 等参数高效微调。优点是灵活、生态大,缺点是你需要自己拼训练流程。 ([Hugging Face][5])
MLX-LM — GitHub
如果你是 Apple Silicon / Mac 本地训练,这个是最该优先看的。官方 README 说明它是用 MLX 在 Apple silicon 上做 LLM 生成和微调的工具,支持 low-rank 和 full fine-tuning,也支持量化模型。Apple 官方也明确把 MLX 定位为可在 Apple silicon 上进行 LLM 生成与微调。 ([GitHub][6])
LitGPT — GitHub / Docs
偏“轻量、好改、适合理解训练细节”。官方仓库写明支持 20+ LLM、LoRA、QLoRA、Adapter、fp4/8/16/32、从微调到部署的一整套 recipe。适合你想读代码、改算法,但又不想自己从零搭全栈。 ([GitHub][7])
我自己的选择建议是:
单卡 16–24GB Linux/Windows 优先 Unsloth 或 LLaMA-Factory;
要写自定义训练逻辑 选 torchtune 或 TRL+PEFT;
Mac 选 MLX-LM;
想做更复杂对齐/RL/奖励模型,选 Axolotl / TRL / LLaMA-Factory。 ([GitHub][2])
2) 算力要求,以及边缘端设备“在线微调”的最低算力
这里先说结论:
边缘端在线微调最关键的不是 TOPS,而是可用显存/统一内存、内存带宽,以及是否支持 4-bit QLoRA / LoRA。 训练时,context length、batch size、梯度累积都会明显改变内存占用。Unsloth 官方也特别提醒,OOM 常见原因就是 batch 太大。 ([Unsloth - Train and Run Models Locally][8])
官方给出的门槛并不完全一样,但足够拿来做保守估算:
LLaMA-Factory 的硬件估算表给出 7B 模型大致需要:LoRA 16-bit 16GB、QLoRA 4-bit 6GB、全参 pure_bf16 60GB;Unsloth 的“absolute minimum”表给出 3B/7B/8B QLoRA 分别约 3.5GB / 5GB / 6GB,而 7B/8B LoRA 16-bit 约 19GB / 22GB。另外,bitsandbytes 官方文档还给了一个示例:通过 nested quantization,Llama-13B 可在 16GB T4 上做微调,但条件是 seq len 1024、batch size 1、gradient accumulation 4。 ([GitHub][9])
所以我给你的保守建议是:
最低可行线:
用 1B–3B 模型 + 4-bit QLoRA,把边缘端在线微调的最低线看成 16GB 可用显存/统一内存 更靠谱;8GB 不是完全不可能,但更像“极限实验位”,不适合作为常态线上方案。这个判断是综合了 Unsloth 的绝对最低表、LLaMA-Factory 的估算表,以及 13B 在 16GB T4 上仍需强约束配置的官方示例得出的。 ([Unsloth - Train and Run Models Locally][8])
7B/8B 在线微调:
如果你想在边缘端稳定做 7B/8B 的 adapter 微调,我建议按 24–32GB 起步来规划;16GB 只能算“能试”,而且通常要把上下文长度压得比较短。全参微调就别按边缘端思路规划了,7B pure bf16 官方估算就已经到 60GB。 ([GitHub][9])
边跑推理边训练:
如果设备还要同时在线推理,门槛要再抬一档。我的建议是:
1B–3B 至少 16GB;
7B/8B 更现实的是 32GB+;
否则训练和推理很容易互相抢内存。这个建议也是基于上面的官方最低显存表做的保守推断。 ([Unsloth - Train and Run Models Locally][8])
拿常见边缘设备来说,NVIDIA 官方把 Jetson Orin Nano Super 8GB 定位为“运行小型 LLM/VLM 和早期原型”,而 Jetson AGX Orin 64GB 更适合在单设备上组合语言、视觉、语音模型、不容易撞上内存墙;官方规格页里 Jetson Orin 系列常见统一内存档位是 4/8/16/32/64GB。如果你上的是桌面边缘工作站,DGX Spark 官方给的是 128GB unified memory,并明确写了可微调到 70B。 ([NVIDIA Developer][10])
你可以直接把这条线记住:
边缘端在线微调的最低建议 = 16GB 可用显存/统一内存 + 1B–3B + QLoRA;想稳定上 7B/8B,按 24–32GB 规划;要一边服务一边训,按 32GB+ 规划。 ([Unsloth - Train and Run Models Locally][8])
3) 微调数据如何采集
先别急着收数据,先定 用例。Google 的 Gemma QLoRA 官方教程明确写了:先定义你要解决的任务,再准备能覆盖这个任务的多样化 demonstrations;数据来源可以是现有开源数据、LLM 生成的 synthetic data、人工制作数据,也可以混合。Unsloth 也建议优先从 Instruct 模型 开始,因为它直接支持对话模板,通常比 Base 模型更省数据。 ([Google AI for Developers][11])
真正好用的数据采集流程,建议这么做:
第一步:从真实业务输入/输出反推数据源
可优先从你自己的 SOP、FAQ、工单、客服对话、知识库、产品文档、代码库、数据库 schema、会议纪要、PDF/CSV/DOCX 文档 里抽原始材料。Unsloth 的 Data Recipes 就是按这个思路设计的:它支持把 PDF、CSV 等文档转成可用或合成数据集。 ([Unsloth - Train and Run Models Locally][12])
第二步:先做“高质量小样本”,不要一上来就堆原始文本
Unsloth 的数据指南明确说,很多 LLM 微调更适合先整理成 question-answer pairs,而不是把文档原样全喂进去;只有少数场景(例如代码语料)直接堆原始文本也可能有效。 ([Unsloth - Train and Run Models Locally][13])
第三步:按训练方式整理格式
如果做 SFT/指令微调,TRL 支持 messages 或 prompt/completion 两类格式;torchtune 的 instruct dataset 则是更直接的 input/output。如果做 DPO/偏好优化,TRL 的标准格式是 prompt + chosen + rejected。如果做 tool-calling 微调,TRL 还要求额外有 tools 列,里面放工具的 JSON schema。 ([Hugging Face][14])
常见格式可以直接参考:
// SFT / chat
{"messages": [
{"role": "user", "content": "请根据表结构写SQL"},
{"role": "assistant", "content": "SELECT ..."}
]}
// Prompt-completion
{"prompt": "请总结这段话:...", "completion": "总结如下..."}
// Preference / DPO
{"prompt": "用户问题", "chosen": "更好的回答", "rejected": "较差的回答"}
// Tool calling
{"messages": [...], "tools": [json_schema]}
这些格式都在 TRL 和 torchtune 的官方文档里有对应定义。 ([Hugging Face][14])
第四步:用“人工种子集 + 合成扩展”而不是只靠一种来源
Gemma 官方教程把数据来源分成四类:开源、人造、合成、混合;Unsloth 也明确支持用本地模型或外部模型把文档自动解析成 QA 对。比较稳妥的做法通常是:
先人工做一批最关键样本,
再用 LLM 从 PDF/CSV/文档里扩一些候选样本,
最后人工抽检、去重、修错。 ([Google AI for Developers][11])
第五步:保留验证/测试集,不要全拿去训
Gemma 的教程示例里会先做训练/测试切分;Unsloth 也建议保留一部分样本用于测试或人工评估。否则你很难知道模型是在“学会了”,还是只是“背下来了”。 ([Google AI for Developers][11])
第六步:按框架落地
如果你最终选 LLaMA-Factory,它的自定义数据目前官方文档明确支持 Alpaca 和 ShareGPT 两类格式;如果选 TRL,就按它的 messages / prompt-completion / preference 规范做;如果选 torchtune,最简单的是做成 input/output 两列。 ([LLaMA Factory][15])
最后给你一个实用结论
最稳的一条路是:
Instruct 小模型(1B–8B) + QLoRA + 高质量问答/对话数据 + 本地导出到 GGUF/Ollama。
在框架上,Linux/Windows 先选 Unsloth 或 LLaMA-Factory,Mac 选 MLX-LM。这样最容易把“微调”和“本地部署”打通。 ([Unsloth - Train and Run Models Locally][13])
参考链接:
[1]: https://llamafactory.readthedocs.io/en/latest/ “LLaMA Factory”
[2]: https://github.com/unslothai/unsloth “GitHub - unslothai/unsloth: Unified web UI for training and running open models like Qwen, DeepSeek, gpt-oss and Gemma locally. · GitHub”
[3]: https://github.com/axolotl-ai-cloud/axolotl/blob/main/README.md “axolotl/README.md at main · axolotl-ai-cloud/axolotl · GitHub”
[4]: https://github.com/meta-pytorch/torchtune “GitHub - meta-pytorch/torchtune: PyTorch native post-training library · GitHub”
[5]: https://huggingface.co/docs/trl/en/index “TRL - Transformers Reinforcement Learning · Hugging Face”
[6]: https://github.com/ml-explore/mlx-lm “GitHub - ml-explore/mlx-lm: Run LLMs with MLX · GitHub”
[7]: https://github.com/Lightning-AI/litgpt “GitHub - Lightning-AI/litgpt: 20+ high-performance LLMs with recipes to pretrain, finetune and deploy at scale. · GitHub”
[8]: https://unsloth.ai/docs/get-started/fine-tuning-for-beginners/unsloth-requirements “Unsloth Requirements | Unsloth Documentation”
[9]: https://github.com/hiyouga/LlamaFactory “GitHub - hiyouga/LlamaFactory: Unified Efficient Fine-Tuning of 100+ LLMs & VLMs (ACL 2024) · GitHub”
[10]: https://developer.nvidia.com/blog/getting-started-with-edge-ai-on-nvidia-jetson-llms-vlms-and-foundation-models-for-robotics/ “Getting Started with Edge AI on NVIDIA Jetson: LLMs, VLMs, and Foundation Models for Robotics | NVIDIA Technical Blog”
[11]: https://ai.google.dev/gemma/docs/core/huggingface_text_finetune_qlora “Fine-Tune Gemma using Hugging Face Transformers and QloRA | Google AI for Developers”
[12]: https://unsloth.ai/docs/new/studio/data-recipe “Unsloth Data Recipes | Unsloth Documentation”
[13]: https://unsloth.ai/docs/get-started/fine-tuning-llms-guide “Fine-tuning LLMs Guide | Unsloth Documentation”
[14]: https://huggingface.co/docs/trl/sft_trainer “SFT Trainer · Hugging Face”
[15]: https://llamafactory.readthedocs.io/en/latest/getting_started/data_preparation.html?utm_source=chatgpt.com “Data Preparation - LLaMA Factory - Read the Docs”
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)