秋招超强助攻:零基础1小时上手GPT微调!全流程教程免费开源

新智元 2025-08-29 12:57

资讯配图



  新智元报道  

编辑:艾伦
【新智元导读】针对OpenAI最新开源的GPT-OSS,这一篇面向零基础小白用户的手把手式的详细训练教程或许能帮助你完成你的第一个GPT训练项目。

新一年的最难秋招季又来了!


2025年,随着AI Agent的铺开,各类岗位都开始逐渐要求候选人具有AI能力。


你是否也想在简历上拥有训练GPT的高大上的项目经历,增强自己在AI时代求职的竞争力?


解决方案现在有了。


今年8月5日,自从几年前GPT-2发布后,再无新开源模型的终于发布了新开源大模型GPT-OSS,引发社区热议。


资讯配图


模型分为120B和20B两个版本,其中20B的版本理论上可以在消费级的16GB以上显存的显卡上运行,从而允许我们以较低的成本使用消费级显卡训练GPT。


资讯配图


近日,博主Lorentz Yeung发表的一篇博客,就对本地部署和微调训练GPT-OSS进行了手把手的详尽教学,小白友好值Max。


资讯配图

博客地址:https://pub.towardsai.net/teaching-openais-gpt-oss-20b-model-multilingual-reasoning-ability-a-hands-on-guide-with-rtx-4090-0835ba121ee7



资讯配图
微调GPT-OSS-20B
RTX 4090本地实操指南


本文会详细介绍如何对OpenAI最新开源的GPT-OSS-20B模型(https://huggingface.co/unsloth/gpt-oss-20b-GGUF)进行微调,以提升它的多语言推理能力。


我们将涵盖目标设定、基于RTX 4090和WSL2的本地环境搭建、代码来源、详细操作流程、训练前后效果对比,以及为何即便只训练60步也能有显著提升。


如果你喜欢鼓捣AI,这份教程可以帮助你在本地复现整个流程。


资讯配图

你将学到什么:解锁多语言思维链推理

看完这篇教程后,你就能动手为OpenAI发布的GPT-OSS-20B模型进行多语言思维链推理的微调。


GPT-OSS模型本身已经可以胜任数学、编程、常识问答等任务,并且具备一定的多语言能力,但它的推理过程天然偏向英文。


比如,即使你用法语提问,模型内部思考时还是优先用英文,而且你无法像设置「推理语言:法语」那样切换它的思考语言。


通过在HuggingFaceH4/Multilingual-Thinking数据集(包含1000条多语言推理样本,涵盖法语、西班牙语、德语、意大利语等)上微调,可以让模型具备以下能力:



资讯配图

按需切换推理语言和详细程度。此处示例为:法语,中等详细程度


微调后的模型能根据需求自由切换推理语言和细节程度——例如用法语进行中等细节分析。


对于教学、内容创作或AI助手等场景,这点非常实用,尤其是当用户的母语不是英文时。


资讯配图

环境搭建:RTX 4090+WSL2本地高效微调


训练脚本主要基于Unsloth提供的训练脚本,并针对RTX4090做了一些参数调整。


硬件环境是:NVIDIA RTX 4090 GPU(24GB显存),操作系统是Windows,通过WSL2运行。


为什么要用本地环境?


我们一开始尝试用Google Colab免费的Tesla T4显卡,但由于显存限制(即使用了4bit量化,20B模型还是需要12–23GB显存),很快就出现AcceleratorError错误并崩溃。


资讯配图

使用Google Colab报错:AcceleratorError


Colab的付费高级版可能可以跑,但本地环境显然在控制能力和速度上更胜一筹。


搭建流程如下:


1. 在WSL2终端,创建虚拟环境并安装pytorch和unsloth,命令如下(见Unsloth文档:https://docs.unsloth.ai/basics/gpt-oss-how-to-run-and-fine-tune#fine-tuning-gpt-oss-with-unsloth)


conda create --name unsloth_env \    python=3.11 \    pytorch-cuda=12.1 \    pytorch cudatoolkit xformers -c pytorch -c nvidia -c xformers \    -yconda activate unsloth_envpip install unsloth

看到「unsloth_env is created!」就成功了。


2. 下载我们的Notebook文件,激活新建的「unsloth_env」(或者你自己命名的环境)kernel,运行安装依赖的cell:


%%capture# 安装最新版Torch、Triton、Transformers和Unsloth!!pip install --upgrade -qqq uvtryimport numpy; install_numpy = f"numpy=={numpy.__version__}"except: install_numpy = "numpy"!uv pip install -qqq \    "torch>=2.8.0" "triton>=3.4.0" {install_numpy} \    "unsloth_zoo[base] @ git+https://github.com/unslothai/unsloth-zoo" \    "unsloth[base] @ git+https://github.com/unslothai/unsloth" \    torchvision bitsandbytes \    git+https://github.com/huggingface/transformers \    git+https://github.com/triton-lang/triton.git@main#subdirectory=python/triton_kernels

有环境或依赖疑问可参考相关文档。


整个配置流程大约花费30分钟。


用RTX 4090本地运行其实很简单:下载Notebook到本地,在VS Code或Jupyter Lab里用WSL2环境逐行运行就可以了。


Unsloth库在速度和显存利用上都有优化,训练效率更高,也特别适配RTX系列显卡。


资讯配图

代码详解


这份Notebook包含了加载模型、准备数据、微调和推理的完整流程。


如果你不关心细节解释,其实完全可以直接跳过下面的内容,在Jupyter Notebook顶部点击Run All一键运行就行——我们已经为RTX4090优化好了参数。


安装与模型加载


模型用的是Unsloth版本的GPT-OSS-20B。


OpenAI的GPT-OSS模型本身就用的是MXFP4格式,而Unsloth最近加了对应工具和兼容方案,让这些权重也能顺利微调。


MXFP4是Open Compute Project提出的微缩浮点数格式,在推理效率上表现很好。


OpenAI发布的GPT-OSS-120B和20B都有原生MXFP4权重,Unsloth针对主流训练框架缺乏MXFP4支持的情况,做了自定义适配和NF4仿真机制,能直接对GPT-OSS进行微调,详见Unsloth文档。


from unsloth import FastLanguageModelimport torchmax_seq_length = 4096dtype = None# 支持4bit预量化的模型,下载速度快且显存友好。fourbit_models = [    "unsloth/gpt-oss-20b-unsloth-bnb-4bit"# bitsandbytes 4bit量化    "unsloth/gpt-oss-120b-unsloth-bnb-4bit",    "unsloth/gpt-oss-20b"# MXFP4格式    "unsloth/gpt-oss-120b",# 更多模型见https://huggingface.co/unslothmodel, tokenizer = FastLanguageModel.from_pretrained(    model_name = "unsloth/gpt-oss-20b",    dtype = dtype, # None表示自动识别    max_seq_length = max_seq_length,    load_in_4bit = True,  # 4bit量化显存更省    full_finetuning = False,    # token = "hf_...", # 如果用gated模型需要填)model = FastLanguageModel.get_peft_model(    model,    r = 8# 可选8,16,32,64,128等    target_modules = ["q_proj","k_proj","v_proj","o_proj",                      "gate_proj","up_proj","down_proj",],    lora_alpha = 16,    lora_dropout = 0,    bias = "none",    use_gradient_checkpointing = "unsloth"# 超长上下文推荐True或"unsloth"    random_state = 3407,    use_rslora = False,    loftq_config = None,)

这段代码实现了什么?



数据准备


dataset = load_dataset("HuggingFaceH4/Multilingual-Thinking", split="train")

这行代码的作用:


from unsloth.chat_templates import standardize_sharegptdataset = standardize_sharegpt(dataset)dataset = dataset.map(formatting_prompts_func, batched = True,)

这段代码是在:



资讯配图

将每次对话包装为 GPT-OSS 专用的 Harmony 格式(例如:<|start|>role<|message|>content<|end|>)


训练

from trl import SFTConfig, SFTTrainerfrom transformers import DataCollatorForSeq2Seqtrainer = SFTTrainer(    model = model,    tokenizer = tokenizer,    train_dataset = dataset,    args = SFTConfig(        per_device_train_batch_size = 1,        gradient_accumulation_steps = 16,        warmup_steps = 5,        # num_train_epochs = 1, # 如果想完整跑一轮可以开启        max_steps = 60,        learning_rate = 2e-4,        logging_steps = 20,        optim = "adamw_8bit",        weight_decay = 0.01,        lr_scheduler_type = "linear",        seed = 3407,        output_dir = "outputs",        report_to = "none"# 可接入WandB等日志平台    ),)

这一大段代码其实只是在:



训练采样时会不会重复抽样?


Hugging Face的TRL SFTTrainer默认是「无放回采样」,即每轮迭代按顺序遍历数据集(可选shuffle),直到达到指定步数或epoch数。


如果训练步数不足一轮(比如这里的60步,等效batch size16,约采样960/1000条数据),一般不会重复抽样。


当然,也可以用dataloader_sampler等参数自定义采样方式。



资讯配图
训练前后对比
效果一目了然


微调前,基座模型在面对类似「解方程x⁵ + 3x⁴ - 10 = 3」的问题时,推理过程都是用英文进行:



微调60步之后:


资讯配图

微调后使用法语进行推理



资讯配图

为什么只训练60步就有巨大提升?

你可能会好奇:为什么只训练60步,模型推理风格就发生这么大转变?


我们认为的一种可能的解释是:



本质上,这是在强大基座模型上进行风格微调——只需60步,多语言表现立竿见影。



资讯配图
接下来轮到您来亲自微调了!


看完这篇文章,你应该已经学会如何把类似GPT-OSS-20B这样的大模型,调整成支持多语言思维链推理的版本,把它从英文「内心独白」变成可按需切换思考语言(比如法语)的多面手。


这也包括了对Harmony格式结构化响应的理解,以及解决模型默认英文推理的限制。


如果遇到问题,可以优先去Unsloth的Discord社区https://discord.com/invite/unsloth)寻求解决方案。


以上Notebook文件包含完整运行结果,可以在GitHub下载(https://github.com/entzyeung/towardsai/tree/main/Teaching%20OpenAI's%20GPT-OSS%2020B%20Model%20Multilingual%20Reasoning%20Ability)


微调GPT-OSS,就像为AI打开了定制化大门,只需要以低成本临时在云端租用一张4090即可完成微调。


建议你也亲自试试,有问题欢迎在评论区讨论。


参考资料:
https://entzyeung.medium.com/0835ba121ee7?source=friends_link&sk=ca02110337755c9c27c11049f466f891

资讯配图

资讯配图

资讯配图


声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。 
开源
more
万物皆可“邪修”?科研党靠这个开源大模型“开挂”:能解化学题、能分析AFM图,有8B轻量版还能二次开发
ICCV'25开源 | 无需任何标注!NVIDIA新作LongSplat:从任意拍摄的长视频重建3D高斯!
马斯克的Grok 2开源了,但好像又没完全开
盘古大模型等部门被裁撤;马斯克刚刚开源 Grok 2.5;法裔女CEO接管OpenAI,奥特曼退居幕后?| AI 周报
曝iPhone将连续三年大改/马斯克官宣开源:中国AI公司是最强对手/美团回应「退款未到账」问题
三个月、零基础手搓一块TPU,能推理能训练,还是开源的
快速回顾|Grok 2.5 模型现已开源,xAI 是否正在成为 OpenAI 最初设想的样子?
港科大(广州)最新开源 | ReconVLA:通过隐式视觉重建实现机器人精准感知与操作
LangChain 推出开源异步编码智能体 Open SWE
几个受欢迎的嵌入式开源项目
Copyright © 2025 成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号