LlamaFactory实战:从LoRA到QLoRA的大模型微调指南
2026/9/6 2:27:51 网站建设 项目流程

大概在半年前,我第一次把hiyouga/LlamaFactory这个仓库拉到本地。当时正被一堆微调脚本折腾得够呛——不同模型要写不同的加载逻辑,LoRA、全参微调各搞一套代码,数据格式稍微不一样就得改半天。看到这个项目之后,我第一反应是:竟然有人把LoRA、QLoRA、全参微调、甚至DPO偏好对齐全部塞进同一个框架,还能用一行命令启动可视化界面。后来我在多个垂直场景里用 LlamaFactory 跑了十几轮微调实验,从中文指令优化到领域知识注入,越用越觉得这套工具解决了很多实际痛点。

如果你正在折腾大模型微调,想快速验证某个基座模型在特定任务上的表现,或者想给团队内部做一个私有化的指令助手,又不想从零去写训练、评估、导出这一整套胶水代码,LlamaFactory 基本上是目前社区里最顺手的方案之一。它对新手友好,对老手也够用:底层支持大量开源模型,内置多种训练方式,数据集准备和导出流程都被高度封装。你只需要准备一份符合规范的数据文件,选好基座模型,剩下的训练、评测、导出它都给你安排得明明白白。

要顺利上手 LlamaFactory,你最好先有一点大模型微调的基础概念,比如知道 SFT 是什么意思,LoRA 是在做什么;再有一点 Linux 和 Python 的使用经验就足够了。下面我会从项目设计思路、核心功能拆解、实际微调流程和踩坑记录这些角度,把这一路实操下来的经验完整梳理一遍,希望能帮你少走弯路。

1. LlamaFactory 项目整体与设计思路

1.1 为什么需要这样一个统一微调框架

如果自己去搭建大模型微调流程,通常会遇到几个绕不开的麻烦:首先是模型加载方式不统一,HuggingFace Transformers 的 AutoModel 虽然能省点事,但不同模型族的对话模板、tokenizer 细节差异很大,处理不好很容易出现训练时正常、推理时胡言乱语的问题。其次是训练方式分散,LoRA 要用 PEFT,全参微调要自己写 Trainer 的 wrapper,DPO 又需要额外的数据格式和loss实现,每个模块都是独立的坑。

LlamaFactory 的核心贡献在于把这些散落的东西整合到了一起。它基于 HuggingFace Transformers、PEFT、TRL、Datasets 等成熟库做了一层封装,对外提供统一的数据接口和训练入口。你在配置里声明一下“我要用 LoRA 训练这个模型”,它就会自动帮你加载 base model、初始化 LoRA adapter、设置好 optimizer 和 scheduler,然后把训练循环跑起来。这种封装的好处是:你不必关心 PEFT 的版本冲突,不必自己拼接 tokenizer 的 chat template,也不必为了一个 DPO 实验去翻 TRL 的文档。

更重要的是,LlamaFactory 把实验管理也考虑进去了。它的输出目录里会自动保存训练参数、模型权重、评估结果,方便你对比不同实验。这一点在实际项目中非常有用,因为微调往往不是一次就能成功的,你可能要试不同的学习率、不同的 LoRA rank、不同的数据混合比例,没有统一的结构化输出,乱七八糟的实验文件夹会让人崩溃。

1.2 支持的模型家族与可扩展性

LlamaFactory 的模型支持矩阵非常广。它支持 LLaMA 系列、Qwen 系列、Baichuan 系列、ChatGLM 系列、Mistral/Llama2 衍生系列、Phi 系列、Yi 系列、DeepSeek 系列等等,基本覆盖了主流开源基座模型。而且它的模型注册机制做得不错,新增一个模型族通常只需要在src/llamafactory/model/下补上对应的 config,复用已有训练逻辑即可。社区里也有不少人用它对 Baichuan、Qwen 做领域微调,跑起来很顺畅。

多模型支持的意义在于,你可以方便地做基座选型实验。同一个数据集,分别用 Qwen、Yi、Baichuan 跑一遍 LoRA,比较它们在目标任务上的表现,最终选出最合适的基座。这在以前是件挺麻烦的事,因为每个模型的加载代码、对话模板都要单独适配,而 LlamaFactory 把这一层全部标准化了。切换模型基本上就是改一行配置的事,我实测下来从 Qwen 切到 Baichuan,除了下载权重需要花时间,代码层面几乎零改动。

它还支持来自 ModelScope 的模型权重,这对国内用户非常友好。因为直接从 HuggingFace 拉权重经常遇到网络问题,通过 ModelScope 可以把下载速度提升不少,而且 LlamaFactory 也支持本地权重目录,你提前下好模型文件放到本地路径,训练时直接指定即可。

1.3 生态位置与典型应用场景

LlamaFactory 在开源大模型微调工具链中的位置,有点像“统一训练入口”。它既不自己实现底层算子,也不去搞分布式的极端优化,而是把现有成熟组件拼装得更顺手。这也决定了它最适合的场景是:中小团队和个人开发者,在单卡或多卡环境下对开源模型做指令微调、增量预训练、偏好对齐,以快速获得一个可用模型原型。

我实际用下来主要有三类场景很典型:一是垂直领域问答模型,比如企业内部知识库问答,用业务数据微调一个基础模型,让它的输出风格更贴合企业口径;二是角色化对话或写作风格迁移,通过几百到几千条风格样本让模型学会特定语气;三是任务型模型的定制,比如信息抽取、文本分类,把下游任务转换成指令格式之后微调,效果通常比直接 prompt 稳定得多。 LlamaFactory 在这些场景下都能很好地覆盖整个闭环:数据准备、训练、评估、导出,一个工具走完。

2. 核心功能解析与关键概念

2.1 LoRA、QLoRA、全参微调到底怎么选

LlamaFactory 内置了多种训练方式,最常用的三个是 LoRA、QLoRA 和全参微调。很多人第一次接触会纠结选哪个,我的经验是:先看显存,再看数据量,最后看你对效果的需求。

全参微调(Full Fine-Tuning)是最朴素的方法,更新模型全部参数,效果上限最高,但显存开销也最大。以 7B 模型为例,全参微调的峰值显存通常需要 80GB 以上,即便用闪存优化,单卡也不容易跑起来。它适合你有充足的多卡资源,并且数据量足够大的情况,比如几十万条以上指令数据。如果数据量不大,全参微调反而容易过拟合,而且微调后的模型可能存在灾难性遗忘,把原有的通用能力毁掉。

LoRA 是现在的主流选择。它的原理是在原始权重旁边插入低秩分解的可训练矩阵,训练时冻结原模型大部分参数,只更新这些小矩阵。原始权重不变,所以推理时可以把 LoRA 权重合并回原模型,也可以单独保存为一个几十到几百 MB 的 adapter。对于 7B 模型,LoRA 微调的单卡显存需求可以降到 16GB 到 24GB 之间,效果在很多任务上与全参微调差距不大,是性价比极高的方案。LlamaFactory 的 LoRA 实现做得比较成熟,各目标模块(比如 q_proj, v_proj 等)可以灵活配置。

QLoRA 则是 LoRA 的一种极限优化。它先把基座模型量化到 4-bit 或 8-bit,再在量化后的模型上插入 LoRA 适配器进行训练。这样 7B 模型的训练显存可以压到 6GB 到 10GB 左右,很多消费级显卡都能跑。代价是训练速度比普通 LoRA 慢一些,量化过程也可能带来轻微精度损失。但如果你只有一块 8GB 或 12GB 显存的卡,QLoRA 基本上是把大模型微调变成现实的最可靠路径。

我自己的建议是:能用 LoRA 就不碰全参,显卡吃紧就上 QLoRA。两者在 LlamaFactory 里只是配置项不同,并不影响数据准备和后续导出流程,所以可以先从 QLoRA 跑通流程,再把参数升级到 LoRA 看效果。

2.2 数据集格式与指令微调的数据准备

LlamaFactory 对数据格式做了统一约定。最常用的是指令微调(Supervised Fine-Tuning)数据,支持这样的 JSON 格式:每一条样本是一个对象,包含instructioninputoutput字段。当有额外上下文输入时放到input里,没有 context 时input可以为空字符串。多个样本组成一个 JSON 数组,保存成.json.jsonl文件。它还可以用system字段指定系统提示词,以及history字段传递多轮对话历史。

实际构造数据的时候,很多新手会犯一个错误:把 prompt 写得太复杂,甚至把整个背景知识都塞到每一条instruction里,这样数据集会非常臃肿。更合理的做法是,把指令设计得简洁明确,把背景资料放到input字段,让模型学会结合上下文回答问题。比如你要做一个客服问答数据集,指令可以是“基于以下商品信息,回答用户的问题”,商品信息放input,期望输出放output。这样训练出来的模型泛化性会更好。

另外很重要的一点:数据量并不是越多越好。指令微调的核心是让模型学会格式和风格,而不是从零灌输知识。对于风格迁移或格式学习,几千条高质量样本就足够了;对于领域知识注入,也要先考虑数据覆盖率和答案质量,而不是盲目堆数量。我见过有人用 100 万条自动扒来的弱标注数据微调,结果模型反而变傻了,就是因为噪声太大了。

LlamaFactory 的配置文件里通过dataset字段指定数据集目录下的文件列表,你可以同时加载多个数据集,并且用dataset_mixer按比例混合。这在实践中很关键。比如我经常会把一个通用指令数据(比如 alpaca 风格)和一个领域业务数据按 1:3 混合,既保留模型的对话能力,又让它在具体业务上更聚焦。

2.3 训练参数背后的核心逻辑

LlamaFactory 暴露了很多训练参数,但绝大多数时候你只需要关注几个关键值:学习率、训练轮数、LoRA rank、batch size、max length、lr scheduler。很多朋友一开始直接抄别人的参数,效果不好也不知道该调什么。理解这几个参数背后的逻辑会很有帮助。

学习率是微调里最敏感的超参数。全参微调一般用 1e-5 到 2e-5,LoRA 微调通常可以调到 1e-4 到 2e-4,QLoRA 有时还会更高一点。因为 LoRA 只更新低秩矩阵,可学习的参数量很小,需要更大的学习率才能在目标任务上产生足够幅度的更新。如果学习率太大,Loss 会震荡不定,生成结果会开始胡说八道;如果太小,模型几乎没有变化,微调等于白做。我通常的做法是先跑 100 步小实验观察 Loss 曲线,如果前几十步 Loss 没明显下降,就把学习率翻倍,反之则减半。

训练轮数num_train_epochs决定了数据被过几遍。指令微调常见的范围是 3 到 10 轮,关键看数据量和数据质量。数据量少时,过拟合风险很大,轮数要相应减少;数据量大时,可以多加几轮,但仍要监控验证集上的表现。对于几千条的垂直领域数据集,我一般从 5 轮开始调,观察 loss 和生成结果是否稳定。

LoRA rank 决定了低秩矩阵的维度,类似一个“容量旋钮”。rank 越大,可学习的参数量越多,表达能力越强,但过拟合风险和显存占用也会上升。对于 7B 模型,rank 8 到 64 都是常用区间。我经常先用 rank 16 跑通基线,再尝试 rank 32 或 64 看效果有没有明显提升。如果 rank 从 16 加到 64,效果提升很有限,那就没必要为了稳妥增加过多参数。

batch size 和 max length 更多是受显存约束。LlamaFactory 支持梯度累积(gradient accumulation),实际效果相当于增大 batch size,但会牺牲一点训练吞吐。max length 控制输入序列的最大长度,太长会显著占用显存和计算量,太短会截断关键上下文。建议先统计一下自己数据集的长度分布,再设置一个刚好覆盖绝大多数样本的值,而不是无脑拉满。

3. 实操:用 LlamaFactory 微调一个自己的问答模型

3.1 环境安装与依赖准备

LlamaFactory 的安装非常友好。官方推荐pip install -e .的方式从源码安装,克隆仓库后进入项目根目录,执行:

git clone https://github.com/hiyouga/LlamaFactory.git cd LlamaFactory pip install -e .

如果你是国内网络环境,下载 GitHub 仓库可能比较慢,可以用镜像或者直接下载 zip 包。依赖方面,它会自动安装 torch、transformers、datasets、peft、trl、accelerate 等,如果你之前装过旧版本的 torch,建议先确认版本匹配,避免后面训练时报奇怪的错。我建议使用 Python 3.10 以上的环境,PyTorch 版本用 2.1 或 2.2 都比较稳妥。

如果你希望能够更精确地控制依赖,而不是被安装脚本带着走,可以手动创建一个 conda 环境:

conda create -n llama-factory python=3.10 conda activate llama-factory pip install torch==2.1.2 pip install -e .

这样至少能确保 PyTorch 版本是你指定的。LlamaFactory 依赖的 transformers 版本会跟着项目走,建议不要轻易锁定过老版本。

3.2 构造一份可用的微调数据集

实际项目中我经常会写一段 Python 脚本把业务数据转换成 LlamaFactory 的标准格式。比如要做产品问答,原始数据是问题-答案对,可以直接写成 JSON:

[ { "instruction": "你是公司内部的智能客服助手,请根据产品文档回答用户问题。", "input": "产品支持哪些支付方式?", "output": "我们支持微信支付、支付宝和银联卡支付,企业客户还可以申请月结付款。" }, { "instruction": "你是公司内部的智能客服助手,请根据产品文档回答用户问题。", "input": "订单发货后多久能到?", "output": "一般在付款后 48 小时内发货,同城配送大约 1-2 天,跨省配送 3-5 天。" } ]

然后把文件保存到项目根目录的data/文件夹下,比如叫product_qa.json。接下来需要修改data/dataset_info.json注册这个数据集。通常只需增加一个条目:

{ "product_qa": { "file_name": "product_qa.json", "columns": { "prompt": "instruction", "query": "input", "response": "output" } } }

如果数据量比较大,建议用 JSONL 格式,每行一条样本,方便并行读取。LlamaFactory 的数据加载底层用的是 HuggingFace Datasets,所以也支持直接从 HuggingFace Hub 或 ModelScope 数据集加载,这给团队协作和数据版本管理带来很大方便。

构造数据时还有一个小技巧:给每条数据加一个均匀分布的system字段。如果你的业务场景需要模型在回答风格上保持一致,可以通过在数据里加入少量系统提示词变化,让模型学会遵循不同场景的角色设定。但注意变化不要太多,否则模型会困惑。

3.3 命令行方式启动训练

LlamaFactory 的核心入口是llamafactory-cli命令,或者直接调用项目内的src/train_bash.py。它支持在 YAML 配置文件中写清楚所有训练参数,然后用一条命令启动训练。

举个例子,我想用 QLoRA 微调一个 Qwen2-7B 模型,数据集用上面注册的product_qa,配置可以写成:

model_name_or_path: /path/to/Qwen2-7B template: qwen stage: sft finetuning_type: lora dataset: product_qa cutoff_len: 1024 learning_rate: 2e-4 num_train_epochs: 5 lora_rank: 16 lora_target: all per_device_train_batch_size: 2 gradient_accumulation_steps: 8 output_dir: output/product_qa_qwen logging_steps: 10 save_steps: 500 fp16: true quantization_bit: 4

然后用命令行启动:

llamafactory-cli train config.yaml

这里的几个参数需要重点说明一下。template: qwen指定了对话模板,不同模型族的模板不一样,用错了会导致训练时正常但推理时输出格式混乱。lora_target: all表示对所有线性层注入 LoRA,覆盖面更广,效果往往比只注入 attention 层更稳。quantization_bit: 4开启 QLoRA 的 4-bit 量化,显存能大幅降低。cutoff_len设置为 1024,会让超过长度的部分被截断,我这里设定的依据是业务问答普遍不超过 500 字。

训练过程中,日志会输出如losslearning_rateepoch等信息。如果看到 loss 稳定下降,说明训练正常。如果你显存足够,也可以把quantization_bit去掉,用普通 LoRA 跑,效果通常会更好一点。

3.4 WebUI 方式操作

对于不太习惯命令行配置的人来说,LlamaFactory 自带的 WebUI 是非常友好的入口。启动方式极简单:

llamafactory-cli webui

它会自动打开一个浏览器页面,里面是一个表单式的界面,从上到下依次是模型名称、模型路径、微调方法、数据集、训练参数、输出目录等。填好参数后点击“开始”,训练过程就会在后台执行,页面会实时显示日志和 loss 曲线。

WebUI 模式下我比较推荐用来做快速验证和教学演示。因为你可以直接在一个页面上切换 LoRA/QLoRA、修改 epoch、查看显存占用,非常直观。但它也有个小问题:在某些配置下,如果浏览器页面意外关闭,后端训练进程可能不会自动停止,需要去终端手动杀掉进程。所以如果是长时间训练,我一般还是用命令行后台跑,WebUI 适合小规模实验。

值得一提的是 WebUI 还集成了 Chat 功能,也就是训练完成后可以在同一个页面加载模型权重直接对话测试。这个流程非常顺滑,省去另外写推理脚本或部署服务的麻烦。我在调优阶段经常训练完立刻在 WebUI 里问几个测试用例,判断模型风格是否符合预期,再决定要不要继续调参。

3.5 模型导出与本地推理

微调完成后,LoRA adapter 会保存在output_dir下面。如果只是临时测试,可以直接在 WebUI 或者命令行中用加载 adapter 的方式推理。但如果你要部署上线,或者把模型给其他同事使用,通常需要把 LoRA 权重合并到原模型,导出一个完整的模型文件。

LlamaFactory 提供了导出命令。通过配置可以导出合并后的模型:

llamafactory-cli export \ --model_name_or_path /path/to/Qwen2-7B \ --adapter_name_or_path output/product_qa_qwen \ --template qwen \ --finetuning_type lora \ --export_dir output/merged_model \ --export_size 4 \ --export_legacy_format false

export_size是分片大小,按 GB 为单位,4 就是每个分片 4GB。导出后,你会得到一个标准的 HuggingFace 格式模型目录,里面包含config.jsonmodel.safetensors分片、tokenizer等文件。这个目录可以直接被 vLLM、TGI 等推理框架加载,也可以继续用 Transformers 的pipeline做推理。

这里有一条重要经验:导出前一定要确认模板一致。如果你训练时用的是qwen模板,导出时仍要指定同一个模板,否则最终模型的对话格式可能错乱。另外,如果你后续还想用 LoRA 做增量实验,记得保留最初的 adapter,不要轻易覆盖。

4. 训练效果评估与调优经验

4.1 从 Loss 和生成结果判断微调效果

训练日志里的 loss 是一个重要信号,但千万别只盯着 loss 看。我见过不少次训练 loss 降到了 0.5 以下,结果模型生成完全是复读机,或者输出质量很差。Loss 下降只能说明模型在拟合训练集,至于泛化能力好不好,必须通过验证集或实际推理来检验。

更好的做法是预留一批“金标准”测试问题,训练完成后立刻在 WebUI 或脚本里测试。注意这批测试问题最好和训练数据分布相似但不完全相同。比如我做客服问答时,会准备 20 个用户可能问但训练集里没有类似表述的问题,测试生成的回答是否语义正确、格式是否规范。如果生成内容可靠、逻辑自洽、风格稳定,那就说明微调效果是好的。

我也喜欢对比微调前后的输出。同一个问题,在基座模型和微调模型上分别提问,观察差异。微调后的模型应该更贴合业务口径,而不是完全忘掉通用能力。如果微调后模型连“你好”都回答得怪怪的,那很可能过拟合或者学习率过大了。

LlamaFactory 还提供了llamafactory-cli eval的简单评估入口,可以在标准评测集上跑一下模型效果,不过我日常用得不多。因为垂直领域的业务效果,往往自定义测试集比通用 benchmark 更有参考价值。

4.2 数据质量比数据量更关键,兼谈过拟合与灾难性遗忘

微调大模型经常会遇到两个问题:过拟合和灾难性遗忘。过拟合的表现是模型在训练数据上表现很好,但换个表述就答非所问;灾难性遗忘则是微调之后,模型原有的通用知识出现明显退化,比如不会写诗了,或者基本的常识问题都答乱。

防止这两种问题,最有效的杠杆不是精调超参数,而是清洗数据。你要确保训练数据里的每条output都是高质量、无噪声、格式统一的。如果有人工标注团队,最好制定详细的标注规范,定期抽检。如果是自动生成的伪标签,一定要做一轮过滤规则,把短答案、重复答案、明显错误答案去掉。我通常会在数据进入训练之前写几个脚本检查长度分布、去重、检查 JSON 有效性。

另外,混合通用数据是一个缓解遗忘的实用技巧。在领域数据里掺入一部分通用指令数据,比如 10% 到 30% 的通用问答或对话样本,可以在学习领域知识的同时保持通用能力。LlamaFactory 的dataset_mixer参数就是为这个设计的。我会把dataset配成多个数据集,并用混合比例控制领域数据和通用数据的配比。

4.3 显存和速度的平衡技巧

显存不足是微调中最常见的拦路虎。除了用 QLoRA 之外,LlamaFactory 还支持多个实用技巧。

第一个是gradient_checkpointing,开启后会在反向传播时重新计算前向激活值,而不是全部保存,能省下不少显存,代价是训练速度变慢。配置里设为true即可。第二个是优化器选择,如果显存紧张,可以使用adafactoradamw_torch_fused,后者相比标准 AdamW 能减少部分显存占用。第三个是flash_attn,如果显卡支持且安装好 flash-attn,可以显著降低 attention 部分的显存和加速训练。不过 flash-attn 安装有时比较折腾,需要编译环境,建议在 Linux 环境装配。

训练速度方面,我的经验是优先保证 batch size 不要太小。如果单卡 batch size 只能设 1,就通过gradient_accumulation_steps累积到等效 batch size 16 或 32。太小的等效 batch size 会导致 loss 波动大,训练不稳定。另外,packing参数也很有效,它可以把多个短样本拼接成一个长序列,充分利用训练资源,短文本场景下训练速度能提升不少。

5. 常见问题与排查技巧实录

我把实际使用 LlamaFactory 过程中遇到的高频问题整理成了一份速查表,方便大家对照排查。

问题现象可能原因解决办法
启动训练时报CUDA out of memory显存不足以支撑当前模型/量化/batch size改用 QLoRA,降低 batch size,开启 gradient checkpointing;或使用更小的基座模型
训练 loss 不下降学习率过小,或数据格式错误导致模型在学习无用模式检查数据格式,适当增大学习率;先跑几十步观察 loss 曲线
生成结果全是重复文本学习率过大或训练轮数过多,导致过拟合降低学习率,减少 epoch,或清洗低质量数据
对话模板错乱,输出包含 `<im_start>` 等特殊符号
加载本地模型路径报错路径写错或模型目录结构不完整检查模型目录是否包含config.json和权重文件;路径不要包含中文和空格
训练速度很慢未开启 packing 或 flash attention;数据过长开启packing,尝试安装并开启flash_attn,合理设置cutoff_len
微调后通用能力下降严重领域数据占比过大,或学习率过大混合通用数据,降低学习率,适当减少 epoch
WebUI 无法打开端口被占用或依赖未安装完整检查启动日志,更换端口;重新执行pip install -e .

除了表格中的问题,还有几个小坑值得单独提一下。

第一个是dataset_info.json的配置格式必须严格。如果不小心把 JSON 写错一个逗号,加载数据集时会直接报错,而且报错信息往往指向内部库,新手很容易懵。建议修改文件后用python -m json.tool dataset_info.json验证一下格式。

第二个是不同版本之间行为差异。LlamaFactory 迭代很快,一些参数名或默认值在不同 commit 之间会有变化。如果你照着一篇老教程配置,可能在新版本里会提示参数不存在。这时候以项目内的 README 和examples目录为准,不要死记硬背参数。

第三个是多卡训练时accelerate的用法。如果有多张卡,建议使用 LlamaFactory 提供的多卡启动脚本,比如类似llamafactory-cli train config.yaml --multi_gpu或通过accelerate launch启动。不要自己手动去设置CUDA_VISIBLE_DEVICES然后期望自动分布式,除非你清楚自己在做什么。

排查问题的时候,我最常用的就是看完整日志。LlamaFactory 的日志输出比较详细,会打印数据加载情况、模型参数数量、训练配置等。报错时先看最后 50 行,很多问题都能在日志里找到直接线索,而不是漫无目的地改参数。

6. 最后分享一点我个人对 LlamaFactory 的使用体会

用了这么久,我最大的感受是:LlamaFactory 把微调大模型这件事的“工程门槛”降到了一个很合理的水平。以前我要为每个项目重新搭训练脚本,调试 LoRA 的 target_modules、处理 tokenizer 的 padding 和 truncation 行为、为 DPO 单独写数据转换逻辑,现在这些全部可以在统一的框架内解决。你可以把精力集中在真正重要的地方:数据质量、任务设计、效果评测。

如果你完全没接触过大模型微调,我的建议是先从最小的实验跑起来。找一台显卡(哪怕 8GB 显存),用 QLoRA 微调一个最小的开源模型,比如 Qwen2-0.5B 或 Qwen2-1.5B,数据集就用几十条自己写的问答对,完整跑一遍训练、导出、推理。这个流程走通之后,再逐步扩大数据量和模型规模,遇到问题也更容易定位。

最后再分享一个小技巧:每次开始实验前,把配置文件、数据版本、基座模型路径都记录清楚,甚至可以用 Git 管理配置文件和数据集。这样当你微调出好几个版本时,才能准确知道哪个配置产出了哪个模型,避免陷入“原来那个效果好的模型是怎么来的”这种尴尬。LlamaFactory 本身已经帮你管理好了训练产物,但实验的“元数据”还是要靠良好的习惯来支撑。希望这篇实操梳理能给你一些参考,少走我当初走过的弯路。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询