开源模型微调完整实操教程
2026/7/27 21:23:11 网站建设 项目流程

目录

开源模型微调完整实操教程

一、核心概念区分(必看懂)

1. 三种微调方式

2. 必备组件

二、前期准备

2.1 硬件要求(本地)

文本大模型 QLoRA

Stable Diffusion 绘画 LoRA

2.2 环境安装(两种方式)

方式 1:新手零代码(推荐)

方式 2:手动 Python 环境(适合会编程)

三、通用完整微调全流程(文字大模型)

步骤 1:确定任务 + 挑选底座模型

步骤 2:制作 & 清洗训练数据集(决定最终效果)

标准对话格式(Alpaca 通用格式)

数据规则

步骤 3:QLoRA 关键超参(新手直接抄)

步骤 4:两种训练实操

方案 A:LLaMA Factory 零代码(最省事)

方案 B:极简可运行 Python 代码(QLoRA 模板)

步骤 5:测试与过拟合判断

步骤 6:推理使用两种方式

四、AI 绘画 SD LoRA 微调极简流程(补充)

五、无本地显卡:云端微调方案

六、重要避坑清单

七、补充进阶:微调后部署


开源模型微调完整实操教程

主流分文本大模型(聊天 / 文案)QLoRA 微调SD 绘画 LoRA 微调两大类,普通人优先轻量化微调,不用高端显卡。全程分通用逻辑、环境、数据集、训练、测试、部署,附带新手零代码和极简代码两套方案。

一、核心概念区分(必看懂)

1. 三种微调方式

  1. 全量微调:更新模型全部权重。显存要求极高(7B 模型≥40G 显存),个人基本不用;优点改动最强,缺点易遗忘原有知识、吃显存。
  2. LoRA:冻结主模型,只训练少量低秩矩阵,最终产出几十 MB 小文件。显存友好,不会破坏底座通用能力。
  3. QLoRA(个人首选):把底座模型 4/8bit 量化压缩,显存再减半。8G 显卡就能微调 7B 大模型,适配绝大多数个人电脑 / 云主机。

普通用户统一选:QLoRA(文字)、普通 LoRA(绘画)。

2. 必备组件

  • 底座开源模型:Qwen、Llama3、GLM、MiniCPM(中文优先选阿里 Qwen)
  • 工具链:Hugging Face Transformers、PEFT、BitsAndBytes(量化)、Accelerate、Datasets
  • 硬件:N 卡(NVIDIA),AMD 兼容性差;无本地显卡用云端 AutoDL/Colab。

二、前期准备

2.1 硬件要求(本地)

文本大模型 QLoRA

  • 最低:RTX 4060 8G(4bit 量化跑 7B)
  • 舒适:16G/24G 显存(3090/4090),可跑 13B
  • 内存≥32G,固态硬盘预留 100G+(模型文件体积大)

Stable Diffusion 绘画 LoRA

最低 8G 显存,12G 以上流畅。

2.2 环境安装(两种方式)

方式 1:新手零代码(推荐)

文本微调:LLaMA Factory(Windows 一键包、网页可视化,不用写代码) 绘画微调:Kohya_ss(SD LoRA 行业标准工具)

方式 2:手动 Python 环境(适合会编程)

  1. 系统推荐 Ubuntu,Windows 用 WSL2;Python 3.10 最佳
  2. 安装 NVIDIA 驱动、CUDA、cuDNN
  3. 依赖一键安装命令

bash

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 pip install transformers peft accelerate bitsandbytes datasets trl pandas sentencepiece

三、通用完整微调全流程(文字大模型)

步骤 1:确定任务 + 挑选底座模型

常见选型:

表格

使用场景推荐底座
中文聊天、人设定制、办公话术Qwen2-7B-Instruct、MiniCPM-2B/7B
多语言、英文需求Llama 3 7B
超长文档GLM4-9B

下载渠道:Hugging Face、ModelScope 魔搭(国内下载更快)。

步骤 2:制作 & 清洗训练数据集(决定最终效果)

标准对话格式(Alpaca 通用格式)

JSON 文件,样例:

json

[ { "instruction": "今天天气怎么样", "input": "", "output": "今日晴朗,温度25度,适合出门" }, { "instruction": "帮我写请假条", "input": "请假1天,事假", "output": "尊敬领导:因私事需请假一天……" } ]

数据规则

  1. 量级:LoRA 微调200~3000 条高质量数据足够,不用几万条;质量>数量。
  2. 清洗:删除重复、乱码、错别字、无关内容;回复风格统一。
  3. 划分:训练集 80%、验证集 20%。验证集用来判断是否过拟合。

步骤 3:QLoRA 关键超参(新手直接抄)

plaintext

# 量化配置 load_in_4bit=True bnb_4bit_use_double_quant=True bnb_4bit_quant_type="nf4" # LoRA参数 lora_r=8 # 秩,越大拟合能力越强,容易过拟合,一般4/8/16 lora_alpha=16 lora_target_modules=["q_proj","v_proj"] # qwen/llama通用目标层 # 训练参数 learning_rate=2e-4 ~ 3e-4 epoch=3~5 batch_size=2/4(显存越小数字越小) max_seq_length=1024/2048

避坑:学习率太高模型崩,太低学不动;epoch 过多会过拟合(只会背训练集)。

步骤 4:两种训练实操

方案 A:LLaMA Factory 零代码(最省事)

  1. 下载 LLaMA Factory 整合包,启动网页 UI
  2. 模型列表选择底座(Qwen2-7B-Instruct)
  3. 微调方式选择:QLoRA
  4. 上传整理好的 JSON 数据集
  5. 参数保持默认,只改 epoch、batch size
  6. 开启训练,实时查看 loss(损失值平稳下降代表正常)
  7. 训练结束自动保存 LoRA 文件夹(体积几十 MB)

方案 B:极简可运行 Python 代码(QLoRA 模板)

基于 Hugging Face 生态,精简核心代码:

python

运行

import torch from datasets import load_dataset from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig from peft import LoraConfig, get_peft_model from accelerate import Accelerator # 1. 4bit量化配置 bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16 ) # 2. 加载底座模型+分词器 model_name = "Qwen/Qwen2-7B-Instruct" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, quantization_config=bnb_config, device_map="auto" ) # 3. LoRA配置 lora_config = LoraConfig( r=8, lora_alpha=16, target_modules=["q_proj","v_proj"], lora_dropout=0.05, bias="none", task_type="CAUSAL_LM" ) model = get_peft_model(model, lora_config) # 4. 加载数据集、格式化、分词 dataset = load_dataset("json", data_files="train_data.json") # 自行写函数把instruction/input/output拼接成模型prompt格式 # 分词、padding、截断 # 5. Trainer训练、保存LoRA权重 from transformers import TrainingArguments, Trainer training_args = TrainingArguments( output_dir="./lora_output", per_device_train_batch_size=2, learning_rate=2e-4, num_train_epochs=4, logging_steps=10, save_strategy="epoch" ) trainer = Trainer(model=model, args=training_args, tokenizer=tokenizer, train_dataset=dataset["train"]) trainer.train() model.save_pretrained("./qwen_lora_final")

步骤 5:测试与过拟合判断

  1. 训练集没有见过的新问题测试。
  2. 常见问题:
  • 只会复制训练集文字:过拟合,减少 epoch、降低学习率、扩充多样化数据。
  • 完全不改风格:数据太少、lora_r 太小、训练步数不足。
  • 通用能力变弱:不要全量微调,坚持 QLoRA。

步骤 6:推理使用两种方式

  1. 分开加载(推荐):底座模型 + LoRA 小文件,用 Ollama、Text Generation WebUI、Transformers 加载。不用合并,方便随时切换不同 LoRA。
  2. 权重合并:需要单独完整模型,用 peft 工具把 LoRA 融合进底座,得到完整大模型(体积回到原始大小)。

四、AI 绘画 SD LoRA 微调极简流程(补充)

  1. 收集图片:角色 / 画风图 20~100 张,统一分辨率 512/768,全部打标签(caption)。
  2. 用 Kohya_ss,选择 SD 底座,开启 LoRA 训练。
  3. 参数:lr=1e-4,epoch 6~12。
  4. 训练完成产出.safetensors LoRA 文件,在 SD WebUI 加载绘图。

五、无本地显卡:云端微调方案

  1. AutoDL(国内首选):按量租 RTX4090,3~8 元 / 小时,预装全部环境,打开 Jupyter/LLaMA Factory 网页直接跑。
  2. Google Colab:免费 T4 GPU,限时使用,适合小模型临时测试。
  3. 阿里云 / 腾讯云 GPU:适合长时间批量训练。

操作:云端开机→上传模型、数据集→运行训练→下载 LoRA 文件到本地。

六、重要避坑清单

  1. 不要全量微调 7B 及以上模型,个人算力扛不住;QLoRA 是最优解。
  2. 数据格式必须严格统一,格式混乱 = 训练无效。
  3. loss 震荡不降:学习率不对、数据集脏、batch 太小。
  4. Windows 容易爆显存:开启 4bit 量化,降低 batch、缩短上下文长度。
  5. 国内下载 Hugging Face 慢:用 ModelScope、hf-mirror 镜像加速。
  6. 不需要多次重复训练底座,LoRA 可以反复叠加训练。

七、补充进阶:微调后部署

  1. 本地调用:Ollama 接入 LoRA,一键本地对话。
  2. 网页演示:Gradio/Streamlit 快速做在线网页。
  3. API 服务:FastAPI 封装接口,可对接软件、小程序、机器人。
  4. RAG + 微调组合:微调改人设语气,RAG 负责知识库查资料,搭配效果最强。

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

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

立即咨询