프로덕션에서 파이프라인 테스트

훌륭합니다. 전역 유니콘 모양 예측자를 배포했습니다. 예측자가 문제없이 24시간 내내 실행되도록 해야 합니다. ML 파이프라인을 모니터링해야 한다는 사실을 금세 깨닫게 됩니다. 모든 구성요소를 모니터링하기가 어려울 수 있지만 요구사항과 솔루션을 살펴보겠습니다.

학습-제공 편향 확인하기

학습-제공 편향은 학습 데이터와 제공 항목 간에 입력 데이터가 다르다는 의미입니다. 다음 표는 두 가지 중요한 편향 유형을 설명합니다.

유형 정의 해결 방법
스키마 편향 입력 데이터와 학습 서빙이 동일한 스키마를 준수하지 않습니다. 서빙 데이터의 형식이나 분포는 모델이 계속해서 이전 데이터를 학습하는 중에 변경됩니다. 학습 및 서빙 데이터의 유효성을 검사하려면 동일한 스키마를 사용합니다. 스키마에서 확인되지 않은 통계(예: 누락된 값의 비율)를 별도로 확인해야 합니다.
특성 편향 추출된 데이터는 학습과 서빙 간에 다릅니다. 특성 추출 코드는 학습과 서빙 간에 서로 다른 엔지니어링 데이터를 생성합니다. 스키마 편향과 마찬가지로 추출된 데이터에 학습 및 서빙에 동일한 통계 규칙을 적용합니다. 왜곡된 특성의 수와 특성당 편향된 예시의 비율을 추적합니다.

파이프라인 파이프라인에서 모델 기간 모니터링

서빙 데이터가 시간이 지남에 따라 진화하지만 모델이 정기적으로 다시 학습되지 않으면 모델 품질이 저하됩니다. 모델이 새 데이터로 재학습된 이후 시간을 추적하고 알림의 기준 기간을 설정합니다. 서빙 시 모델의 연식을 모니터링하는 것 외에도 파이프라인 전반에서 모델의 연식을 모니터링하여 파이프라인 가판대를 파악해야 합니다.

모델 가중치 및 출력의 숫자 안정성 테스트

모델 학습 중에 가중치 및 레이어 출력은 NaN 또는 Inf가 아니어야 합니다. 테스트를 작성하여 가중치 및 레이어 출력의 NaN 및 Inf 값을 확인합니다. 또한 레이어 출력의 절반 이상이 0이 아닌지 테스트하세요.

모델 성능 모니터링

유니콘의 모양 예측기는 예상보다 인기가 많았습니다. 많은 예측 요청과 더 많은 학습 데이터를 얻고 있습니다. 모델이 학습에 더 많은 메모리와 시간을 소비하고 있음을 알게 될 때 매우 좋다고 생각합니다. 다음 단계에 따라 모델의 성능을 모니터링하기로 결정합니다.

  • 코드, 모델 및 데이터 버전별로 모델 성능을 추적합니다. 이러한 추적을 통해 성능 저하의 정확한 원인을 파악할 수 있습니다.
  • 이전 모델 및 고정 기준 대비 새 모델 버전의 초당 학습 단계를 테스트합니다.
  • 메모리 사용 임계값을 설정하여 메모리 누수를 포착합니다.
  • API 응답 시간을 모니터링하고 백분위수를 추적하세요. API 응답 시간은 제어할 수 없지만 응답 속도가 느리면 실제 측정항목이 저하될 수 있습니다.
  • 초당 응답되는 쿼리 수를 모니터링합니다.

서빙된 데이터에 대한 실시간 모델의 품질 테스트

모델의 검증이 완료되었습니다. 하지만 유니콘 동작과 같은 실제 시나리오가 검증 데이터를 기록한 후 변경되면 어떻게 될까요? 서빙되는 모델의 품질이 저하됩니다. 그러나 실제 데이터에 항상 라벨이 지정되는 것은 아니기 때문에 서빙 품질 테스트는 어렵습니다. 서빙 데이터에 라벨이 지정되지 않은 경우 다음 테스트를 고려하세요.

  • 평가자를 사용하여 라벨을 생성합니다.

  • 예측에 통계적 유의미한 편향이 나타나는 모델을 조사합니다. 분류: 예측 편향을 참조하세요.

  • 모델의 실제 측정항목 추적 예를 들어 스팸을 분류하는 경우 예상 검색어를 사용자가 신고한 스팸과 비교합니다.

  • 쿼리 중 일부에 새 모델 버전을 제공하여 데이터 학습과 서빙 간 잠재적 불일치를 완화합니다. 새 서빙 모델을 검증할 때 점진적으로 모든 쿼리를 새 버전으로 전환하세요.

이러한 테스트를 사용하여 예측 품질의 갑작스러운 성능 저하 및 느린 속도 저하를 모두 모니터링해야 합니다.