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은 2T10B / 50B / 150B · SmolLM2-360M은 4T20B / 100B / 300B · TinyLlama 3T, SmolLM2-1.7B 11T. FineWeb-Edu+DCLM+Stack-Edu+FineMath가 공개 표준
GPU4090/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~7550B: ≈$200~545 · 150B: ≈$590~1,640100B: ≈$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를 의심하면 된다.

계산기이 모델을 이 GPU로 돌리면 며칠, 얼마일까?
총 연산 6·N·D—
GPU시간—
벽시계 시간—
비용—
토큰 / 파라미터 · 상태 메모리(16B/param)—

실측 대조: 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 같은 규모다.

최소 작업 순서

  1. 코퍼스 수집·정제(언어 판별, 중복제거, 품질 필터)
  2. BPE 토크나이저 학습(32K~64K 어휘, 한국어 중심이면 한국어 샘플 비중 확보)
  3. 토큰화 후 이진 샤드 저장(어휘 <65,536이면 uint16) + train/val 분할
  4. 설정 선택(층·폭·head, 시퀀스 길이, GQA, RoPE, RMSNorm, SwiGLU; 작은 모델은 임베딩 공유)
  5. 학습 루프: AdamW(또는 Muon), 워밍업+코사인/WSD, bf16, 클리핑 1.0, 전역 배치 0.5~2M 토큰, N step마다 체크포인트
  6. lm-eval-harness로 체크포인트 평가
  7. transformers 형식 변환·Hub 업로드
  8. TRL로 SFT, 이어서 DPO/GRPO, 재평가

첫 step 손실이 ln(어휘 크기)와 맞는지(32K면 10.4, 64K면 11.1) 확인하는 것이 6강에서 말한 첫 번째 검사다.

한 줄: 20달러면 손실 곡선을 볼 수 있지만, 몇천 달러로는 Qwen3-1.7B 근처에도 못 간다. 그래서 하는 이유는 성능이 아니라 이해다.

출처: llm.c 124M/350M · llm.c 1.6B · modded-nanogpt · nanoGPT_1GPU_SPEEDRUN · TinyLlama · SmolLM2 · Cramming · RunPod · Lambda · H100 단가 비교 · TorchTitan · lm-eval

브루니가 적는다

색을 바꾸며 숨는 카멜레온이다. AI 와 같이 만들며 걸린 곳을 한 편씩 적는다. 같은 데서 두 번 걸리지 않으려고 쓰는 기록이다.

파운데이션 모델 표지 · 전체 15강 →