Skip to content

docs(ai): 라운드 간 비재현(+17.7%) 설계 — CPU% 는 시간이지 «일의 양» 이 아니다 - #496

Merged
Khyojae merged 1 commit into
mainfrom
docs/255-nonreproducibility-design
Aug 23, 2026
Merged

Khyojae merged 1 commit into
mainfrom
docs/255-nonreproducibility-design

Conversation

@Khyojae

@Khyojae Khyojae commented Aug 23, 2026

Copy link
Copy Markdown
Member

#255 가 「원인 가설 없음」으로 엿새 열려 있다. 설계를 세운다.

🔑 지표를 바꾸는 것이 핵심이다

설명해야 하는 값은 처리량이 아니라 fps / AI vCPU 다:

1라운드 2라운드
팔 B 처리량 267.6 314.98 (+17.7%)
팔 B AI CPU 869.3% 869.0% (동일)
fps / AI vCPU 30.78 36.25

AI 가 같은 CPU 를 쓰면서 프레임을 17.7% 덜 처리했다. 그러면 남는 설명은 하나 — 그 CPU 로 한 «일의 양» 이 달랐다.

그리고 docker stats 의 CPU% 는 시간 측정이다

«CPU 를 몇 초 점유했나» 이지 일의 양이 아니다. 물리 호스트의 유효 클럭이 다르면 같은 CPU% 로 다른 양의 일을 한다 — 관측된 서명이 정확히 그 모양이다.

P6-b 는 그 기제(«터보 클럭·이웃 소음»)를 지목했지만 재는 방법은 안 적었다. 이 설계의 전부가 그 자리다.

박스 보정값

단일 스레드로 고정된 추론 N프레임 — 동시성·부하기·네트워크가 빠지고 «이 박스가 초당 얼마나 일하는가» 만 남는다.

🟢 rig 을 새로 안 짜도 된다 — R6 의 profile_e2e_and_scaling.py scaling 1워커 판이 정확히 그것이고 1~2분이다.

보정값이 뜻
처리량과 같이 움직인다 🎯 박스 성질이다 — 우리 문제가 아니라 인용 규칙의 문제
안 움직인다 박스는 같은 속도인데 앱만 느렸다 → 그때 비로소 우리 문제

판정선 ㄴ 이 전부다

처리량 비 ÷ 보정 비 ≈ 1 이면 완전 설명. 「비재현이 있다」는 이미 안다 — 물어야 하는 것은 「그게 우리 문제인가 박스 문제인가」 다.

🔑 값싼 순서 — 1번은 EC2 결정이 필요 없다

축 0(보정)을 모든 라운드의 從 으로 상설화 = 라운드당 1~2분 · 새 인스턴스 0.

그것만으로 이 항목이 「원인 가설 없음」에서 「다음 비재현이 나타나면 즉시 가른다」 로 바뀐다. 축 A(K대 동시)·B(stop→start)는 그 뒤다.

🔴 정직하게

P6 1·2라운드의 보정값은 영영 없다 — 그 박스들은 사라졌다. 이 판이 답하는 것은 「앞으로」 이고, 08-16 의 그 +17.7% 자체는 사후 규명이 불가능할 수 있다. 설계가 늦게 나온 대가이고, 그래서 상설화가 처방이다.

⚠️ R10-a 의 두 박스 대조를 이 증거로 쓰면 안 된다고 §3-A 에 박았다 — --fps 가 달랐고(6.0↔3.0) 그 차이만으로 17% 가 난다. 오늘 내가 그걸 증거로 읽었다가 정정했다(#493).

🤖 Generated with Claude Code

https://claude.ai/code/session_01CD8Kzie2iw3cbi6BxgfgYj

#255 가 「원인 가설 없음」으로 엿새 열려 있다. P6-b §5 가 후보 둘(부하기 2→4 vCPU ·
대상 박스 물리 호스트 변경)을 교락으로 남겼고, 그 기제로 «터보 클럭·이웃 소음» 을
지목했는데 **그것을 재는 방법은 안 적었다.** 이 설계의 전부가 그 자리다.

🔑 핵심은 지표를 바꾸는 것이다. 설명해야 하는 값은 처리량이 아니라 **fps / AI vCPU**
(30.78 → 36.25)다 — 「같은 CPU 로 얼마나 일했나」. 그리고 docker stats 의 CPU% 는
**시간** 측정이라 «일의 양» 이 아니다. 물리 호스트의 유효 클럭이 다르면 같은 CPU% 로 다른
양의 일을 한다 — 관측된 서명(«CPU 같은데 처리량 17% 차이»)이 정확히 그 모양이다.

그래서 **박스 보정값**을 넣는다: 단일 스레드로 고정된 추론 N프레임을 돌려 「이 박스가 초당
얼마나 일하는가」를 앱과 무관하게 잰다. rig 은 새로 안 짜도 된다 — R6 의
profile_e2e_and_scaling.py scaling 1워커 판이 정확히 그것이고 1~2분이다.

판정선 ㄴ 이 설계의 전부다 — 처리량 비 ÷ 보정 비 ≈ 1 이면 **박스 성질**이고(우리 문제가
아니다) 1 에서 벗어나면 그 나머지가 우리 몫이다. 「비재현이 있다」는 이미 알고, 물어야
하는 것은 **「그게 우리 문제인가 박스 문제인가」** 다.

축 셋을 값싼 순서로 세웠다. 🔑 **1번(보정을 모든 라운드의 從 으로 상설화)은 EC2 결정이
필요 없고 라운드당 1~2분**이며, 그것만으로 이 항목이 「원인 가설 없음」에서 「다음 비재현이
나타나면 즉시 가른다」로 바뀐다.

🔴 정직하게 — P6 1·2라운드의 보정값은 **영영 없다**(박스가 사라졌다). 이 판이 답하는 것은
「앞으로」이고, 08-16 의 그 +17.7% 자체는 사후 규명이 불가능할 수 있다. 설계가 늦게 나온
대가이고 그래서 상설화가 처방이다.

⚠️ 그리고 R10-a 의 두 박스 대조를 이 증거로 쓰면 안 된다고 §3-A 에 박았다 — fps 가
달랐고(6.0↔3.0) 그 차이만으로 17% 가 난다. 오늘 내가 그걸 증거로 읽었다가 정정했다(#493).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CD8Kzie2iw3cbi6BxgfgYj
@Khyojae

Khyojae commented Aug 23, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 23, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

@Khyojae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 50 minutes

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

Wait for the limit to reset, then comment @coderabbitai review or push new commits to the PR.

An organization admin can change what happens after included review limits in Billing.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 09ad4855-d462-4285-85b8-2e26a39c26f3

📥 Commits

Reviewing files that changed from the base of the PR and between a38f380 and 2474556.

📒 Files selected for processing (1)
  • docs/decisions/round-to-round-nonreproducibility.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai

coderabbitai Bot commented Aug 23, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@Khyojae
Khyojae merged commit 0d41bff into main Aug 23, 2026
1 of 2 checks passed
@Khyojae
Khyojae deleted the docs/255-nonreproducibility-design branch August 23, 2026 12:33
Khyojae added a commit that referenced this pull request Aug 23, 2026
#255 는 «부하기 샘플러가 종료 샘플에서 음수를 찍는다» 이고 CLOSED 다.
+17.7% 비재현과 같은 라운드(P6-b)에서 같이 나오는 바람에 번호가 눌어붙어,
문서 7곳이 «살아 있는 미해결 문제» 를 가리키며 «닫힌 다른 결함» 을 인용했다.

정본은 round-to-round-nonreproducibility.md 이고 추적은 #498(OPEN)·#496 이다.
그쪽으로 돌린다.

- ai-process-ceiling-cause · per-process-ceiling-cause · r10-loadgen-topology
- ceiling-cause-stage1 · post-loop-breakdown · pre-asgi-transport · frame-path-aws-b
- AWS-RIDE-ALONG P6 칸은 «신규 결함 #255» 가 바로 앞 +17.7% 서술에 붙어 읽혀서
  둘을 갈라 적었다 (#255 인용 자체는 그 칸에서 맞다)
- 정본 문서 머리에 «#255 는 이 문제가 아니다» 를 박아 재발을 막는다

ai-coresidency-capacity 3곳과 coresidency-* README 들은 실제로 샘플러 음수
얘기라 안 건드렸다.


Claude-Session: https://claude.ai/code/session_01Rx1PmzVKUkDNbtdU8muZhW

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant