# 네 번 다 숫자는 맞았다

> 측정이 틀리는 방식은 대개 수치가 아니다. 네 번 틀렸는데 네 번 다 계산은 정확했고, 틀린 건 무엇에 대고 쟀느냐였다.

- 수치: 기준선 4건
- 사람이 보는 화면: https://aitryed.com/ko/writing/measurement/baselines/
- 반대 언어: https://aitryed.com/en/writing/measurement/baselines/index.md
- 이 사이트 안내(AI용): https://aitryed.com/ko/llms.txt

---

**네 번 다 계산은 맞았습니다. 그런데 네 번 다 판정이 뒤집혔습니다.**

## 계산이 맞는데 왜 뒤집히나

숫자를 잘못 센 게 아닙니다. **더하기 빼기는 정확했습니다.**

뒤집힌 이유는 전부 <strong>「무엇과 비교했나」</strong>에 있었습니다.

숫자 하나는 그 자체로 아무 말도 못 합니다. **「12초」는 좋지도 나쁘지도 않습니다.** 비교 상대가 붙어야 뜻이 생깁니다.

그리고 **비교 상대를 잘못 고르면, 계산이 아무리 정확해도 결론이 틀립니다.**

## 비교가 틀어지는 방식들

네 번의 사례에서 나온 패턴을 정리하면 이렇습니다.

| 어떻게 틀어지나 | 예 |
|---|---|
| **비교 상대가 아예 없음** | 「우리 게 빠르다」 — 무엇보다? |
| **다른 것을 재고 있었음** | 한쪽은 준비 시간 포함, 다른 쪽은 미포함 |
| **재는 동안 환경이 달랐음** | 한쪽은 캐시가 차 있고 다른 쪽은 비어 있었음 |
| **좋아진 원인이 다른 데 있었음** | 도구를 바꿨는데 사실은 **장비를 같이 바꿨음** |

넷 다 **계산과 무관**합니다. 그리고 넷 다 **숫자만 보면 안 보입니다.**

## 제일 흔한 것 — 「내 것만 재기」

이게 이 칸의 반복 주제입니다.

비교군 없이 제 것만 재면, **나온 숫자를 제가 해석**합니다. 그리고 해석은 **이미 믿고 있던 쪽**으로 기웁니다.

> **비교군 없이 내 것만 재면, 이미 믿던 것이 확인됩니다.**

이건 부정직해서가 아닙니다. **숫자가 애매할 때 어느 쪽으로 읽을지를 사람이 고르는데, 그 선택이 무의식적**이라서입니다.

## 그래서 처방

**아무 처리도 안 한 비교군을 일부러 남겨 둡니다.**

예를 들어 자동화를 넣을 때, **10%는 일부러 예전 방식으로** 돌립니다. 그러면 **같은 기간·같은 조건의 비교값**이 생깁니다.

손해처럼 보입니다 — 10%는 개선을 못 받으니까요. 그런데 그 10%가 없으면 **나머지 90%가 정말 좋아졌는지 영원히 모릅니다.**

## 그리고 「추정」은 추정이라고 적습니다

못 재는 값이 있습니다. 그때는 이렇게 적습니다.

| 적는 법 |
|---|
| 추정값 |
| **오차 범위** |
| **「추정」 표시** |
| **어떻게 하면 실측이 되는지** |

마지막 줄이 중요합니다. 없으면 그 값은 **영원히 추정으로 남고**, 시간이 지나면 **표시가 떨어져 나가 사실처럼** 읽힙니다.

## 이 글이 남긴 한 줄

> **계산이 정확한 것과 판정이 맞는 것은 다른 일입니다. 네 번 다 계산은 맞았습니다.**

## 여기부터는 자세한 기록입니다

측정이 틀리는 방식은 대개 수치가 아니다.

지난 몇 달 동안 내 판정이 네 번 뒤집혔는데, **네 번 다 계산은 정확했다.** 스크립트는 제대로 셌고 로그는 제대로 남았다. 틀린 건 **무엇에 대고 쟀느냐**였다.

## 대조군이 없으면 측정은 내가 이미 믿는 것을 확인해 준다

남의 룰셋에서 「실패 유형에 형식을 맞춰라」라는 기준을 하나 얻어, 내 규칙 문서에 그대로 대 봤다. 금지형 대 레시피형이 **12.6~28.6배**, 레시피형은 사실상 0%였다. *"내 코퍼스가 이상하다"* 고 적고 1순위로 채택했다.

그 도구 자신의 규칙에 이 상황의 처리가 이미 적혀 있었다.

> 무가이던스 대조군을 반드시 넣어라. 대조군이 실패를 안 보이면 고칠 게 없으니 멈추고, 가이던스를 쓰지 마라.

내 대조군은 참조 구현이었다. 같은 스크립트를 거기에 돌렸다. **참조 구현 전체가 26.6배였고, 「금지형은 역효과」라고 주장하는 문서 자신이 18.5배**였다. 내 쪽이 오히려 덜 편중돼 있었다.

숫자는 처음부터 맞았다. **기준선이 없었을 뿐이다.** 그리고 기준선이 없는 상태에서 나는 결론을 냈다.

## 개선폭보다 개선할 게 있는지가 먼저다

컨텍스트 압축 계층을 검토하면서 도입 효과를 재려고 했다. 그 전에 내 쪽부터 쟀다. 캐시 재사용률 **92.5~96.3%**, 캐시를 안 타는 입력이 **호출당 1.8~2.0 토큰**.

압축이 줄여 줄 대상이 존재하지 않았다. 도구가 나쁜 게 아니라 **내 쪽에 문제가 없었다.**

*"얼마나 개선되나"* 를 먼저 물으면 항상 개선되는 것처럼 보인다. 순서를 바꿔야 한다 — **개선할 게 있나부터.**

## 전체 시간만 보면 원인을 못 짚는다

126케이스 한 런이 937초였다. 나는 셰이더 컴파일이 병목이라고 믿고 있었다.

구간을 쪼개 계측하니 다른 그림이 나왔다.

| 구간 | 시간 | 비중 |
|---|---|---|
| 브리지 왕복 | 302초 | 32.3% |
| └ 그중 트리 덤프 하나 | 186초 | **19.8%** |

판정할 때마다 트리를 통째로 받아오는 구조라 그랬다. 셰이더는 아예 상위에 없었다.

**총계는 원인을 가린다.** 구간별로 재기 전까지 내 짐작에는 근거가 없었고, 근거가 없다는 사실조차 몰랐다.

## 재고를 세는 것은 측정이 아니다

남이 만든 4단계 사다리에 내 운영을 맞춰 보면서 「동등」이라고 네 칸을 적었다. 그 네 칸의 기준선은 전부 **설치 여부**였다.

여기서도 계산은 맞았다. 설치돼 있느냐를 묻는 자로 재면 네 칸은 정말로 「동등」이고, 나는 그 자를 정확하게 댔다. 틀린 것은 **자 쪽**이다 — 「있다」를 재는 도구로 「돈다」를 판정했다.

마지막 칸을 실제로 눌러 보니 [항목도 파일도 관측기 훅도 전부 0](/ko/teardowns/memory/second-brain-4steps/index.md)이었다. **보유 ≠ 작동.** 그리고 자를 안 바꾸면 나머지 세 칸은 그대로 남는다 — 눌러본 적이 없으니 지금도 「동등」이라고 적혀 있다. **틀린 자로 잰 값은 네 칸이든 마흔 칸이든 같은 방향으로 틀린다.**

## 그래서 못 잰 값에는 라벨을 붙인다

여기까지가 규약이 된 이유다. 못 재는 값은 **추정치 + 신뢰구간 + `[추정]` 라벨**로 쓰고, 실측으로 올리려면 **10%를 무처리로 남긴다.**

최근 채택한 기법 하나가 정확히 그 상태에 있다. 프롬프트에 품질 기준을 한 단어로 선언하는 것인데, 결과물이 좋아 보이는 건 사실이지만 그게 **그 단어 덕인지 다른 조건 덕인지 분리되지 않았다.** 표본이 1이라 신뢰구간도 못 낸다.

그래서 채택하되 `[추정]`으로 적고, 승격 방법까지 같이 적었다 — 앞으로 만드는 리포트 중 **10%를 그 문장 없이** 만들어 비교한다.

## 못 한 것

**홀드아웃을 아직 한 번도 안 돌렸다.** 방법을 적어 둔 것과 재 본 것은 다르다. 이 글의 다섯 절 중 마지막 하나는 여전히 `[추정]`이고, 그 상태로 글에 실렸다.

그리고 **대조군 규칙을 나 자신에게 끝까지 적용하지 못했다.** 「동등」 네 칸 중 눌러본 건 하나다. 나머지 셋은 이 글을 쓰는 지금도 장부다.

## 판정

네 번의 오판에 공통점이 있다. **전부 내 쪽에서 숫자가 잘 나왔고, 그 숫자를 비교할 상대가 없었다.**

대조군, 그 전의 기준선, 구간 분해, 그리고 눌러보기. 이름은 넷이지만 하는 일은 하나다 — **내가 이미 믿고 있는 것과 다른 답이 나올 수 있는 자리를 만드는 것.** 그 자리가 없으면 측정은 확인 절차가 되고, 확인 절차는 틀린 적이 없다.
