모델 모니터링 개요

이 문서에서는 BigQuery ML이 모델에서 사용하는 데이터를 평가하고 비교하여 머신러닝(ML) 모델을 모니터링하는 방법을 설명합니다. 여기에는 모델의 서빙 데이터를 학습 데이터와 비교하고 새 서빙 데이터를 이전에 사용한 서빙 데이터와 비교하는 작업이 포함됩니다.

데이터가 모델 성능에 영향을 미치므로 모델에서 사용하는 데이터를 이해하는 것은 ML 관점에서 중요합니다. 학습 데이터와 서빙 데이터 사이의 편차를 이해하는 것은 시간 경과에 따라 모델을 정확하게 유지하려면 특히 중요합니다. 모델은 학습 데이터와 유사한 서빙 데이터에서 가장 뛰어난 성능을 보입니다. 서빙 데이터가 모델을 학습시키는 데 사용된 데이터와 다르면 모델 자체가 변경되지 않았더라도 모델 성능이 저하될 수 있습니다.

BigQuery ML은 데이터 편향데이터 드리프트에 대해 학습 및 서빙 데이터를 분석하는 데 도움이 되는 함수를 제공합니다.

  • 데이터 비대칭은 학습 데이터의 특성 값 분포가 프로덕션의 데이터 제공과 크게 다를 때 발생합니다. 모델의 학습 통계는 모델 학습 중에 저장되므로 편향 감지를 사용하는 데 원래 학습 데이터가 필요하지 않습니다.
  • 데이터 드리프트는 시간 경과에 따라 프로덕션의 특성 데이터 분포가 크게 변경되면 발생합니다. 드리프트 감지는 연속적인 데이터 스팬(예: 서로 다른 데이터 제공 날짜 간)에 지원됩니다. 이렇게 하면 데이터 세트가 너무 많이 분기되어 모델을 재학습하기 전에 서빙 데이터가 시간 경과에 따라 변경되는 경우 알림을 받을 수 있습니다.

다음 함수를 사용하여 BigQuery ML에서 모델을 모니터링합니다.

  • ML.DESCRIBE_DATA: 학습 또는 서빙 데이터 세트에 대한 설명 통계를 계산합니다.
  • ML.VALIDATE_DATA_SKEW: 두 데이터 세트 간에 비정상적인 차이를 식별하기 위해 서빙 데이터 세트의 통계를 계산한 후 BigQuery ML 모델이 학습될 때 계산된 학습 데이터 통계와 비교합니다. 성능 개선 및 비용 절감을 위해 학습 데이터의 특성 열과 일치하는 서빙 데이터의 특성 열에 대해서만 통계가 계산됩니다.
  • ML.VALIDATE_DATA_DRIFT: 두 데이터 세트 간의 비정상적인 차이를 식별하기 위해 두 서빙 데이터 세트의 통계를 계산하고 비교합니다.
  • ML.TFDV_DESCRIBE: 학습 또는 서빙 데이터 세트에 대해 세분화된 설명 통계를 계산합니다. 이 함수는 TensorFlow tfdv.generate_statistics_from_csv API와 동일한 동작을 제공합니다.
  • ML.TFDV_VALIDATE: 두 데이터 세트 간의 비정상적인 차이를 식별하기 위해 학습 및 서빙 데이터 통계 또는 두 개의 서빙 데이터 통계 집합을 비교합니다. 이 함수는 TensorFlow validate_statistics API와 동일한 동작을 제공합니다.

사용 사례 모니터링

이 섹션에서는 일반적인 모니터링 사용 사례에서 BigQuery ML 모델 모니터링 함수를 사용하는 방법을 설명합니다.

기본 데이터 비대칭 모니터링

이 사용 사례는 데이터 비대칭에 대한 모델을 신속하게 개발 및 모니터링하려고 하고 기존 모니터링 솔루션과 통합하는 데 세분화된 편향 통계가 필요 없는 경우에 적합합니다.

이 사용 사례의 일반적인 단계는 다음과 같습니다.

  1. 학습 및 서빙 데이터에서 ML.DESCRIBE_DATA 함수를 실행하여 두 데이터 세트가 서로 적절히 비교되고 예상된 매개변수 내에 있는지 확인합니다.
  2. BigQuery ML 모델을 만들고 학습 데이터로 학습시킵니다.
  3. ML.VALIDATE_DATA_SKEW 함수를 실행하여 서빙 데이터 통계를 모델 생성 중에 계산된 학습 데이터 통계와 비교하여 데이터 편향이 있는지 확인합니다.
  4. 데이터 비대칭이 있으면 근본 원인을 조사하고 학습 데이터를 적절하게 조정한 후 모델을 다시 학습시킵니다.

기본 데이터 드리프트 모니터링

이 사용 사례는 데이터 드리프트에 대한 모델을 신속하게 개발 및 모니터링하려고 하고 기존 모니터링 솔루션과 통합하는 데 세분화된 드리프트 통계가 필요 없는 경우에 적합합니다.

이 사용 사례의 일반적인 단계는 다음과 같습니다.

  1. 학습 및 서빙 데이터에서 ML.DESCRIBE_DATA 함수를 실행하여 두 데이터 세트가 서로 적절히 비교되고 예상된 매개변수 내에 있는지 확인합니다.
  2. BigQuery ML 모델을 만들고 학습 데이터로 학습시킵니다.
  3. 데이터 드리프트가 있는지 확인하기 위해 ML.VALIDATE_DATA_DRIFT 함수를 실행하여 서로 다른 두 개의 서빙 데이터 세트의 통계를 비교합니다. 예를 들어 현재 서빙 데이터를 테이블 스냅샷의 이전 서빙 데이터 또는 ML.FEATURES_AT_TIME 함수를 사용하여 가져올 수 있는 특정 시점에 서빙된 특성과 비교해야 할 수 있습니다.
  4. 데이터 드리프트가 있으면 근본 원인을 조사하고 학습 데이터를 적절하게 조정한 후 모델을 다시 학습시킵니다.

고급 데이터 비대칭 또는 드리프트 모니터링

이 사용 사례는 세분화된 편향 또는 드리프트 통계를 기존 모니터링 솔루션과 통합하거나 다른 목적으로 통합하려는 경우에 적합합니다.

이 사용 사례의 일반적인 단계는 다음과 같습니다.

  1. 모니터링 솔루션에 적합한 간격으로 학습 및 서빙 데이터에서 ML.TFDV_DESCRIBE 함수를 실행하고 쿼리 결과를 저장합니다. 이 단계를 통해 향후 서빙 데이터를 이전 시점의 학습 및 서빙 데이터와 비교할 수 있습니다.
  2. 학습 및 서빙 데이터 통계 또는 두 개의 서빙 데이터 통계 집합에서 ML.TFDV_VALIDATE 함수를 실행하여 각각 데이터 편향 또는 특성 드리프트를 평가합니다. 학습 및 서빙 데이터는 JSON 형식의 TensorFlow DatasetFeatureStatisticsList 프로토콜 버퍼로 제공되어야 합니다. ML.TFDV_DESCRIBE 함수를 실행하여 올바른 형식으로 프로토콜 버퍼를 생성하거나 BigQuery 외부에서 로드할 수 있습니다. 다음 예시에서는 특성 편향을 평가하는 방법을 보여줍니다.

    DECLARE stats1 JSON;
    DECLARE stats2 JSON;
    
    SET stats1 = (
      SELECT * FROM ML.TFDV_DESCRIBE(TABLE `myproject.mydataset.training`)
    );
    SET stats2 = (
      SELECT * ML.TFDV_DESCRIBE(TABLE `myproject.mydataset.serving`);
    );
    
    SELECT ML.TFDV_VALIDATE(stats1, stats2, 'SKEW');
    
    INSERT `myproject.mydataset.serve_stats`
      (t, dataset_feature_statistics_list)
    SELECT CURRENT_TIMESTAMP() AS t, stats1;
    
    
  3. 데이터 비대칭이나 데이터 드리프트가 있으면 근본 원인을 조사하고 학습 데이터를 적절하게 조정한 후 모델을 다시 학습시킵니다.

모니터링 자동화

예약된 쿼리를 사용하여 모니터링을 자동화해 모니터링 함수를 실행하고 출력을 평가하고 이상치가 감지되면 모델을 다시 학습시킬 수 있습니다. 예약된 쿼리 설정의 일부로 이메일 알림을 사용 설정해야 합니다.

ML.VALIDATE_DATA_SKEW 함수를 자동화하는 방법을 보여주는 예시는 편향 감지 자동화를 참조하세요.