Netflix Pensive AI, 로그 줄 번호를 돌려받아 실패한 데이터 작업을 진단

Published · AI Daily — AI-assisted deep research, methodology & disclosure

Netflix는 10월 26일 글에서 모델이 로그의 시작·끝 줄만 돌려주도록 해 실패한 워크로드의 오류를 추출하고, 실패한 단계별로 캐시되는 요청 시 디버깅을 실행하는 Pensive AI를 설명했다. 추출은 모든 실패를 대상으로 하지만 정확도나 해결 시간은 제시되지 않았다.

Netflix, 고정 규칙으로 AI를 감싸 실패한 데이터 작업을 진단하다

Netflix 기술 블로그는 10월 26일 데이터 및 머신러닝 워크로드가 왜 실패했는지 엔지니어가 파악하도록 돕는 시스템 Pensive AI에 대한 긴 설명 글을 올렸다. Netflix에 따르면 가장 바쁜 날에는 Titus, Spark, Trino, Druid 같은 엔진 전반에서 약 10만 건의 워크로드가 실패한다. 이전의 Pensive는 실패한 작업의 로그를 읽고 정규 표현식과 손으로 쓴 Java 규칙으로 오류를 분류한 뒤, 재시도 조언을 워크플로 스케줄러 Maestro 같은 도구에 넘겼다. 덕분에 실패의 약 절반은 사용자가 직접 해결할 수 있게 되었다. 어느 석 달 동안 약 700만 건의 분류를 처리했는데, 그중 약 절반이 '알 수 없음'으로 분류되었다. Pensive AI는 이미 잘 작동하던 규칙을 버리지 않고 이 공백을 메우려고 만들어졌다.

통째로 베끼지 않고 줄 번호로 추출한다

첫 번째 기능인 오류 추출은 실패한 단계마다 실행된다. 설계의 핵심은 모델이 답하는 방식이다. Pensive는 각 로그의 줄에 번호를 매기고, 줄 번호와 텍스트로 이루어진 기록을 모델에게 보여 준다. 모델은 오류의 첫 줄과 마지막 줄이라는 두 정수만 돌려주고, Pensive가 자신이 가진 로그 사본에서 텍스트를 복원한다. Netflix는 두 가지 이유를 든다. 출력 토큰을 만드는 일은 입력을 읽는 일보다 느리다는 점, 그리고 화면에 나오는 문장이 원본 로그에서 곧바로 가져온 것이라 지어낸 내용이 줄어든다는 점이다. 여기서 토큰은 모델이 텍스트를 처리하는 단위다. 모델이 범위를 잘못 고를 수 있으므로 추출 품질은 평가의 일부다. 이 호출은 실패한 단계의 후처리에 Maestro가 거는 90초의 엄격한 상한 안쪽에 둔 하나의 마감 시한을 공유하며, 시한을 넘긴 로그 호출은 버려져 전체 응답이 제때 돌아온다. Netflix는 기존 오류 필드를 남기고 그 옆에 새 필드를 추가했다. 이전은 끝나지 않았다. 실패한 Maestro 단계를 보여 주는 Data Portal 화면은 새 필드를 읽지만, 쿼리 편집기, 노트북, 일부 Slack 클라이언트는 아직 예전 경로를 쓴다.

요청 시 디버깅하고, 실패 건별로 캐시한다

두 번째 기능인 Pensive AI Debugging은 근본 원인 분석과 수정 제안을 내놓는다. API, MCP, Data Portal 화면으로 쓸 수 있다. 답변에는 수십 초에서 1분이 걸리므로 Netflix는 누군가 요청할 때만 실행한다. 실패한 단계의 대부분은 아무도 열어 보지 않기 때문이다. 작업 단위는 실패한 단계 시도이고, 그 결과는 캐시된다. 두 번째 요청은 키-값 읽기가 되고, 조건부 쓰기는 두 호출자가 같은 답변을 동시에 만드는 일을 막으며, 완료된 응답은 90일 뒤에 만료된다. 서비스는 답변을 스트림으로 전달하고 각 이벤트가 그때까지의 전체 텍스트를 담고 있어, 이벤트가 하나 유실돼도 클라이언트는 단순하게 유지된다. 클라이언트의 연결이 끊어져도 생성은 계속된다.

Netflix가 품질을 확인하는 방법

Netflix는 예전 규칙을 고정된 정답 레이블의 출처로 쓴다. 한 모델 심사는 알려진 오류가 여전히 반영되어 있는지 확인하고, 다른 하나는 추출된 각 오류가 그 자체로 의미 있는지 확인한다. 스크립트는 워크플로의 약 30%보다 많은 곳에 나타나는 줄을 표시하고, 모든 호출의 지연 시간도 기록한다. 로그는 7일에서 30일 뒤에 사라지므로 운영 환경의 요청이 로그를 S3에 보관하고, 평가는 그 보관본을 다시 돌린다. 모든 풀 리퀘스트는 미리보기 환경에 배포되고, 정밀도와 포함도의 기준이 병합 여부를 가르며, 같은 점검이 승격 뒤와 정해진 일정에도 실행된다. 디버깅 답변에 대한 '싫어요'는 근무 시간 중에 Slack 알림을 보낸다.

수치가 보여 주는 것과 보여 주지 않는 것

Netflix는 AI 추출이 이제 예전 규칙이 알 수 없음으로 분류했던 것을 포함해 모든 실패를 대상으로 한다고 말한다. 대상이라는 말은 추출 결과가 나온다는 뜻이지 각각이 옳다는 뜻이 아니다. 글은 또, 아무도 Pensive AI를 쓰지 않은 실패 시도에서는 쓴 시도보다 수동 디버그 로그 탐색 조작이 평균 321% 많았다고 보고한다. Netflix는 이를 인과 주장이 아니라 관찰 기반 비교라고 밝힌다. 글에는 정확도도, 해결까지 걸린 시간도, 비용도 나와 있지 않다. 다른 팀은 이 설계를 따라 하기 전에 자신들의 실패 사례로 그 값을 직접 측정해야 한다.

Sources

FAQ

Pensive AI는 긴 로그를 베끼지 않고 어떻게 오류를 추출하나?

Pensive는 로그의 각 줄에 번호를 매기고 줄 번호와 텍스트로 된 기록을 모델에게 보여 준다. 모델은 오류의 첫 줄과 마지막 줄만 돌려주고, Pensive가 보관한 로그 사본에서 텍스트를 복원한다. Netflix는 비용과 지연이 줄고 표시되는 글이 원문 그대로라고 하지만, 모델이 범위를 잘못 고를 수 있다.

'100% 대상'은 무슨 뜻인가?

Netflix는 AI 오류 추출이 예전 규칙이 알 수 없음으로 분류했던 것까지 포함해 모든 실패를 대상으로 한다고 말한다. 대상이라는 말은 모든 실패에 추출 결과가 나온다는 뜻일 뿐 각각이 옳다는 뜻이 아니며, 글은 정확도를 공개하지 않는다.

321%라는 수치가 시간 절약을 증명하나?

아니다. Netflix는 아무도 Pensive AI를 쓰지 않은 실패 시도에서 쓴 시도보다 수동 디버그 로그 조작이 평균 321% 많았다고 하며, 이를 인과 주장이 아닌 관찰 기반 비교라고 부른다. 해결 시간이나 비용 수치는 없다.