C.W.K.
Stream
Lesson 02 of 05 · published

Hardware 현실

~22 min · hardware, vram, apple-silicon

Level 0Downloader
0 XP0/41 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

Memory가 진짜 제약

어떤 모델을 돌릴 수 있냐의 hard ceiling은 memory야 — compute 아니고. Weight가 들어가야 해. 안 들어가면 느린 path로 흘러내리거나 아예 로드 거부. Compute는 토큰/초 결정하는 거지, 토큰을 받을지 말지 결정하는 건 memory야.

Memory 아키텍처 두 종류

  • Discrete GPU. NVIDIA RTX 4090 (24 GB), RTX 5090 (32 GB), 데이터센터급 H100 / H200 / B200 (80–192 GB). Weight는 system RAM과 분리된 VRAM에 살아. 대역폭 빠름 (1+ TB/s). GB당 비싸.
  • Apple Silicon unified memory. CPU랑 GPU가 같은 풀 공유. Mac에 달린 16 GB / 64 GB / 128 GB / 192 GB / 512 GB 전부 weight에 사용 가능. 데이터센터 GPU보다 대역폭은 낮지만 (273–819 GB/s) 가격 대비 capacity는 압도적.

Sizing 어림셈

Q4 quantization (daily-driver default)에서 1B 파라미터당 ~1 GB. 7B 모델은 ~4 GB, 70B는 ~40 GB, 405B는 ~200 GB. Context, KV cache, runtime overhead 합쳐서 10–20% 더해. 빡빡하면 quant 한 단계 내리고, 여유 있으면 더 큰 quant 가져와.

Bandwidth가 속도 결정

Autoregressive generation의 decode는 bandwidth-bound야 — 새 토큰마다 weight를 다시 stream하는 구조. 메모리 대역폭이 GB/s가 모델 크기 대비 토큰/초 hard ceiling이 돼. M3 Ultra가 819 GB/s로 70B INT4를 95 tok/s 정도 뽑는데, 같은 모델이 대역폭 낮은 머신 가면 capacity는 멀쩡해도 30–60 tok/s로 떨어져.

Code

Memory-fit 계산·python
def fits(params_billions: float, bits: int, total_ram_gb: float, ctx_overhead_gb: float = 4) -> bool:
    weight_gb = params_billions * bits / 8
    return weight_gb + ctx_overhead_gb < total_ram_gb * 0.85  # 15% 여유 남김

# 64 GB Mac 기준
print(fits(7,  4, 64))    # True  — 7B Q4는 여유 있게 들어감
print(fits(70, 4, 64))    # True  — 빡빡한데 들어감
print(fits(70, 8, 64))    # False — 70B Q8은 70 GB 필요
print(fits(405, 4, 192))  # False — 405B Q4는 ~200 GB 필요

External links

Exercise

아빠가 돌릴 머신의 hardware sizing 노트를 써봐. 총 메모리, 목표 모델과 quant, Q4에서의 weight 크기, 예상 context overhead, 15% 여유 두고 들어가는 가장 큰 모델까지. 천장 근처 모델 하나 pull해서 ollama list로 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.