lora-speedrun logo

lora-speedrun

Speedrunning LoRA fine-tuning: frozen task, frozen hardware, public wall-clock leaderboard. modded-nanogpt for fine-tuning.

PRs welcome
GitHub

What is it?

What it is

LoRA Speedrun is a public benchmark and leaderboard for measuring wall-clock time to fine-tune LoRA adapters on fixed tasks (GSM8K with Qwen2.5-1.5B and SQuAD v1.1 with SmolLM2-1.7B) using identical L40S hardware on Modal, with independent 3‑seed verification.

Why it exists

It exists to make LoRA speedup claims falsifiable by providing a frozen task, referee‑verified runs, and a public leaderboard so techniques can be compared on equal footing and generalizable across model families.

Who should use it

machine learning researchersAI engineersLLM fine-tuning enthusiastsModal usersspeedrun competitors

Who should avoid it

non-technical usersthose without GPU accesspeople avoiding competitive benchmarksnon-LoRA fine-tuning workflows

How it works

A quick walkthrough in plain English

How lora-speedrun works

Step 1 of 3

You interact with it

Open lora-speedrun, send a request, or connect it to your stack.

Features

Benchmarking platform for LoRA fine-tuning speed
Public leaderboard with verified wall-clock records
Automated verification via Modal L40S sandboxes
Multi-track competition (different models and tasks)
Integrity and security auditing for submissions
Standardized hardware (L40S) and task constraints
Reproducible verification via 3-seed testing

Advantages

  • Eliminates unfalsifiable performance claims
  • Provides empirical evidence for training optimization techniques
  • Low barrier to entry using free compute credits
  • Ensures generalizability through diverse task tracks
  • Transparent and auditable verification process

Disadvantages

  • Strict constraints may limit experimental freedom
  • Requires specific hardware (L40S) for official verification
  • Risk of overfitting to specific model/task combinations

Installation

cloud

Make a Modal account, then: git clone https://github.com/Saivineeth147/lora-speedrun && cd lora-speedrun
pip install modal pyyaml && modal setup
python harness/modal_verify.py --prefetch
python harness/modal_verify.py --submission submissions/000-baseline --runs 1

native

git clone https://github.com/Saivineeth147/lora-speedrun && cd lora-speedrun
pip install modal pyyaml && modal setup
python harness/modal_verify.py --prefetch
# Official-hardware run:
python harness/modal_verify.py --submission submissions/000-baseline --runs 1
# Local iteration:
bash scripts/setup_gpu.sh
python harness/run_submission.py submissions/000-baseline --runs 1

FAQ

How do I run an official verification on Modal?

Clone the repo, install dependencies, and run the harness: 1. `git clone https://github.com/Saivineeth147/lora-speedrun && cd lora-speedrun` 2. `pip install modal pyyaml && modal setup` (one‑time browser auth). 3. Cache the model and data: `python harness/modal_verify.py --prefetch`. 4. Verify a submission: `python harness/modal_verify.py --submission submissions/000-baseline --runs 3`. The script will re‑run the training three times with fresh seeds on a single L40S in a network‑blocked sandbox and produce a verification report.

What GPU is required for local iteration?

Any GPU with at least 24 GB of memory will run the baseline for quick experimentation. Use the provided script: `bash scripts/setup_gpu.sh` to install dependencies, then `python harness/run_submission.py submissions/000-baseline --runs 1`. Local times are not official; the leaderboard clock is the Modal L40S.

What are the specifications of each track?

Track 1: Base model `Qwen/Qwen2.5-1.5B`, task GSM8K math, target ≥ 57.0 % EM, training data GSM8K train split only, 1 × L40S, ≤ 30 M trainable params. Track 2: Base model `HuggingFaceTB/SmolLM2-1.7B`, task SQuAD v1.1 QA, target ≥ 75.5 % EM, training data SQuAD train split only, same hardware and param constraints. Full specs are in `spec.yaml` and `spec-t2.yaml`.

How are records verified and what does the verification process involve?

When a PR is submitted, CI first checks the code statically and a Claude security review screens the diff. A maintainer then comments `/verify`, triggering the harness to: 1. Run the training three times with fresh seeds on a modal L40S sandbox. 2. Audit the adapter parameter count and verify model/data hashes. 3. Evaluate on the test set. All three runs must meet the target; the mean time becomes the official record. The verification report is committed to `records/verifications/`.

Why is LoRA (Low‑Rank Adaptation) chosen for this competition?

LoRA is the standard, inexpensive way to fine‑tune a frozen language model by training a small adapter. It keeps the base model frozen, limits trainable parameters to ≤ 30 M, and allows fair comparison of training speed across participants. The competition focuses on wall‑clock time, so using a lightweight, well‑understood method like LoRA ensures that any speed improvements come from algorithmic or engineering tricks rather than model changes.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for lora-speedrun

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare
lora-speedrun | MushyBook