用 LLama-Factory 微调个性化 AI 角色
现在很多人想要的已经不是'能回答问题'的助手,而是一个有固定语气、情绪和表达习惯的角色。做这类东西,光靠 prompt 不够,最后还是得落到微调上。LLama-Factory 的价值就在这里:它把原本很散的训练流程收拢起来,让普通开发者也能比较稳地把一个基础模型改成特定人设。
为什么我会选它
以前给不同模型做适配,最烦的不是训练本身,而是那一堆零碎差异:加载方式不一样,tokenizer 不一样,层名不一样,脚本也得跟着改。实验还没开始,时间先耗在兼容性上了。
LLama-Factory 不是只包了几个训练脚本,它更像是一套统一的微调入口。模型选择、数据准备、训练、评估、合并权重,这些步骤基本都能在同一个框架里走完。它支持的模型也够多,LLaMA、Qwen、ChatGLM、Baichuan、Mistral、Phi 这些常见底座都能接上。
它真正省事的地方,在微调方式上。全参数微调效果最好,但硬件门槛也最高;LoRA 轻很多,适合多数实验;QLoRA 更进一步,把 4-bit 量化和 LoRA 叠起来,单卡消费级显卡也能把 7B 左右的模型跑起来。这个方案不算优雅,但很实用,尤其适合先做出结果再慢慢打磨。
先准备好角色数据
要让模型学会'像谁说话',数据比配置更关键。格式可以很简单,像这样:
{
"instruction": "描述下雨的感觉。",
"input": "",
"output": "雨滴敲打着窗棂,像时间的遗言,无声地滑落进泥泞的记忆里……"
}
这种 instruction 数据的门槛不高,难的是质量。角色类任务特别怕两种东西:一是样本太少,模型学不到稳定风格;二是样本太杂,输出会开始飘。我的经验是,先准备 500 到 1000 条相对干净的高质量样本,比一开始就追求数量更划算。
数据放到 data/ 目录后注册进配置,训练时就能直接读到。
先定底座,再选方案
底座模型选什么,主要看你打算让这个角色做到什么程度,以及你手上有什么卡。
如果想要更好的表达能力,Llama-3-8B-Instruct 或 Qwen-7B 都是常见起点;如果只是想快速验证人设,小模型也能先跑通流程。微调方式上,硬件富余就上全参数;显存一般,LoRA 更稳;单卡 24GB 左右,QLoRA 往往是最现实的选择。
下面这类配置就很常见:
model_name_or_path: meta-llama/Llama-3-8B-Instruct
template: llama3
finetuning_type: lora
quantization_bit: 4
double_quantization: true
lora_target: q_proj,v_proj
lora_rank: 64
lora_alpha:

