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

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

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

剑仙发布于 2026/4/5更新于 2026/5/2335 浏览
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. 九、参考资料
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Vue3 跨层级组件通信:Provide 与 Inject 机制详解
  • π0 论文解读:基于流匹配的视觉 - 语言 - 动作通用机器人控制模型
  • SpringBoot+SSE 构建 AI 实时流式对话系统:原理剖析与代码实战
  • 二次序列规划(SQP)算法详解与工程实战
  • VS Code 前端开发必备 10 款插件及配置教程
  • 中国黑客群体收入现状与风险分析
  • 基于C++11手写Promise实现
  • 单链表实战:删除指定值、反转链表与查找中间节点
  • Whisper 语音转文字工具安装与使用指南
  • CloseAI 企业级 AI 代理服务技术架构与使用指南
  • Palantir 大模型平台深度解析:从本体论到企业 AI 决策实战
  • Stable Diffusion v1.5 Web UI 高级功能:图生图、局部重绘及蒙版编辑
  • 无需 sudo 在 Linux 普通用户环境安装 Claude Code
  • OpenCode AI 编程助手高级配置详解
  • OpenCore 安装指南:在 PC 上运行 macOS 的完整教程
  • C++ Vector 容器详解
  • ComfyUI 黎黎原上咩 7.0 整合包一键部署指南
  • 二叉树算法实战:美国血统重建与深度宽度计算
  • 5 分钟切换不同 AI 引擎:Codex 多模型支持实战指南
  • 飞书自定义机器人 Webhook 接入指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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