목차10개 항목
출처와 참고
shanraisshan의 「claude-code-best-practice」(MIT)의 LLM 일별 성능 저하 리포트(2026.03)와 Agent SDK·CLI 시스템 프롬프트 비교 리포트(2026.02)를 바탕으로, Anthropic의 2025년 9월 포스트모템을 더해 재구성한 노트다.
가중치 고정은 동작 고정이 아니다
| 질문 | 답 |
|---|---|
| 출시 후 가중치가 바뀌나 | 아니오 |
| 같은 모델이 날마다 다르게 동작할 수 있나 | 예. 일별 점수 변동이 ±8~14% 측정됐다 |
| 의도적으로 성능을 낮추나 | 증거가 없다. Anthropic은 수요·시간대·부하 때문에 품질을 낮추지 않는다고 밝혔다 |
| 인프라 버그는 실재하나 | 예. 2025년 8~9월에 세 건이 확인됐다 |
| 시스템 프롬프트·후속 학습은 바뀔 수 있나 | 예 |
| 심리 요인도 있나 | 예 |
가중치 위의 층
사용자가 보는 출력은 고정된 가중치 위에 여러 층을 거친다. 위에 있을수록 사용자 가까이, 자주 바뀐다.
| 층 | 무엇이 바뀌나 |
|---|---|
| 세션 맥락 | 세션 안에서 맥락이 오염·포화되며 열화한다. 세션 안 「멍청해짐」의 가장 흔한 원인 |
| 시스템 프롬프트 | 수시로 갱신된다. 한 세대의 핫픽스 지시가 다음 세대에서 후속 학습으로 옮겨 가기도 한다 |
| 후속 학습(RLHF) | 기본 가중치는 그대로인 채 조용히 갱신될 수 있다 |
| 샘플링 파라미터 | 서버 쪽에서 조정된다 |
| 추측 디코딩 | 이론상 분포를 보존하지만 도메인·긴 맥락에서 초안 모델의 수락률이 흔들린다 |
| MoE 라우팅·배치 구성 | 같은 배치에 섞인 다른 사용자 요청이 내 요청이 어느 전문가로 갈지를 바꾼다 |
| 하드웨어 | 같은 모델이 TPU·GPU·Trainium 같은 서로 다른 칩에서 돈다 |
| 양자화 | 메모리를 2~4배 줄인다. 부하에 따라 동적으로 바꾸는지는 논쟁 중이다 |
| 컴파일러·런타임 | 컴파일러 버그가 특정 배치 크기에서만 틀린 결과를 낸 사례가 있다 |
| 가중치 | 고정 |
MoE와 배치의 잡음
희소 MoE 모델을 배치로 서빙하면 내 출력이 남의 요청에 따라 달라진다. 외부 측정에서 일별 점수 변동은 OpenAI ±1012%, Anthropic ±811%, Google ±914%였고, 같은 모델이 탈옥 저항 테스트에서 하루는 77%, 다음 날은 63%를 기록했다. **일별 잡음이 1015%면 5% 품질 차이는 잡기 어렵다.** A/B 테스트로 잡으려면 표본 수를 충분히 늘리고, 같은 날짜 안에서 무작위 배정해 날짜 효과를 통제해야 한다. 배치와 서빙 구조는 LLM 서빙의 병목에 있다.
실제로 있었던 인프라 버그 세 건
Anthropic은 2025년 8~9월 품질 저하 신고를 조사해 버그 세 건을 공개했다.
| 버그 | 증상 | 영향 |
|---|---|---|
| 맥락 창 라우팅 오류 | 일반 요청이 1M 맥락용 서버로 잘못 라우팅됐다. 라우팅이 sticky라 한 번 걸리면 계속 그쪽으로 갔다 | 최악 시점에 해당 모델 요청의 16%, Claude Code 사용자 약 30%가 한 번 이상 영향 |
| TPU 출력 손상 | 잘못된 설정으로 드문 토큰에 높은 확률이 실려, 영어 응답 중 태국어·중국어 문자나 명백한 문법 오류가 나왔다 | API 직접 사용 경로만 |
| XLA 컴파일러 오컴파일 | 근사 top-k 연산이 특정 배치 크기·모델 구성에서 완전히 틀린 결과를 냈다. 앞뒤 연산과 디버깅 도구 여부에 따라 달라져 재현이 어려웠다 | 근사를 정확한 top-k로 바꾸고 효율 손실을 감수했다 |
탐지가 늦었던 이유는 둘이다. 자동 평가가 못 잡았다(모델이 개별 실수에서 잘 회복하므로). 버그마다 플랫폼·증상·비율이 달라 신고가 하나의 원인을 가리키지 않았다.
오래된 「LLM drift」 연구의 교훈
2023년 연구는 GPT-4의 소수 판별 정확도가 3개월 만에 97.6%에서 2.4%로 떨어졌다고 보고했다. 하지만 실제로는 예·아니오를 찍는 패턴이 바뀐 것에 가까웠다. 동작이 바뀐다는 것은 보였지만 원인은 의도적 갱신일 공산이 크다. 측정 설계가 결론을 좌우한다.
결정성: seed가 없다
Messages API에는 seed 파라미터가 없고, temperature=0이어도 같은 출력이 보장되지 않는다. 부동소수점 병렬 연산 순서, MoE 라우팅, 배칭, 수치 정밀도, 모델 스냅샷 변경은 사용자가 통제할 수 없다. 통제할 수 있는 것은 시스템 프롬프트와 입력뿐이다.
그래서 비트 단위 재현에 기대지 않고 결정적 장치로 묶는다.
| 장치 | 방법 |
|---|---|
| 구조화 출력 | JSON 스키마로 받고 검증한다 |
| 결정적 로직 | 판단이 필요 없는 부분은 코드로 |
| 다수결 | 여러 번 생성해 합의를 본다 |
| 캐싱 | 같은 입력에는 저장한 결과를 쓴다 |
비결정적 함수를 결정적 게이트로 감싸는 원칙은 AI 시대 개발자의 역할의 「하네스와 오라클」과 같다.
같은 모델, 다른 하네스: CLI와 Agent SDK
「Claude Code에서는 됐는데 SDK에서는 안 된다」의 1순위 원인은 시스템 프롬프트가 다르다는 것이다.
| 항목 | CLI 기본 | SDK 기본 | SDK + claude_code 프리셋 |
|---|---|---|---|
| 도구 지침 | 전체 | 최소 | 전체 |
| 코딩 가이드 | 있음 | 없음 | 있음 |
| 안전 규칙 | 전체 | 기본 | 전체 |
| CLAUDE.md 자동 로드 | 있음 | 없음 | 없음(settingSources 필요) |
- CLI의 시스템 프롬프트는 모듈식이다. 작은 기본 프롬프트에 상황에 따라 붙는 조각이 100개 넘게 있다(도구 지침, 코딩 가이드, 환경 정보, CLAUDE.md, 서브에이전트 프롬프트, MCP 도구 설명 등).
- SDK 기본은 넘겨준 도구 지침과 기본 안전 규칙뿐인 최소 프롬프트다. 일에 쓸 맥락이 더 많다는 장점도 있다.
systemPrompt: "..."는 기본을 통째로 대체해 도구 지침까지 잃는다. CLI 동작에 가깝게 하려면systemPrompt: { type: "preset", preset: "claude_code", append: "..." }에settingSources: ["project", "user"]를 더한다.- CLI 쪽에서는
--append-system-prompt(덧붙이기)와--system-prompt(대체)가 같은 구분이다.
대화형 개발·일회성 작업은 CLI, 프로그램 통합·배치·일관된 응답이 필요한 일은 SDK가 맞다.
「멍청해졌다」고 느낄 때
| 기간 | 먼저 의심할 것 | 대처 |
|---|---|---|
| 세션 안 | 맥락 오염·포화 | /compact, /rewind, 새 세션 |
| 며칠간 나빠졌다가 회복 | 제공자 장애와 롤백, 서빙 설정(샘플링·추론 예산) 변경, 별칭이 가리키는 스냅샷 이동 | 장애 공지 확인, 스냅샷 고정 |
| 계속 나쁨 | 기본 모델 저하(가능성 낮음) | 측정으로 확인 |
심리 요인도 크다. 누가 「오늘 멍청하다」고 하면 실수가 눈에 띄는 확증 편향, 처음 쓸 때의 허니문 효과, 과제 난이도 차이, 확률적인 연속 불운이 겹친다. 「월요일 Claude」 같은 요일 패턴은 근거가 없다.
운영 대응
- 별칭 대신 모델 스냅샷을 고정한다.
- 요청마다 모델 ID·스냅샷, 디코딩 파라미터, 지연·오류율, 실패 시 맥락 깊이를 저장한다.
- 고정 프롬프트 세트로 일일 카나리를 돌려 회귀를 경보한다. 측정 없이는 개인 체감과 서빙 문제를 구분할 수 없다.
- 장애 때 쓸 대체 제공자 경로를 둔다.
- 대시보드에서 「모델 품질」과 「서빙 신뢰성」을 나눠 본다.
정리
- 가중치는 고정이어도 그 위의 여러 층이 동작을 바꾼다. 일별 ±8~14% 잡음은 기본값이다.
- 세션 안 열화는 맥락 문제, 며칠 단위 열화는 서빙 문제일 가능성이 높다. 측정 없이 단정하지 않는다.
- seed가 없으니 재현성은 모델이 아니라 하네스(구조화 출력, 결정적 로직, 스냅샷 고정, 카나리)에서 얻는다.
- 같은 모델도 하네스(시스템 프롬프트)가 다르면 다른 결과를 낸다.
관련 노트: LLM 서빙의 병목: KV 캐시, 배치, GPU, AI 시대 개발자의 역할, 프롬프트에서 하네스로, 평가 주도 개발(EDD), Claude API 고급 도구 사용
원본 기록3
- GitHub 원문 (새 창) github.com/shanraisshan/claude-code-best-practice/blob/main/reports/llm-day-to-day-degradation.md
- GitHub 원문 (새 창) github.com/shanraisshan/claude-code-best-practice/blob/main/reports/claude-agent-sdk-vs-cli-system-prompts.md
- 원문 (새 창) www.anthropic.com/engineering/a-postmortem-of-three-recent-issues