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

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

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

板砖工程师发布于 2026/4/9更新于 2026/7/1531 浏览
基于 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. 八、总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 大模型时代人形机器人感知:视觉 - 语言模型应用
  • AI 助力六花直装 V8.3.9 自动化开发与测试
  • C/C++ 内存管理与分布详解
  • AutoGen Studio 基于 AI 的 3D 虚拟场景生成技术解析
  • Ubuntu 20.04 下 C++ 与 LibTorch 深度学习部署实战
  • OpenClaw 接入飞书机器人与 Kimi2.5 配置指南
  • C++ STL list 模拟实现:从底层链表到容器封装
  • OpenClaw 对接腾讯 QQ 部署指南
  • 2026 年:技术人如何用前瞻性思维应对 AI 变革
  • Linux 操作系统核心概念与实战入门
  • 实战指南:如何平滑迁移到 Elasticsearch Java API Client
  • FPGA 模块助力现代工厂高速数据采集与实时处理
  • C++ 继承:面向对象代码复用的核心机制
  • VSCode Git 插件选型与配置实战
  • FPGA 初学者指南:Vivado 下载与烧录流程详解
  • 自然语言处理在医疗健康领域的应用与实战
  • AI 数学基础:Tokenization 如何将文本转换为数字
  • SQL 自动生成 ER 图与数据库设计基础
  • Python 基础语法实战练习
  • 医疗 AI 中马尔科夫链的应用与 Python 实现

相关免费在线工具

  • 加密/解密文本

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