본문 바로가기
C.W.K.
Stream
Lesson 02 of 05 · published

들어가나? 진짜 체크포인트 다섯에 대한 산수

~14 min · big-models, fits, active-parameters, kv-cache, working-set, physics

Level 0스펙 시트 훑는 사람
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"들어감은 숫자 셋이야. 네 비트에서의 가중치, 네 컨텍스트에서의 캐시, 그리고 OS가 실제로 줄 작업 집합. 속도는 넷째야. 토큰이 건드리는 바이트. 혼합 모델에선 파일의 10분의 1."

산수

코드 블록은 물리 트랙을 저장소의 파일 다섯에 적용해. 4비트에서의 가중치: 총 파라미터 곱하기 0.6바이트. 실험실은 스케일과 양자화 안 된 텐서를 세면 진짜 4비트 MLX 체크포인트에서 가중치당 4.5에서 5.1비트를 쟀으니 0.6이 정직한 계수야. 128K 토큰에서의 캐시: 각 아키텍처의 config에서 유도한 토큰당 KV 바이트 곱하기 131,072. 상자의 상한: 512 GB가 아니라 GPU 트랙에서 잰, office에서 OS가 GPU에 권장하는 498 GB. 그리고 디코드 상한: 819 GB/s를 활성 토큰당 바이트로 나눈 것. 다섯 전부 혼합 모델이고 전문가 레슨의 규칙이 적용되니까. 토큰은 라우팅된 전문가와 공유 몸통을 읽지, 파일을 읽지 않아.

체크포인트출하 형태4비트128K 캐시498 GB에 들어가나?활성 GB/토큰디코드 상한증거
GLM-5.3(753B, 활성 40B)1,507 GB BF16452 GB12.5 GB들어감, 34 GB 여유2434 tok/s카드와 config에서 유도
GLM-5.3-Flash(320B, 활성 18B)643 GB BF16192 GB1.6 GB들어감. 192 GB Studio엔 안 들어가. 가중치 192 GB 대 작업 집합 173 GB10.876유도
DeepSeek-V4.1-Flash(748B, 활성 16B)510 GB FP4/FP8출하 그대로 5100.1 GB안 들어감. 12 GB 초과. FP8 부분을 양자화하거나 맥 둘9.685유도
Kimi K3(2.8T, 활성 104B)1,561 GB MXFP4+BF161.4–1.7 TB3.6 GB안 들어감, 둘로도6213유도
Qwen3.8-Flash-Next(180B, 활성 6B)360 GB BF16108 GB3.3 GB들어감. 어떤 128 GB 맥이든3.6228유도

표가 바꾸는 판정 셋

GLM-5.3은 들어가. 쥐 트랙의 어림셈, 상자의 85%는 744B(카드의 수. API의 753B는 MTP 헤드를 포함해) 혼합 모델이 안 들어간다고 했고, 512 × 0.85 = 435 GB에선 안 들어갔을 거야. 실측 작업 집합은 498이고, 가중치 452 GB에 캐시 12.5면 34가 남아. 측정 전엔 어림이 정직한 도구였어. 이젠 측정이 그래. DeepSeek-V4.1-Flash는 아깝게 놓친 쪽이야. 출하 그대로 작업 집합보다 12 GB 많고, 전문가는 이미 4비트니, 맥 하나와의 사이에 선 건 FP8 어텐션, 공유 전문가, 메모리 모듈이야. 그것들을 양자화하면 여유 있게 들어가. 그리고 Kimi K3는 아무 데도 안 들어가. 4비트로 2.8조 파라미터는 498에 대해 1.4에서 1.7 TB고, 맥 둘의 996도 거기 안 닿아. 저장소는 없는 기계를 위해 보관해. Qwen3.8-Flash-Next는 108 GB로 집의 모든 128 GB 맥에 들어가고(24 GB Air와 64 GB mini는 아니야) 활성 파라미터 6B가 표에서 가장 빠른 상한 초당 228토큰을 줘. 전문가 레슨의 약속을, 이 집이 실제로 든 체크포인트에서.

상한 칸의 가치

상한은 물리 트랙의 상계고, 실험실은 자기 혼합 모델이 배치 1에서 맥 세 대에 걸쳐 스펙 기준 상한의 18–44%에 닿는 걸 찾았어. 256 중 여덟 전문가를 건드리는 토큰이 각각에 커널을 띄우니까. GLM-5.3의 34는 실제론 6에서 15쯤, Qwen3.8-Flash-Next의 228은 40에서 100쯤이 될 거야. 다른 혼합 모델에서 나온 실험실 비율로 한 추정이지 이 파일들의 측정이 아니고, 카드는 그렇게 말해야 해. 칸이 재지 않고 결정하는 건 순서와 모양이야. 가장 큰 풀에 들어가는 모델은 가장 빨리 디코드하는 모델이 아니고, 가장 빨리 디코드하는 모델은 노트북에 들어가. 다음에 어느 체크포인트를 양자화할지 고르는 집은 이 표를 읽고, 다음 레슨이 양자화를 해.

Code

will_it_fit.py — 4비트 가중치, 128K 캐시, 실측 작업 집합, 그리고 활성 바이트 상한·python
#!/usr/bin/env python3
"""Will it fit? Arithmetic on the five checkpoints the household's model store has landed,
as of 2026-09-15. Bytes on disk are the store's own catalog; parameter counts and active
counts are the model cards; 4-bit sizes are DERIVED at 0.6 bytes per parameter (the lab
measured 4.5-5.1 bits per weight on real 4-bit MLX checkpoints); KV per token is DERIVED
from each architecture's config. The ceiling is the measured GPU working set on a 512 GB
Studio: 464 GiB = 498 GB. Decode ceilings divide 819 GB/s by the ACTIVE bytes per token."""
WS = 498.0          # GB, office's recommended GPU working set
BW = 819.0          # GB/s, M3 Ultra spec
B_PER_PARAM = 0.6   # 4-bit with scales and a few unquantized tensors
CHECKPOINTS = [  # name, as shipped (GB, format), total params B, active params B (decode), KV bytes/token, note
    ("GLM-5.3",             1506.7, "BF16",           753,  40,  95232,  "MLA + sparse attention; 256 routed experts, 8 per token"),
    ("GLM-5.3-Flash",        642.7, "BF16",           320,  18,  11968,  "34 linear + 11 sparse-MLA layers; 288 experts, 8 per token"),
    ("DeepSeek-V4.1-Flash",  510.3, "FP4/FP8 mixed",  748,  16,  890,    "552B backbone + 196B Engram memory; experts already FP4"),
    ("Kimi K3",             1561.0, "MXFP4 + BF16",  2800, 104,  27648,  "69 linear + 24 MLA layers; 896 experts, 16 per token"),
    ("Qwen3.8-Flash-Next",   360.0, "BF16",           180,   6,  25344,  "125B + 51B n-gram embedding + 4B MTP; 512 experts, 10 per token"),
]
print(f"{'checkpoint':20} {'shipped':>9} {'format':14} {'4-bit GB':>8} {'fits 498?':>9} {'KV@128K':>8} {'active GB/tok':>13} {'ceiling':>8}")
for name, gb, fmt, total, active, kv, note in CHECKPOINTS:
    q4 = gb if "FP4" in fmt and "BF16" not in fmt else total * B_PER_PARAM      # DeepSeek ships mostly 4-bit already
    kv128 = kv * 131072 / 1e9
    fits = "yes" if q4 + kv128 <= WS else ("two Macs" if q4 + kv128 <= 2 * WS else "no")
    act = active * B_PER_PARAM
    print(f"{name:20} {gb:9.1f} {fmt:14} {q4:8.0f} {fits:>9} {kv128:8.1f} {act:13.1f} {BW/act:8.0f}")
print("\n'ceiling' = 819 GB/s / active bytes per token at 4 bits -- the experts lesson's arithmetic; real rates land at a fraction of it")
print("DeepSeek-V4.1-Flash as shipped (510 GB) exceeds the 498 GB working set by 12 GB: quantize the FP8 parts or it does not fit one Mac")

# checkpoint             shipped format         4-bit GB fits 498?  KV@128K active GB/tok  ceiling
# GLM-5.3                 1506.7 BF16                452       yes     12.5          24.0       34
# GLM-5.3-Flash            642.7 BF16                192       yes      1.6          10.8       76
# DeepSeek-V4.1-Flash      510.3 FP4/FP8 mixed       510  two Macs      0.1           9.6       85
# Kimi K3                 1561.0 MXFP4 + BF16       1680        no      3.6          62.4       13
# Qwen3.8-Flash-Next       360.0 BF16                108       yes      3.3           3.6      228

External links

Exercise

돌리고 싶은 체크포인트 하나를 모델 카드에서 will_it_fit.py에 더해. 총 파라미터, 활성 파라미터, config에서의 토큰당 KV 바이트. 네 맥의 실측 작업 집합을 써. 판정 셋을 카드에 써. 4비트에서 들어감, 네 진짜 컨텍스트에서의 캐시, 활성 바이트에서의 상한. 그리고 실험실의 혼합 모델 비율에서 기대하는 실제 속도.
Hint
카드에 활성 파라미터가 없으면 밀집 모델이고 활성은 총과 같아. 토큰당 KV를 유도하기 어려우면 물리 트랙의 kv_per_token.py가 config에서 읽어. MLA와 리니어 어텐션 레이어는 헤드 수 공식이 시사하는 것보다 훨씬 적게 캐시해.

Progress

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

댓글 0

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

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