高级 14 分钟Fine-tuning

Unsloth:在一张大显卡上微调 LLM public

直接回答

Unsloth 是一个开源 Python 库(核心采用 Apache 2.0 许可证,GitHub 星标超过 76,000),重写了 LoRA 和 QLoRA 微调中计算开销较大的步骤:据开发方称,速度最高可达原来的两倍,显存用量减少 70%。其文档列出的最低要求是:对一个 80 亿参数模型进行 4 位 QLoRA 微调需要 6 GB 显存,因此一张 12 GB 显存的显卡就足够;随后可将模型导出为 GGUF,在 Ollama 中运行。

Unsloth 让在消费级显卡上微调开放模型成为可能:采用的方法与其他工具相同,但重写的计算内核减少了所需的时间和内存。因此,拥有 70 亿或 80 亿参数的模型可以在配备 12 GB 显存的显卡上进行微调,微调结果可导出为 GGUF 格式,以便在 Ollama 中运行。不过,在考虑其他问题之前,仍有一个问题需要先回答:您真的需要微调吗?

作者: Mohamed Meguedmi·更新于 2026-09-29·已在 Windows、macOS 和 Linux 上测试

#安装任何组件前需明确的关键问题

是的,消费级显卡也能微调 70 亿或 80 亿参数的模型:Unsloth 文档给出的 4 位 QLoRA 最低显存需求为 5–6 GB,因此 12 GB 显卡足够,并且还能为上下文和批次留出余量。Unsloth 重写了 LoRA 和 QLoRA 微调中计算负担较重的步骤;据开发方称,速度最高可达到原来的两倍,同时显存用量减少 70%,但这些数字仅适用于部分 notebook 示例。微调结果可以导出为 GGUF,在 Ollama 中运行。不过,安装之前就应该先考虑真正的问题:微调改变的是模型的行为(语气、格式、语域),并不会更新它的知识。如果您希望模型了解您的文档,请先构建文档检索功能。还要把数据集准备所需的时间算进去:它比训练本身更耗时。

微调改变的是模型的行为方式。文档检索改变的是模型在回答时掌握的信息。混淆两者会白白浪费数周时间。

您的需求及对应工具
您的需求正确答案
基于您文档的回复一条RAG链:文档每天可能发生变化
稳定的输出格式微调,或受约束生成
符合自身风格的语气、符合行业习惯的表达Fine-tuning
某个专业领域的词汇微调,使用足够多的示例
频繁变化的信息始终选择 RAG:为一个价格重新训练模型毫无意义
更短或更长的回复系统提示词优先;绝不可为此进行训练
i
如果你的真实回答是“我希望它了解我们的文档”
请先停在这里,优先搭建文档检索系统。只需添加文件就能更新这个系统,而且它会引用来源,微调则做不到这些。不过,Unsloth 的指南提出了另一种解读:该指南认为,微调可以注入知识,并实现 RAG 的全部功能,而反过来则不成立。从原理上说,这一观点是正确的;实践中支持采用 RAG 的理由在于其他方面:更新、可追溯性,以及每次变更都要重新训练的成本。

#Unsloth 实际带来了哪些改变

本地 AI 套件

只需 1 小时,即可在您的电脑上拥有专属的免费 ChatGPT — LM Studio、Ollama、Open WebUI、您的文档,无需云端。

  • 在线空间,终身可用
  • PDF + 文件
  • 终身更新

这种方法并不新:冻结模型权重,只训练添加到每个权重上的小型矩阵;根据 Unsloth 指南,这些矩阵约占参数总数的 1%。LoRA 将原始模型保留为 16 位,QLoRA 则将其量化为 4 位,从而节省 75% 的内存。这是标准方法,并非 Unsloth 的专有技术。

该库提供的是具体实现,其中针对计算负担较重的步骤重写了计算内核。该项目有三种形式:原生应用 Unsloth Desktop、网页界面 Unsloth Studio,以及本文介绍的代码驱动版本 Unsloth Core。项目采用双许可证:核心部分采用 Apache 2.0,部分可选组件(如 Studio 界面)采用 AGPL-3.0。项目宣称,语言模型、扩散模型、语音合成模型和嵌入模型的训练速度可达到原来的两倍,同时减少 70% 的显存用量,且不损失精度。在混合专家(MoE)架构上,公布的提升幅度更大:某些较新的模型最高可达到原来的 12 倍速度,并节省超过 35% 的显存。与所有厂商公布的数字一样,这些数字描述的是最佳情况:README 本身就表明,“两倍速度、减少 70% 显存”只适用于部分 notebook。

Unsloth 针对不同 Notebook 宣称的性能提升(开发方提供的数据)
Notebook宣称的速度官方宣称的显存用量
Llama 3.1 (8B) Alpaca速度为原来的 2 倍减少70%
gpt-oss (20B)速度为原来的 2 倍减少70%
Qwen3.5 (4B),支持视觉速度为原来的 1.5 倍减少 60%
Gemma 4 (E2B),视觉速度为原来的 1.5 倍减少50%
Orpheus-TTS (3B)速度为原来的 1.5 倍减少50%
embeddinggemma (300M)速度为原来的 2 倍减少 20%

#哪种显卡适合哪种模型

Unsloth发布的微调最小显存需求(GB VRAM)
模型大小QLoRA (4 位)LoRA(16位)对消费级显卡的实际意义
30亿3,58使用 QLoRA 时,任何较新的显卡都能轻松完成微调
70亿519QLoRA 可在 8 GB 显存的显卡上运行;16 位 LoRA 需要 24 GB 显存的显卡
80亿6228 GB 或以上支持 QLoRA;12 GB 可留有余量
140亿8,533QLoRA 可在 12 GB 显存上运行;16 位 LoRA 超出了 24 GB 显存显卡的容量
270亿2264QLoRA 需要 24 GB 显存,没有余量;单张显卡无法进行 16 位 LoRA 微调
320亿2676超过 24 GB,即使使用 QLoRA
700亿41164单张消费级显卡无法满足要求

文档明确指出这些数值为绝对最低值:具体取决于模型,可能需要更多资源。文档将批次大小过大列为内存饱和的常见原因,建议将其调整为 1、2 或 3,并推荐首次测试时使用 2048 的上下文长度。

根据Unsloth文档支持的硬件
平台文档中所述内容
NVIDIA, 配合 Unsloth CoreLinux 和 Windows;计算能力至少为 7.0(V100、T4、RTX 20 系列及后续型号、A100、H100),也包括 Blackwell 和 DGX Spark。GTX 1070 和 GTX 1080 也能运行,但速度较慢。
AMD 与 Intel专用指南;训练可在这些GPU上进行,无论是使用Core还是Studio。
MacUnsloth Studio 支持训练、MLX 及 GGUF 推理(需 macOS 12 或更高版本)。对于 Core,对 Apple Silicon(MLX)的支持目前标注为「正在准备中」。
无 GPUStudio 可使用 GGUF 模型进行聊天,也可用于数据准备,但不能用于训练。
多个GPU由 Accelerate 和 DeepSpeed(FSDP、DDP)提供支持,需要手动配置;device_map="balanced" 选项可将过大的模型分配到多张显卡上。
i
查看最新页面
这一生态正在快速变化:README现已宣布支持在Windows、WSL和Linux系统上使用AMD GPU进行训练,并提供桌面应用程序。购买硬件前,请务必查阅最新文档。
!
Studio 开放网络访问:服务器端工具已启用
Unsloth 的 README 警告称,Studio 的服务器端工具默认处于启用状态。开放界面(--secure、非本地主机、局域网访问)需要管理员密码,--disable-tools 则可禁用这些工具。在您需要开放界面之前,请让它保持在 127.0.0.1 上。

#真正的工作在于数据集

微调失败从来不是库的问题,而是数据的问题。

格式
数据集通常包含两列,分别为问题和回答,并采用模型所要求的对话结构。本指南建议从 Instruct 模型入手:它可直接接受对话模板(ChatML、ShareGPT),所需数据也比基础模型少。数据的一致性比数量更重要。
数量
Unsloth 指南建议最少使用 100 行数据,若想取得更好的效果,则应超过 1,000 行。少量示例就能调整语气和格式;要真正形成符合业务需求的行为,则需要更多彼此一致的示例。
质量
模型会模仿它所看到的内容,包括错误。数据中的系统性缺陷会转化为模型中的系统性缺陷。
检验数据集
模型在训练过程中从未见过的示例。没有这些示例,就无法区分学习与死记硬背。
无需代码
Unsloth Studio 提供 Data Recipes,可通过可视化流程将 PDF、CSV 或 DOCX 文件转换为数据集,并在启动完整构建之前提供预览。
!
过拟合看起来像是成功
Unsloth 的指南用一句话说明了这一点:如果损失降至 0,可能出现了过拟合,需要查看验证结果。根据该指南,在许多情况下,损失在 0.5 到 1.0 之间是个好迹象,但这取决于数据集和任务。只记住了训练数据的模型能完美回答您的测试问题,但在其他所有问题上的表现却不如以前。保留 20% 的数据用于测试,将训练轮数控制在 1 到 3 轮以限制过拟合,并关注验证集上的表现,而不是训练曲线。

#从适配器到可用模型

流程分为三个阶段:以4位精度加载模型,使用官方笔记本进行训练,然后导出模型。第一段代码负责加载模型并添加LoRA适配器;实际训练则通过Unsloth提供的笔记本完成,指南建议将该笔记本复制到本地环境中。

使用Unsloth Core以4位精度加载模型
from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/Qwen3-8B-unsloth-bnb-4bit",  # quantification dynamique 4 bits d'Unsloth
    max_seq_length=2048,
    load_in_4bit=True,
)
model = FastLanguageModel.get_peft_model(model, r=16, lora_alpha=16)

名称的后缀很重要。根据指南,以 unsloth-bnb-4bit 结尾的模型采用 Unsloth 的动态 4 位量化:它比标准 BitsAndBytes 量化略多占用一些 VRAM,但精度明显更高。仅以 bnb-4bit 结尾的名称表示标准版本。指南还指出,训练和部署服务使用相同的精度更有利:如果以 4 位精度提供服务,就以 4 位精度训练。

官方指南的默认设置
参数指南中的设定值须知
per_device_train_batch_size2模型更大:GPU 利用率更高,但因填充问题导致训练速度变慢;建议使用梯度累积步数(gradient_accumulation_steps)
gradient_accumulation_steps4无需额外内存即可模拟更大批次
max_steps60用于快速试跑的值;正式训练时,改用 num_train_epochs,并将其设为 1 至 3 之间的值
learning_rate2e-4调低数值可使微调更慢、更精细:尝试 1e-4、5e-5 或 2e-5
max_seq_length2048测试时推荐的长度。为了“留足余量”而设得更高,会为数据中并不存在的长序列预留内存:请先测量实际样本的长度
  1. 01
    训练
    最终结果是一个 LoRA 适配器,在 Unsloth 的示例中约为 100 MB,而非完整模型。
  2. 02
    评估
    使用对照数据集进行评估,并与原始模型比较。“更好”需要证明,不能想当然。指南指出,自动评估工具可能无法准确反映您的评判标准。
  3. 03
    合并或单独保留
    适配器可以独立保存并按需替换,也可以合并到模型权重中:使用 model.save_pretrained_merged,并设置 save_method="merged_16bit"。
  4. 04
    导出为GGUF并进行量化
    model.save_pretrained_gguf 会生成文件,可选择 q4_k_m、q8_0 或 f16。这使导出的模型能够通过 Ollama 或 llama.cpp 在普通硬件上运行。
在相同会话中导出训练好的模型至 GGUF 格式
model.save_pretrained_gguf(
    "mon-modele-q4", tokenizer, quantization_method="q4_k_m"
)
# puis, avec le Modelfile fourni : ollama create mon-modele -f Modelfile
!
导出的模型在 Ollama 中胡乱回答
Unsloth 文档描述了一种常见情况:模型在 Unsloth 中运行良好,但导出后却输出乱码或胡言乱语、无休止地生成,或反复重复内容。最常见的原因是对话模板与训练时使用的模板不同。训练和推理时必须使用同一个模板,使用正确的序列结束 token,并检查引擎是否多加了一个序列开始 token。文档指出,Unsloth 会自动创建 Ollama 的 Modelfile,并使用微调时采用的模板。

#常见陷阱

在不知情的情况下从基础模型开始
指南建议使用指令模型:它们支持对话模板,且所需数据较少。基础模型则需要不同的格式(如Alpaca、Vicuna),并需要更多示例。
忘记使用对话模板
格式与模型预期不符的示例会导致技术上成功的训练,但实际应用中毫无价值。
在训练样本上进行评估
正是这种错误,让人宣称取得了惊人的成果,最终交付的模型却令人失望。
认为它会取代文档检索
模型所学的知识会随着您信息的更新而过时,且模型不会引用其信息来源。对于不断变化的事实,文档检索仍更为可靠。
低估示例数据清洗的重要性
数据集中几乎完全相同的重复样本会使训练偏向这些特定案例,而所跟踪的指标却不会反映这一点。
同时更改多个设置
在同一实验中修改学习率、适配器秩和序列长度,将无法判断哪个参数导致了观察到的变化。

#具体用例

保持一致的客户支持语气
基于真实对话进行微调的模型会以符合品牌风格的语气回答,无需在每次提示中重复风格要求。
严格格式提取
使用输入—输出示例进行微调,比仅靠提示词更能可靠地固定输出格式;在将结果发送至下游系统之前,这很有用。

这些情况有一个共同点:每一种都可以衡量。在开始训练前,请用一句可验证的话定义成功标准,例如“测试集至少 95% 的输出符合 JSON 格式”,而不是笼统地感觉有所改善。判断结果是否值得投入这些时间的,应是这个标准,而不是直觉。

#实际成本:不只是显卡价格

显卡只是其中一项投入。收集并清洗一致的示例数据,编写模型永远不会接触到的评估集,再将每个版本与原始模型进行比较,这些工作往往比训练本身更繁重;Unsloth 指南用一次 60 步的试验演示了训练过程。

因此,无论 Unsloth 的训练速度有多快,它都无法像人们期望的那样大幅缩短项目周期:它消除的是技术瓶颈,而不是数据方面的工作。

→
测量首次测试的耗时
Unsloth的指南建议设置max_steps = 60,以便快速完成。在包含几百个示例的缩小数据集上,先进行一次完整试验,包括训练和评估,就能在投入完整数据集之前估算总耗时。

#FAQ

Unsloth 是免费的吗?+
核心库采用 Apache 2.0 许可证,可免费进行 LoRA 和 QLoRA 微调;该仓库在 GitHub 上拥有超过 76,000 个星标。部分可选组件,如 Studio 界面,采用 AGPL-3.0 许可证:文档将这种双重许可描述为一种在保持项目开放的同时为其筹集资金的方式。这些 notebook 可在 Colab 和 Kaggle 中免费运行。
微调一个 70 亿参数的模型,应选择哪张显卡?+
Unsloth 的表格列出:对一个 70 亿参数的模型进行 4 位 QLoRA 微调,至少需要 5 GB 显存;进行 16 位 LoRA 微调则需要 19 GB。因此,12 GB 显存的显卡适合使用 QLoRA。文档明确指出,这些是绝对最低要求,较大的批量或较长的训练样本可能需要更多显存。
需要多少示例?+
Unsloth 指南建议最低使用 100 行数据,并建议使用超过 1,000 行的数据以获得更好的效果;如果数据集太小,可以补充合成数据或 Hugging Face 上的数据集。数据的一致性比数量更重要:坏示例会教出坏习惯,好示例会教出好习惯,两者同样确定。
得到的模型能在 Ollama 中运行吗?+
是的:使用 model.save_pretrained_gguf 导出为 GGUF 格式,选择量化方式(文档推荐使用 q4_k_m),然后在 Ollama 中通过 Modelfile 创建模型。Unsloth 使用训练时的对话模板生成该 Modelfile。如果回答变得混乱,首先检查对话模板和序列结束 token 是否与训练时相同。
是否支持 AMD、Mac 或无 GPU 环境?+
是的,适用于AMD和Intel,配有专用指南。在Mac上,Unsloth Studio支持GGUF模型的训练和推理;Core目前尚不支持Apple Silicon。没有GPU时,Studio仅可用于聊天和数据准备,无法用于训练。Core需要一张计算能力为7.0或更高的NVIDIA显卡。
微调能让模型精通我的数据吗?+
无法长期保持。Unsloth 的指南认为,微调可以注入知识,但数据一旦变化,这些知识就会过时;相比之下,文档只需一分钟即可替换,而且可以作为引用来源。事实和文档属于文档检索的范畴;语气、格式和语体属于微调的范畴。将两者结合是常见做法。

推荐硬件: GMKtec EVO-X2 64GB / 1TB (Ryzen AI Max+ 395) — 16 GB 显存的 NVIDIA 显卡,足以使用 QLoRA 微调 7–8B 模型。 所有 AI 硬件 →

这份指南对您有帮助吗?

有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。