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

모델 저장소는 추론 서버가 아니야

~11 min · big-models, model-store, provenance, archive, measured

Level 0스펙 시트 훑는 사람
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"이 집이 못 돌리는 가중치 4.5테라바이트, 일부러 보관하고, 한 번 바이트 단위로 검증한 것. 저장소의 일은 뭘 갖고 있는지 아는 거야. 돌리는 건 남의 일이야."

저장소가 든 것

이 집의 모델 저장소는 동사가 가져오기, 감시, 검증, 안착, 목록화뿐인 작은 엔진이야. 자체 집 규칙이 아닌 것을 말해. "추론 런타임도, 모델 평가기도, 양자화기도 아니다". 2026-09-15에 그 카탈로그에서 읽으니 체크포인트 다섯을 안착시켰어. BF16의 GLM-5.3과 GLM-5.3-Flash, 혼합 FP4와 FP8의 DeepSeek-V4.1-Flash, 전체 저장소로서의 Kimi K3, BF16의 Qwen3.8-Flash-Next. 파일 767개에 4.58 TB, 함대 트랙의 백업 마운트가 닿는 냉장 아카이브에. 집에서 가장 큰 풀은 0.512 TB야. 다섯 중 셋은 저장소가 든 형태로는 이 집이 가진 어떤 맥도 로드할 수 없고, 그게 요점이야. 저장소는 원본을 들고, 런타임은 도는 걸 들어.

출처가 제품이야

저장소가 다운로드에 더하는 건 카탈로그의 두 번째 칸이야. 안착 시점의 원본 저장소 git 리비전, 그리고 바이트가 그것과 맞는다는 검증. 이 퀘스트는 안착된 가중치 세트 다섯을 각 원본의 현재 main 브랜치에 대고 블롭 단위로 확인했어. 다섯 다 바이트 단위로 동일. 작은 텍스트 파일들, 채팅 템플릿, README, 평가 설정, 토크나이저 스크립트 하나만 그 뒤로 움직였어. 그러니 이 집은 체크포인트마다 정확히 어느 공개 가중치를 가졌는지 알고, 원본이 조용히 바꿔치기하면 알 거야. 추론 허브는 이걸 알 필요 없어. 양자화된 돌릴 수 있는 것과 따뜻한 캐시가 필요해. 저장소는 아무것도 돌릴 필요 없어. 맞아야 해. 둘을 분리하는 건 가중치에 적용한 함대 트랙의 단일 쓰기 주체 규칙이야. 한 곳이 모델이 무엇인지의 진실을 소유하고, 모든 런타임은 그 진실의 클라이언트야.

왜 돌릴 수 있는 것이 아니라 원본인가

4비트 MLX 체크포인트는 비트, 그룹 크기, 모드의 선택으로 BF16 원본에서 유도되고, 그 선택은 다시 할 수 있지만(양자화 레슨이 해) 원본은 유도된 파일에서 복구할 수 없어. 4비트로만 돌 모델의 BF16 1.5 TB를 보관하는 건 다음 양자화 방법이 오거나, 더 큰 풀을 가진 다음 기계가 오거나, 런타임의 숫자가 바뀌었는지에 대한 질문이 생기기 전까지는 낭비로 보여. 저장소는 Kimi K3도 들고 있어. 퀘스트가 이름 댈 수 있는 어떤 비트로도 집의 어떤 맥에도 안 들어가는 것. 아직 없는 기계를 위해 보관하는 체크포인트고, 저장소는 그러라고 있고 추론 서버는 절대 그렇지 않아. 이 퀘스트의 바탕이 된 브리프는 카탈로그를 두 번 틀렸어. 빠진 모델 하나, 엉뚱한 모델에 붙은 크기 하나. 엔진 자체의 카탈로그가 바로잡았어. 저장소가 증거고, 이 트랙의 산수는 그 바이트에서 시작해.

Code

catalog.py — 저장소의 엔진이 보고하는 대로의, 안착된 체크포인트 다섯·python
#!/usr/bin/env python3
"""A model store is not an inference server. The household's store keeps original
checkpoints in a cold archive and catalogs them; nothing in it runs. The catalog as the
store's own engine reported it on 2026-09-15, with a column no runtime cares about
(the git revision) and one every runtime cares about (bytes)."""
catalog = [  # release, variant, source repo, revision, bytes, files
    ("GLM-5.3",            "BF16",           "zai-org/GLM-5.3-BF16",          "304b8051", 1_506_693_048_081, 291),
    ("GLM-5.3-Flash",      "BF16",           "zai-org/GLM-5.3-Flash-BF16",    "f12e0fe1",   642_676_400_602, 130),
    ("DeepSeek-V4.1-Flash","FP4-FP8-mixed",  "deepseek-ai/DeepSeek-V4.1-Flash","df42c109",  510_313_345_254,  88),
    ("Kimi K3",            "full-repo",      "moonshotai/Kimi-K3",            "2496450e", 1_560_998_983_759, 114),
    ("Qwen3.8-Flash-Next", "BF16",           "Qwen/Qwen3.8-Flash-Next",       "de4b8e4d",   360_023_351_514, 144),
]
total = sum(c[4] for c in catalog)
print(f"{'release':20} {'variant':14} {'source':34} {'rev':9} {'TB':>6} {'files':>5}")
for rel, var, src, rev, b, n in catalog:
    print(f"{rel:20} {var:14} {src:34} {rev:9} {b/1e12:6.2f} {n:5d}")
print(f"\n{len(catalog)} checkpoints, {total/1e12:.2f} TB on the archive; the largest single Mac pool in the house is 0.512 TB")
print("landed weight sets were checked blob-by-blob against each source's main branch: all five byte-identical; only text files had moved")

External links

Exercise

네 디스크의 모든 모델 체크포인트를 원본과, 찾을 수 있으면 받은 리비전과 함께 나열해. 어느 게 원본이고 어느 게 유도된(양자화된) 형태인지, 유도된 것마다 그 원본을 아직 갖고 있는지 카드에 써. 그다음 그중 어느 걸 저장소가 보관하고 어느 걸 런타임이 보관해야 하는지 정해.
Hint
양자화된 파일에 네가 통제하는 어디에도 원본이 없으면 다시 양자화할 수도, 검증할 수도, 원본이 바뀌었는지 알 수도 없어. 다음 달에 바꿀 모델엔 괜찮고 1년 돌릴 모델엔 안 괜찮아.

Progress

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

댓글 0

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

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