mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
4016 字
11 分钟
LLM大模型微调——入门篇
2026-04-11

前言#

本文介绍了模型微调最基础的部分,目的是带读者体验简单微调的全过程。如果有一定基础,请移步至提高篇。

文章结构#


第一部分:LLM微调的基本概念#

1.1 大模型的本质是什么#

一句话总结:模型的本质是函数,核心是参数,而训练是为了获得更好用的参数。

大模型的地基是由 Transformer 这一自注意力机制神经网络架构组成。大模型每吐出一个词,都是根据当前的词计算下一个词的概率,而这个计算过程就是由函数完成的。

函数里最重要的就是参数,参数决定模型算出来的结果准不准确。换而言之,模型的知识和能力都存储在参数里。模型智不智能,很重要的一点就是看参数好不好。

所谓模型训练,就是一个寻找优质参数的过程。

1.2 怎么获得优质参数#

大模型的参数与我们平时解方程不一样,没有固定的公式,而是一步一步计算出来的。

计算过程如下:

训练流程

  1. 随机初始化参数

  2. 使用初始化的参数展开计算 —— 输入训练数据,模型预测下一个词的概率。比如下一个词是”故事”,但模型认为”故事”一词概率为 0,这就错了,记录下这个错误,这个错误就叫损失

  3. 使用记录下来的损失进行求导 —— 求导之后得到梯度(求导很复杂,不用管)

  4. 根据梯度下降算法公式进行参数更新

    新参数 = 旧参数 - 学习率 × 梯度
  5. 用新参数再次输入训练数据,重复执行这个过程,对参数的值不断调整

这就是优化参数的全过程。

1.3 什么是微调#

模型微调是指在预训练模型的基础上,针对特定任务进行进一步训练的过程。

预训练模型已经学习了大量通用语言知识,但在具体场景可能表现不佳。通过微调,我们可以让模型更好地理解和适应特定领域的语言特征和表达方式。

打个比方:

预训练的大模型就像一个马上参加高考的优秀学生,你给他一道高考数学题,他能很快给出答案。但如果你给出一道数学奥赛题,他就有点力不从心了。

这时,微调就像在做题之前对他进行奥赛辅导,使他成为一名 MOer,再让他做奥赛题,效果就会好得多。

总结:拿一个已经训练好的模型(预训练模型),在它的基础上继续训练,这就是微调。

1.4 什么时候该使用微调#

一般来说有两种情况:

情况一:提示词不够用

在某些场景中,你竭尽所能地调整提示词,可模型输出结果还是不尽人意。比如工具调用场景 —— 要让模型在用户提问中准确判断要使用哪个工具,纯靠提示词需要高性能的模型,而且场景不能太复杂。再比如垂直领域提问,效果同样不好。

情况二:计算机资源不够

当提示词够用,但要写得很长、要给出很多案例、还要使用较大的模型时,会有两个问题:一是资源消耗巨大,二是推理速度变慢。

补充:解决这两种问题,不只有微调这一种方案,还有一种叫做 RAG(检索增强生成)的方案。如果说微调是考试前给学生辅导,那么 RAG 就是给学生一本书让他考试时翻着看 —— 简单来说就是外挂知识库。这不是本文的重点,简单了解即可。

1.5 怎么确定微调的大模型学得好不好#

在反复训练中,当我们觉得模型学会的时候,就可以停下来了。要知道多轮学习中模型学得怎么样,最简单的方式就是监控前文提到的损失(Loss)

  • 如果损失没有下降,说明模型没学会,需要继续学
  • 损失下降了,不一定是学会了 —— 就像学生上完课写作业,作业会写不代表知识学懂了,要通过考试才知道

我们准备另一份不重复的数据集,叫验证集。把验证集丢给模型:

训练集损失验证集损失结论
过拟合 —— 模型在照葫芦画瓢,没有真正理解
学得还不错

判断的指标远远不止这一个,之后会讲到。

1.6 微调的流程是什么#

微调概括来说就是:基座模型 + 训练数据 + 微调方法

1. 基座模型

要微调模型,肯定得有个模型,选择的这个模型就是基座模型。

2. 训练数据

这是最最重要的环节。你准备的数据质量决定了模型的上限,花再多心思也不过分。业界有句话:你输入的是垃圾,得到的也是垃圾。一定要保证质量。

3. 微调方法

微调方法总结来看分三种:

方法说明推荐程度
全局微调对所有参数进行调整(如 10B 参数全调一遍)⭐⭐
冻结微调把底层参数冻结,只调整靠近输出层的那几层
LoRA 微调不调整原参数,单独构建一个 LoRA 参数块并只调整它。原参数 + LoRA 参数块 = 完整参数⭐⭐⭐ 最推荐

推荐初学者只掌握 LoRA 微调,只需调整少量参数即可达到很好的效果。

1.7 我需要使用什么工具#

本文采用 LLaMA-Factory 这个开源工具进行模型微调,自带 Web 图形化界面,好用易上手。

LLaMA-Factory 前置依赖:

  • PyTorch:深度学习框架
  • CUDA:NVIDIA GPU 的并行计算平台,能让 LLaMA-Factory 调用 GPU 进行计算(纯用 CPU 太慢了)
  • Python 及相关库:推荐使用 Python 3.10 版本
  • NVIDIA 驱动:无需多言

本文给出本地部署方案,部分步骤需要科学上网。使用服务器跑模型放到提高篇讲。


第二部分:系统环境配置#

众所周知,搞 AI 的人 90% 的时间在配置环境,写代码的时间只占 10%。遇到问题直接去看 疑难杂症,还是无法解决可以自行询问大模型。

2.1 安装 CUDA#

首先需要一张 NVIDIA 的、支持 CUDA 的显卡。想知道自己的显卡是否支持,请自行询问大模型。

  • 打开 NVIDIA 官网,下载 NVIDIA APP,安装后更新驱动到最新版本
  • 在官网搜索 CUDA 并安装,推荐安装 CUDA 13.0

自行下载:CUDA Toolkit Archive

2.2 安装 Ubuntu(可选)#

对于本地部署,有两种方案:

方案说明
Windows 本地部署直接使用电脑自带的 Windows 系统
WSL + Ubuntu使用 Windows 官方提供的 WSL 组件来运行 Linux

为什么推荐 Ubuntu?

  1. LLaMA-Factory 在 Linux 生态更好 —— 官方文档本身就是按 Linux 环境写的,Windows 下开启 QLoRA 需要额外装预编译的 bitsandbytes wheel,兼容性和折腾成本更高
  2. 安装超级简单,不需要装虚拟机,一行命令即可
  3. WSL2 现在已经能正式使用 NVIDIA CUDA 进行 GPU 加速,不是早期那种”勉强能跑”的状态

如果只是想简单体验一下,跑最基础的推理或轻量训练,用 Windows 就够了。如果要真正开始做微调,强烈推荐 WSL + Ubuntu。

安装 WSL + Ubuntu(需科学上网):

Terminal window
wsl --install -d Ubuntu-22.04

安装完成后,使用 Windows 自带的搜索功能即可打开 Ubuntu。打开后会让你输入账号和密码,依次填写即可。

注意! WSL 有两个版本:WSL1 和 WSL2。WSL1 是早期版本,只有勉强能用的水平,一定要使用 WSL2! 上面的命令默认使用 WSL2。可以用以下命令查看版本:

wsl --list --verbose

查看 VERSION 这一列确认是 2

2.3 安装 LLaMA-Factory#

2.3.1 安装 LLaMA-Factory 本体#

打开命令行或 PowerShell,拉取代码:

git clone https://gitee.com/hiyouga/LLaMA-Factory.git

完笔之后听说这个 Gitee 库失效了,把 gitee 换成 github 即可,记得科学上网。

2.3.2 配置虚拟环境#

为了防止日后出现各种依赖报错,推荐给每一个项目都创建一个单独的虚拟环境。

这里推荐使用 UV 这个包管理工具。

安装 UV:

Terminal window
# Windows
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.27/uv-installer.ps1 | iex"
# Linux
pip install uv -i https://mirrors.aliyun.com/pypi/simple

创建虚拟环境:

uv venv finetune # finetune 是虚拟环境的名字,可以自己改

进入虚拟环境:

Terminal window
# Windows
finetune/Scripts/activate
# Linux
source finetune/bin/activate

2.3.3 安装依赖包#

切换到安装目录并下载依赖:

cd LLaMA-Factory
uv pip install -e ".[torch,metrics]" -i https://mirrors.aliyun.com/pypi/simple

这个过程大概 5-10 分钟。

验证 GPU 是否可用(应该输出 True,显示 False 请查看疑难杂症):

python -c "import torch;print(torch.cuda.is_available())"

2.4 疑难杂症#

显示”无法解析服务器的名称或地址”怎么办#

科学上网喵,科学上网谢谢喵。

安装依赖 numpy==1.26.4 时失败怎么办#

主要原因是缺少编译工具。去 VS Code 官网下载安装 Visual Studio Build Tools,安装 C++ 工具包即可。

我怎么确认有没有成功安装 LLaMA-Factory#

进入虚拟环境,输入:

llamafactory-cli version

能显示版本号就成了。

我怎么确认有没有安装 PyTorch#

python -c "import torch; print(torch.__version__)"
  • 如果 PyTorch 已安装,会输出版本号,例如 1.13.1
  • 如果未安装,会看到 ModuleNotFoundError: No module named 'torch'

验证 GPU 时显示 False 怎么办#

GPU 加速需要安装兼容版本的 CUDA 和 PyTorch。

可能的原因:

  1. 没有安装 CUDA
  2. 没有安装 GPU 驱动 / 驱动不是最新
  3. GPU 不支持 CUDA
  4. PyTorch 版本不兼容(确保安装的是 CUDA 版本)
  5. CUDA 运行时问题
  6. 环境变量未正确设置(CUDA_HOMEPATH 等)
  7. 系统权限问题
  8. CUDA 版本与 GPU 不兼容
  9. PyTorch 安装有问题

建议安装 CUDA 13.0 + PyTorch 2.9.1,这俩是兼容的。

# 检查 CUDA 版本
nvcc --version
# 检查 GPU 是否被系统识别
nvidia-smi

安装 PyTorch 2.9.1(Windows):

pip install torch==2.9.1 torchvision==0.24.1 torchaudio==2.9.1 --index-url https://download.pytorch.org/whl/cu128

安装 UV 时出现 Command 'pip' not found 怎么办#

Ubuntu 安装 Python 时不会自动装 pip,手动装上就行:

sudo apt update
sudo apt install python3-pip

tyro 库报错怎么办#

别用高版本 Python,用 3.10 版本就行。


第三部分:体验简单微调全过程#

3.1 启动 Web 界面#

进入虚拟环境,输入:

llamafactory-cli webui

如果没出问题,稍后 Web 面板会自动打开。如果没有自动打开,浏览器访问 http://127.0.0.1:7860/

两个小设置:

  • 在 Language 选项处选择 zh 切换成中文
  • 模型下载源选择 ModelScope,下模型不用科学上网

3.2 选择合适的模型#

推荐去魔搭网下载模型:ModelScope 主页

在魔搭网上方选择”模型库”,你会看到非常非常多的模型。选择方法如下:

1. 推荐选择千问(Qwen)系列

社区生态好,性能抗打。而且 Qwen 的命名方式很规范,举个例子:

3.5qwen-7b-Thinking-base

→ 千问 3.5 — 70 亿参数 — 带思考功能 — 预训练模型

一目了然。

常见模型后缀一览:

后缀含义通俗理解
Base仅经过大规模无监督预训练,未做指令或对话微调干不了事,要微调才能用
Instruct使用大量”指令-回答”对进行了指令微调已经微调过了,直接用(也可以继续微调)
Thinking经过思维链增强训练,能展示推理过程先思考,后回答
Chat经过对话微调,擅长多轮对话天赋点聊天上了
Vision / Audio / VLM能同时处理文本、图像、音频等多种数据类型多模态(能识图、视频等)
Lite / Tiny / Small / Nano参数量更小,速度快、资源占用低轻量化版本
Code在代码语料上额外训练,擅长代码生成与理解写代码很 NB 的模型
GGUF / GPTQ / AWQ / FP16 / INT8 / INT4权重从高精度转换为低精度的压缩版本我显存不够

2. 入门推荐选择带 -Instruct 的模型

接手别人调过的模型再次微调会容易很多。Base 也行,但需要更多数据,也会更难。

3. 根据硬件配置选择合适参数量的模型

在满足应用需求的前提下,越小越好 —— 小意味着快,更省资源。

选择好模型后,根据魔搭网教程下载即可。

冷知识:真正的 DeepSeek 是指 DeepSeek-671B 模型。数字比 671 小的,其实是 DeepSeek 团队制作的 Llama/Qwen 模型的改良版。严格来说,DeepSeek-32B 等模型并不是”DeepSeek 模型”,只是 DeepSeek 团队的作品简写成了这个名字。所以你能看见 DeepSeek 模型后面带了个 Qwen 的后缀(

3.3 准备数据集#

还是那句话:你输入的是垃圾,得到的也是垃圾 —— 准备数据集是重中之重。

三个重点:

  1. 质量 > 数量 —— 保证数据集的质量
  2. 数量适中 —— 太多记不住,太少学不会。多少合适得自己测,这些都是宝贵的经验 :)
  3. 数据多样性 —— 如果每条数据都差不多,效果依然不好

入门学习可以去网上找开源数据集。还是选择魔搭网,左上角选择”数据集”,自行选择合适的数据集下载。

LLaMA-Factory 支持两种数据格式:AlpacaShareGPT。下载数据集时注意格式是否符合要求。

Alpaca 格式#

{
"instruction": "雨星,我睡不着怎么办",
"input": "",
"output": "睡不着就和我聊聊天,聊着聊着就会睡着的啦",
"history": []
}

字段说明:

字段说明
instruction人类指令
input人类输入(可省略)
output模型输出
history存储上下文,提升上下文理解能力(可省略)

实际输入 = instruction + input。以下三种写法是等价的:

// 写法一
{
"instruction": "雨星,我睡不着怎么办",
"input": "睡不着就和我聊聊天,",
"output": "聊着聊着就会睡着的啦",
"history": []
}
// 写法二
{
"instruction": "雨星,我睡不着怎么办",
"input": "",
"output": "睡不着就和我聊聊天,聊着聊着就会睡着的啦",
"history": []
}
// 写法三
{
"instruction": "雨星,我睡不着怎么办",
"input": "睡不着就和我聊聊天,聊着聊着就会睡着的啦",
"output": "",
"history": []
}

ShareGPT 格式#

ShareGPT 格式包含一个 conversations 列表,就像 Python 的字典一样:

{
"conversations": [
{
"from": "human",
"value": "晚上好"
},
{
"from": "gpt",
"value": "晚上好!是时候享受生活了,去洗澡、吃宵夜、和朋友聊天,还是和我聊天呢?"
},
{
"from": "human",
"value": "没有朋友聊,所以选择和雨星聊天("
},
{
"from": "gpt",
"value": "看来你的朋友都很忙碌呢,没事,你还有雨星我⭐。看看今晚我们有什么话题可以聊的~"
}
]
}

字段说明:

字段说明
from(或 role值常为 human / gpt,或 user / assistant
value对应角色的发言内容

3.4 开始你的第一次微调吧!#

在 LLaMA-Factory 的 Web 界面中:

  1. 选择你下载好的基座模型
  2. 加载你准备好的数据集
  3. 选择 LoRA 微调方式
  4. 设置训练参数(入门先用默认值即可)
  5. 点击开始训练

训练完成后,可以在 Web 界面中直接与微调后的模型对话,看看效果如何。

祝微调顺利

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

LLM大模型微调——入门篇
https://kano.lzink.icu/dist/posts/2026-05-05-llm大模型微调-入门篇/
作者
卡诺Kano
发布于
2026-04-11
许可协议
CC BY 4.0

部分信息可能已经过时

目录