# LoRA Speedrun 公开排行榜：6分05秒微调Qwen2.5-1.5B达GSM8K 61.1%准确率

- 来源：Hacker News 热门（buzzing.cc 中文翻译）
- 作者：Vineeth147
- 发布时间：2026-07-20 20:21
- AIHOT 分数：70
- AIHOT 标记：精选
- AIHOT 链接：https://aihot.virxact.com/items/cmrt81fki1d1fbitln44dzsrr
- 原文链接：https://github.com/Saivineeth147/lora-speedrun

## 精选理由

LoRA 微调领域的 nanoGPT speedrun，在固定硬件和任务上比墙钟时间，公开透明且可复现，做微调的开发者可以下场试试。

## AI 摘要

LoRA Speedrun项目推出公开排行榜，在固定硬件（单张L40S）上比拼Qwen2.5-1.5B的微调运行时间。当前纪录由@Saivineeth147以6分05秒保持，采用序列打包与仅完成损失掩码技术，相比基线11分57秒提速约2倍且准确率更高（61.1%）。项目提供免费Modal沙箱验证，任何提交需经3次独立复现确认。

## 正文

在单张 L40S 上，用 LoRA 微调 Qwen2.5-1.5B 在 GSM8K 上达到 ≥ 57% 的准确率，能有多快？

这是用于微调的 modded-nanogpt：固定任务、固定硬件，以及一个公开的挂钟时间排行榜。每条记录都必须在相同硬件上使用全新随机种子独立重复运行 3 次，方可计入榜单。

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

排行榜

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

当前记录：6 分 05 秒，由 @Saivineeth147 创造——序列打包 + 仅补全损失掩码，2 个 epoch。LoRA 配置与 #0 相同；在更高精度下速度提升约 2 倍。

# 日期 作者 训练时间 GSM8K/EM Δ 技术

0 2026-07-18 @Saivineeth147 11 分 57 秒 59.4% — 基线：在所有线性层上使用普通 LoRA r=16，3 个 epoch，余弦学习率。无技巧。（报告）

1 2026-07-18 @Saivineeth147 6 分 05 秒 61.1% −49% 序列打包 + 仅补全损失掩码，2 个 epoch。LoRA 配置与 #0 相同；在更高精度下速度提升约 2 倍。（报告）

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

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

# 日期 作者 训练时间 GSM8K/EM Δ 技术

0 2026-07-20 @Saivineeth147 11 分 08 秒 77.5% — 赛道 2 基线：在 SQuAD 上使用普通 LoRA r=16，前 20k 个样本，1 个 epoch，全序列损失。无技巧。（报告）

完整历史记录及验证报告：records/RECORDS.md

赛道说明

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

赛道 1 赛道 2

基础模型 Qwen/Qwen2.5-1.5B HuggingFaceTB/SmolLM2-1.7B

任务 GSM8K 数学 → ≥ 57.0% 精确匹配 SQuAD v1.1 问答 → ≥ 75.5% 精确匹配

训练数据 仅 GSM8K 训练集 仅 SQuAD 训练集

评估指标 训练挂钟时间。时间越短越好。 相同

硬件 1× L40S（48 GB），Modal 沙盒 相同

约束条件 仅适配器，可训练参数 ≤ 30M 相同

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

你控制其他一切：LoRA 的秩与放置位置、量化方式、学习率调度、序列打包、数据子集的选择与排序、自定义内核，以及何时停止训练。如果你能明确达标标准，就可以在精心挑选的 1000 个样本上训练 90 秒。

为什么会有这个项目

LoRA/QLoRA 是大多数实际微调的真实方式，而相关技术空间已经爆炸式发展——DoRA、rsLoRA、PiSSA、LoRA+、NEFTune、Unsloth 内核、秩自适应方法——但缺乏一个对抗性的、公平对等的竞技场，让这些想法在公开场合相互比拼。论文在不同模型、数据和硬件上报告结果；没有任何东西是可比较的。

nanoGPT 速度挑战赛解决了预训练领域的问题，并产出了真正的科学成果（Muon 优化器就源于此）。这个代码库为参数高效微调做了同样的事情：一个固定的任务，一块 GPU，按挂钟时间计，且需要提供凭证。

快速开始

官方硬件运行（免费）。注册一个 Modal 账户，然后：

git clone https://github.com/Saivineeth147/lora-speedrun && cd lora-speedrun pip install modal pyyaml && modal setup # one-time browser auth

python harness/modal_verify.py --prefetch # one-time: cache model + data in a volume

# one timed, evaluated attempt of the baseline on the exact spec hardware: python harness/modal_verify.py --submission submissions/000-baseline --runs 1

# full record-style verification (3 fresh seeds, all must pass): python harness/modal_verify.py --submission submissions/000-baseline --runs 3

本地迭代（可选）。任何 24 GB 以上的显卡都能运行基线版本，便于快速实验——运行 `bash scripts/setup_gpu.sh`，然后执行 `python harness/run_submission.py submissions/000-baseline --runs 1`。本地时间不计入官方成绩；排行榜的计时标准是 Modal L40S。

然后复制 `submissions/TEMPLATE/`，让它跑得更快，并提交一个 PR。详见 CONTRIBUTING.md。

记录如何被验证

一次真实的验证过程，从日志中回放（种子 463953844，时间压缩）：训练 → 完整性及适配器审计 → 评估 → 三个种子的裁决。

你提交一个 PR，包含你的训练脚本、配置、说明以及自报的成绩。

CI 进行静态验证，然后一个自动化的 Claude 安全审查会检查代码差异（数据外泄尝试、网络使用、对测试框架的篡改、接触测试集），并将其发现公开发布。

一位维护者审查代码，然后评论 `/verify`——这会在一个网络隔离的 Modal 沙箱中，在指定的 L40S 上，用全新的种子将你的提交重新运行 3 次。所有 3 次运行都必须达到目标；官方时间取平均值。

测试框架会审计适配器的参数数量，并重新验证模型/数据内容的哈希值（防篡改），验证报告会发布在 PR 上，并连同接受/拒绝的理由一起提交到 `records/verifications/` 目录下。

完整协议、评分标准及威胁模型：JUDGING.md · SECURITY.md。

尚未有人认领的想法

目前已认领：序列打包 + 仅补全掩码（记录 #1）。

1轮次激进学习率调度 · 数据剪枝（仅训练最难的2000个样本？） · 块对角/变长序列打包注意力 · QLoRA NF4与bf16的权衡 · rsLoRA / DoRA / PiSSA初始化 · LoRA+（A/B矩阵非对称学习率） · NEFTune噪声 · 课程学习顺序 · 秩/放置位置搜索（仅MLP vs 仅注意力） · torch.compile · Unsloth内核 · Liger内核 · 融合交叉熵 · 短训练轮次的更优预热策略

认领一个想法，击败6分05秒的记录，你的名字就能上榜。

常见问题解答

这些技巧难道不会过拟合到某一个模型和某一个任务上吗？这正是为什么设置两个赛道，使用不同的模型族和任务类型——后续还会有更多遵循相同冻结与校准协议的赛道加入。一个只在单一赛道有效的技巧可以算作一项记录，但真正值得信赖的技术是那些能够迁移的。赛道系统将这个问题变成了一个实证问题，而非一场争论。

为什么选择Qwen2.5-1.5B？它不是在数学数据上预训练的吗？很可能，就像所有现代基础模型一样。但这并不重要：目标只是一个锚点，而非关于数学发现的声明。比赛过程本身才是关键——这与nanoGPT速通比赛将任意验证损失作为目标的原因相同。（赛道2使用了不同的模型族SmolLM2，部分原因就在于此。）

为什么使用挂钟时间而不是FLOPs或训练步数？因为挂钟时间才是你实际需要付费的，它迫使内核、数据加载和算法在同一个衡量标准下竞争。这与modded-nanogpt的规则相同。

为什么在Modal上使用L40S，而不是4090或H100？有三个原因。首先，它是一个统一的数据中心SKU，因此时间具有实际可比性（租用的消费级显卡性能因主机而异）。其次，通过Modal的月度免费额度可以免费使用，因此参赛和重新验证无需任何成本。最后，提交的是陌生人的代码——Modal沙箱会在网络阻断且无密钥的环境下运行它们。（L40S与4090采用相同的AD102芯片，因此消费级GPU的技巧可以迁移。）

我可以在其他数据上训练，或者从更大的模型中蒸馏吗？不行。仅限GSM8K训练集，不允许使用教师模型，不允许使用合成数据。完整禁止列表请参见TASK.md。

可以使用多个GPU吗？不行。仅限一块L40S。这就是比赛的意义所在。

许可证

麻省理工学院。记录、报告和书面材料与代码一样公开。
