코딩 에이전트를 사용하던 개발자가 갑자기 외계어 같은 깨진 문장을 받거나, 같은 단어가 무한히 반복되는 현상을 목격한다. 이상한 점은 개인 테스트 환경에서는 멀쩡하다가 수많은 사용자가 동시에 접속하는 실제 서비스 환경에서만 이런 일이 벌어진다는 것이다.

Z.ai는 GLM-5(대규모 언어 모델) 기반의 코딩 에이전트를 하루 수억 건 규모로 서비스하며 이러한 이상 현상을 추적했다. 분석 결과 고동시성 환경과 장문맥 상황에서 KV Cache(AI가 이전 대화 내용을 기억하기 위해 저장해두는 메모리 공간)에 데이터가 꼬이는 레이스 컨디션 버그가 발견됐다. 첫 번째 버그를 수정한 후 이상 출력 비율은 0.1%에서 0.03% 미만으로 떨어졌다. 또한 SGLang(대규모 언어 모델의 추론 속도를 높여주는 소프트웨어 프레임워크)에 PR #22811로 기여한 두 번째 수정과 LayerSplit(레이어 단위 KV 캐시 분산 저장) 최적화를 통해 40K에서 120K 토큰 구간의 처리량을 10%에서 132%까지 향상시켰다.

Speculative Decoding 지표를 활용한 이상 탐지

예전에는 정규표현식으로 오답을 찾거나 모델을 써서 분류했지만 오탐이 많고 비용이 비쌌다. 이제는 Speculative Decoding(작은 모델이 먼저 예측하고 큰 모델이 검증해 속도를 높이는 기술)의 메트릭을 감시 도구로 쓴다. 쉽게 말하면 AI가 스스로 내놓은 답을 검토하는 과정에서 발생하는 수치를 관찰하는 방식이다.

비유하자면 초안 작성자와 최종 검토자가 함께 일할 때, 검토자가 초안을 거의 다 고쳐야 한다면(spec_accept_length가 낮음) 메모리가 오염되어 헛소리를 하고 있다고 판단하는 식이다. 반대로 검토자가 아무런 수정 없이 그대로 통과시키는 비율이 너무 높다면(spec_accept_rate가 높음) AI가 같은 말을 반복하는 루프에 빠졌다고 본다. 개발팀은 생성 토큰이 128개를 넘었을 때 이 수치들이 임계값을 벗어나면 즉시 생성을 중단하고 다시 시도하게 만드는 모니터링 전략을 세웠다.

PD 분리 아키텍처와 HiCache의 동기화 오류

기존의 PD 분리 아키텍처(입력문을 읽는 Prefill 단계와 답변을 생성하는 Decode 단계를 서로 다른 장치에서 처리하는 방식)에서는 타임아웃이 발생하면 Decode 측이 요청을 취소하고 메모리를 회수했다. 하지만 취소 신호가 Prefill 측에 늦게 전달되는 문제가 있었다. 비유하자면 식당에서 손님이 주문을 취소해 테이블을 치웠는데, 주방에서는 여전히 음식을 만들어 그 테이블에 가져다 놓아 다음 손님의 음식을 덮어버리는 상황과 같다.

이 문제를 풀기 위해 RDMA(네트워크를 통해 다른 컴퓨터의 메모리에 직접 접근하는 고속 통신 기술) 쓰기 작업이 완전히 끝났다는 안전 신호를 확인한 뒤에만 메모리를 재사용하도록 순서를 바꿨다. HiCache(메모리 부족을 해결하기 위해 데이터를 계층적으로 나누어 저장하는 캐시 시스템)에서 발생한 버그도 비슷했다. 데이터를 CPU에서 GPU로 옮기는 작업이 끝나기도 전에 계산을 시작하는 read-before-ready 패턴이 발생해 출력이 깨졌다. 이를 해결하기 위해 데이터 로드가 완료된 시점에 명시적인 동기화 포인트를 삽입해 순서를 강제했다.

LayerSplit을 통한 메모리 효율화와 처리량 증대

이전에는 Context Parallelism(너무 긴 문장을 여러 개의 GPU가 나누어 처리하는 병렬 연산 방식) 환경에서 모든 GPU가 동일한 KV 캐시 전체를 중복해서 가지고 있었다. 이는 메모리 낭비가 심해 처리량을 제한하는 병목이 됐다. 이번에 도입한 LayerSplit은 각 GPU가 레이어의 일부만 담당해 분산 저장하는 방식이다.

쉽게 말하면 모든 팀원이 전체 백과사전을 다 가지고 있던 방식에서, 각자 담당 페이지를 나누어 가진 뒤 필요할 때만 서로 공유하는 방식으로 바꾼 것이다. 이때 발생하는 통신 비용을 줄이기 위해 인덱서 연산과 브로드캐스트를 겹쳐 실행해 오버헤드를 숨겼다. 그 결과 캐시 히트율 90% 조건에서 문맥이 길어질수록 성능 향상 폭이 커졌으며, 최대 132%의 처리량 개선을 달성했다.

모델의 지능을 높이는 스케일링 법칙만큼이나, 그 지능이 대규모 서비스에서 무너지지 않게 지탱하는 것은 정교한 시스템 엔지니어링의 영역이다.