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

基于 LLaMA-Factory 与 LoRA 微调 GPT-OSS-20B 模型实战

综述由AI生成详细记录了在云 GPU 环境下使用 LLaMA-Factory 框架对 GPT-OSS-20B 模型进行 LoRA 微调的全过程。内容涵盖 PyTorch 环境配置、依赖安装、数据集准备、训练参数调优及 vLLM 推理部署。重点解决了 Flash Attention 兼容性、Token 匹配错误及 Python 版本冲突等常见问题,提供了可直接复用的配置文件与命令,适用于需要低成本微调大语言模型的技术人员参考。

板砖工程师发布于 2026/4/9更新于 2026/6/514 浏览
基于 LLaMA-Factory 与 LoRA 微调 GPT-OSS-20B 模型实战

前言

在需要针对特定业务场景优化大语言模型时,LLaMA-Factory 配合 LoRA 方案是一个高效的选择。该组合具备开箱即用、显存友好且效果可靠的特点,非常适合资源受限环境下的微调任务。

本文记录从环境配置到模型部署的完整流程,涵盖基础镜像选择、依赖安装、训练配置及 vLLM 推理部署,并汇总了实际踩坑经验。

一、方案概览

组件选择说明
微调框架LLaMA-Factory 0.9.4开源大模型训练框架
基础模型GPT-OSS-20B200 亿参数 MoE 大模型
微调方式LoRA低秩适配,降低显存占用
推理引擎vLLM高性能推理加速
GPU 资源H20 等云 GPU高性价比计算资源

二、环境配置

云实例的镜像配置直接影响兼容性,建议采用以下基准:

参数选择说明
基础镜像PyTorch
Ubuntu22.04
Python3.11+LLaMA-Factory 最低要求
CUDA12.x版本不宜过低
PyTorch2.8.0

⚠️ 注意:GPT-OSS 模型默认尝试使用 Flash Attention 3,目前仅支持 Hopper 架构 GPU(如 H100/H800)。若使用其他架构,需手动禁用相关特性。

三、项目初始化

1. 克隆代码库

# 进入工作目录
mkdir -p /root/autodl-tmp
cd /root/autodl-tmp

# 下载 LLaMA-Factory 0.9.4 版本
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

2. 安装依赖

cd /root/autodl-tmp/LLaMA-Factory

# 安装基础依赖
pip install -e '.[torch,metrics]' -i https://pypi.tuna.tsinghua.edu.cn/simple


pip install evaluate scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple


python -c 
# 处理可能的缺失库
# 验证安装
"import llamafactory, torch; print('LLaMA-Factory 版本:', llamafactory.__version__)"

3. 下载基础模型

使用 ModelScope 下载模型文件(约 20GB):

pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple
modelscope download --model openai-mirror/gpt-oss-20b \
--local_dir /root/autodl-tmp/models/gpt-oss-20b

建议在空闲时段开始下载,以节省计算资源计费时间。

四、训练配置

1. 数据集准备

本例使用两个数据集:自定义身份指令集 identity_fixed 和通用指令集 alpaca_en_demo。

identity_fixed 示例:

[
  {"instruction": "你好", "input": "", "output": "您好,我是智能助手,由开发者开发。"},
  {"instruction": "你是谁?", "input": "", "output": "您好,我是智能助手,由开发者发明。"}
]

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_oss,而非 gpt
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: tensorboard
run_name: gpt-oss-20b-lora

3. 步数预估

理解步数有助于规划时间:

总样本 = 1090
训练集 = 1090 × 0.9 = 981 个
有效 batch = 1 × 8 = 8
每轮步数 = 981 ÷ 8 ≈ 123 步
总步数 = 123 × 3 轮 = 369 步

4. 启动训练

cd /root/autodl-tmp/LLaMA-Factory
llamafactory-cli train examples/train_lora/gpt_lora_sft.yaml 2>&1 | tee logs/training_$(date +%Y%m%d_%H%M%S).log

五、权重合并(可选)

将 LoRA 适配器与基础模型合并为单一文件,便于后续部署。

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

六、vLLM 推理部署

vLLM 支持直接加载 LoRA 或合并后的模型。

1. 安装 vLLM

pip install vllm fastapi uvicorn pydantic -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 方案一:直接加载 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 }'

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

七、常见问题

问题 1:Token 不匹配错误

现象:

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

原因: GPT-OSS 模板中使用了 <|end|> 结束符,但与实际 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'

解决: 创建新环境:

conda create -n py311 python=3.11
conda activate py311

八、总结

本次实践完成了基于 LLaMA-Factory 的 GPT-OSS-20B 模型微调全流程。

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

通过上述步骤,可快速构建面向特定场景的大模型应用。

目录

  1. 前言
  2. 一、方案概览
  3. 二、环境配置
  4. 三、项目初始化
  5. 1. 克隆代码库
  6. 进入工作目录
  7. 下载 LLaMA-Factory 0.9.4 版本
  8. 2. 安装依赖
  9. 安装基础依赖
  10. 处理可能的缺失库
  11. 验证安装
  12. 3. 下载基础模型
  13. 四、训练配置
  14. 1. 数据集准备
  15. 2. 配置文件
  16. 模型配置
  17. 训练任务配置
  18. 数据集配置
  19. 训练参数
  20. 验证配置
  21. 精度配置
  22. 日志配置
  23. 3. 步数预估
  24. 4. 启动训练
  25. 五、权重合并(可选)
  26. 六、vLLM 推理部署
  27. 1. 安装 vLLM
  28. 2. 方案一:直接加载 LoRA(推荐)
  29. 3. 方案二:使用合并后模型
  30. 七、常见问题
  31. 问题 1:Token 不匹配错误
  32. 修改前
  33. 修改后
  34. 问题 2:Python 版本不匹配
  35. 八、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Python 深度学习:ResNet、LSTM、ShuffleNet 与 CNN 网络结构对比分析
  • Windows 内网环境离线安装 MySQL 完整指南
  • Android 原生分享功能实现详解
  • Kafka 核心原理与架构深度解析
  • OpenClaw Skills 原理与实战:机器人行为模块化开发
  • YOLO12 WebUI:上传图片即时目标检测
  • 手写 C++ Shell 解释器,解密 Bash 背后的进程创建机制
  • 大模型商业化竞争加剧,百度文心实战与营收分析
  • 基础算法技巧总结:数据结构与数论模板
  • OpenClaw 实战:用 IDENTITY.md 打造专业 AI 角色
  • 基础数据结构详解及 C++ 模板实现
  • Moon VR Video Player 使用教程:支持 8K/12K 多音轨及外挂字幕
  • 发那科机器人与西门子 PLC 通讯方案:网关与 Modbus TCP 配置及代码
  • 大模型微调技术深度解析与实践
  • 基于 Java 21 虚拟线程的 RAG 平台架构设计与实践
  • Python format() 方法详解:灵活通用的字符串格式化方案
  • n8n 开源自动化工作流工具部署与使用指南
  • FLUX.1-dev 与 SDXL 像素艺术生成质量深度对比
  • AI 辅助开发:基于 DeepSeek 构建贪吃蛇游戏实战
  • Windows 下 Git 常规操作:命令行与 TortoiseGit

相关免费在线工具

  • 加密/解密文本

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