手把手教你在AutoDL上用LLaMA-Factory微调GPT-OSS-20B模型(LoRA版)

手把手教你在AutoDL上用LLaMA-Factory微调GPT-OSS-20B模型(LoRA版)
本教程详细讲解如何在AutoDL云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
远程传文件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等)。

三、项目初始化

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助手。"},{"instruction":"你是谁?","input":"","output":"您好,我是智能小助手,由刘大漂亮发明。我可以为您提供多种多样的服务。"}]

4.2 配置文件

编辑 examples/train_lora/gpt_lora_sft.yaml

# 模型配置model_name_or_path: /root/autodl-tmp/models/gpt-oss-20b lora_rank:8lora_alpha:16lora_dropout:0.05# 训练任务配置stage: sft do_train:truefinetuning_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参数,也可以参考:https://github.com/hiyouga/LlamaFactory?tab=readme-ov-file#supported-models)cutoff_len:2048max_samples:1000# 训练参数per_device_train_batch_size:1gradient_accumulation_steps:8learning_rate:1.0e-4num_train_epochs:3.0lr_scheduler_type: cosine warmup_ratio:0.1# 验证配置val_size:0.1eval_strategy: steps eval_steps:100load_best_model_at_end:true# 精度配置bf16:truegradient_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查看实时的训练曲线:

  1. 访问 https://swanlab.cn
  2. 登录后进入对应项目

即可查看loss曲线、learning_rate等指标

在这里插入图片描述

在模型训练过程中,会提示上传密钥,这时在swanlab-设置,中的密钥(https://swanlab.cn/space/~/settings),根据终端提示粘贴到终端即可

在这里插入图片描述

五、权重合并(可选)

权重合并是将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适配器:

exportFLASH_ATTN_FORCE_FA2=1exportDISABLE_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在AutoDL上微调GPT-OSS-20B模型的完整流程,包括:

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

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

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

希望这篇教程能够帮助到你!如果对你有帮助,欢迎点赞、收藏、转发~

九、参考资料


📝 更新日志2026-02-13:初始版本发布

如果有问题,欢迎在评论区留言讨论!

Read more

用 OpenClaw 配置 Codex 5.3:一套“性价比很高”的个人 AI 编程方案

用 OpenClaw 配置 Codex 5.3:一套“性价比很高”的个人 AI 编程方案

这篇是我自己的实战复盘:从 OAuth 报错、模型没切过去,到最终把 OpenClaw 稳定跑在 openai-codex/gpt-5.3-codex 上,并通过飞书远程使用。 先说结论 如果你也在找「便宜 + 强 + 可控」的方案,我现在这套组合非常能打: * OpenClaw 负责 Agent 编排(工具、文件、会话、渠道) * OpenAI Codex 5.3 负责核心编码能力 * Feishu 作为消息入口(随时远程下指令) * 本地 Workspace 放在 G:\claw,项目资产可控 这套的性价比点在于: 1. 不需要重搭一整套复杂平台 2. Codex 5.3 编码质量明显高于普通通用模型

内网穿透的应用-随时随地用 OpenClaw!打造你的专属随身 AI

内网穿透的应用-随时随地用 OpenClaw!打造你的专属随身 AI

前言 如果你已经完成了 OpenClaw 的部署,却还只局限于 “在家用电脑访问”,那真的太可惜了。这款拥有 230K + 星标的神级项目,最大的亮点就是 “本地运行、数据私有”,但局域网的限制,却让它的实用性大打折扣 —— 试想一下,当你在公司加班,需要用 OpenClaw 帮忙写一段代码、分析一份报告,却因为无法访问家里的电脑而束手无策;当你外出旅行,想让 AI 生成一份旅行攻略,却只能等回到家才能操作。这样的 OpenClaw,显然没有发挥出它应有的价值。 我在使用 OpenClaw 的过程中,也曾被这个问题困扰许久。直到接触到内网穿透工具,才彻底解决了这个痛点。不同于传统的端口映射,无需修改路由器设置,无需公网 IP,只需简单几步安装配置,就能把本地的 OpenClaw 服务映射到公网。这意味着,无论你身处何地,只要有网络,手机、平板、笔记本都能轻松连接到家里的

大模型大比对:2026主流AI大模型全方位横评与选型指南

大模型大比对:2026主流AI大模型全方位横评与选型指南

引言:AI大模型时代,选对模型比用好模型更重要 步入2026年,AI大模型行业早已告别野蛮生长,进入精细化、场景化、差异化竞争的新阶段。从海外OpenAI、Google、Anthropic三巨头领跑,到国内通义千问、智谱GLM、Kimi、文心一言、豆包等模型强势崛起,市面上可供选择的大模型数量繁多,性能、价格、擅长领域各有千秋。对于普通用户、职场人、开发者以及企业而言,面对琳琅满目的AI产品,盲目跟风选择往往会造成效率浪费和成本损耗,只有摸清各大模型的核心优势、短板与适用场景,才能精准匹配需求,让AI真正成为高效助手。 本文精选海内外10款主流大模型,涵盖头部闭源商用模型、高性价比国产模型、开源标杆模型,从核心参数、文本创作、逻辑推理、代码能力、多模态表现、长文本处理、使用成本、隐私合规八大维度展开全方位对比,深入剖析各模型差异,同时给出不同场景下的选型建议,助力读者找到最适合自己的AI大模型。 一、参评大模型一览:覆盖海内外主流选手 本次对比选取当前市场渗透率高、用户口碑好、技术实力领先的10款大模型,

猫头虎AI赠书第11期赠书活动:《人人都是AI程序员:TRAE+Cursor从0到1全栈实战》

猫头虎AI赠书第11期赠书活动:《人人都是AI程序员:TRAE+Cursor从0到1全栈实战》

猫头虎AI赠书第11期赠书活动:《人人都是AI程序员:TRAE+Cursor从0到1全栈实战》 📌摘要 🚀大消息来啦!猫头虎AI赠书第11期火热启动🔥!这次,我为大家精选了《人人都是AI程序员:TRAE+Cursor从0到1全栈实战 》📚。想要免费拿到这本书?简单到不能再简单:在文章下方留言 "我要学习AI编程! !!" 💬。3月30日,我将为大家挑选出②位幸运读者🎁,并在评论区与朋友圈公布!手里还有宝贵的源代码,等你来夺🌈!赶快行动起来,机会难得! 📢引言 亲爱的朋友们,大家好!👋是我,猫头虎博主!今天,我为大家带来了猫头虎AI赠书第11期的特别惊喜🎊!这次我将赠送的是一本精心挑选的 《人人都是AI程序员:TRAE+Cursor从0到1全栈实战》 🌟。这本书内容丰富,无论你是新手还是老鸟,都能找到属于你的知识宝藏🔍。希望大家能喜欢这个小惊喜,和我一起分享这场编程的盛宴!🥳 文章目录 * 猫头虎AI赠书第11期赠书活动:《人人都是AI程序员:TRAE+Cursor从0到1全栈实战》 * 📖关于这本书 * 为什么选择这本书? 🤔