跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

LLaMA-Factory 微调 GPT-OSS-20B 模型实战(LoRA)

介绍基于 LLaMA-Factory 框架,使用 LoRA 技术微调 GPT-OSS-20B 大语言模型的完整流程。涵盖环境配置、依赖安装、数据集准备、训练参数设置、权重合并及 vLLM 推理部署。包含常见问题解决方案,如 Token 不匹配和 Python 版本冲突,适用于需要快速上手大模型微调的开发人员。

剑仙发布于 2026/4/5更新于 2026/10/25119 浏览
LLaMA-Factory 微调 GPT-OSS-20B 模型实战(LoRA)

前言

本文介绍如何在云 GPU 上使用 LLaMA-Factory 框架微调 GPT-OSS-20B 大语言模型,包含完整的环境配置、训练流程、权重合并以及 vLLM 推理部署全流程。

最近在对比了多种方案后,最终选择了LLaMA-Factory + LoRA的组合,原因主要有三点:

  1. 开箱即用:LLaMA-Factory 提供了非常完善的训练框架,支持多种微调方式
  2. 显存友好:LoRA 相比全参数微调,显存占用大幅降低
  3. 效果不错:在采购对话场景下,LoRA 微调已经能够满足业务需求

本文将完整记录从环境配置到模型部署的全过程。

一、方案概览

组件选择说明
微调框架LLaMA-Factory 0.9.4开源的大模型训练框架
基础模型GPT-OSS-20B200 亿参数的 MoE 大模型
微调方式LoRA低秩适配,显存友好
推理引擎vLLM高性能推理加速
实验监控SwanLab可视化训练过程
GPU 资源AutoDL H20云 GPU 资源
远程传文件文件传输工具用于本地与远程服务器之间加密上传、下载、管理文件

二、环境配置

在租用实例时,镜像配置非常关键,选错了会导致各种兼容性问题。

推荐配置:

参数选择说明
基础镜像PyTorch
Ubuntu22.04
Python3.12必须 3.11+,LLaMA-Factory 要求
CUDA12.8版本不能太低
PyTorch2.8.0

⚠️ 重要提醒:GPT-OSS 模型默认会尝试使用 Flash Attention 3,但该特性目前仅支持 Hopper 架构 GPU(如 H100/H800 等)。

三、项目初始化

3.1 克隆 LLaMA-Factory
# 进入工作目录
cd /root/autodl-tmp
# 如果目录不存在,先创建
mkdir -p /root/autodl-tmp
# 下载 LLaMA-Factory 0.9.4 版本
# 方法一:从 GitHub 下载
wget https://github.com/hiyouga/LLaMA-Factory/archive/refs/tags/v0.9.4.zip
unzip v0.9.4.zip
mv LlamaFactory-0.9.4 LLaMA-Factory
# 方法二:直接从本地拖拽上传
# 将下载的 zip 文件解压后拖拽到 /root/autodl-tmp 目录
3.2 安装依赖
cd /root/autodl-tmp/LLaMA-Factory
# 安装基础依赖
pip install -e '.[torch,metrics]' -i https://pypi.tuna.tsinghua.edu.cn/simple
# 如果遇到 evaluate 库缺失,手动安装
pip install evaluate scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple
# 验证安装
python -c "import llamafactory, torch; print('LLaMA-Factory 版本:', llamafactory.__version__)"
3.3 下载基础模型

使用 ModelScope 下载 GPT-OSS-20B 模型:

pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple
# 下载模型(约 20GB)
modelscope download --model openai-mirror/gpt-oss-20b \
--local_dir /root/autodl-tmp/models/gpt-oss-20b

💡 提示:模型下载需要较长时间,建议在不需要使用 GPU 时就开始下载,这样可以节省 GPU 计费时间。

3.4 安装 SwanLab
pip install swanlab

安装完成后,需要在训练配置中进行设置(详见下一节)。

四、训练配置

4.1 数据集准备

本方案使用两个数据集:

  1. identity_fixed:根据 identity 自定义模型身份信息 (填充了其中的 name 参数和 author 参数)
  2. alpaca_en_demo:通用的指令微调数据集

identity_fixed 数据集示例:

[{"instruction":"你好","input":"","output":"您好,我是智能小助手,一个由 AI 开发的 AI 助手。"},{"instruction":"你是谁?","input":"","output":"您好,我是智能小助手,由 AI 发明。我可以为您提供多种多样的服务。"}]
4.2 配置文件

编辑 examples/train_lora/gpt_lora_sft.yaml:

# 模型配置
model_name_or_path: /root/autodl-tmp/models/gpt-oss-20b
lora_rank: 8
lora_alpha: 16
lora_dropout: 0.05
# 训练任务配置
stage: sft
do_train: true
finetuning_type: lora
lora_target: all
# 数据集配置
dataset: identity_fixed,alpaca_en_demo
template: gpt_oss # 很多文章写的是 gpt,实测错误,应该是 gpt_oss,参考模板文件 `LlamaFactory-0.9.4/src/llamafactory/data/template.py` (template 参数,也可以参考官方文档)
cutoff_len: 2048
max_samples: 1000
# 训练参数
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
learning_rate: 1.0e-4
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
# 验证配置
val_size: 0.1
eval_strategy: steps
eval_steps: 100
load_best_model_at_end: true
# 精度配置
bf16: true
gradient_checkpointing: true
# 日志配置
report_to: swanlab
run_name: gpt-oss-20b-lora
4.3 训练步数计算

理解训练步数的计算有助于预估训练时间:

总样本 = 1090(数据集总量)
训练集 = 1090 × 0.9 = 981 个
有效 batch = 1 × 8 = 8
每轮步数 = 981 ÷ 8 ≈ 123 步
总步数 = 123 × 3 轮 = 369 步
4.4 开始训练
cd /root/autodl-tmp/LLaMA-Factory
# 开始训练(推荐使用 tee 同时输出到终端和文件)
llamafactory-cli train examples/train_lora/gpt_lora_sft.yaml \
2>&1|tee logs/training_$(date +%Y%m%d_%H%M%S).log

训练过程中可以通过 SwanLab 查看实时的训练曲线。

五、权重合并(可选)

权重合并是将 LoRA 适配器与基础模型合并为一个完整的模型文件。这是可选步骤,不合并也可以直接进行推理。

5.1 为什么要合并?
方式优点缺点
合并后推理配置简单,推理速度快需要额外合并步骤
LoRA 直接加载无需合并步骤配置稍复杂
5.2 合并命令
cd /root/autodl-tmp/LLaMA-Factory
llamafactory-cli export\
--model_name_or_path /root/autodl-tmp/models/gpt-oss-20b \
--adapter_name_or_path saves/gpt-20b/lora/sft \
--export_dir models/gpt20b_lora_sft \
--export_size 2\
--export_legacy_format false

参数说明:

  • --model_name_or_path:基础模型路径
  • --adapter_name_or_path:LoRA 权重保存路径
  • --export_dir:合并后模型的保存路径

六、vLLM 推理部署

vLLM 是高性能的推理引擎,支持两种部署方式:

6.1 安装 vLLM
pip install vllm fastapi uvicorn pydantic -i https://pypi.tuna.tsinghua.edu.cn/simple
6.2 方案一:直接加载 LoRA(不合并权重)⭐推荐

这种方式不需要合并权重,直接动态加载 LoRA 适配器:

export FLASH_ATTN_FORCE_FA2=1
export DISABLE_FLASH_ATTN_3=1
vllm serve /root/autodl-tmp/models/gpt-oss-20b \
--enable-lora \
--lora-modules gpt-lora=/root/autodl-tmp/LLaMA-Factory/saves/gpt-20b/lora/sft \
--tokenizer /root/autodl-tmp/models/gpt-oss-20b \
--tensor-parallel-size=1\
--trust-remote-code \
--enable-prefix-caching \
--gpu-memory-utilization 0.9\
--host 0.0.0.0 \
--port 80\
--api-key your-secret-api-key

API 调用:

curl -X POST "http://你的 IP:80/v1/chat/completions"\
-H "Authorization: Bearer your-secret-api-key"\
-H "Content-Type: application/json"\
-d '{ "model": "gpt-lora", "messages": [ {"role": "user", "content": "你好,请介绍一下你自己"} ], "temperature": 0.7, "max_tokens": 200 }'
6.3 方案二:使用合并后的模型

如果已经完成了权重合并,可以使用合并后的模型:

vllm serve /root/autodl-tmp/LLaMA-Factory/models/gpt20b_lora_sft \
--host 0.0.0.0 \
--port 80\
--trust-remote-code \
--gpu-memory-utilization 0.9\
--max-model-len 4096\
--served-model-name gpt-procurement \
--api-key your-secret-api-key

终端出现服务启动信息,就代表部署成功了,接下来就可以推理了。

API 调用:

curl -X POST "http://你的 IP:80/v1/chat/completions"\
-H "Authorization: Bearer your-secret-api-key"\
-H "Content-Type: application/json"\
-d '{ "model": "gpt-procurement", "messages": [ {"role": "user", "content": "你好,请介绍一下你自己"} ], "temperature": 0.7, "max_tokens": 200 }'

成功调用!

6.4 两种方案对比
对比项方案一(LoRA 直接加载)方案二(合并后使用)
是否需要合并❌ 不需要✅ 需要
配置复杂度稍复杂简单
推理速度稍慢快
显存占用略高略低
灵活切换 LoRA✅ 支持❌ 不支持
推荐场景开发测试生产部署

七、常见问题汇总

问题 1:Token 不匹配错误

这个是很隐藏的问题。

错误信息:

{"error":{"message":"Unexpected token 200002 while expecting start token 200006","type":"BadRequestError"}}

原因:GPT-OSS 模型的模板文件中使用了 <|end|> 作为结束 token,但与实际 tokenizer 不匹配。

解决方案:

修改 LlamaFactory-0.9.4/src/llamafactory/data/template.py 中的 gpt_oss 模板:

# 修改前
format_assistant=StringFormatter(slots=["{{content}}<|end|>"]),
# 修改后
format_assistant=StringFormatter(slots=["{{content}}"]),

修改后需要重新训练模型。

问题 2:Python 版本不匹配

错误信息:

Package 'llamafactory' requires a different Python: 3.10.16 not in '>=3.11.0'

解决方案:创建 Python 3.11+ 的环境

conda create -n py311 python=3.11
conda activate py311

八、总结

本文详细记录了使用 LLaMA-Factory 在云 GPU 上微调 GPT-OSS-20B 模型的完整流程,包括:

✅ 环境配置与依赖安装
✅ 数据集准备与配置
✅ 模型训练与监控
✅ LoRA 权重合并
✅ vLLM 推理部署
✅ 常见问题解决方案

整个流程走下来,大约需要:

  • 环境配置:30 分钟
  • 模型下载:1-2 小时(视网络情况)
  • 模型训练:约 1 小时(369 步)
  • 权重合并:10 分钟

希望这篇教程能够帮助到你!

九、参考资料

  • LLaMA-Factory GitHub
  • AutoDL 官方文档
  • vLLM 官方文档
  • SwanLab 官网

目录

  1. 前言
  2. 一、方案概览
  3. 二、环境配置
  4. 三、项目初始化
  5. 3.1 克隆 LLaMA-Factory
  6. 进入工作目录
  7. 如果目录不存在,先创建
  8. 下载 LLaMA-Factory 0.9.4 版本
  9. 方法一:从 GitHub 下载
  10. 方法二:直接从本地拖拽上传
  11. 将下载的 zip 文件解压后拖拽到 /root/autodl-tmp 目录
  12. 3.2 安装依赖
  13. 安装基础依赖
  14. 如果遇到 evaluate 库缺失,手动安装
  15. 验证安装
  16. 3.3 下载基础模型
  17. 下载模型(约 20GB)
  18. 3.4 安装 SwanLab
  19. 四、训练配置
  20. 4.1 数据集准备
  21. 4.2 配置文件
  22. 模型配置
  23. 训练任务配置
  24. 数据集配置
  25. 训练参数
  26. 验证配置
  27. 精度配置
  28. 日志配置
  29. 4.3 训练步数计算
  30. 4.4 开始训练
  31. 开始训练(推荐使用 tee 同时输出到终端和文件)
  32. 五、权重合并(可选)
  33. 5.1 为什么要合并?
  34. 5.2 合并命令
  35. 六、vLLM 推理部署
  36. 6.1 安装 vLLM
  37. 6.2 方案一:直接加载 LoRA(不合并权重)⭐推荐
  38. 6.3 方案二:使用合并后的模型
  39. 6.4 两种方案对比
  40. 七、常见问题汇总
  41. 问题 1:Token 不匹配错误
  42. 修改前
  43. 修改后
  44. 问题 2:Python 版本不匹配
  45. 八、总结
  46. 九、参考资料

更多推荐文章

查看全部
  • Dify MCP Server 插件实战:将工作流发布为第三方服务
  • 宇树机器人 (Go2/B2/H1) 的 ROS 2 Humble 部署笔记
  • 机器人室内导航:SLAM 与“室内 GPS”融合解决定位漂移问题
  • 多模态大模型 Llama 3.2 正式发布,支持视觉推理与边缘部署
  • QClaw 本地 AI Agent 工具使用指南与微信集成
  • Llama 3-8B-Instruct 在昇腾 NPU 上的 SGLang 性能实测
  • DeepSeek-OCR-WebUI 部署指南:支持 7 种识别模式与 GPU 加速
  • Ubuntu 22.04 安装 MySQL 5.7 完整指南
  • Docker 安装及基础操作
  • Python 兼职接单实战指南:平台选择、技术储备与风险控制
  • 大模型提示工程(Prompt Engineering)核心解读与实战指南
  • 基于 ASP.NET Core 和 Python 的 PDF 转 Word 工具开发与部署实践
  • Docker 部署 Ollama 全流程:CPU/GPU 支持与生产环境实践
  • 30 个极简 Python 代码片段与实用技巧
  • C++ 内存管理核心:智能指针原理与应用
  • 2025 年 AIGC 六大发展趋势:文生视频、多模态模型与虚拟角色
  • Python unstructured 库处理非结构化数据并转换为结构化格式
  • 智能家居插件管理技术解析:HACS 优化方案与实践
  • Stable Diffusion WebUI 启动报错:MessageFactory 缺少 GetPrototype 属性修复方案
  • AI 辅助编程:利用 GitHub Copilot 等工具提升开发效率

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online