AI VIDEO BRIEFING

AI 에이전트 디버깅: 결정성 대신 '재현 가능성'으로 프로덕션 장애 추적하기

프로덕션 AI 에이전트의 일회성 오류는 왜 로컬에서 재현되지 않을까. 온도 0의 착각부터 경계(boundary) 기록과 리플레이로 장애를 다시 디버깅하고 테스트로 바꾸는 방법까지 정리했다.

AI 에이전트가 프로덕션에서 오작동했다 — 못 잡는 진짜 이유는 '재현'이 안 되기 때문 영상 대표 이미지

핵심 메시지

  • 에이전트가 프로덕션에서 한 번 낸 오류는 같은 프롬프트로 로컬에서 다시 돌려도 재현되지 않는 경우가 많고, 재현이 안 되면 디버깅도 재발 방지 약속도 불가능하다.
  • 온도(temperature)를 0으로 낮춰도 결정성은 보장되지 않는다 — 부동소수점 연산의 비결합성, 배치 불변성, MoE(전문가 혼합) 라우팅 같은 시스템 요인 때문에 같은 입력도 다른 결과가 나온다.
  • 추구할 것은 모델 출력의 '비트 단위 결정성'이 아니라, 일어난 실행을 다시 검증할 수 있는 '재현 가능성(replayability)'이다.
  • 기록은 네트워크 계층이 아니라 각 노드의 '경계(boundary)'에서 입력·출력을 잡아야 도구 호출·LLM·검색까지 전 과정을 되살릴 수 있다.
  • 기록된 트레이스를 그대로 테스트 케이스로 바꾸면, 모델을 호출하지 않고도 무료로 반복 가능한 결정적 테스트를 만들 수 있다.

쉽게 이해하기

마이크로소프트에서 실제 프로덕션 백엔드를 상대로 에이전트를 운영하는 두 발표자(Tisha Chawla, Susheem Koul)는 흔한 악몽 같은 상황으로 이야기를 연다. 에이전트가 잘못된 도구를 호출해 엉뚱한 작업을 했고, 팀은 무엇이 잘못됐는지 추적에 매달린다. 그런데 로그에서 원본 프롬프트를 꺼내 같은 모델에 다시 넣어 돌리면 매번 정상 동작한다. 비용을 발생시킨 바로 그 한 번의 실행은 사라졌고, 재현할 수 없으니 디버깅할 수도 없다.

구체적 예시로 증권사 API에 연결된 에이전트가 등장한다. 사용자가 '1,000달러어치 주식을 팔라'고 했는데 에이전트는 계산을 하지 않고 숫자 1,000을 수량 칸에 넣어 1,000주를 팔아버린다. 주당 190달러라면 19만 달러짜리 사고다. 더 무서운 건 API가 30밀리초 만에 깔끔한 200 OK를 돌려주고 예외도 알림도 없이 대시보드가 온통 초록색이라는 점이다.

흔한 반사적 대응은 모델 온도를 0으로 내려 결정적으로 만드는 것이지만 이는 착각이다. 발표자는 네 가지 1차 원리로 이유를 설명한다. ①샘플링 결정성은 시스템 결정성이 아니다(argmax를 택해도 점수 자체가 매번 같진 않다). ②부동소수점 연산은 결합법칙이 성립하지 않아 더하는 순서가 결과 로짓을 바꾼다. ③동시성 문제가 아니라, 그 순간 함께 들어온 요청과 묶이는 '배치 불변성'이 진범이다. ④MoE 라우팅도 배치가 넘치면 토큰이 다른 전문가로 재라우팅되며 같은 병목을 겪는다.

그래서 질문 자체가 틀렸다고 말한다. '모델을 어떻게 결정적으로 만들까'가 아니라 '재현할 수 없는 실행을 어떻게 디버깅하고 다시 테스트할까'가 옳은 질문이다. 비트 단위 결정성은 제어 가능성의 문제이고 호스티드 API에서 얻을 수도, 사실 원할 필요도 없다(무작위성이 모델을 창의적으로 만든다). 필요한 것은 관측 가능성, 즉 일어난 실행을 다시 검증할 수 있을 만큼 기록하는 재현 가능성이다. 기록은 패킷이 아니라 각 단계의 '의미'를 잡도록 노드의 경계에서 해야 한다.

두 사람은 개념 증명으로 만든 Chronicle과 그 핵심인 boundary 어노테이션을 시연한다. 도구 호출이든 LLM 호출이든 RAG 검색이든 메서드를 boundary로 감싸면 입력·출력과 모델 버전·코드 버전 같은 상태가 트레이스로 동결돼 저장된다. 앞서의 주식 매도 에이전트를 재생해 LLM이 1,000을 수량으로 오인한 지점을 그대로 짚어내고, 도구에 가드레일을 건 뒤 다른 노드는 스텁 처리하고 바뀐 노드만 라이브로 돌려 주문이 차단됐다는 단언(assertion)까지 통과시킨다. 마지막으로 결정적 노드는 Chronicle로 무료·반복 테스트하고, 톤이나 경로 같은 주관적 행동은 'LLM as a judge'로 평가하라고 정리한다.

주요 인사이트

  • 깨끗한 200 OK와 초록색 대시보드는 정상을 보장하지 않는다 — 의미상 완전히 틀린 거래도 인프라 지표는 정상으로 보인다.
  • 온도 0은 디버깅의 북극성이 아니다. 같은 논리 오류를 같은 방식으로 반복할 뿐이며, 하드웨어 차원에서도 진짜 결정적이지 않다.
  • 비트 단위 결정성(제어 가능성)과 재현 가능성(관측 가능성)을 구분하라. 운영에 필요한 건 후자다.
  • 기록된 트레이스는 그 자체로 테스트 케이스가 된다 — 모델을 부르지 않으니 무료이고 회귀를 반복 검증할 수 있다.
  • 생성 시점의 변동성을 죽이지 마라. 그 무작위성이야말로 에이전트에 '에이전시'를 부여한다.

자주 묻는 질문

온도를 0으로 설정하면 에이전트가 결정적으로 동작하나?

아니다. 부동소수점 연산의 비결합성, 그 순간의 배치 구성에 따라 결과가 달라지는 배치 불변성, MoE 라우팅 같은 시스템 요인 때문에 같은 프롬프트를 수천 번 돌려도 서로 다른 응답이 나올 수 있다.

기록은 어디에서 해야 하나?

네트워크 계층이 아니라 각 노드의 경계(boundary)에서 해야 한다. 로컬 검색·인프로세스 도구·메모리처럼 네트워크를 거치지 않는 부분이 많기 때문에, 각 단계로 들어가고 나오는 입력·출력의 의미를 잡아야 한다.

기록한 트레이스로 어떻게 테스트하나?

바꾼 노드만 라이브로 실행하고 나머지 노드는 기록된 입력·출력으로 스텁 처리한 뒤, 동일한 스택 트레이스로 테스트 스위트를 돌린다. 모델을 호출하지 않으므로 무료이고 반복 가능하다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식

#AI 에이전트#프로덕션 디버깅#관측가능성#LLM#테스트 자동화