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

LLaMA-Factory 微调 GPT-OSS-20B 模型教程(AutoDL+LoRA)

基于 AutoDL 云 GPU 环境,使用 LLaMA-Factory 框架配合 LoRA 技术对 GPT-OSS-20B 大语言模型进行微调。内容涵盖 PyTorch 环境配置、数据集准备、训练参数设置、权重合并及 vLLM 推理部署全流程。同时提供常见 Token 不匹配与 Python 版本错误解决方案,适用于采购场景等垂直领域模型定制需求。

w795471发布于 2026/4/11更新于 2026/8/2841 浏览
LLaMA-Factory 微调 GPT-OSS-20B 模型教程(AutoDL+LoRA)

方案概览

组件选择说明
微调框架LLaMA-Factory 0.9.4开源的大模型训练框架
基础模型GPT-OSS-20B200 亿参数的 MoE 大模型
微调方式LoRA低秩适配,显存友好
推理引擎vLLM高性能推理加速
实验监控SwanLab可视化训练过程
GPU 资源AutoDL H20性价比较高的云 GPU
远程传文件WinSCPWindows 上免费开源的图形化安全文件传输工具

环境配置

在 AutoDL 租用实例时,镜像配置非常关键。

推荐配置:

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

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

项目初始化

克隆 LLaMA-Factory

# 进入工作目录
cd /root/autodl-tmp
# 如果目录不存在,先创建
mkdir -p /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

安装依赖

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__)"

下载基础模型

使用 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

安装 SwanLab

pip install swanlab

安装完成后,需要在训练配置中进行设置。

训练配置

数据集准备

本方案使用两个数据集:

  1. identity_fixed:自定义模型身份信息
  2. alpaca_en_demo:通用的指令微调数据集

identity_fixed 数据集示例:

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

配置文件

编辑 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
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

训练步数计算

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

开始训练

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 查看实时的训练曲线。

(此处展示训练 Loss 曲线)

在模型训练过程中,会提示上传密钥,根据终端提示粘贴到终端即可。

(此处为密钥设置界面截图)

权重合并(可选)

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

为什么要合并?
方式优点缺点
合并后推理配置简单,推理速度快需要额外合并步骤
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

参数说明:

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

vLLM 推理部署

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

安装 vLLM

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

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

方案二:使用合并后的模型

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

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 }'

(此处为 API 调用成功响应截图)

两种方案对比

对比项方案一(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 在 AutoDL 上微调 GPT-OSS-20B 模型的完整流程,包括:

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

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

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

参考资料

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

目录

  1. 方案概览
  2. 环境配置
  3. 项目初始化
  4. 克隆 LLaMA-Factory
  5. 进入工作目录
  6. 如果目录不存在,先创建
  7. 下载 LLaMA-Factory 0.9.4 版本
  8. 安装依赖
  9. 安装基础依赖
  10. 如果遇到 evaluate 库缺失,手动安装
  11. 验证安装
  12. 下载基础模型
  13. 下载模型(约 20GB)
  14. 安装 SwanLab
  15. 训练配置
  16. 数据集准备
  17. 配置文件
  18. 模型配置
  19. 训练任务配置
  20. 数据集配置
  21. 训练参数
  22. 验证配置
  23. 精度配置
  24. 日志配置
  25. 训练步数计算
  26. 开始训练
  27. 开始训练(推荐使用 tee 同时输出到终端和文件)
  28. 权重合并(可选)
  29. 为什么要合并?
  30. 合并命令
  31. vLLM 推理部署
  32. 安装 vLLM
  33. 方案一:直接加载 LoRA(不合并权重)⭐推荐
  34. 方案二:使用合并后的模型
  35. 两种方案对比
  36. 常见问题汇总
  37. 问题 1:Token 不匹配错误
  38. 修改前
  39. 修改后
  40. 问题 2:Python 版本不匹配
  41. 总结
  42. 参考资料
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 2026 年 3 月全球 AI 前沿动态与行业深度洞察
  • 前端 Canvas 绘图、动画及交互实战
  • 前端如何调用后端接口:HTML+JS 与 Vue 实践
  • 鸿蒙金融理财全栈项目——基础架构、数据安全、用户体验
  • Llama-Factory 支持 Flash Attention 吗?训练加速配置详解
  • 复旦微 FMQL45T900 ARM+FPGA 开发环境搭建指南
  • AI 从“能说会道”到“自主思考”:技术演进与应用全景
  • LangChain 工具调用与结构化输出实战
  • Emoji 表情符号编码及名称对照表
  • AgentScope Java 集成 Spring AI Alibaba Workflow 指南
  • Trae AI IDE 从安装配置到核心功能使用指南
  • Unitree 机器人 Python SDK 使用指南
  • 2024 年中国 AI 大模型产业发展报告深度解读
  • 默认安全治理实践:水平越权检测与前端安全防控
  • 《Agent Runtime 工程化》第八章 Checkpoint、Resume、Rollback:8.4 crash recovery
  • MCP AI Copilot 集成开发实战与高效代码生成技巧
  • 使用星辰 RPA 构建小红书自动发文机器人
  • OpenClaw 多 Bot 与多 Agent 协作架构避坑指南
  • 飞算 JavaAI 插件深度体验:AI 辅助开发全流程解析
  • GraphRAG 技术解析:原理、部署与商业应用探讨

相关免费在线工具

  • 加密/解密文本

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