Anthropic의 2024년 8월~9월 Claude 인프라 버그 사후 분석

TL;DR

Anthropic은 2024년 8월 초부터 9월 초까지 Claude의 응답 품질을 간헐적으로 저하시킨 세 가지 별개의 인프라 버그를 공개하고, 근본 원인, 해결 조치, 재발 방지를 위한 개선 사항을 설명했습니다.


대규모 Claude 서비스 방식

Claude는 여러 클라우드 제공업체(AWS, Amazon Bedrock, Google Cloud Vertex AI)와 하드웨어 백엔드(AWS Trainium, NVIDIA GPU, Google TPU)에 배포됩니다. Anthropic은 기본 플랫폼에 관계없이 요청이 동일한 품질을 받도록 엄격한 동등성 기준을 적용합니다. 이러한 다중 플랫폼 전략은 복잡성을 야기합니다. 모든 코드 또는 구성 변경 사항은 모든 하드웨어 스택에서 검증되어야 합니다.


사고 타임라인

날짜 이벤트
8월 5일 첫 번째 버그(컨텍스트 창 라우팅 오류)가 도입되어 Sonnet 4 요청의 약 0.8%에 영향을 미쳤습니다.
8월 25~26일 두 가지 추가 버그가 배포되었습니다(TPU 서버의 출력 손상, 근사 top-k XLA 잘못된 컴파일).
8월 29일 로드 밸런싱 변경으로 라우팅 오류가 의도치 않게 증폭되어 한 시간 동안 Sonnet 4 요청의 최대 16%에 영향을 미쳤습니다.
9월 2일 출력 손상 버그가 롤백되었습니다.
9월 4일 라우팅 오류 수정이 배포되었고, Haiku 3.5에 대한 근사 top-k 버그가 롤백되었습니다.
9월 12일 Opus 3에 대한 근사 top-k 버그가 롤백되었습니다.
9월 16~18일 자사 플랫폼, Vertex AI, Bedrock 전반에 라우팅 수정 사항이 전체 배포되었습니다.

이러한 버그들이 겹치면서 서로 다른 플랫폼에서 다양한 빈도로 다른 증상이 나타나 진단이 어려웠습니다.


세 가지 중첩 문제

1. 컨텍스트 창 라우팅 오류

  • 무슨 일이 있었나: 짧은 컨텍스트의 Sonnet 4 요청이 실수로 곧 출시될 1M 토큰 컨텍스트 창용으로 구성된 서버로 전송되었습니다.
  • 영향: 처음에는 요청의 0.8%였으나 8월 31일 Sonnet 4 트래픽의 16%로 정점에 달했습니다. Claude Code 사용자의 약 30%가 잘못 라우팅된 요청을 한 번 이상 경험했습니다. Amazon Bedrock에서의 잘못된 라우팅은 Sonnet 4 요청의 0.18%로 정점에 달했고, Vertex AI에서는 0.0004% 미만으로 유지되었습니다.
  • 중요했던 이유: 라우팅은 "고정적"입니다. 세션이 잘못된 서버에 도달하면 후속 턴도 해당 서버에 유지되어 성능 저하가 누적되었습니다.
  • 해결: 9월 4일 라우팅 로직을 수정했고, 9월 18일까지 모든 플랫폼에 배포를 완료했습니다.

2. TPU 서버의 출력 손상

  • 무슨 일이 있었나: 잘못된 구성으로 인해 극히 낮은 확률이어야 할 토큰에 높은 확률을 할당하는 런타임 최적화가 도입되어 코드에서 무의미한 문자(예: 태국어 또는 중국어 글리프)나 구문 오류가 발생했습니다.
  • 영향: 8월 2528일 Opus 4.1 및 Opus 4에, 8월 25일9월 2일 Sonnet 4에 영향을 미쳤습니다. 타사 플랫폼(Bedrock, Vertex AI)은 영향을 받지 않았습니다.
  • 해결: 9월 2일 변경 사항을 롤백하고 예기치 않은 문자 출력에 대한 자동 감지 테스트를 추가했습니다.

3. 근사 Top-k XLA:TPU 잘못된 컴파일

  • 무슨 일이 있었나: 토큰 선택을 개선하기 위한 코드 변경으로 XLA:TPU 컴파일러의 근사 top-k 연산에서 잠재된 버그가 촉발되어 특정 배치 크기 및 모델 구성에서 잘못된 고확률 토큰을 반환했습니다.
  • 영향: Claude Haiku 3.5에서 확인되었고, Sonnet 4 및 Opus 3의 일부 하위 집합에서 의심되었습니다. 타사 플랫폼에는 영향이 없었습니다.
  • 해결: 9월 4일 Haiku 3.5에 대한 변경 사항을 롤백하고 9월 12일 Opus 3에 대한 변경 사항을 롤백했습니다. 약간의 성능 비용으로 버그를 제거하는 정확한 top-k(fp32 정밀도)로 전환했습니다. 영구적인 컴파일러 수정을 위해 XLA 팀과 협력했습니다.

심층 분석: XLA 컴파일러 버그

Claude의 생성 파이프라인은 top-p 샘플링을 사용합니다. TPU에서 확률 계산은 여러 칩에 걸쳐 수행되므로 토큰 확률의 조정된 정렬이 필요합니다. 시스템은 혼합 정밀도 산술(모델 수학용 bf16, 벡터 처리용 fp32)에 의존합니다. 기본적으로 활성화된 xla_allow_excess_precision 플래그는 컴파일러가 속도를 위해 특정 bf16 연산을 fp32로 승격할 수 있도록 했습니다.

근사 top-k 최적화가 적용되었을 때 정밀도 불일치로 인해 특정 배치 구성에서 가장 높은 확률의 토큰이 완전히 누락되었습니다. 이는 무작위적이고 재현하기 어려운 토큰 선택 오류로 나타났으며, 때로는 영어 응답에 외국어 문자가 삽입되기도 했습니다.

Anthropic의 수정은 이전 2024년 12월 해결 방법(증상을 가림)을 제거하고 근사 top-k를 정확한 구현으로 대체하여 약간의 효율성 저하로 결정적인 토큰 선택을 복원했습니다.


탐지가 어려웠던 이유

  • 평가 공백: 표준 벤치마크 및 안전성 평가는 Claude가 종종 단독 오류에서 복구할 수 있기 때문에 성능 저하를 표면화하지 못했습니다.
  • 개인정보 보호 제약: 내부 개인정보 보호 통제로 인해 엔지니어가 원시 사용자 상호 작용에 접근할 수 없어 문서화되지 않은 실패의 근본 원인 분석이 어려웠습니다.
  • 신호 노이즈: 여러 버그가 플랫폼 전반에 걸쳐 다양한 증상을 생성하여 단일 체계적 문제가 아닌 무작위 품질 변동으로 나타났습니다.
  • 로드 밸런싱 부작용: 8월 29일 로드 밸런싱 변경으로 라우팅 오류가 증폭되어 기본 코드 변경과 즉시 연결되지 않은 갑작스러운 급증이 발생했습니다.

Anthropic이 변경하는 사항

  1. 더 민감한 평가 – 올바른 구현과 잘못된 구현을 안정적으로 구분할 수 있는 새로운 테스트가 지속적으로 개선될 것입니다.
  2. 프로덕션 수준 품질 모니터링 – 내부 카나리아뿐만 아니라 실제 프로덕션 시스템에서 평가를 실행하여 플랫폼별 회귀를 포착합니다.
  3. 더 빠른 디버깅 도구 – 사용자 개인정보를 훼손하지 않고 커뮤니티 피드백을 안전하게 검사할 수 있는 인프라를 구축하여 향후 사고의 해결 시간을 단축합니다.
  4. 사용자 피드백 루프 – Anthropic은 사용자가 Claude Code의 /bug 명령이나 Claude 앱의 싫어요 버튼을 통해 이상 징후를 보고하고, 맞춤 평가 스크립트를 팀과 공유할 것을 권장합니다.

사용자 및 업계에 미치는 영향

  • 안정성 기대치: 엄격한 인프라에도 불구하고 복잡한 다중 플랫폼 배포는 모델 출력 품질에 영향을 미치는 미묘한 버그를 도입할 수 있습니다.
  • 투명성의 가치: Anthropic의 상세한 사후 분석은 프론티어 AI 연구소가 인프라 장애를 공개하고 신뢰를 구축하며 커뮤니티가 탐지에 기여할 수 있게 하는 모델을 제공합니다.
  • 도구의 중요성: 이 사고는 대규모 LLM 서비스에서 정밀하고 개인정보를 보호하는 디버깅 도구와 지속적인 프로덕션 모니터링의 필요성을 강조합니다.
  • 향후 안전장치: 정확한 top-k 샘플링으로 전환하고 평가 범위를 확장함으로써 Anthropic은 모든 하드웨어 백엔드에서 Claude의 기본 안정성을 높이는 것을 목표로 합니다.

Anthropic은 커뮤니티의 피드백에 감사드리며 feedback@anthropic.com으로 추가 버그 보고 및 평가 기여를 초대합니다.

Sources