Anthropic이 Claude를 사용하여 claude.ai의 속도를 3배 빠르게 만든 방법

Anthropic은 두 주간의 스프린트 동안 claude.ai와 Claude 데스크톱 앱의 로드 시간과 상호작용 지연을 약 3배 개선했습니다. "Claude 태그"를 통해 내부 연구 모델(Opus 5.5와 유사)을 전용 Slack 채널에 배포함으로써 팀은 AI가 자율적으로 버퍼를 식별하고 결정론적 벤치마크를 생성하며 인간의 감시 하에 최적화를 배포할 수 있도록 했습니다.

성능 향상 및 핵심 지표

Anthropic은 사용자 활동의 95%를 차지하는 네 가지 주요 사용자 여정에 집중했습니다: 앱 실행, 대화 시작, 기존 대화 로드, 메시지 전송.

75번째 백분위수에서 팀은 다음과 같은 개선을 달성했습니다:

  • claude.ai의 새 로드: 입력 가능한 페이지까지의 시간이 3.1초에서 0.55초로 감소했습니다.
  • Claude Code 세션 시작: 지연 시간이 0.8초에서 0.3초로 감소했습니다.
  • Claude Cowork 클라우드 세션 로드: 로드 시간이 2.6초에서 0.73초로 감소했습니다.

"측정하여 최적화" 루프

스프린트의 핵심 기술적 통찰은 정확한 측정을 제공하면 성능 문제를 다룰 수 있다는 점이었습니다. Anthropic는 Claude가 최적화의 주도자로 작동하는 루프를 구축했습니다:

  1. 식별: 인간이 느린 경험(예: 화면 녹화를 통해)을 표시합니다.
  2. 벤치마크: Claude가 흐름을 추적하고 문제를 정량화하기 위한 벤치마크를 구축합니다.
  3. 구현: Claude는 지표를 개선하기 위해 PR(종종 여러 개, 위험도를 고려해 크기 조절)를 제출합니다.
  4. 검증: Claude는 배포 후 현장 데이터를 모니터링하여 성과를 확인합니다.
  5. 계단식 조정: 성과가 확인되면 Claude는 CI에서 벤치마크를 낮추어, 향후 해당 지표를 증가시키는 모든 PR이 빌드 실패하도록 합니다.

벽시계 시간을 넘어서기

벽시계 시간은 CI 게이트에 대해 노이즈가 많고 불안정하기 때문에, 팀은 결정론적 측정으로 전환했습니다. Claude는 다음과 같은 "실험실" 벤치마크를 구현했습니다:

  • JS 명령어 수: node --predictable와 Valgrind를 사용하여 순수-JS 핫패스의 정확한 명령어 수를 측정합니다.
  • 브라우저 지표: 각 상호작용당 React 커밋 수, V8 함수 호출 수, 레이아웃/스타일 재계산 수, DOM 변경 수를 추적합니다.

예를 들어, Claude는 대화 메시지 트리 조립 과정에서 전체 명령어의 1/4이 매크로모픽 사전 검색을 포함하고 있음을 발견했습니다. 이를 최적화함으로써 명령어 수를 48% 감소시키고 해당 경로의 벽시계 시간은 78% 감소시켰습니다.

핵심 기술적 최적화

3배의 속도 향상을 달성하기 위해 팀은 다양한 아키텍처 및 마이크로 최적화를 구현했습니다:

  • 정적 컴포저: React 초기화 대기 시간을 제거하기 위해 Anthropic은 정적 HTML 컴포저를 페이지에 내장했습니다. 사용자는 React가 정적 버전 위에 렌더링하는 동안 즉시 입력할 수 있습니다. 레이아웃 이동을 방지하기 위해 Claude는 14개의 뷰포트 크기에서 1픽셀 이내로 정렬이 유지되는지 확인하는 테스트 세트를 구축했습니다.
  • V8 코드 캐시: 데스크톱 쉘에 대한 V8 코드 캐시를 사전 컴파일하여 메인 프로세스가 처음부터 다시 컴파일하는 것을 방지했습니다.
  • 렌더링 최적화: 사이드바 재렌더링을 90% 감소시켰고, 대화 간에 컴포저를 유지하여 비용이 큰 재마운트를 피했습니다.
  • 문자열 처리: 비-Latin-1 문자(예: 이중 대시)가 V8이 구문 강조를 위한 정규식에 더 느린 UTF-16 경로를 사용하게 했다는 것을 발견했습니다. Claude는 강조 전에 코드 블록을 1바이트 문자열로 복사하는 20줄짜리 수정을 구현했습니다.
  • 프레임 예산 설정: 긴 응답을 스트리밍할 때, Claude는 120Hz 디스플레이 예산(프레임당 8.33ms)을 목표로 했습니다. 완료된 블록을 메모이제이션하고 토큰화를 워커로 이동함으로써 각 청크당 O(메시지 길이) 작업을 제거했습니다.

보호장치와 인간의 방향성

3,000개 이상의 변경 사항을 병합하면서 안정성을 유지하기 위해 Anthropic는 엄격한 안전 프레임워크를 활용했습니다:

  • 자동 리뷰: 모든 PR은 자동 리뷰를 거쳐야 하며, 최소 한 명의 인간 승인이 필요했습니다.
  • 기능 플래그: 사용자에게 보이는 변경 사항은 짧은 수명의 플래그 뒤에 배포되었으며, Claude는 거의 200개의 플래그의 롤아웃 및 정리 작업을 관리했습니다.
  • 점진적 롤아웃: 고위험 변경 사항은 먼저 직원에게 배포한 후, 1% 사용자에게, 그 다음 일반 대중에게 순차적으로 배포했습니다.

인간은 프로젝트의 "미각"과 "비전"을 제공했으며, UX 트레이드오프(예: 로딩 스켈레톤이 즉시 표시되어야 하는지 지연 후 표시되어야 하는지)를 결정하고, AI가 너무 보수적인 추정을 할 때 더 과감하게 행동하도록 유도했습니다.

커뮤니티의 시각과 비판

공식 보고서는 AI 기반 루프의 효율성을 강조하지만, Hacker News 커뮤니티에서는 여러 기술적 우려가 제기되었습니다:

"Claude는 모든 저렴한 과일을 따낸 후에는 해커를 보상할 것입니다. 측정 허브를 대체할 것이며, 라이브러리 함수를 몽키패치할 것이며, 가능한 모든 곳에서 속임수를 쓸 것입니다... 결국 당신이 이해하는 속임수에 대해 최적화하기 시작합니다."

다른 비판자들은 일부 수정(예: 정적 컴포저 추가)이 SPA/React 프레임워크의 근본적인 아키텍처 문제를 해결하는 것이 아니라, 단순한 대안에 불과하다고 지적했습니다. 이는 "엔트로피에 엔트로피로 대응하는 것"으로 볼 수 있으며, 본질적인 재작성보다는 일시적인 해결책에 가깝습니다.

또한 일부 사용자는 코드의 장기적인 유지보수 가능성에 대해 의문을 제기하며, "계단식 조정" 벤치마크가 과도하게 최적화된 코드(ML에서의 과적합과 유사)를 초래할 수 있다고 지적했습니다. 이는 향후 개발 속도를 저해할 수 있습니다.

Sources

관련