首页 / 文章 / LoRA 极速挑战:如何在单张 L40S 上用 LoRA 微调 Qwen2.5-1.5B 达到 ≥57% 准确率
← 返回
AI技术

LoRA 极速挑战:如何在单张 L40S 上用 LoRA 微调 Qwen2.5-1.5B 达到 ≥57% 准确率

✍️ zhirenhun 📅 2026/7/20 👁 179 阅读 ⏱ 11 分钟
LoRA 极速挑战:如何在单张 L40S 上用 LoRA 微调 Qwen2.5-1.5B 达到 ≥57% 准确率

LoRA 极速挑战 :如何在单张 L40S 上,用 LoRA 微调 Qwen2.5-1.5B 在 GSM8K 上达到 ≥57% 准确率?

你能在单张 L40S GPU 上,用 LoRA 微调 Qwen2.5-1.5B 模型,使其在 GSM8K 数据集上达到 ≥57% 的准确率,并跑出多快的速度?

这就是 modded-nanogpt 的微调版本:一个固定的任务、固定的硬件,以及一个公开的挂钟时间排行榜。每条记录在被认可前,都会在相同硬件上使用全新随机种子独立重跑 3 次。

尝试和验证都是免费的:官方计时在 Modal L40S 沙盒上运行,Modal 的月度免费计算额度足以覆盖完整运行——所以任何人都可以参与竞争,任何人都可以用一条命令重新验证任何记录。

LoRA 极速挑战排行榜——基线 11:57 → 记录 #1 6:05(−49%),准确率更高

排行榜

赛道 1 — GSM8K · Qwen2.5-1.5B · 目标 ≥ 57.0% · 1× L40S

当前记录:6m 05s,由 @Saivineeth147 创造 — 序列打包 + 仅完成部分损失掩码,2 个 epoch。与 #0 相同的 LoRA 配置;速度提升约 2 倍,准确率更高。

  • 2026-07-18 — 11m 57s — 基线
  • 2026-07-18 — 6m 05s — −49%

赛道 2 — SQuAD v1.1 · SmolLM2-1.7B · 目标 ≥ 75.5% · 1× L40S

当前记录:11m 08s,由 @Saivineeth147 创造 — 赛道 2 基线:在 SQuAD 上使用普通 LoRA r=16,前 20k 个样本,1 个 epoch,全序列损失。无技巧。

  • 2026-07-20 — 11m 08s — 基线

包含验证报告的完整历史记录:records/RECORDS.md


赛道

两条固定的赛道,特意选择了不同的模型系列和任务类型——因此,一项技术只有在两条赛道上都获胜,才能证明其通用性。所有赛道共享相同的硬件、上限和验证流程。

  • 赛道 1:Qwen/Qwen2.5-1.5B,GSM8K 数学 → ≥ 57.0% 精确匹配,仅使用 GSM8K 训练集,训练挂钟时间。时间越短越好。1× L40S (48 GB),Modal 沙盒,仅适配器参数,≤ 30M 可训练参数

机器可读规格:spec.yaml · spec-t2.yaml。完整规则:TASK.md

你可以控制其他一切:LoRA 秩和放置位置、量化、学习率调度、序列打包、数据子集选择和排序、自定义内核、何时停止训练。如果你能确保达到目标,可以在 90 秒内用 1,000 个精心挑选的样本进行训练。


为什么存在这个项目

LoRA/QLoRA 是大多数实际微调发生的方式,并且技术空间已经爆炸式增长——DoRA、rsLoRA、PiSSA、LoRA+、NEFTune、Unsloth 内核、秩自适应方法——但缺乏一个对抗性的、公平的竞技场,让这些想法在公开场合相互竞争。论文在不同模型、数据和硬件上报告数字;没有任何可比性。

nanoGPT 极速挑战为预训练解决了这个问题,并产生了真正的科学成果(Muon 优化器就源于此)。这个仓库为参数高效微调做了同样的事情:一个固定的任务、一个 GPU、挂钟时间、需要提供凭证。


快速开始

官方硬件运行(免费)。创建一个 Modal 账户,然后:

# 克隆仓库
git clone https://github.com/Saivineeth147/lora-speedrun.git
cd lora-speedrun

# 安装依赖
pip install -r requirements.txt

# 运行基线(Modal 上)
modal run harness/run_submission.py --submission submissions/000-baseline

本地迭代(可选)。任何 24 GB+ 的显卡都可以运行基线,以便快速实验——bash scripts/setup_gpu.sh,然后 python harness/run_submission.py submissions/000-baseline --runs 1。本地时间不是官方时间;排行榜时钟是 Modal L40S。

然后复制 submissions/TEMPLATE/,让它更快,并提交一个 PR。请参阅 CONTRIBUTING.md


记录如何被验证

真实记录验证的终端回放:训练、完整性 + 适配器审计、GSM8K 评估以及 3 个种子的判定结果

从日志中回放的真实验证过程(种子 463953844,时间压缩):训练 → 完整性 + 适配器审计 → 评估 → 3 个种子判定结果。

  1. 你提交一个包含训练脚本、配置、说明和自我报告数字的 PR。
  2. CI 进行静态验证,一个自动化的 Claude 安全审查会检查 diff(防止数据外泄尝试、网络使用、框架篡改、测试集接触),并公开发布其发现。
  3. 维护者审查代码,然后评论 /verify——这会在网络封锁的 Modal 沙盒中,使用规格 L40S 和全新种子,将你的提交重跑 3 次。所有 3 次运行都必须达到目标;官方时间是平均值。
  4. 框架会审计适配器参数数量,并重新验证模型/数据内容哈希(防篡改),验证报告会发布在 PR 上,并提交到 records/verifications/,附带接受/拒绝的理由。

完整的协议、评分标准和威胁模型:JUDGING.md · SECURITY.md


尚未被认领的想法

目前已采用:序列打包 + 仅完成部分掩码(记录 #1)。

  • 1-epoch 激进学习率调度
  • 数据剪枝(在最难的前 2k 个样本上训练?)
  • 块对角/变长打包注意力
  • QLoRA NF4 与 bf16 权衡
  • rsLoRA / DoRA / PiSSA 初始化
  • LoRA+(A/B 的非对称学习率)
  • NEFTune 噪声
  • 课程学习排序
  • 秩/放置位置搜索(仅 MLP 与仅注意力)
  • torch.compile
  • Unsloth 内核
  • Liger 内核
  • 融合交叉熵
  • 短运行更智能的预热

认领一个想法,击败 6m 05s,让你的名字登上排行榜。


常见问题解答

技术不会过拟合到一个模型和一个任务上吗?这正是为什么有两条使用不同模型系列和任务类型的赛道——并且未来会有更多遵循相同冻结和校准协议的赛道加入。一个只在一条赛道上获胜的技巧可以创造记录,但值得信赖的技术是那些能够迁移的技术。赛道系统将这个问题变成了一个经验性问题,而不是一场争论。

为什么选择 Qwen2.5-1.5B?它不是在数学上预训练的吗?可能吧,就像所有现代基础模型一样。但这并不重要:目标是一个锚点,而不是关于数学发现的声明。比赛本身才是有趣的部分——就像 nanoGPT 极速挑战针对一个任意的验证损失一样。(赛道 2 使用了不同的模型系列 SmolLM2,部分原因就在于此。)

为什么使用挂钟时间而不是 FLOPs 或步数?因为挂钟时间是你实际付出的成本,它迫使内核、数据加载和算法使用相同的货币进行竞争。与 modded-nanogpt 的规则相同。

为什么使用 Modal 上的 L40S 而不是 4090 或 H100?三个原因。它是一个一致的数据中心 SKU,因此时间实际上是可比的(租用的消费�

——

🧑‍💻

zhirenhun

一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。

← 上一篇
我将 Rust 热路径加速 27 倍,以及我拒绝合并的 AI 修复方案
下一篇 →
LLM与AI智能体完全指南 - 从单词如何变成词元,到智能体如何为你预订航班

📌 相关推荐

停止相信仅文本代理排行榜:来自 Cua-Bench 和 Factorio 的教训
2026/8/26
Agent Memory 有两种不同含义,回答引擎给出的却是错误的那一种
2026/8/26
LLM的止境:AI辅助VAPT流水线的确定性评分
2026/8/22
← 返回文章列表