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

이 퀘스트가 주장에 라벨 붙이는 법

~15 min · map, evidence, neutrality, vendor-claims, measurement

Level 0스펙 시트 훑는 사람
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"중립은 말투가 아니야. 표의 한 칸이야."

왜 약속이 아니라 라벨인지

이 퀘스트의 주문서는 중립을 요구했어. 팬의 편향 없이, 진짜 장점과 진짜 비용. 중립하겠다는 약속은 아무 가치가 없어. 벤더 페이지도 다 그렇게 약속하거든. 되는 건 구조야. 이 퀘스트의 무게 실린 주장은 전부 네 가지 라벨 중 하나를 눈에 보이게 달아. 믿을지 말지 정하기 전에 이게 어떤 종류의 것인지부터 볼 수 있게. 콜아웃은 라벨을 타입으로 달고, 숫자 표는 증거 칸을 달아. 넷은 이래.

라벨같이 와야 하는 것
physics공개된 입력으로 누구나 다시 할 수 있는 산수입력값과 공식819 GB/s ÷ 토큰당 14.4 GB = 57 tok/s 상한
vendor-claim제조사의 숫자. 기준선과 단계가 붙은정확한 인용, 기준 유닛, 어느 단계를 재는지"M3 Ultra 대비 LLM 프롬프트 처리 최대 4배" — 프리필, LM Studio, 기준선 M3 Ultra
measured이름 붙은 함대 맥에서 날짜 찍어 읽은 값별칭, macOS 빌드, 프레임워크 버전, 모델, 양자화, 컨텍스트 길이, 날짜Qwen3.5-9B 4-bit, office, macOS 26.6.2, MLX 0.32.2 / mlx-lm 0.31.3, 209토큰 프롬프트, 2026-09-15: 디코드 95.1 tok/s
our-judgment우리 집 입장. 입장이라고 밝힌근거, 그리고 이게 입장이라는 사실512 GB 상한은 가격 한계이기 전에 공학 한계다

다른 콜아웃 타입도 나와. principle, warning, tip, war-story, brain-trap(코딩 어시스턴트가 하드웨어를 틀리는 지점), pippa-confession(저자가 틀렸던 지점). 이건 증거 등급이 아니야. 가르치는 장치지. 사실이 어떻게 얻어졌는지 말해주는 건 위의 넷뿐이야.

풀어본 예

2026-08-25 애플의 Mac Studio 발표문은 M5 Ultra가 LM Studio에서 M3 Ultra보다 LLM 프롬프트 처리가 "최대 4배 빠르다"고 해. 라벨이 이 문장을 분해하는 방법은 이래.

  1. vendor-claim: 숫자는 4배, 단계는 프롬프트 처리, 그러니까 프리필, 기준선은 M3 Ultra. 애플 각주에 정확한 유닛이랑 테스트 월이 있어.
  2. physics: 프리필은 연산에 묶여. 그러니 행렬 연산이 훨씬 많은 칩(M5 GPU의 Neural Accelerator)이 프리필을 몇 배 빨리 하는 건 그럴듯해. 디코드는 대역폭에 묶여. 상한은 메모리 대역폭 나누기 토큰당 읽는 바이트야. M5 Ultra의 1.2 TB/s 대 M3 Ultra의 819 GB/s는 비율로 1.47쯤이야.
  3. our-judgment: 그러니 같은 모델의 디코드에 대한 솔직한 기대치는 4배가 아니라 1.5배 언저리야. 벤더 입력값으로 한 산수고, 이 집에서 M5 Ultra를 측정한 사람은 없으니 판단으로 라벨 붙이고 미측정이라고 표시해.
  4. measured: 아직 없음. 실험 스크립트로 M5 Ultra를 측정하는 날 그 줄이 이 라벨을 달고, 판단 줄은 은퇴하거나 확인돼.

이 사슬 어디에도 애플을 비난하는 말이 없다는 걸 봐. 4배는 자기가 재는 것에 대해선 아마 참일 거야. 라벨 체계는 그냥 프리필 숫자가 디코드 숫자 행세를 하는 걸 거부할 뿐이야. 하드웨어 마케팅이 잘못 읽히는 제일 흔한 방식이 바로 그거거든.

측정값이 달아야 하는 도장

실험 트랙의 스크립트는 결과마다 기계 별칭, 칩, macOS 버전과 빌드, MLX와 mlx-lm 버전, 모델, 양자화, 프롬프트 길이, UTC 타임스탬프를 찍어. 코드 블록에 그 함수가 있어. 이 퀘스트가 자기한테 적용하는 규칙은 이거야. 그 도장 없는 숫자는 측정값이 아니고, 측정값으로 인용되지 않는다. 다른 데서 읽는 모든 벤치마크에도 같은 규칙을 적용해 봐. 대부분 떨어져.

Code

labels.py — 주장은 값 더하기 그 뒤의 증거 종류야·python
#!/usr/bin/env python3
"""Four evidence classes. A Claim without a complete stamp for its class
refuses to print as that class — the same rule this quest applies to itself."""
from dataclasses import dataclass, field

REQUIRED = {
    "physics":      ["inputs", "formula"],
    "vendor-claim": ["quote", "source", "baseline", "stage"],
    "measured":     ["alias", "macos", "framework", "model", "quantization", "context_tokens", "date"],
    "our-judgment": ["reasoning"],
}


@dataclass
class Claim:
    text: str
    label: str
    stamp: dict = field(default_factory=dict)

    def render(self) -> str:
        missing = [k for k in REQUIRED[self.label] if k not in self.stamp]
        if missing:
            return f"[UNLABELLED] {self.text}  (missing {', '.join(missing)} for '{self.label}')"
        return f"[{self.label.upper()}] {self.text}  {self.stamp}"


claims = [
    Claim("M5 Ultra: up to 4x faster LLM prompt processing than M3 Ultra", "vendor-claim",
          {"quote": "up to 4x faster", "source": "Apple newsroom 2026-08-25",
           "baseline": "Mac Studio M3 Ultra", "stage": "prefill (LM Studio)"}),
    Claim("Decode ceiling ratio M5 Ultra / M3 Ultra ≈ 1.47", "physics",
          {"inputs": "1229 GB/s, 819 GB/s", "formula": "bandwidth ratio"}),
    Claim("Expect ~1.5x decode on the same model, unmeasured", "our-judgment",
          {"reasoning": "decode is bandwidth-bound; no M5 Ultra in the fleet"}),
    Claim("Qwen3.5-9B 4-bit decodes at 95.1 tok/s", "measured",
          {"alias": "office", "macos": "26.6.2 (25G83)", "framework": "mlx 0.32.2 / mlx-lm 0.31.3",
           "model": "mlx-community/Qwen3.5-9B-4bit", "quantization": "4-bit g64 affine",
           "context_tokens": 209, "date": "2026-09-15"}),
    Claim("The 9B model decodes at 95 tok/s on an M3 Ultra", "measured", {"alias": "office"}),
]
for c in claims:
    print(c.render())
stamp() — 실험 스크립트가 결과마다 붙이는 것·python
import platform, subprocess
from datetime import datetime, timezone
import mlx.core as mx
import mlx_lm


def stamp(alias: str) -> dict:
    info = mx.device_info()   # mx.metal.device_info() is deprecated in mlx 0.32
    build = subprocess.run(["sw_vers", "-buildVersion"], capture_output=True, text=True).stdout.strip()
    return {
        "alias": alias,
        "device": info["device_name"],
        "memory_gb": round(info["memory_size"] / 1e9, 1),
        "recommended_working_set_gb": round(info["max_recommended_working_set_size"] / 1e9, 1),
        "macos": f"{platform.mac_ver()[0]} ({build})",
        "mlx": mx.__version__,
        "mlx_lm": mlx_lm.__version__,
        "date": datetime.now(timezone.utc).isoformat(timespec="seconds"),
    }


print(stamp("office"))
# {'alias': 'office', 'device': 'Apple M3 Ultra', 'memory_gb': 549.8,
#  'recommended_working_set_gb': 498.2, 'macos': '26.6.2 (25G83)',
#  'mlx': '0.32.2', 'mlx_lm': '0.31.3', 'date': '2026-09-15T04:31:52+00:00'}

External links

Exercise

labels.py를 돌리고 어느 주장이 UNLABELLED로 찍히는지, 왜인지 적어. 그다음 네 맥에 대한 주장 셋을 추가해. physics, vendor-claim, our-judgment 하나씩, 도장 완전하게. 그리고 measured 주장 하나는 일부러 불완전하게 남겨. 딱 하나 빠진 필드 중 남이 재사용하기 제일 어렵게 만드는 건 뭐고, 왜야?
Hint
보통 답은 프레임워크 버전이야. 같은 맥에서 mlx-lm 0.20의 디코드 숫자랑 0.31의 숫자는 맥 두 대 사이 차이보다 더 벌어질 수 있는데, 숫자만 봐선 어느 쪽인지 알 길이 없어. 날짜가 그 대리 지표이긴 한데, 대리일 뿐이야.

Progress

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

댓글 0

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

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