LoRA Speedrun: 파인튜닝 기법을 벽시계 시간으로 겨루는 공개 리더보드
LoRA Speedrun – a public wall-clock leaderboard for fine-tuning techniques
TL;DR Highlight
LoRA 파인튜닝 시간을 11분 57초에서 22초까지 줄인 공개 리더보드
Who Should Read
작은 모델을 LoRA로 파인튜닝하면서 어떤 속도 향상 기법이 진짜 효과 있는지 가리고 싶은 ML 엔지니어·백엔드 개발자
Core Mechanics
- 같은 조건에서 시간만 겨루는 리더보드
- Qwen2.5-1.5B를 GSM8K 정확도 57.0% 이상까지 LoRA로 학습시키는 시간을 잰다.
- GPU는 Modal의 L40S 1장으로 고정이고, 학습 벽시계 시간이 짧을수록 이긴다.
- 기록은 3번 다시 돌려 검증
- 모든 기록은 새 시드로 3번 재실행해 전부 목표를 넘어야 인정된다.
- 공식 시간은 3번의 평균이다.
- Track 1은 11m 57s에서 0m 22s로
- 기준선(#0)은 LoRA r=16, 전체 linear 레이어, 3 epoch, cosine LR로 11분 57초, 정확도 59.4%였다.
- 현재 기록(#5)은 @slippylolo의 22초, 정확도 58.0%다.
- 22초 기록은 옵티마이저 업데이트 12번을 쓴다. 8번은 전체 네트워크, 4번은 맨 위 디코더 레이어만 통과시킨다.
- 첫 개선은 packing과 loss 마스킹
- 시퀀스 packing(짧은 샘플을 한 시퀀스로 이어 붙이기)과 completion-only loss masking(정답 부분에만 loss 계산)을 썼다.
- 2 epoch에 6분 05초, 정확도 61.1%로 기준선보다 빠르고 정확했다.
- 이후 기록은 데이터 가지치기와 커널 융합
Community Reactions
- LoRA 한 가지 과제와 모델에 대한 리더보드가 정말 필요하냐는 의견
- 댓글에서 LoRA 학습 시간이 그 정도 병목인지 의문이 나왔다.
- 과제와 모델이 하나뿐이면 과적합될 수 있다고 우려했다.
- 작업이 더 다양해야 기법이 전이되길 기대할 수 있다는 의견이었다.
- 자원 제한이 창의성을 끌어낸다는 의견
- 댓글에서 가중치를 키우고 데이터를 더 넣는 흐름보다 제약이 더 창의적인 해법을 낳는다는 주장이 나왔다.
- 도시 성장 경계에 비유했다.
- LoRA 이름이 무선 통신 LoRa와 헷갈린다는 반응
- 댓글 여럿이 제목만 보고 무선 프로토콜인 줄 알았다고 했다.
- 저장소 첫머리에 소개 문단이 없어 보인다는 지적도 있었다.
- 속도 경쟁 접근을 AI 안전 목적에 응용해 봤다는 경험
- 댓글 작성자가 비슷한 접근으로 LoRA의 loss 함수를 골랐다고 했다.
- Sparse AutoEncoder를 5.3MB probe로 증류했다는 결과를 LessWrong 글로 공유했다.
- 저장소가 100% 생성물이라는 지적
- 댓글에서 저장소 내용이 전부 AI로 생성됐다는 비판이 나왔다.
How to Apply
- 기준선 제출물을 Modal에서 한 번 돌려 보기
- 오늘 Modal 계정을 만들고 저장소를 클론해 prefetch 후 `--runs 1`로 baseline을 돌려라.
- 내 환경에서의 학습 시간과 정확도를 숫자로 기록해 둬라.
- 내 학습 파이프라인에 packing과 completion-only 마스킹 넣기
- 파인튜닝 데이터가 짧은 샘플 위주면 packing으로 패딩 낭비를 줄여라.
- loss는 프롬프트가 아니라 정답 토큰에만 계산하도록 마스킹해라.
- 적용 전후 학습 시간과 정확도를 같은 조건에서 비교해라.
- 데이터 일부만 쓰는 가지치기 실험하기
- 학습 데이터를 길이가 짧은 순으로 4k개만 골라 1 epoch 미만으로 돌려 보라.
- 전체 데이터 학습과 정확도·시간을 나란히 비교해라.
- 새 기법은 두 번째 과제에서도 검증하기
- 한 데이터셋에서 빨라진 기법은 다른 모델·과제에서도 재현되는지 확인해라.
- 확인하기 전에는 팀 표준 설정으로 올리지 마라.
Try It
# Terminal에서 실행: 공식 baseline을 Modal L40S에서 한 번 돌려 보기
git clone https://github.com/Saivineeth147/lora-speedrun && cd lora-speedrun
pip install modal pyyaml && modal setup
# 모델과 데이터를 볼륨에 한 번 캐시
python harness/modal_verify.py --prefetch
# baseline 1회 실행 (시간과 정확도 측정)
python harness/modal_verify.py --submission submissions/000-baseline --runs 1
# 이어서 해 볼 것: submissions/TEMPLATE/를 복사해 packing이나 데이터 가지치기를 넣고 --runs 3으로 검증Terminology
관련 논문
AI 글쓰기 버릇을 학습으로 뺀 Qwen3-4B (qwen3-4b-deslop)
Qwen3-4B를 LoRA로 증류했더니 AI 문체 점수가 121에서 12.5로 떨어졌다
Dust: 역전파 없이 Transformer를 사전학습하는 방법
활성값에 토큰별 노이즈를 줬더니 역전파 없이 Transformer 사전학습이 됐다
TurboGPT: 22KiB 트랜스포머를 13초 만에 학습시키는 CUDA 프로젝트
CUDA C++로 바이트 단위 tiny GPT를 1분 안에 학습하는 오픈소스
Gemini가 만든 라벨 $9로 자기 대체 모델 GLiNER 학습시키기
Gemini 라벨 $9로 GLiNER를 튜닝해 로컬에서 F1 0.83 달성
절대 포기하지 않기(Never Give Up): LLM RL에서 어려운 문제를 풀게 만드는 방법
쉬운 문제에 쓰는 연산을 줄이고 어려운 문제를 재시도했더니 어려운 문제 성능이 올랐다
3.8B LLM을 $998로 학습해 CORE 0.384 달성하기
B200 8장으로 43시간, $998를 들여 3.8B 모델이 CORE 0.384를 기록했다
Paul Graham: "17살이면 LLM을 밑바닥부터 만들어 보겠다"
PG는 17살이면 창업 말고 LLM 밑바닥 구현부터 배우겠다고 했다