进阶 unsloth.ai 2026-10-07 22:27:00 · 6 阅读

第42章 Unsloth 升级:支持 Gemma 3 与 Qwen2.5-VL 视觉强化学习

Unsloth 博客:视觉强化学习 2025 年 8 月 28 日 作者:Daniel & Michael Unsloth 现已支持使用 Gemma 3 和 Qwen2.5-VL 进行视觉/多模态强化学习。得益于独特的权重共享和自定义内核,Unsloth 使视觉语言模型(VLM)强化学习速度提升 1.5–2 倍,显存占用减少 90%,在保持精度的前提下,支持比 Flash Attention 2 配置长 10 倍的上下文长度。此次更新还引入了 Qwen 的 GSPO 算法。 Unsloth 甚至可以在免费的 Colab T4 GPU 上使用 GRPO 训练 Qwen2.5-VL-7B。其他 VLM 也能运行,但可能需要更大的 GPU。由于 vLLM 将精度限制为 Bfloat16,Gemma 需要比 T4 更新的 GPU,因此我们建议在 Colab 上使用 NVIDIA L4。我们的 Notebook 能够解决涉及图像和图表的数学问题: 此外,Unsloth 原生集成了 vLLM VLM 支持,使用 vLLM 推理时,只需在初始化模型时开启 `fast_inference=True` 标志即可。 这种 VLM 支持还集成了我们最新的更新,实现更省内存且更快的强化学习,其中包括独特的 Standby 功能,该功能在与其他实现相比时,能更有效地限制速度损耗。🦥 推出 Unsloth Standby 我们很高兴推出更高效的强化学习功能,并带来多项算法改进: * 在不降低速度、不额外占用内存的情况下,上下文长度提升 1.2 至 1.7 倍! * 通过翻新内核和异步数据移动,强化学习训练速度提升 10% * 模型加载时的 `torch.compile` 编译速度提升 2 倍 Unsloth 相比其他基于 Flash Attention 2 的设置,已能加速强化学习训练、扩大上下文窗口并减少 50–90% 的显存使用,而 Standby 功能在此基础上进一步提升了性能。我们的 Standby 功能独特地限制了速度衰减,有时甚至能使训练更快! 现在,在单张 H100 80GB GPU 上,Qwen3-32B LoRA 16-bit 的上下文长度可达 6,144,比之前的 3,600 提升了 1.7 倍。Llama-3.1-8B QLoRA 4bit 的上下文长度可达 47,500,比之前的 42,000 提升了 1.13 倍。 通过多项 kernel 优化,我们把 RL 训练速度提升了 10%,并在从训练切换到推理模式时移除了 CPU 与 GPU 之间的 LoRA 通信通道。此外,我们用自定义的 torch.compile 参数让 vLLM 的 rollout 提速 10%,同时将编译时间缩短一半。 如果你更想把模型合并后直接推送到 Hugging Face Hub,可以这样操作: model.push_to_hub_merged(repo_name, tokenizer=tokenizer, token=hf_token) ✨ 直接微调 gpt-oss 我们还实现了相关补丁,支持加载原生 MXFP4 量化格式,从而可以直接微调 gpt-oss 模型。这意味着加载 'openai/gpt-oss' 模型所需的显存不到 24GB,还能进行 QLoRA 微调。加载模型非常简单: model, tokenizer = FastLanguageModel.from_pretrained(
#model_name = "unsloth/gpt-oss-20b-BF16",
model_name = "unsloth/gpt-oss-20b",
dtype = dtype, # None for auto detection
max_seq_length = max_seq_length, # Choose any for long context!
load_in_4bit = True, # 4 bit quantization to reduce memory
full_finetuning = False, # [NEW!] We have full finetuning now!
# token = "hf_...", # use one if using gated models
) 🐛 gpt-oss 的 Bug 修复
最近我们与 Hugging Face 合作解决了推理方面的问题:改用 OpenAI 的 kernels,并确保 MXFP4 推理时正确应用 swiglu_limit = 7.0。

根据用户反馈,我们发现长时间的 QLoRA 训练(超过 60 步)可能导致 loss 发散并最终报错。这个问题只出现在不支持 BF16、回退到 F16 的设备上(例如 T4 GPU)。需要注意的是,A100 或 H100 上的 QLoRA 训练不受影响,F16 GPU 上的 LoRA 训练也没有问题。

经过深入排查,我们已让所有 GPU 配置下的训练 loss 表现保持一致,包括仅支持 F16 的 GPU。如果你之前因此遇到过问题,建议使用我们最新更新的 gpt-oss notebook! 为了让 float16 机器的训练 loss 曲线与 bfloat16 机器(蓝线)一致,我们做了大量实验,发现:
纯 float16 会在第 50 步发散到无穷大
MoE 中的 down projection 存在巨大的异常值
Activations 必须以 bfloat16 或 float32 保存 下图展示了 GPT OSS 20B 的绝对幅值激活值,其中出现了极大的尖峰。由于 float16 的最大数值范围仅为 65504,这在 float16 环境中会导致溢出。
Unsloth 已修复此问题,因此所有 float16 训练开箱即用!📈gpt-oss-20b 基准测试 我们测试了 gpt-oss-20b,并对所有线性层(Q、K、V、O、gate、up 和 down)应用了 LoRA,秩设为 32,批次大小为 1。我们将所有序列填充至特定的最大长度,以模拟长上下文微调工作负载。gpt-oss-20b BF16 LoRA - 上下文长度与 GPU 显存 上下文长度 Unsloth
(+ Flex A)官方指南 + FA3 官方指南 1024 45.2 46.6 47.3 2048 45.9 44 49.7 51.3 4096 47.0 75 56.1 71.1 8192 49.2 768 7 OOM 16,384 54 OOM OOM 32,768 63.73 OOM OOM 61,234 80 OOM OOM 💕 谢谢! 照例,衷心感谢所有使用并分享 Unsloth 的朋友们,我们深表感激。 🙏

一如既往,欢迎加入我们的 Reddit 页面和 Discord 服务器,寻求解答或表达支持! 您也可以在 Twitter 上关注我们,并在 Substack 上订阅我们的通讯。感谢阅读!Daniel & Michael Han 🦥
2025 年 8 月 28 日 立即微调 gpt-oss!免费开始 加入我们的 Discord

评论 (0)