본문으로 건너뛰기
고급약 45분

ML 파이프라인 테스트 — 데이터·컨셉 드리프트와 재학습 루프

모델 정확도 하나로는 파이프라인의 어디가 깨졌는지 알 수 없다. 수집·전처리·학습·평가·배포·모니터링 여섯 구간에 시험 지점을 박고, 입력 분포가 변한 것(데이터 드리프트)과 입력-정답 관계가 변한 것(컨셉 드리프트)을 분포 거리와 성능 하락으로 나눠 잡는다. 분할이 누수와 시간 역전으로 깨지는 전형을 짚고, 재학습 트리거를 설계하면서 재학습이 오히려 모델을 악화시키는 경우와 롤백 조건을 같이 정한다.

  • #MLOps
  • #데이터드리프트
  • #컨셉드리프트
  • #재학습
  • #데이터누수
  • #PSI

개념

모델이 아니라 파이프라인이 시험 대상이다

ISTQB CT-AI v2.0이 5장(입력 데이터 시험)·6장(모델 시험)·7장(ML 개발 시험)을 서로 다른 장으로 떼어 놓은 이유가 여기 있다. 운영에서 "모델이 이상하다"로 보고되는 사건의 상당수는 모델 가중치가 아니라 모델 앞뒤의 배관 에서 생긴다. 어제까지 멀쩡했던 추천이 오늘 망가졌을 때 바뀐 것은 가중치가 아니라 상류 테이블의 컬럼 타입, 결측 비율, 또는 사용자 구성이다. 그래서 첫 작업은 파이프라인을 구간으로 자르고 구간마다 "무엇이 깨지면 여기서 걸려야 하는가" 를 적는 것이다.

여섯 구간과 구간별 시험 지점

구간깨지는 전형시험 지점
수집상류 스키마 변경, 지연 적재, 중복 이벤트스키마 계약 검사, 적재 지연 SLO, 유일키 중복률
전처리·피처학습·서빙 변환 코드 불일치, 결측 규칙 변경피처 동등성 검사, 피처 분포 경계 검사
학습분할 누수, 시간 역전, 시드·버전 미고정분할 규칙 검증, 재학습 재현성, 환경 핀
평가테스트 세트 오염, 단일 지표 보고홀드아웃 격리 증명, 코호트별 지표
배포모델·변환·전처리 버전 조합 불일치세 버전 조합의 핀, 쉐도우·카나리 판정 기준
모니터링경보 과다로 무시, 레이블 지연검출기 임계값, 프록시 지표, 경보 소음률

마지막 행의 경보 소음률 이 QA가 가장 자주 놓치는 항목이다. 검출기를 붙이는 것은 데이터 엔지니어가 하지만 그 경보가 믿을 만한가 를 판정하는 것은 테스트 활동이다. 울리고도 아무 일 없던 경보가 10회 연속이면 그 검출기는 이미 꺼진 것과 같다.

피처 동등성 — 가장 자주 터지고 가장 잘 숨는 결함

학습은 배치 파이프라인에서, 서빙은 실시간 코드에서 피처를 만든다. 두 구현이 조금씩 다른 상태를 학습-서빙 스큐(training-serving skew) 라고 부른다. 전형은 이렇다.

학습 배치   0원을 log1p(0)=0 으로 / 서빙 코드   0원을 결측으로 보고 중앙값 대치
학습 배치   "미분류" 를 별도 범주로 / 서빙 코드   미지의 값으로 보고 0 벡터
학습 배치   가입 경과일을 배치 실행일 기준 / 서빙 코드   요청 시각 기준 (최대 24시간 차)

오프라인 평가가 학습 쪽 피처를 쓰므로 이 결함은 평가에서 절대 안 잡힌다. 시험 방법은 하나다 — 같은 원본 레코드를 두 경로에 흘려 피처 벡터를 바이트 단위로 비교한다. 샘플 수백 건으로 충분하고, 회귀 스위트에 상시로 걸어 둔다.

드리프트 네 갈래 — 이름을 구분해야 대응이 갈린다

"드리프트"로 뭉뚱그리면 대응을 고를 수 없다. 변하는 것이 무엇인지로 나눈다.

입력 분포가 변함        P(X) 변화         데이터 드리프트(공변량 시프트)
정답 비율이 변함        P(y) 변화         사전 확률 시프트(라벨 시프트)
입력-정답 관계가 변함   P(y|X) 변화       컨셉 드리프트
구조 자체가 변함        스키마·단위 변경   상류 변경 (드리프트가 아니다)

마지막 줄을 먼저 떼어 놓는다. 컬럼이 밀리거나 단위가 원에서 천원으로 바뀐 것은 통계 현상이 아니라 계약 위반 이다. 검출기가 아니라 스키마 검사로 잡고, 재학습이 아니라 상류 롤백으로 고친다. 드리프트로 분류하면 잘못된 데이터로 재학습하는 최악의 경로에 들어간다.

데이터 드리프트와 컨셉 드리프트의 차이 를 예로 못 박아 둔다.

구분예시모델이 여전히 맞는가
데이터 드리프트신용 심사 모델에 20대 신청자 비중이 10%→35%로 증가20대 구간을 잘 학습했다면 맞을 수 있다
컨셉 드리프트금리 급등으로 같은 소득·부채 조합의 연체율이 2배가 됨틀린다 — 입력은 그대로인데 정답이 변했다

데이터 드리프트는 "주의" 신호고, 컨셉 드리프트는 "재학습" 신호다. 데이터 드리프트만으로 재학습을 돌리면 멀쩡한 모델을 흔든다. 반대로 컨셉 드리프트를 분포 거리로만 보려 하면 영원히 못 본다 — 입력 분포는 변하지 않았으니까.

탐지 — 레이블 없이 보는 것과 레이블로 보는 것

이 둘이 완전히 다른 도구다.

1) 분포 거리 — 레이블 없이, 즉시

지표성격실무 메모
PSI구간을 나눠 비율 차이를 합산금융권 모델 모니터링의 사실상 표준. 구간 수에 민감
KS 통계량두 누적분포의 최대 차이연속형 단변량에 간단. 꼬리 변화에 둔함
JS 발산분포 간 대칭 거리, 유계0 빈도에 안정적. 범주형에 쓰기 좋음
도메인 분류기과거·현재를 구분하는 분류기의 AUC다변량을 한 숫자로. 0.5에 가까우면 변화 없음

PSI 임계값으로 흔히 인용되는 구간(0.1 미만 안정 / 0.1~0.25 주의 / 0.25 초과 조치)은 신용 스코어링 관행에서 온 경험값 이고 표준 문서의 규정값이 아니다. 안정 기간의 자기 PSI 분포를 먼저 재서 임계값을 잡는 것이 맞다.

2) 성능 기반 — 레이블이 와야, 늦게

정확도·AUC·F1의 하락을 직접 본다. 가장 믿을 만하지만 레이블 지연(label latency) 이 벽이다. 연체 여부는 90일 뒤, 이탈은 30일 뒤에 확정된다. 그 공백을 메우는 프록시는 예측 확률 분포의 변화(출력 드리프트), 사람 검토로 뒤집힌 비율, 후속 행동 지표(추천 클릭률, 자동 승인 후 취소율)다.

프록시는 보조 신호다. 프록시가 울렸을 때 실제 성능 하락이 뒤따랐는지 를 기록으로 남겨, 프록시 자체의 적중률을 관리해야 한다. 이것이 모듈 38 레슨 3에서 LLM 판정자를 보정했던 것과 같은 구조다 — 측정 도구를 먼저 검증한다.

경보가 소음이 되는 지점

피처가 200개인 모델에 단변량 검정을 피처마다 돌리고 유의수준 0.05를 쓰면, 아무 변화가 없어도 기대상 10개가 울린다. 이것이 드리프트 모니터링이 2주 만에 무시되는 가장 흔한 경로다. 통제 장치는 세 개다 — 다중검정 보정(Bonferroni 또는 Benjamini-Hochberg FDR), 관찰 기간(1회 위반이 아니라 "5일 중 3일" 규칙), 피처 등급(모델 기여도 상위 피처만 경보, 나머지는 집계 보고).

세 번째가 특히 효과가 크다. SHAP 기여도 상위 20개 피처에만 경보를 걸면 소음이 급감하면서 놓치는 것은 거의 없다. 설명가능성 출력을 모니터링 설계에 쓰는 예인데, 그 출력 자체를 어떻게 믿을지는 레슨 4에서 다룬다.

분할이 깨지는 다섯 가지 전형

평가 숫자가 운영에서 재현되지 않는 사건은 대부분 여기서 시작한다.

전형어떻게 생기나예방
타깃 누수정답을 사후에 알아야 채워지는 컬럼이 피처에 들어감 — "연체 여부"를 예측하는데 "독촉 발송 횟수"가 피처에 있다피처별 시점 정의를 명시. AUC가 0.99면 기뻐할 일이 아니라 의심할 일이다
전처리 누수스케일러·결측 대치를 전체 데이터로 fit 한 뒤 분할분할을 먼저 하고 학습 분할만으로 적합, 테스트에는 transform 만
그룹 누수같은 사용자·기기·문서가 양쪽에 들어감. 한 사용자가 행 100개를 만드는 데이터에서 무작위 분할을 하면 거의 확실히 발생사용자 id 기준 그룹 분할
시간 역전미래 데이터로 학습해 과거를 예측. 시계열·수요 예측에서 무작위 분할을 쓰면 자동으로 생김시간 기준 분할과 전진 검증(walk-forward)
중복 행원본 중복으로 같은 레코드가 양쪽에 들어감분할 전 유일키 중복률 측정·기록

QA가 할 수 있는 검사는 생각보다 구체적이다. 분할 결과물에서 (a) 사용자 id 교집합이 0인가, (b) 테스트 구간의 최소 시각이 학습 구간의 최대 시각보다 큰가, (c) 행 해시의 교집합이 0인가 를 자동 검사로 걸면 다섯 가지 중 셋을 잡는다.

재학습 루프를 시험 대상으로 보기

적응형 AI 시스템(CT-AI 4.1.1)의 핵심 위험은 모델이 바뀌는 경로 자체가 검증되지 않은 것 이다. 재학습 트리거부터 적는다.

트리거장점위험
일정 기반운영이 단순, 예측 가능필요 없을 때도 돌아 모델이 흔들린다
드리프트 기반변화에 반응오탐으로 돌면 오염 데이터로 학습한다
성능 기반가장 정당한 근거레이블 지연만큼 늦다
데이터량 기반소량 데이터 시작 단계에 적합양이 품질을 보증하지 않는다

실무에서는 성능 기반을 1순위로, 드리프트 기반을 보조 조건으로 두고 "성능 하락이 확인되거나, 드리프트가 연속 조건을 만족하고 데이터 품질 검사를 통과했을 때"로 합성한다. 트리거 조건식 자체가 테스트 대상이다 — 과거 데이터를 넣어 언제 돌았어야 했는가 를 역산하면 민감도가 보인다.

재학습이 오히려 악화시키는 경우

이 절이 이 레슨에서 가장 실무적이다. 재학습은 중립적인 행위가 아니다.

1) 오염된 최신 데이터로 학습한다. 상류 장애로 결측이 급증한 기간을 "최신 데이터"로 학습하면 모델이 장애를 정상으로 배운다. 재학습 입력에 데이터 품질 게이트를 먼저 걸어야 한다.

2) 피드백 루프가 자기 출력을 학습한다. 추천 모델이 노출한 항목만 클릭 로그에 남고, 그 로그로 재학습하면 노출 안 된 항목은 영원히 배우지 못한다. 사기 탐지에서 차단된 거래의 실제 결과를 알 수 없는 것도 같은 구조다. 탐색 비율(일부 무작위 노출)이 없으면 재학습이 편향을 증폭한다.

3) 레이블이 편향된 표본만 돌아온다. 사람이 검토한 건만 레이블이 생기고, 검토는 모델이 애매하다고 표시한 건에 집중된다. 그 표본으로 재학습하면 쉬운 구간이 조용히 내려간다. 최근 3개월만 쓰면 분기에 한 번 나오는 희소 클래스가 빠지는 것도 같은 계열이다.

4) 전체 평균은 올랐는데 특정 코호트가 내려간다. 가장 자주 일어나고 가장 늦게 발견된다. 챔피언-챌린저 비교를 코호트별로 하지 않으면 보이지 않는다. 새 모델을 기존 모델과 같은 평가 세트로 재지 않고 배포하는 것은 재학습이 아니라 도박이다 — 백투백 비교와 쉐도우 배포가 최소 요건이다.

롤백 가능성 — 세 가지를 같이 고정해야 돌아간다

모델만 되돌리면 복구가 안 된다. 되돌릴 대상은 (1) 모델 아티팩트 버전, (2) 학습 시점과 동일한 피처 변환·전처리 코드 버전, (3) 입력 데이터 스키마·참조 테이블 스냅샷 셋이다. 조합이 기록돼 있지 않으면 "2주 전 모델로 돌려"가 실행 불가능한 요청이 된다.

그리고 롤백은 리허설해 본 것만 작동한다. 분기마다 한 번, 운영 시간이 아닌 때에 직전 버전으로 되돌려 보고 복구 소요 시간을 잰다. 모듈 38 레슨 5의 배포 게이트 기록에 이 숫자를 함께 남긴다.

실무에서 왜 필요한가

AI 기능이 들어간 제품에서 QA가 가장 자주 받는 질문은 "지금 모델 괜찮아요?"다. 정확도 숫자 하나로 답하면 다음 질문에 막힌다. 어떤 구간이 변했는지, 변한 것이 입력인지 관계인지, 재학습을 해야 하는지가 다 다른 답을 요구한다. 구간 표와 드리프트 네 갈래가 그 질문을 답할 수 있는 크기로 쪼갠다.

조직 안에서의 효용도 분명하다. 데이터 과학자는 모델을, 데이터 엔지니어는 적재를, 플랫폼은 배포를 본다. 구간 사이의 틈 — 학습-서빙 스큐, 분할 규칙, 롤백 조합 — 은 아무도 소유하지 않는다. 그 틈이 사고가 나는 자리이고, 구간을 가로질러 보는 역할은 QA 말고 없다.

규제 쪽 요구와도 직결된다. 레슨 5에서 볼 EU AI Act의 고위험 시스템 의무에는 데이터 거버넌스와 시판 후 모니터링이 들어 있다. 드리프트 모니터링 설계와 재학습 판정 기록이 그 의무에 제출하는 증거의 실체다 — 필요해졌을 때 만드는 것이 아니라 평소에 남아 있어야 하는 것이다.

실습 과제

과제 1 — 구간별 시험 지점 표 만들기 (25분)

담당 제품(없으면 가상의 이탈 예측 모델)의 파이프라인을 여섯 구간으로 그리고, 구간마다 깨지는 전형 2개(우리 시스템에서 실제로 가능한 것만), 시험 지점 1개(무엇을 재면 걸리는가), 현재 상태(있음 / 없음 / 모름)를 채운다.

끝낸 뒤 "모름"의 개수를 센다. 그 개수가 이 설계에서 가장 중요한 산출물이다. 특히 학습-서빙 피처 동등성 검사 가 있음인지 모름인지 확인한다 — 대개 모름이다.

과제 2 — 드리프트 시나리오 분류와 대응 (20분)

여섯 사건을 데이터 드리프트 / 사전 확률 시프트 / 컨셉 드리프트 / 상류 변경 중 하나로 분류하고 검출 수단 과 1차 대응 을 적는다.

1  신규 마케팅으로 20대 유입이 3배가 됐다
2  금리 인상 후 같은 신용 조건의 연체율이 2배가 됐다
3  결제 금액 컬럼의 단위가 원에서 천원으로 바뀌었다
4  사기 거래 비율이 0.3%에서 1.1%로 올랐다
5  앱 개편으로 특정 화면의 로그 이벤트명이 바뀌었다
6  경쟁사 할인으로 같은 추천에 대한 클릭률이 전반적으로 내려갔다

분류가 갈리는 항목(4번과 6번)에서 왜 갈리는지를 한 문장으로 적는다. 분류에 따라 대응이 재학습인지 상류 수정인지 관찰인지가 달라진다.

과제 3 — 분할 검증 스크립트 (20분)

보유한 데이터셋(공개 데이터여도 된다)을 학습·검증·테스트로 분할하고, 네 검사를 코드로 쓴다 — (A) 그룹 키 교집합이 0인가, (B) 테스트 구간 최소 시각 ≥ 학습 구간 최대 시각 인가, (C) 행 해시 교집합이 0인가, (D) 분할별 정답 비율 차이가 허용 범위 안인가.

그 다음 일부러 무작위 행 분할로 바꿔 A·C 검사가 실패하는 것을 확인한다. 검사가 실패하는 걸 본 적 없는 검사는 침묵하는 오라클이다(모듈 58 레슨 1).

자가 체크리스트

  • 파이프라인을 여섯 구간으로 나누고 구간마다 시험 지점을 하나 이상 지목할 수 있다
  • 데이터 드리프트와 컨셉 드리프트를 P(X) 변화와 P(y|X) 변화로 구분해 설명할 수 있다
  • 상류 스키마 변경을 드리프트로 분류하면 안 되는 이유를 말할 수 있다
  • 분포 거리 지표와 성능 기반 검출의 역할 차이, 레이블 지연 문제를 설명할 수 있다
  • 피처 수가 많을 때 경보가 소음이 되는 메커니즘과 세 통제 장치를 알고, 학습-서빙 스큐 검사를 설계할 수 있다
  • 분할이 깨지는 다섯 전형을 들고, 그중 셋을 자동 검사로 잡는 방법을 안다
  • 재학습 트리거 네 종류를 비교하고, 재학습이 모델을 악화시키는 경우를 예로 들 수 있다
  • 롤백에 모델·변환 코드·데이터 스냅샷 셋이 모두 필요한 이유를 설명할 수 있다

흔한 실수

  • 정확도 하나로 파이프라인 건강을 판정한다. 전체 평균이 유지되는 동안 특정 코호트가 무너지는 것이 전형이다. 코호트별 지표를 같이 본다.
  • 모든 변화를 드리프트로 부른다. 스키마·단위 변경은 계약 위반이고 상류 수정이 대응이다. 드리프트로 분류하면 오염 데이터로 재학습하게 된다.
  • 분포 거리로 컨셉 드리프트를 잡으려 한다. 입력 분포가 그대로인 컨셉 드리프트는 분포 거리로 보이지 않는다. 성능·프록시 지표가 필요하다.
  • 피처마다 검정을 돌리고 다중검정을 보정하지 않는다. 피처 200개면 아무 일 없어도 10개가 울린다. 2주 뒤 아무도 경보를 안 본다.
  • PSI 0.25 같은 임계값을 그대로 가져다 쓴다. 관행에서 온 경험값이다. 안정 기간의 자기 데이터로 임계값을 재설정한다.
  • 재학습을 무조건 개선으로 본다. 피드백 루프·편향 레이블·희소 클래스 소실로 악화될 수 있다. 챔피언-챌린저 비교 없이는 모른다.
  • 롤백 계획에 모델 버전만 적고 리허설하지 않는다. 변환 코드와 데이터 스냅샷이 같이 고정되지 않으면 되돌려도 같은 모델이 아니고, 한 번도 해 본 적 없는 복구 경로는 사고 당일에 작동하지 않는다.

참고 자료

  • ISTQB® Certified Tester AI Testing Syllabus v2.0 GA (PDF, 2026/04/17) — 5장 입력 데이터 시험, 6.1.7 드리프트 테스트, 4.1.1 로크드·적응형 시스템
  • Google Cloud — MLOps: Continuous delivery and automation pipelines in ML — 학습-서빙 스큐, 자동 재학습 트리거, 파이프라인 성숙도 단계
  • NIST AI Risk Management Framework (AI RMF 1.0) — MEASURE·MANAGE 기능이 요구하는 지속 모니터링 항목
  • Gama et al., A survey on concept drift adaptation, ACM Computing Surveys, 2014 — 컨셉 드리프트 유형과 적응 전략의 표준 참조. 서지는 ACM DL 원문 확인
  • PSI 임계값 구간은 실무 관행의 경험값이다. 표준 규정값으로 인용하지 말 것 — 원문 확인 대상
  • 이 커리큘럼 안: 모듈 18b 레슨 8 「학습데이터 품질 검증 자동화」, 모듈 18b 레슨 11 「ML 평가 지표」, 모듈 36 레슨 3 「TS 4213 분류 성능 평가」, 모듈 38 레슨 3 「LLM 판정자 보정」, 모듈 38 레슨 5 「배포 게이트와 판정 기록」

낯선 말 풀이

이 레슨에 나온 약어입니다. 본문에서도 처음 나올 때 점선으로 표시해 두었습니다 (제목과 링크 글자는 그대로 둡니다).

ISTQB — 국제 소프트웨어 테스팅 자격 위원회
테스터 자격 시험을 만들고 용어를 정리하는 국제 단체.
CT-AI — 전문 자격 · 인공지능 테스팅
인공지능 기능을 어떻게 시험하는지 다루는 전문 과목.
ML — 기계학습
데이터를 많이 보여 주고 규칙을 스스로 찾게 하는 방식. 인공지능을 만드는 주된 방법이다.
SLO — 서비스 수준 목표
내부적으로 지키려는 목표치. 고객과의 약속보다 조금 더 엄격하게 잡는다.
QA — 품질보증
만든 것이 쓸 만한지 확인하고, 애초에 덜 망가지게 만드는 방법을 정하는 일. "테스트"는 그 일의 일부다.
KS — 한국산업표준 · 두 분포 차이 통계량
이 커리큘럼에서 두 가지로 쓰인다. ① 한국이 정한 국가 표준(KS X·KS Q 처럼 쓴다) ② 두 데이터 묶음의 분포가 얼마나 다른지 재는 통계값. 뒤에 번호가 붙으면 ①, 드리프트·분포 이야기면 ②다.
JS — 자바스크립트
웹 화면을 움직이게 만드는 프로그래밍 언어. 버튼을 눌렀을 때 일어나는 일을 적는다.
AUC — 곡선 아래 면적
분류를 얼마나 잘하는지 하나의 숫자로 요약한 값. 1에 가까울수록 좋다.
LLM — 대규모 언어 모델
엄청난 양의 글을 학습해 말을 이어 쓰는 모델. 대화형 인공지능의 바탕이다.
AI — 인공지능
사람이 규칙을 일일이 적지 않아도 데이터에서 규칙을 찾아 판단하는 소프트웨어.
EU — 유럽연합
유럽 나라들의 연합체. 역내 공통 규정을 만든다.
PDF — 피디에프
어디서 열어도 모양이 같게 나오도록 만든 문서 형식.

이 레슨에 나온 나머지 2개를 포함해 용어집 전체 보기