프로덕션 환경에서 모델 성능 모니터링
데이터 드리프트 감지, 모델 성능 저하 신호, 재학습 트리거, evidently 라이브러리를 다룹니다.
프로덕션 환경에서 모델 성능 모니터링은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
운영 환경에서 모니터링하는 이유
출시 당시에는 성능이 좋았던 모델도 세상이 변하면서 조용히 성능이 저하될 수 있습니다. 모니터링은 이러한 드리프트를 조기에 감지하여 비즈니스 지표가 조용히 급락하기 전에 재학습 시점을 알려 줍니다.
데이터 드리프트와 개념 드리프트
- 데이터 드리프트: 입력 분포가 변하는 현상입니다(새로운 고객 구성).
- 개념 드리프트: 입력과 대상 사이의 관계가 변하는 현상입니다(이탈을 예측하는 요인이 달라짐).
둘 다 정확도를 떨어뜨리지만, 모니터링 방식은 서로 다릅니다.
데이터 드리프트를 위한 PSI
모집단 안정성 지수(PSI)는 현재 시점의 특성 분포를 기준선과 비교합니다. 두 분포를 구간으로 나눈 다음, 각 구간에서 (now% - base%) * ln(now% / base%)을 더합니다.
PSI 값 해석
일반적인 기준은 다음과 같습니다. PSI < 0.1은 유의미한 변화가 없음을, 0.1-0.25는 중간 정도의 변화를 의미하므로 조사해야 함을, > 0.25는 큰 변화를 의미하므로 재학습이 필요할 가능성이 높음을 나타냅니다. PSI는 특성별로 계산합니다.
import numpy as np
def psi(base, now, bins=10):
edges = np.percentile(base, np.linspace(0, 100, bins + 1))
b_pct = np.histogram(base, edges)[0] / len(base) + 1e-6
n_pct = np.histogram(now, edges)[0] / len(now) + 1e-6
return np.sum((n_pct - b_pct) * np.log(n_pct / b_pct))분포를 위한 KS 검정
콜모고로프-스미르노프(KS) 검정은 두 연속 분포를 비교합니다. p값이 작으면 운영 환경의 분포가 학습 분포와 유의미하게 다르다는 뜻이며, 드리프트가 발생했음을 알립니다.
from scipy.stats import ks_2samp
stat, pvalue = ks_2samp(train_feature, prod_feature)
if pvalue < 0.05:
print("Distribution drift detected")PSI와 KS 비교
- PSI: 해석하기 쉬운 하나의 수치로, 대시보드와 임계값 설정에 적합합니다.
- KS: p값을 사용하는 통계적 가설 검정으로, 연속형 특성에 더 엄밀합니다.
많은 팀이 두 지표를 나란히 보고합니다.
Evidently란 무엇인가요
Evidently는 드리프트와 품질 보고서를 자동으로 생성하는 오픈 소스 라이브러리입니다. 모든 지표를 직접 코딩하는 대신 사전 설정된 검사를 조합하여 HTML/JSON 보고서를 얻을 수 있습니다.
# pip install evidently
from evidently.report import Report
from evidently.metric_preset import DataDriftPresetDataDriftPreset 보고서 작성
DataDriftPreset은 모든 열에 대해 전체 드리프트 검사를 실행하고, 기준(학습) 데이터 세트와 현재(운영) 데이터를 비교합니다.
report = Report(metrics=[DataDriftPreset()])
report.run(
reference_data=train_df,
current_data=prod_df
)
report.save_html("drift_report.html")프로그래밍 방식으로 결과 추출
보고서를 딕셔너리로 내보내 알림 로직에 전달하면 모니터링을 일정에 따라 자동으로 실행할 수 있습니다.
result = report.as_dict()
drift_share = result["metrics"][0]["result"]["dataset_drift"]
print("Dataset drift flag:", drift_share)정확도 하락 알림
정답 레이블이 있다면 실시간 정확도를 추적하고 임계값 아래로 떨어질 때 알림을 발생시키세요. 이는 재학습이 지연되었음을 알려 주는 가장 직접적인 신호입니다.
THRESHOLD = 0.85
if live_accuracy < THRESHOLD:
send_alert(f"Accuracy dropped to {live_accuracy:.2f}")루프 완성
좋은 모니터링은 행동으로 이어져야 합니다. 드리프트를 감지하고 -> 알림을 보내고 -> 재학습 파이프라인을 트리거한 다음(이전 학습에서 사용한 Makefile/레지스트리) -> 새 버전을 배포합니다. 대응 계획이 없는 모니터링은 그저 소음일 뿐입니다.
빠른 확인
모니터링 지식을 테스트해 보세요.
복습
프로덕션 모델을 모니터링했습니다. PSI와 KS 검정으로 데이터 드리프트를 감지하고, Evidently가 DataDriftPreset을 통해 보고서 작성을 자동화합니다. 정확도가 임계값 아래로 떨어지면 알림을 보내고 재학습을 트리거합니다. 이것으로 MLOps 과정이 끝납니다. 다음 과정은 FastAPI로 AI 모델 제공하기입니다.
자주 묻는 질문
“프로덕션 환경에서 모델 성능 모니터링” 강의는 무료인가요?
네 — “프로덕션 환경에서 모델 성능 모니터링” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“프로덕션 환경에서 모델 성능 모니터링”에서 뭘 배우나요?
데이터 드리프트 감지, 모델 성능 저하 신호, 재학습 트리거, evidently 라이브러리를 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“프로덕션 환경에서 모델 성능 모니터링” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- MLflow를 활용한 실험 추적
- 모델 레지스트리와 버전 관리
- 재현 가능한 머신러닝 파이프라인 구축
- 프로덕션 환경에서 모델 성능 모니터링