MakeAI 딥러닝

모델 드리프트 모니터링 — 정확도가 조용히 떨어질 때 어떻게 알까

배포한 모델은 입력이 바뀌면 소리 없이 나빠져요. 정답 없이 입력 분포로 먼저 감지하고, 사람 검수 결과로 확인하고, 보정부터 재학습까지 단계별로 대응하는 저희 ML Ops 방식이에요.

4분 읽기

이 블로그에서 여러 번 "하반기에 모니터링 얘기를 하겠다"고 했는데, 드디어예요. 배포한 모델이 조용히 나빠지는 것을 어떻게 알아채고 대응하는지, 저희 ML Ops 플랫폼의 바탕이 되는 방식이에요.

왜 조용히 나빠지냐면요

배포 시점의 정확도는 그때 데이터 기준이에요. 그 뒤에 이런 일이 생겨요.

  • 고객사가 복합기를 바꿔서 스캔 품질이 달라져요.
  • 새 양식의 문서가 들어오기 시작해요.
  • 한/글 버전이 올라가서 HWP 구조가 조금 바뀌어요.
  • 계절이 바뀌어서 온실 조명이 달라져요(9월 22일).
  • 뉴스 매체가 사이트 구조를 바꿔서 수집 텍스트가 깨져요.

모델은 에러를 내지 않아요. 그냥 틀린 답을 자신 있게 내요. 시스템은 멀쩡히 돌아가고, 몇 주 뒤 담당자가 "요즘 왜 이렇게 많이 틀려요?" 하고 나서야 알아요.

1단계: 정답 없이 감지하기 — 입력 드리프트

정답(사람이 확인한 결과)은 늦게, 일부만 와요. 그래서 먼저 입력 자체가 바뀌었는지를 봐요. 모델 출력이 아니라 입력 통계예요.

문서 파이프라인에서 보는 것들이에요.

신호 뜻
이미지 해상도·밝기·기울기 분포 스캔 장비가 바뀌었나
텍스트 레이어 있는 PDF 비율 문서 출처가 바뀌었나
페이지당 표 개수, 표 크기 분포 문서 종류가 바뀌었나
레이아웃 검출 클래스 비율 새 양식이 들어오나
글자 인식 신뢰도 분포 읽기 어려운 문서가 늘었나
저신뢰·보류 비율 모델이 자신 없어 하는 게 늘었나

각 신호를 배포 시점 기준 분포와 비교해요. 통계 거리(PSI나 KS 통계 같은 것)가 임계값을 넘으면 알림이에요. 특히 저신뢰·보류 비율은 가장 빠른 신호예요. 보정이 제대로 돼 있으면(3월 3일), 모델이 자신 없어 하는 게 늘었다는 건 실제로 틀리는 게 늘었다는 뜻이거든요.

2단계: 정답으로 확인하기 — 출력 품질

사람이 검수한 결과가 들어오면 그걸로 실제 정확도를 재요. 6월 2일 글에서 "검수 결과를 반드시 기록하라"고 한 이유가 이거예요. 검수 데이터가 없으면 이 단계가 아예 없어요.

여기서 보는 것들이에요.

  • 필드별·문서 종류별 정확도 추이. 전체 평균은 둔해요. 특정 양식에서만 떨어지는 걸 전체 평균은 못 보여 줘요.
  • 보정 오차(ECE) 추이. 정확도보다 먼저 흔들려요. 신뢰도 90%짜리의 실제 정답률이 90%에서 멀어지면 보정이 깨진 거예요.
  • 검수 시간. 검수자가 한 건에 쓰는 시간이 늘면 뭔가 나빠진 거예요.

검수 결과는 일부만 오니까(저신뢰 항목 위주), 그대로 정확도를 재면 편향돼요. 9월 22일에 쓴 것처럼 무작위 샘플을 섞어서 검수하게 해요.

3단계: 대응은 가벼운 것부터

드리프트가 확인되면 바로 재학습하지 않아요. 순서가 있어요.

  1. 전처리 확인. 스캔 품질 문제면 기울기 보정·이진화 파라미터 조정으로 끝나는 경우가 많아요. 모델은 그대로예요.
  2. 보정 재조정. 정확도는 괜찮은데 ECE만 올랐으면 온도나 보정 표만 다시 맞춰요. 검증 데이터 몇백 건이면 돼요.
  3. 규칙·사전 갱신. 새 양식이면 열 역할 규칙, 계정 사전(5월 12일) 추가로 해결되는지 봐요.
  4. 재학습. 위로 안 되면 새 데이터를 섞어 재학습해요. 4월 14일 평가셋으로 회귀가 없는지 확인하고 배포해요.

재학습은 비싸고 느리고 회귀 위험이 있어요. 1~3번으로 끝나는 경우가 절반 넘었어요.

대시보드는 이렇게

ML Ops 화면에서 모델 하나를 열면 위에서부터 이 순서예요.

  1. 지금 상태: 정상 / 입력 드리프트 감지 / 품질 저하 확인
  2. 저신뢰·보류 비율 추이 (가장 빠른 신호)
  3. 입력 분포 거리 (신호별)
  4. 검수 기반 정확도·ECE 추이 (문서 종류별로 펼쳐 볼 수 있게)
  5. 이 모델의 버전 이력과 각 버전의 평가셋 점수

알림은 "저신뢰 비율이 7일 평균 대비 ○% 상승, 주로 ○○ 양식에서" 처럼 어디서 늘었는지를 같이 보내요. 4월 21일 비용 알림이랑 같은 원칙이에요.

폐쇄망에서는

외부 모니터링을 못 쓰니까 이 전부가 고객 환경 안에서 돌아가요. 입력 통계와 검수 결과만 모으고 문서 내용은 안 모으니까(5월 26일 거버넌스 6번), 반출 승인이 되면 통계만 저희에게 보낼 수 있어요. 안 되면 현장에서 보고요.

정리

  • 모델은 조용히 나빠져요. 에러 로그로는 못 알아요.
  • 정답 없이 입력 분포와 저신뢰 비율로 먼저 감지하세요.
  • 검수 결과를 기록해야 실제 정확도를 알 수 있어요. 무작위 샘플을 섞으세요.
  • 대응은 전처리 → 보정 → 규칙 → 재학습 순으로, 가벼운 것부터.

다음 주는 조금 가벼운 글이에요. 이 웹사이트를 AWS에 올리면서 배운 것들이요.