본문 바로가기
C.W.K.
Stream
Lesson 01 of 08 · published

왜 1 TB가 아닌가? 쉬워 보이는 질문

~12 min · homework, capacity, memory-market, thought-experiment, our-judgment

Level 0스펙 시트 훑는 사람
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"1테라바이트는 팔릴 거야. 이 집도 샀을 거야. 그러니 상한은 수요가 아니고, 트랙의 첫 일은 대신 뭔지 말하는 거야. 가격을 테이블에 올렸다가 내리면서."

질문

M3 Ultra는 2025년 3월에 최대 512 GB로 출하됐고, 2026-08-25에 발표된 M5 Ultra는 "1.2TB/s"에 최대 512 GB(그 구성은 10월 말)로 출하돼. 두 세대, 같은 상한, 구매자들이(이 집도 그중 하나) 더 내고 살 기계에서. 큰 모델 트랙의 저장소가 512에 안 들어가는 체크포인트를 들고 있으니까. 왜 1 TB가 아닌가? 2026년의 쉬운 답은 가격이야. LPDDR5X 계약 가격은 한 분기에 90퍼센트쯤, 다음 분기에 78에서 83 오를 것으로 예측됐고, 애플 자신의 최고경영자는 7월 실적 발표에서 그걸 "a hundred-year flood on the memory pricing"이라고 불렀고 재무 책임자는 마진 변화 전부 이상을 메모리 비용 탓으로 돌렸고, M3 Ultra의 512 GB 구성은 같은 시장에서 판매를 멈췄고, 라이벌의 128 GB 데스크톱은 메모리 공급 제약이라는 명시된 이유로 $700 값이 바뀌었어. 전부 진짜고, 출처 있고, 라이벌 트랙에 있어. 어느 것도 이 집의 답이 아니야.

메모리가 공짜라고 가정해

이 퀘스트의 계획 관문에서 밝힌 이 집의 입장: 메모리 가격이 아니다. 진짜 병목이다. 어떤 출처도 상한을 어느 쪽 원인으로도 돌리지 않으니, 이 트랙은 그 입장을 사고 실험으로 논하고 내내 판단으로 라벨해. 실험은 가격을 빼는 거야. LPDDR가 공짜고 애플이 내일 1 TB를 출하하고 싶다고 가정해. 코드 블록이 바뀔 것과 안 바뀔 것이야. 바뀔 것: 저장소의 753B 혼합 모델을 500 GB 여유로 담는 풀. 그래도 2.8T짜리는 못 담아. 안 바뀔 것: 이미 들어가는 어떤 모델의 초당 토큰 하나도. 디코드 상한은 토큰당 바이트 위의 대역폭이고 버스는 풀과 함께 자라지 않으니까. 27B에서 512 GB에 초당 57토큰, 1 TB에 57, 2 TB에 57. 라이벌 트랙의 풀의 법칙인 기가바이트당 대역폭은 두 배마다 반토막이야. 1.6, 0.8, 0.4. 오늘의 버스 위의 공짜 1테라바이트는 바이트당 더 느린 풀이고, 이미 든 모델보다 더 느리게 디코드하는 모델을 담아.

숙제의 모양

그러니 쉬워 보이던 질문엔 어려운 부분이 넷 있고, 다음 여섯 레슨이 순서대로 다뤄. 대역폭 없는 용량은 죽은 무게. 위의 산수를 저장소의 파일들로 풀어. 모든 배선엔 길이가 있다. 버스가 왜 1,024비트고 납땜인지, 더 넓은 버스가 패키지 가장자리로 뭘 치를지. 밀도는 로드맵에 온다. 1 TB가 실제로 어디서 오고 누구의 달력에 있는지. 풀 하나 대신 두 계층, 그리고 셋째로서의 플래시. 라이벌이 랙 규모에서 출하하고 애플이 폰에서 출하하는 모양들, 그리고 그게 Studio에 속하는지. 스케일아웃은 스케일업이 아니다. 맥 둘이 왜 1 TB 기계가 아닌지. 끝의 체크리스트는 이 퀘스트의 판단으로 애플이 엣지에서 계속 앞서려면 각각에 대해 해야 할 것이야. 상한에 대한 이 집 자신의 답은 1테라바이트를 사는 게 아니라 저장소를 두고, 허브를 돌리고, 기한을 정해 기다리는 것이었어. 그게 다음 트랙이야.

Code

why_not_1tb.py — 오늘의 버스 위의 공짜 1테라바이트: 바뀌는 것, 안 바뀌는 것·python
#!/usr/bin/env python3
"""Why not 1 TB? Suppose memory were free. A 1 TB pool on today's bus, and what it would
and would not change for the three questions a household actually asks. Pools in GiB as
Apple sells them; the working set is the measured 90.6% of office's 512 GiB, in GB."""
BUS = 819.0                                            # GB/s, the M3 Ultra's 1,024-bit bus at LPDDR5-6400
for gib in (512, 1024, 2048):
    ws = gib * 2**30 / 1e9 * 0.906                     # 498 GB at 512 GiB, as measured
    glm = 452 + 12.5 <= ws                             # GLM-5.3 at 4 bits + 128K cache (T13)
    kimi = 1680 + 3.6 <= ws                            # Kimi K3 at 4 bits
    print(f"{gib:5d} GiB  working set {ws:5.0f} GB  GB/s per GiB {BUS/gib:4.2f}  27B ceiling {BUS/14.42:3.0f} tok/s  "
          f"GLM-5.3 {'fits' if glm else 'no  '}  Kimi K3 {'fits' if kimi else 'no  '}  Kimi K3 ceiling {BUS/62.4:3.0f} tok/s")
print("\nwhat 1 TB buys on the same bus: nothing in the store that 512 does not already hold (Kimi K3 needs 2 TB).")
print("what it does not buy: a single token per second on any model that already fits -- the ceiling is the bus, and the bus is the package's edge.")

#  512 GiB  working set  498 GB  GB/s per GiB 1.60  27B ceiling 57 tok/s  GLM-5.3 fits  Kimi K3 no    Kimi K3 ceiling 13 tok/s
# 1024 GiB  working set  996 GB  GB/s per GiB 0.80  27B ceiling 57 tok/s  GLM-5.3 fits  Kimi K3 no    Kimi K3 ceiling 13 tok/s
# 2048 GiB  working set 1992 GB  GB/s per GiB 0.40  27B ceiling 57 tok/s  GLM-5.3 fits  Kimi K3 fits  Kimi K3 ceiling 13 tok/s

External links

Exercise

네 맥의 대역폭과 작업 집합 비율로 why_not_1tb.py를 돌려. 두 배 풀이 오늘 못 돌리는 뭘 돌리게 해 줄지, 그게 돌 디코드 상한이 얼마인지 카드에 써. 답이 '쓸 만한 속도로 돌릴 원하는 게 없다'면 그렇게 써. 이 집의 답이기도 해.
Hint
두 배 풀이 열어 주는 모델은 네 작업 집합과 그 두 배 사이의 것들이야. 원하는 게 거기 사는지 큰 모델 트랙의 표를 확인하고, 메모리를 바라기 전에 그 활성 바이트를 네 대역폭으로 나눠.

Progress

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

댓글 0

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

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