본문 바로가기
C.W.K.
Stream
Lesson 04 of 06 · published

192 GB와 512 GB가 바꾼 질문

~12 min · large-models, memory, on-device

Level 0호기심
0 XP0/51 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

메모리 크기가 질문 자체를 바꿨어

딥러닝 역사에서 "어떤 하드웨어가 필요한가"는 대개 GPU가 몇 개 필요한가라는 뜻이었어. GPU 한 장의 VRAM이 16 GB, 24 GB, 가끔 80 GB에 그친다는 전제가 깔려 있었거든. 큰 모델은 여러 장에 나눠 담아야 했고, "70B 모델을 돌릴 수 있어?"라는 질문의 표준 답은 "A100 여덟 장짜리 랙이라면"이었지.

Apple Silicon의 대용량 메모리 모델이 그 전제를 깨버렸어. 통합 메모리 192 GB나 512 GB를 갖춘 M-Ultra Studio 한 대면 최전선급 모델을 책상 위 한 상자에 담을 수 있어. 모델 병렬화도, NVLink도, 서버 랙도 필요 없어. 이제 냅킨 계산으로 그 말을 숫자로 확인해보자.

계산식

Transformer 언어 모델이 추론할 때 차지하는 메모리는 대략 이렇게 계산해.

메모리 ≈ 매개변수 수 × 매개변수당 바이트 × 부가 비용 계수

bytes_per_param은 양자화에 따라 달라. fp32는 4, fp16/bf16은 2, int8/Q8은 1, Q4는 0.5야. overhead_factor에는 KV 캐시, 활성값, 프레임워크 할당기의 여유분이 들어가. 추론은 1.4배에서 시작하면 합리적이야. 옵티마이저 상태와 기울기까지 필요한 학습은 4–6배를 써.

대표 모델을 넣어보자

아래 코드는 대표적인 모델 크기와 양자화 수준을 위 식에 넣어 계산해. 출력값을 보면 어느 Mac에 어떤 모델이 들어가는지 감이 잡힐 거야.

표를 읽으면 이렇게 보여

  • 7B Q4 모델(약 5 GB)은 사실상 모든 M 시리즈 Mac에서 돌아가. 노트북 위 로컬 LLM이 바로 이 규모야.
  • 70B fp16 모델(약 196 GB)은 192 GB 구간도 빠듯해. Q4로 줄이면 약 49 GB라 64 GB MacBook Pro에 들어가.
  • 180B Q4 모델(약 126 GB)은 192 GB가 필요하고, 부가 메모리까지 감안해도 여유가 있어.
  • 405B Q4 모델(약 284 GB)은 512 GB Studio가 필요해. 이 지점부터 최전선급 모델을 한 상자에서 돌릴 수 있어.

마지막 줄이 판을 바꿨어. 2025–2026년까지만 해도 405B 모델을 돌린다는 건 클라우드 GPU를 빌리거나 랙 장착형 기업용 장비를 가진다는 뜻이었어. 512 GB M3 Ultra Studio는 그 일을 책상 위에서, 벽 전원만 꽂고, 별도 네트워크 구성 없이 해내. MLX는 그 가능성을 실제로 쓰게 만드는 소프트웨어 쪽 절반이야.

학습 계산은 다르다는 경고

지금까지는 모두 추론 계산이야. 70B 모델을 전부 파인튜닝하려면 가중치, 같은 크기의 기울기, Adam 기준 가중치 크기의 2배인 옵티마이저 상태, 활성값까지 필요해. 그래서 트랙 5는 LoRA와 QLoRA를 적극적으로 써. 어댑터 방식 덕분에 70B 파인튜닝이 256 GB급 일이 아니라 64 GB급 일이 되거든.

Code

냅킨 계산 — 어느 모델이 어디에 들어가나·python
def model_size_gb(num_params_b: float, dtype_bytes: float, overhead: float = 1.4) -> float:
    """Approximate inference-time memory footprint, in gigabytes."""
    return num_params_b * 1e9 * dtype_bytes / 1e9 * overhead

rows = [
    ('7B',   7,   2.0,  'fp16/bf16'),
    ('7B',   7,   0.5,  'Q4'),
    ('13B',  13,  2.0,  'fp16/bf16'),
    ('13B',  13,  0.5,  'Q4'),
    ('70B',  70,  2.0,  'fp16/bf16'),
    ('70B',  70,  0.5,  'Q4'),
    ('180B', 180, 0.5,  'Q4'),
    ('405B', 405, 0.5,  'Q4'),
]

print(f"{'model':6} {'fmt':10} {'GB (1.4x overhead)':>22}")
for label, p, b, fmt in rows:
    print(f'{label:6} {fmt:10} {model_size_gb(p, b):>22.1f}')

# Output (verified 2026-05-03):
# model  fmt        GB (1.4x overhead)
# 7B     fp16/bf16                19.6
# 7B     Q4                        4.9
# 13B    fp16/bf16                36.4
# 13B    Q4                        9.1
# 70B    fp16/bf16               196.0
# 70B    Q4                       49.0
# 180B   Q4                      126.0
# 405B   Q4                      283.5
지금 쓰는 기계 빠르게 점검하기·bash
# Your unified memory in GB (rounded down)
sysctl -n hw.memsize | awk '{ printf "Unified memory: %.0f GB\n", $1/1024/1024/1024 }'

# Sample (M3 Ultra Studio):
#   Unified memory: 512 GB

# Compare to the table above and the 70%-of-RAM rule of thumb (leave 30% for
# the OS, KV cache headroom, and other apps).

External links

Exercise

냅킨 계산 코드 블록을 실행해. 이제 현재 Mac에 맞춘 줄을 하나 직접 계산해봐. Hugging Face의 mlx-community 조직에서 돌리고 싶은 모델 하나를 고르고, 매개변수 수와 공개된 양자화 수준을 찾아 1.4배의 부가 비용을 넣어 추론 메모리를 계산해. 확인 명령으로 얻은 통합 메모리와 70% 규칙에 비교하면 들어가? 에디터를 켜둘 공간까지 남아?

Progress

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

댓글 0

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

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