이 블로그에서 여러 번 "하반기에 모니터링 얘기를 하겠다"고 했는데, 드디어예요. 배포한 모델이 조용히 나빠지는 것을 어떻게 알아채고 대응하는지, 저희 ML Ops 플랫폼의 바탕이 되는 방식이에요.
왜 조용히 나빠지냐면요
배포 시점의 정확도는 그때 데이터 기준이에요. 그 뒤에 이런 일이 생겨요.
- 고객사가 복합기를 바꿔서 스캔 품질이 달라져요.
- 새 양식의 문서가 들어오기 시작해요.
- 한/글 버전이 올라가서 HWP 구조가 조금 바뀌어요.
- 계절이 바뀌어서 온실 조명이 달라져요(9월 22일).
- 뉴스 매체가 사이트 구조를 바꿔서 수집 텍스트가 깨져요.
모델은 에러를 내지 않아요. 그냥 틀린 답을 자신 있게 내요. 시스템은 멀쩡히 돌아가고, 몇 주 뒤 담당자가 "요즘 왜 이렇게 많이 틀려요?" 하고 나서야 알아요.
1단계: 정답 없이 감지하기 — 입력 드리프트
정답(사람이 확인한 결과)은 늦게, 일부만 와요. 그래서 먼저 입력 자체가 바뀌었는지를 봐요. 모델 출력이 아니라 입력 통계예요.
문서 파이프라인에서 보는 것들이에요.
| 신호 | 뜻 |
|---|---|
| 이미지 해상도·밝기·기울기 분포 | 스캔 장비가 바뀌었나 |
| 텍스트 레이어 있는 PDF 비율 | 문서 출처가 바뀌었나 |
| 페이지당 표 개수, 표 크기 분포 | 문서 종류가 바뀌었나 |
| 레이아웃 검출 클래스 비율 | 새 양식이 들어오나 |
| 글자 인식 신뢰도 분포 | 읽기 어려운 문서가 늘었나 |
| 저신뢰·보류 비율 | 모델이 자신 없어 하는 게 늘었나 |
각 신호를 배포 시점 기준 분포와 비교해요. 통계 거리(PSI나 KS 통계 같은 것)가 임계값을 넘으면 알림이에요. 특히 저신뢰·보류 비율은 가장 빠른 신호예요. 보정이 제대로 돼 있으면(3월 3일), 모델이 자신 없어 하는 게 늘었다는 건 실제로 틀리는 게 늘었다는 뜻이거든요.
2단계: 정답으로 확인하기 — 출력 품질
사람이 검수한 결과가 들어오면 그걸로 실제 정확도를 재요. 6월 2일 글에서 "검수 결과를 반드시 기록하라"고 한 이유가 이거예요. 검수 데이터가 없으면 이 단계가 아예 없어요.
여기서 보는 것들이에요.
- 필드별·문서 종류별 정확도 추이. 전체 평균은 둔해요. 특정 양식에서만 떨어지는 걸 전체 평균은 못 보여 줘요.
- 보정 오차(ECE) 추이. 정확도보다 먼저 흔들려요. 신뢰도 90%짜리의 실제 정답률이 90%에서 멀어지면 보정이 깨진 거예요.
- 검수 시간. 검수자가 한 건에 쓰는 시간이 늘면 뭔가 나빠진 거예요.
검수 결과는 일부만 오니까(저신뢰 항목 위주), 그대로 정확도를 재면 편향돼요. 9월 22일에 쓴 것처럼 무작위 샘플을 섞어서 검수하게 해요.
3단계: 대응은 가벼운 것부터
드리프트가 확인되면 바로 재학습하지 않아요. 순서가 있어요.
- 전처리 확인. 스캔 품질 문제면 기울기 보정·이진화 파라미터 조정으로 끝나는 경우가 많아요. 모델은 그대로예요.
- 보정 재조정. 정확도는 괜찮은데 ECE만 올랐으면 온도나 보정 표만 다시 맞춰요. 검증 데이터 몇백 건이면 돼요.
- 규칙·사전 갱신. 새 양식이면 열 역할 규칙, 계정 사전(5월 12일) 추가로 해결되는지 봐요.
- 재학습. 위로 안 되면 새 데이터를 섞어 재학습해요. 4월 14일 평가셋으로 회귀가 없는지 확인하고 배포해요.
재학습은 비싸고 느리고 회귀 위험이 있어요. 1~3번으로 끝나는 경우가 절반 넘었어요.
대시보드는 이렇게
ML Ops 화면에서 모델 하나를 열면 위에서부터 이 순서예요.
- 지금 상태: 정상 / 입력 드리프트 감지 / 품질 저하 확인
- 저신뢰·보류 비율 추이 (가장 빠른 신호)
- 입력 분포 거리 (신호별)
- 검수 기반 정확도·ECE 추이 (문서 종류별로 펼쳐 볼 수 있게)
- 이 모델의 버전 이력과 각 버전의 평가셋 점수
알림은 "저신뢰 비율이 7일 평균 대비 ○% 상승, 주로 ○○ 양식에서" 처럼 어디서 늘었는지를 같이 보내요. 4월 21일 비용 알림이랑 같은 원칙이에요.
폐쇄망에서는
외부 모니터링을 못 쓰니까 이 전부가 고객 환경 안에서 돌아가요. 입력 통계와 검수 결과만 모으고 문서 내용은 안 모으니까(5월 26일 거버넌스 6번), 반출 승인이 되면 통계만 저희에게 보낼 수 있어요. 안 되면 현장에서 보고요.
정리
- 모델은 조용히 나빠져요. 에러 로그로는 못 알아요.
- 정답 없이 입력 분포와 저신뢰 비율로 먼저 감지하세요.
- 검수 결과를 기록해야 실제 정확도를 알 수 있어요. 무작위 샘플을 섞으세요.
- 대응은 전처리 → 보정 → 규칙 → 재학습 순으로, 가벼운 것부터.
다음 주는 조금 가벼운 글이에요. 이 웹사이트를 AWS에 올리면서 배운 것들이요.