关键要点
- 微调(推荐): 8GB VRAM、500+ 样本、1-4 小时。成本:$100-500。
- 预训练: 8+ GPU、100B+ tokens、数周。成本:$50,000-500,000。
- 大多数组织应该微调,不应预训练。自定义预训练的收益递减。
- 最佳方法:先在领域数据上进行微调,然后评估预训练是否合理。
- 截至 2026 年 4 月,除非需要专有模型,否则预训练很少正当。
微调与预训练对比
| 方面 | 微调 | 预训练 |
|---|---|---|
| 训练时间 | 1-4 小时 | 数周-数月 |
| VRAM 需求 | 8GB | 100+ GB(多 GPU) |
| 数据需求 | 500-5k 个样本 | 100B+ tokens |
| 成本 | $100-500 | $50,000-500,000 |
| 定制化 | 领域知识 | 专有模型 |
| 适用时机 | 99% 的情况 | 罕见、特殊需求 |
微调路径(推荐)
- 1收集 500-5,000 个高质量领域特定样本。
- 2选择基础模型(Llama 3.1 8B、Qwen 7B 等)。
- 3使用 LoRA 进行高效训练(快 4 倍,质量相同)。
- 4在 GPU 上训练 3-5 个 epoch。
- 5在测试集上评估(精确率、召回率、自定义指标)。
- 6将 LoRA 适配器合并到基础模型中。
- 7部署为生产模型。
LoRA 与完整微调:选择哪个?
LoRA(低秩适配)仅更新 1-2% 的模型权重,使其速度快 4 倍,VRAM 需求少 80-90%。完整微调更新所有权重,精度略有提升(2-5% 改进),但需要 64+ GB VRAM 和大量计算资源。
按模型大小的 VRAM 需求
并非所有模型都能在 8GB VRAM 上进行 LoRA 微调。以下是您可以运行的:
将自定义模型部署到 Ollama
合并 LoRA 适配器后,分 3 步部署到 Ollama:
- 1第 1 步——导出为 GGUF: 使用 llama.cpp 的转换脚本将合并的模型从 PyTorch/safetensors 格式转换为 GGUF。这对 Ollama 和 llama.cpp 兼容性至关重要。 ```bash python convert_hf_to_gguf.py \ --model ./merged-model \ --outfile ./my-custom-model.gguf \ --outtype q4_k_m ```
- 2第 2 步——创建 Ollama Modelfile: 定义模型的系统提示、参数和推理设置。 ``` FROM ./my-custom-model.gguf SYSTEM "You are a [your domain] expert..." PARAMETER temperature 0.4 PARAMETER num_ctx 4096 ```
- 3第 3 步——注册和运行: 将模型加载到 Ollama 以供本地或 API 访问。 ```bash ollama create my-custom-model -f Modelfile ollama run my-custom-model ``` 您的微调模型现在可通过位于 localhost:11434 的 Ollama OpenAI 兼容 API 访问——与任何标准 Ollama 模型相同。与 Continue.dev、Open WebUI 或通过 Python/Node.js OpenAI SDK 的自定义应用配合使用。
预训练:何时以及为什么
预训练是指从原始数据(书籍、文件、代码)中学习。 仅在以下情况下合理:
1. 拥有超过 100 亿个 tokens 的独特有价值数据。
2. 预训练模型在您的领域中表现不佳。
3. 预算超过 $50,000(现实成本)。
4. 需要专有模型(竞争优势)。
示例:拥有 500GB 私有研究数据的基因组公司可能需要自定义预训练。
决策矩阵:选择哪种方法?
存在三种主要的自定义模型方法。根据您的数据、预算和时间表选择:
领域适配策略
不进行完整预训练的情况下,改进模型在您领域的性能:
- 继续预训练: 获取基础模型,在领域数据上训练(10B+ tokens)。比完整预训练更便宜。
- LoRA 微调: 最实用。在 500+ 样本上调优。
- 提示工程: 精心设计提示。免费,但有局限。
- RAG: 检索文档,提供上下文。无需重训就能工作。
- 集合: 组合多个模型。
评估指标
衡量模型质量:
- 任务特定指标: 准确性、F1 分数、BLEU(文本生成)。
- 基准测试: 在标准基准上运行(MMLU、HumanEval)。
- 人工评估: 手动评分(耗时但准确)。
- 业务指标: 模型是否改进实际业务成果?
常见错误
- 数据不足的预训练。 <10B tokens 会浪费计算。改用微调。
- 评估不充分。 仅看训练损失会误导。在未见过的数据上测试。
- 期望自定义模型与 GPT-4 相当。 开源模型与前沿模型之间的差距很大。
- 忽视推理成本。 更大的自定义模型 = 更高的推理成本。考虑权衡。
- 跳过 GGUF 转换步骤。 使用 Unsloth 或 HuggingFace 微调后,模型为 PyTorch/safetensors 格式。Ollama 和 llama.cpp 需要 GGUF。使用 llama.cpp 的 `convert_hf_to_gguf.py` 进行转换。没有此步骤,微调模型无法在 Ollama、LM Studio 或任何基于 GGUF 的推理引擎中运行。始终在转换时量化(推荐 Q4_K_M)以将文件大小减少 3-4 倍。
常见问题
微调能否匹配预训练模型的质量?
经过微调的模型在您的特定领域可能超过基础模型的性能,但不会达到更大预训练模型的知识广度。在法律文件上微调的 Llama 3.1 8B 会在法律任务上优于 Llama 3.1 70B,但在一般知识上表现不佳。当领域特定的准确性比广度更重要时,选择微调。
有效微调需要多少数据?
可用模型最少需要 500-1,000 个样本;生产质量需要 5,000+。数据质量比数量更重要——1,000 个高质量样本优于 50,000 个低质量样本。对于小数据集(500-2,000 个样本),使用 LoRA;仅当有 10,000+ 个样本时才进行完整微调。
LoRA 和完整微调有什么区别?
LoRA(低秩适配)仅更新约 1-2% 的模型权重,使其速度快 4 倍,VRAM 需求少 80-90%。完整微调更新所有权重,精度提升边际(约 2-5%),但需要大量计算资源。大多数项目使用 LoRA;仅当有预算时才进行完整微调。
何时应考虑预训练而不是微调?
仅当:(1) 有超过 100 亿个 tokens 的独特数据,(2) 微调未能持续达到准确性目标,(3) 预算超过 $50,000,(4) 需要专有模型获得竞争优势时。对于 99% 的组织,微调才是正确选择。
如何评估自定义模型是否可用于生产?
在 3 个维度上测试:(1) 任务特定指标(准确性、F1、BLEU),(2) 基准对比(在 MMLU 或 HumanEval 上运行与基础模型比较),(3) 业务指标(是否改进实际成果?)。如果微调模型在您的任务上比基础模型性能提升 5-10%,则可用于生产。
能否结合微调和提示工程获得更好的结果?
是的——这是最佳实践。微调处理结构性变化(领域语言、格式);提示工程处理特定用例。经过微调的法律模型加上良好的提示工程会优于单独使用任何一种。从提示优化开始(免费),然后根据需要进行微调。
微调应使用哪个框架?
Unsloth(最快)、Axolotl(灵活)和 Hugging Face Transformers(官方、文档最全)是主要选择。Unsloth 推荐用于速度;Axolotl 推荐用于多 GPU 设置。所有都支持 LoRA 并可与 Ollama 集成进行部署。
如何判断预训练成本是否值得?
计算:(1) 估计微调与预训练在您任务上的质量差距(例如微调达到 85%,预训练可能达到 92%),(2) 量化精度点的业务价值(例如 +1% 准确性 = $10,000 收入),(3) 如果($50,000 预训练成本)<(7% 改进的价值),则预训练。否则,微调。
地区考虑事项
自定义模型涉及因地区而异的数据隐私和监管影响。在部署微调或预训练模型之前,理解地区合规要求至关重要。
- 中国(数据安全法、网络空间管理): 中国《数据安全法》和网络空间管理规则要求对个人和工业数据进行本地处理。在中国数据上训练的自定义模型必须在中国基础设施上训练。为在中国部署的预训练模型需要网络空间管理注册。考虑在华本地微调和部署。
- 亚太地区(数据跨境): 新加坡、韩国和澳大利亚等地有数据驻留框架。自定义模型在多个 APAC 国家部署需要评估各自的数据本地化义务。一些国家(泰国、菲律宾)要求个人数据由当地运营商处理。设计支持地区部署的模型管道。
- 企业部署(金融/医疗/法律): 部署在受管制行业(银行、医疗、律师事务所)的微调模型需要审计跟踪和模型变更文档。许多企业使用本地推理来满足数据驻留和客户隐私要求。实施模型版本控制、评估日志和访问控制。
参考资源
- Chinchilla 缩放规律 -- 训练和推理的最优计算分配。
- 指令调优综述 -- 微调方法的综合评述。
- LoRA:低秩适配 -- 高效的微调方法。
- Hugging Face 微调指南 -- 官方微调文档。