1B 모델은 이틀과 이백만 원이면 된다 — 그리고 Qwen3-1.7B에 못 미친다
모든 추정은 6·N·D FLOPs와 "피크 TFLOPS × MFU"에서 나오고, 실측 run이 MFU 가정을 검증한다. Karpathy의 llm.c는 GPT-2 124M을 FineWeb 100억 토큰으로 8×A100에서 약 90분, 약 $20에 재현했다(MFU 약 60%, HellaSwag 29.9 vs 원본 29.4). 350M은 300억 토큰·14시간·약 $200, 1.6B는 8×H100에서 336억 토큰·24시간·$672. 같은 과제의 스피드런 modded-nanogpt는 검증 손실 3.28 도달 시간을 45분에서 2026-07-17 기록의 1.23분까지 줄였다(Muon·FlexAttention·FP8·MTP). RTX 4090 한 장 이식판은 90분에 손실 3.25. 1B급 상단은 TinyLlama 1.1B로 16×A100-40G에서 약 3T 토큰, 약 90일이었다계산.
2026년 9월 클라우드 단가는 RunPod H100 $3.49, A100 $1.59, RTX 4090 $0.74, B200 $6.79, Lambda H100 $2.99~3.99, Vast.ai H100 $1.49~1.87, AWS P5 $5.19다. 아래 표의 시간·비용은 계산이고추정 실패한 run·평가·데이터 준비를 위해 10~20%를 더해야 한다.
| 100M (GPT-2 small급) | 500M (GPT-2 medium~large급) | 1B (TinyLlama·SmolLM2급) | |
|---|---|---|---|
| 데이터 | Chinchilla 2.5B · 과학습 12~37B · SmolLM2-135M은 2T | 10B / 50B / 150B · SmolLM2-360M은 4T | 20B / 100B / 300B · TinyLlama 3T, SmolLM2-1.7B 11T. FineWeb-Edu+DCLM+Stack-Edu+FineMath가 공개 표준 |
| GPU | 4090/5090 1장이면 됨 | 1~8장. 4090 1장도 가능하나 50B 이상은 주 단위 | 8×H100 또는 8×A100. 4090 1장은 상태만 16GB라 한계 |
| VRAM | 상태 2.0GB | 상태 8GB | 상태 16GB + 활성값 → 24GB 카드는 활성 체크포인팅+8bit Adam 또는 ≥2장 FSDP |
| 시간 | 10B: 8×A100 90분(실측), H100 1장 약 5~6시간, 4090 약 17~36시간 | 50B: 105 H100시간(8×H100 약 13시간) · 150B: 316 H100시간 | 100B: 421 H100시간(8×H100 약 2.2일) · 300B: 1,263 · 3T: 약 14,000 · 4090 1장으로 100B는 약 120일 |
| 비용 | 10B: $11~24 · 37B: $35~75 | 50B: ≈$200~545 · 150B: ≈$590~1,640 | 100B: ≈$790~2,190 · 300B: ≈$2,360~6,550 · 3T: ≈$55K~96K |
| 스택 | modded-nanogpt 또는 nanoGPT_1GPU_SPEEDRUN + torch.compile + bf16 | 같은 코드 + DDP + FlashAttention/SDPA + 기울기 누적 | FSDP2 + FlashAttention-2 + 활성 체크포인팅. Llama식 레시피는 TorchTitan/litgpt/nanotron |
아래 계산기에 모델 크기·토큰·GPU·MFU·단가를 넣어 보자. 프리셋은 위의 실측 run이다. 실측과 계산이 어긋나면 MFU를 의심하면 된다.
실측 대조: llm.c 124M은 8×A100 약 90분·$20, 1.6B는 8×H100 24시간·$672, Llama 3 405B는 16,384 H100으로 54일. 피크 TFLOPS(4090·5090·B200)는 데이터시트 기억값이라 재확인이 필요하다. 가정용 GPU 전기는 별도다 — 4090 1장으로 1B×100B면 약 2,880시간 × 약 0.55kW ≈ 1,580kWh추정.
무엇을 기대할 수 있고 없는가
10B 토큰의 124M은 HellaSwag 29.9(GPT-3 Small은 300B 토큰에서 33.7), 336억 토큰의 1.6B는 약 57.7, 3,460억 토큰이면 62.7이다. 반면 Qwen3-1.7B-Base는 MMLU 62.63·GSM8K 75.44, SmolLM2-1.7B는 HellaSwag 68.7이라 개인이 10²~10³ H100시간으로 만든 1B는 이들에 크게 못 미친다. 그래도 얻는 게 셋 있다. (1) 6강의 루프를 손실 곡선으로 직접 보는 것, (2) 스케일링 법칙을 100M→500M→1B에서 재현하는 것(Cramming 논문은 소비자 GPU 하루 학습에서도 "성능이 대규모 스케일링 법칙을 밀접히 따른다"고 보고), (3) 토크나이저·데이터 혼합·아키텍처를 마음대로 바꿔 보는 자유.
라이브러리를 층으로 나누면 조합이 보인다
- 모델 정의·학습 루프 — nanoGPT/modded-nanogpt/llm.c, 또는 Hub 호환 체크포인트를 원하면
transformers의 Llama 클래스 - 속도 원시 연산 —
torch.compile, bf16 autocast, SDPA 또는 FlashAttention-2/3, 커스텀 마스크는 FlexAttention, 융합 커널은 Liger-Kernel, FP8은 torchao - 다중 GPU — 16B/param 상태가 GPU당 들어가면 DDP(100M~500M), 안 들어가면 FSDP2 또는 DeepSpeed ZeRO-2/3, 약 10B 이상이거나 다중 노드면 TorchTitan/nanotron/Megatron-Core
- 데이터 — datatrove·Dolma 툴킷·NeMo Curator로 정제,
tokenizers로 BPE 학습, 반드시 사전 토큰화해 uint16 샤드로 저장(실시간 토큰화는 병목) - 사후학습·평가 — TRL의 SFTTrainer·DPO·GRPO, lm-evaluation-harness(HellaSwag·ARC·MMLU·KMMLU), wandb(손실·tok/s·MFU)
Megatron-LM은 이 규모에서 과잉이다. 그 가치(TP/PP/EP)는 GPU당 메모리와 노드 간 대역폭이 병목일 때 나타나는데 1B는 8×80GB에서 둘 다 병목이 아니다. Megatron식 다차원 병렬이 필수가 되는 지점은 SmolLM3의 384 H100이나 A.X K1의 1,536 H200 같은 규모다.
최소 작업 순서
- 코퍼스 수집·정제(언어 판별, 중복제거, 품질 필터)
- BPE 토크나이저 학습(32K~64K 어휘, 한국어 중심이면 한국어 샘플 비중 확보)
- 토큰화 후 이진 샤드 저장(어휘 <65,536이면 uint16) + train/val 분할
- 설정 선택(층·폭·head, 시퀀스 길이, GQA, RoPE, RMSNorm, SwiGLU; 작은 모델은 임베딩 공유)
- 학습 루프: AdamW(또는 Muon), 워밍업+코사인/WSD, bf16, 클리핑 1.0, 전역 배치 0.5~2M 토큰, N step마다 체크포인트
- lm-eval-harness로 체크포인트 평가
transformers형식 변환·Hub 업로드- TRL로 SFT, 이어서 DPO/GRPO, 재평가
첫 step 손실이 ln(어휘 크기)와 맞는지(32K면 10.4, 64K면 11.1) 확인하는 것이 6강에서 말한 첫 번째 검사다.
출처: llm.c 124M/350M · llm.c 1.6B · modded-nanogpt · nanoGPT_1GPU_SPEEDRUN · TinyLlama · SmolLM2 · Cramming · RunPod · Lambda · H100 단가 비교 · TorchTitan · lm-eval