프로덕션 ML 시스템: 파이프라인 모니터링

축하합니다. unicorn 모델을 배포했습니다. 모델이 아무 문제 없이 연중무휴 24시간 실행됩니다. 제대로 되도록 하려면 머신러닝 (ML) 파이프라인을 모니터링해야 합니다

원시 데이터를 검증하는 데이터 스키마 작성

데이터를 모니터링하려면 예상과 비교하여 지속적으로 확인해야 합니다. 데이터가 충족해야 하는 규칙을 작성하여 통계 값 이 컬렉션 이것을 데이터 스키마라고 합니다. 다음과 같이 데이터 스키마 정의 다음 단계를 따르세요.

  1. 특성의 범위와 분포를 파악합니다. 범주형 가능한 값 집합을 이해합니다.

  2. 이해한 내용을 데이터 스키마로 인코딩합니다. 다음은 Kubernetes의 규칙:

    • 사용자가 제출한 평점이 항상 1에서 5 사이인지 확인합니다.
    • the 단어가 가장 자주 나타나는지 확인합니다 (영어 텍스트의 경우). 기능).
    • 각 범주형 특성이 고정 집합의 값으로 설정되어 있는지 확인 곱할 수 있습니다.
  3. 데이터 스키마를 기준으로 데이터를 테스트합니다. 스키마가 데이터를 포착해야 함 다음과 같은 오류가 표시됩니다.

    • 이상치
    • 예상치 못한 범주형 변수 값
    • 예상치 못한 데이터 분포

단위 테스트를 작성하여 특성 추출 검증

원시 데이터는 데이터 스키마를 전달할 수 있지만 모델은 원시 데이터에 대해 배웠습니다. 오히려 모델은 특성에 포함된 데이터를 기반으로 설계되어 있습니다. 예를 들어 모델은 정규화된 숫자 특성에 대해 학습합니다. 데이터를 수집하는 것입니다. 특성 추출 데이터는 원시 입력 데이터와는 다르기 때문에 특성 추출 데이터를 원시 입력 데이터에 대한 확인과는 별개로 작동합니다.

특성 추출 데이터에 관한 이해를 바탕으로 단위 테스트를 작성합니다. 예를 들어, 단위 테스트를 작성하여 있습니다.

  • 모든 숫자 특성은 예를 들어 0에서 1 사이로 조정됩니다.
  • 원-핫 인코딩 벡터는 단 하나의 1 및 N-1 0만 포함합니다.
  • 변환 후 데이터 분포가 기대치에 부합합니다. 예를 들어 Z-점수를 사용하여 정규화한 경우 Z-점수는 0이어야 합니다.
  • 이상점 확장과 같이 처리됩니다. 또는 클리핑을 사용하면 됩니다.

측정항목의 중요한 데이터 슬라이스 확인

성공적인 전체가 실패하는 하위 집합을 모호하게 만드는 경우가 있습니다. 즉, 전반적인 측정항목이 우수한 모델도 예측이 좋지 않을 수 있습니다 특정 상황에서 발생합니다 예를 들면 다음과 같습니다.

유니콘 모델은 전반적으로 잘 작동하지만 다음 상황에서는 저조합니다. 예측을 수행했습니다.

전반적으로 우수한 AUC에 만족하는 엔지니어라면 사하라 사막에서는 모델의 문제를 발견하지 못할 수도 있습니다. 만드는 경우 모든 지역에 대한 정확한 예측이 중요하다면 확인할 수 있습니다 데이터의 하위 집합(예: 데이터 슬라이스라고 합니다.

관심 있는 데이터 슬라이스를 식별합니다. 그런 다음 해당 데이터 슬라이스의 모델 측정항목을 전체 데이터 세트에서 가져올 수 있습니다 모든 데이터 슬라이스에서 모델이 우수한 성능을 보이는지 확인 편향을 제거하는 데 도움이 됩니다. 자세한 내용은 공정성: 편향 평가 를 참조하세요.

실제 측정항목 사용

모델 측정항목이 반드시 모델의 실제 영향을 측정하는 것은 아닙니다. 예를 들어 초매개변수를 변경하면 모델의 AUC가 높아질 수 있지만, 변경사항이 사용자 환경에 영향을 미쳤는가? 실제 영향을 측정하려면 별도의 측정항목을 정의할 수 있습니다 예를 들어 모델의 사용자를 대상으로 설문조사를 실시할 수 있습니다. 모델이 예측했을 때 실제로 유니콘이 보였는지 확인할 수 있었습니다. 합니다.

학습-서빙 편향 확인

학습-서빙 편향 학습 중 입력 데이터가 서로 다르다는 것을 만들 수 있습니다 다음 표에서는 두 가지 중요한 편향 유형:

유형 정의 솔루션
스키마 편향 학습 및 제공 입력 데이터가 동일한 스키마를 준수하지 않습니다. 서빙 데이터의 형식 또는 분포가 변경됨 모델을 계속 학습시키는 데 도움이 됩니다. 동일한 스키마를 사용하여 학습 및 서빙 데이터를 검증합니다. 다음에서 확인하지 않은 통계는 별도로 확인해야 합니다. 스키마(예: 누락된 값의 비율)
특성 편향 엔지니어링된 데이터는 학습과 서빙 간에 서로 다릅니다. 특성 추출 코드는 학습과 서빙 간에 서로 다르며 여러 엔지니어링 데이터를 생성합니다 스키마 편향과 유사하게 학습 전반에 동일한 통계 규칙 적용 서빙하는 법을 배웠습니다 번호 추적 특성당 편향된 예시의 비율을 예측할 수 있습니다

학습-서빙 편향의 원인은 미묘할 수 있습니다. 예측 시 모델에서 사용할 수 있는 데이터가 무엇인지 항상 고려하세요. 학습 중에는 서빙 시 사용할 수 있는 특성만 사용하세요.

연습문제: 학습 내용 점검하기

온라인 상점이 있고 예측하려는 예상되는 수익을 나타냅니다. ML 목표는 매일 예측하고 수익 모델입니다.

어떤 문제가 발생할 수 있나요?
정답을 보려면 여기를 클릭하세요.

라벨 누출 확인

라벨 유출정답 라벨은 입력하려고 한다고 가정해 보겠습니다 라벨 탐지하기가 매우 어려울 수 있습니다.

연습문제: 학습 내용 점검하기

이진 분류 모델을 빌드하여 모델 학습에 사용할 수 있는지를 새로운 병원 환자가 암을 앓고 있습니다. 모델은 다음과 같은 특성을 사용합니다.

  • 환자 연령
  • 환자 성별
  • 이전 질병
  • 병원 이름
  • 활력 징후
  • 테스트 결과
  • 유전

라벨은 다음과 같습니다.

  • 불리언: 환자가 암에 걸렸나요?

학습 세트가 잘 작동하도록 데이터를 신중하게 분할합니다. 서로 분리할 수 있습니다 모델은 유효성 검사 세트와 테스트 세트에 매우 우수 측정항목은 좋습니다. 불행히도 새 환자에서는 모델 성능이 매우 떨어집니다. 생각해야 합니다.

테스트 세트에서 뛰어난 이 모델이 형편없이 실패한 이유는 무엇인가요? 어떻게 해야 할까요?
정답을 보려면 여기를 클릭하세요.

파이프라인 전체의 모델 기간 모니터링

서빙 데이터가 시간이 지남에 따라 진화하지만 모델이 정기적으로 재학습되지 않는 경우 모델 품질이 저하됩니다 모델이 생성된 후의 시간을 추적합니다. 경보에 대한 임곗값 기간을 설정할 수 있습니다. 포드의 상태를 모니터링하는 것 외에도 모델의 수명을 모니터링해야 하며 파이프라인 멈춤을 포착할 수 있습니다

모델 가중치 및 출력이 수치적으로 안정적인지 테스트

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

모델 성능 모니터링

유니콘 모양 예측기가 예상보다 인기가 많았습니다. 현재 훨씬 더 많은 예측 요청과 학습 데이터를 얻을 수 있습니다 여러분의 생각은 모델이 점점 더 많은 메모리를 차지하고 있다는 것을 깨닫기 전까지는 학습에 걸리는 시간을 줄일 수 있습니다 모델의 성능을 모니터링하기로 결정하는 방법은 다음과 같습니다. 다음 단계를 따르세요.

  • 코드, 모델, 데이터 버전별로 모델 성능을 추적하세요. 이러한 추적 성능 저하의 정확한 원인을 정확히 찾아낼 수 있습니다.
  • 새 모델 버전의 초당 학습 단계 테스트 고정 임곗값을 기준으로 할 수 있습니다
  • 메모리 사용에 대한 임곗값을 설정하여 메모리 누수를 포착합니다.
  • API 응답 시간을 모니터링하고 백분위수를 추적하세요. API 응답은 시간을 낭비할 수 있으며, 느린 응답은 잠재적으로 실질적으로 잘못된 측정항목을 사용할 수 있습니다.
  • 초당 응답하는 쿼리 수를 모니터링합니다.

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

모델의 유효성을 검사했습니다. 하지만 유니콘과 같은 실제 시나리오에서 어떻게 해야 할까요? 그런 다음 성능이 저하될 수 있습니다 하지만 게재 시 품질을 테스트하는 것은 어려운데, 라벨이 항상 지정된 것은 아닙니다. 서빙 데이터에 라벨이 지정되지 않은 경우 다음 테스트를 고려해 보세요.

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

  • 예측에서 유의미한 통계적 편향을 보이는 모델을 조사합니다. 자세한 내용은 분류: 예측 편향.

  • 모델의 실제 측정항목을 추적합니다. 예를 들어 예상 검색어를 사용자가 신고한 스팸과 비교해 보세요.

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

이러한 테스트를 사용하여 데이터 레이크에서 급격한 성능 저하와 느린 성능 저하를 살펴보겠습니다

임의 순서로 선택

데이터 생성 파이프라인을 재현 가능하게 만듭니다. 기능을 추가하려 한다고 가정해 보겠습니다. 모델 품질에 어떤 영향을 미치는지 확인할 수 있습니다. 공정한 실험을 위해서는 데이터 세트가 이 새로운 기능을 제외하고는 동일합니다. 이를 염두에 두고 데이터 생성 시 모든 무작위 순서 지정이 이루어지도록 결정론적:

  • RNG (임의 숫자 생성기)를 시드합니다. 시드는 한 번에 모든 RNG를 실행할 때마다 같은 순서로 같은 값을 출력하여 다시 생성 데이터 세트입니다.
  • 변하지 않는 해시 키를 사용합니다. 해싱은 데이터를 분할하는 일반적인 방법입니다. 샘플 데이터 등이 있습니다 각 예시를 해싱하고 결과 정수를 사용하여 예를 배치할 분할을 결정합니다. 해시 함수에 대한 입력값 변경해서는 안 됩니다. 사용하지 마세요. 현재 시간 또는 해시의 랜덤 숫자를 확인할 수 있습니다. 다시 만들 수 있습니다

위의 접근 방식은 데이터 샘플링과 분할 모두에 적용됩니다.

해싱 관련 고려사항

검색어를 수집하고 해싱을 사용한다고 상상해 보세요 검색어를 포함 또는 제외할 수 있습니다. 해시 키가 쿼리만 사용한 경우 여러 날의 데이터에 대해 항상 항상 제외할 수 있습니다. 항상 포함 또는 항상 제외 쿼리가 잘못된 경우는 다음과 같습니다.

  • 학습 세트에는 덜 다양한 쿼리 세트가 표시됩니다.
  • 평가 세트는 자동으로 결정되지 않으므로 인위적으로 어렵게 겹치지 않도록 하기 위한 것입니다 실제로는 게재 시간에 학습 데이터에서 일부 실시간 트래픽을 확인했으므로 이를 반영해야 합니다

대신 쿼리 + 날짜를 해싱하면 다른 해싱이 발생합니다. 매일같이

 

그림 7. 단독으로 해싱하는
            쿼리를 실행하면 매일 데이터가 동일한 버킷으로 이동되지만
            쿼리에 쿼리 시간을 더하면 데이터가
            각 날짜마다 다릅니다 세 가지 버킷은 학습, 평가,
            무시되었습니다.
그림 7. 쿼리 해싱과 쿼리 + 쿼리 시간의 해싱 비교