많은 기업에서 미래 동향을 예측하는 데 예측 모델이 핵심적인 역할을 합니다. 그러나 이 모델의 정확도는 입력 데이터의 품질에 크게 의존합니다. 품질이 낮은 데이터는 부정확한 예측을 초래하고, 이는 결국 최적이 아닌 의사결정으로 이어질 수 있습니다. 이런 문제를 해결하기 위해 데이터브릭스 Lakehouse Monitoring이 등장했습니다. 이는 예측 모델에 유입되는 데이터의 품질 과 모델 성능을 동시에 모니터링할 수 있는 통합 솔루션을 제공합니다.
예측 모델에서는 모니터링이 특히 중요합니다. 예측은 시계열 데이터를 다루는데, 이 데이터의 시간적 요소와 순차적 특성으로 인해 추가적인 복잡성이 발생합니다. 예를 들어, 시간이 지남에 따라 입력 데이터의 통계적 특성이 변하는 '데이터 드리프트(data drift)' 현상이 일어날 수 있습니다. 이를 신속히 감지하고 대응하지 못하면 예측 정확도가 크게 저하될 수 있습니다.
또한, 예측 모델의 성능은 종종 평균 절대 백분율 오차(MAPE)와 같은 지표로 측정됩니다. 이는 예측값을 실제값과 비교하는 방식인데, 실제값은 예측한 시간이 지난 후에야 얻을 수 있습니다. 이러한 지연된 피드백 루프로 인해, 잠재적 문제를 조기에 식별하기 위해서는 입력 데이터의 품질과 모델 출력에 대한 선제적 모니터링이 더욱 중요해집니다.
최신 데이터로 통계적 예측 모델을 자주 재훈련하는 것이 일반적이지만, 모니터링은 여전히 가치가 있습니다. 초기에 드리프트를 감지하고 불필요한 계산 비용을 피할 수 있기 때문입니다. PatchTST와 같이 딥러닝을 사용하고 GPU가 필요한 복잡한 모델의 경우, 자원 제약으로 인해 재훈련 빈도가 낮을 수 있어 모니터링이 더욱 중요해집니다.
자동 하이퍼파라미터 튜닝을 사용하면 실행 간 편향(skew)과 일관성 없는 모델 성능이 발생할 수 있습니다. 모니터링을 통해 모델 성능이 저하되었을 때 빠르게 파악하고, 하이퍼파라미터를 수동으로 조정하거나 입력 데이터의 이상을 조사하는 등의 시정 조치를 취할 수 있습니다. 또한 모니터링은 모델 성능과 계산 비용 사이의 적절한 균형을 맞추는 데 도움이 됩니다. 자동 튜닝 은 특히 매 재훈련 주기마다 무분별하게 실행될 경우 리소스를 많이 소모할 수 있습니다. 시간에 따른 모델 성능을 모니터링함으로써, 자동 튜닝이 실제로 상당한 개선을 가져오는지 아니면 단순히 불필요한 오버헤드를 추가하는지 판단할 수 있습니다. 이러한 인사이트를 통해 모델 훈련 파이프라인을 최적화할 수 있습니다.
데이터브릭스 Lakehouse Monitoring은 모든 테이블에 걸쳐 데이터의 통계적 특성과 품질을 모니터링하도록 설계되었습니다. 또한 모델 입력과 예측을 포함하는 추론 테이블(inference tables)을 모니터링하여 머신러닝 모델의 성능을 추적하는 특정 기능도 제공합니다. 예측 모델의 경우 다음과 같은 기능을 지원합니다:
예측 모델 모니터링 방법을 논의하기 전에, 데이터브릭스 플랫폼에서 이러한 모델을 개발하는 방법에 대해 간략히 살펴보겠습니다. 데이터브릭스는 시계열 예측 모델을 포함한 머신러닝 모델을 대규모로 구축, 훈련, 배포할 수 있는 통합 환경을 제공합니다.
다음은 예측을 생성하는 데 사용할 수 있는 여러 인기 있는 라이브러리와 기술들입니다:
Prophet과 ARIMA/SARIMA 같은 인기 있는 라이브러리 외에도, Databricks는 예측을 위한 AutoML을 제공합니다. AutoML은 알고리즘 선택, 하이퍼파라미터 튜닝, 분산 훈련과 같은 작업을 자동으로 처리하여 예측 모델 생성 과정을 단순화합니다. AutoML을 사용하면 다음과 같은 이점이 있습니다:
AutoML로 만든 모델은 MLflow를 통한 실험 추적과 데이터브릭스 Model Serving을 통한 배포 및 모니터링과 쉽게 통합할 수 있습니다. 생성된 노트북은 커스터마이즈 가능하고 프로덕션 워크플로우에 쉽게 통합할 수 있는 코드를 제공합니다.
모델 개발 워크플로우를 간소화하기 위해 MLflow를 활용할 수 있습니다. MLflow는 머신러닝 수명 주기를 위한 오픈소스 플랫폼으로, Prophet, ARIMA 등의 모델을 기본적으로 지원하여 시계열 실험에 이상적인 실험 추적을 가능하게 합니다. 매개변수, 메트릭, 아티팩트 등을 기록할 수 있습니다. 이는 모델 배포를 단순화하고 재현성을 높이지만, Lakehouse Monitoring을 위해 MLflow 사용이 필수는 아닙니다 - MLflow 없이도 모델을 배포할 수 있으며 Lakehouse Monitoring은 여전히 이를 추적할 수 있습니다.
예측 모델을 훈련한 후에는 사용 사례에 따라 유연하게 추론을 위해 배포할 수 있습니다. 실시간 예측의 경우, 데이터브릭스 Model Serving을 사용하여 몇 줄의 코드만으로 모델을 낮은 지연 시간을 제공하는 REST 엔드포인트에 배포할 수 있습니다. 실시간 추론을 위해 모델이 배포되면 데이터브릭스는 자동으로 입력 특성과 예측을 관리형 Delta 테이블인 추론 로그 테이블(inference log table)에 기록합니다. 이 테이블은 Lakehouse Monitoring을 사용하여 프로덕션 환경에서 모델을 모니터링하는 기반이 됩니다.
하지만 예측 모델은 종종 배치 스코어링 시나리오에서 사용되며, 이 경우 일정에 따라 예측이 생성됩니다(예: 매일 밤 다음 날에 대한 예측 생성). 이런 경우, 별도의 파이프라인을 구축하여 데이터 배치에 대해 모델을 스코어링하고 결과를 Delta 테이블에 기록할 수 있습니다. 데이터브릭스 클러스터에 모델을 직접 로드하고 거기서 데이터 배치를 스코어링하는 것이 더 비용 효율적입니다. 이 방식은 모델을 API 뒤에 배포하고 여러 곳에서 컴퓨팅 리소스에 대한 비용을 지불하는 오버헤드를 피할 수 있습니다. 배치 예측의 로그 테이블도 실시간 추론 테이블과 동일한 방식으로 Lakehouse Monitoring을 사용하여 모니터링할 수 있습니다.
예측 모델에 실시간과 배치 추론이 모두 필요한 경우, 실시간 사용 사례에는 Model Serving을 사용하고 배치 스코어링에는 클러스터에 직접 모델을 로드하는 방식을 고려할 수 있습니다. 이 하이브리드 접근 방식은 필요한 기능을 제공하면서도 비용을 최적화합니다. Lakeview 대시보드를 활용하여 예측 보고서에 대한 인터랙티브한 시각화를 구축하고 인사이트를 공유할 수 있습니다. 또한 이메일 구독을 설정하여 일정에 따라 대시보드 스냅샷을 자동으로 전송할 수 있습니다.
어떤 접근 방식을 선택하든, 모델 입력과 출력을 표준화된 Delta 테이블 형식으로 저장함으로써 데이터 드리프트를 모니터링하고, 예측 변화를 추적하며, 시간에 따른 정확도를 측정하는 것이 간단해집니다. 이러한 가시성은 프로덕션 환경에서 신뢰할 수 있는 예측 파이프라인을 유지하는 데 중요합니다.
이제 Databricks에서 시계열 예측 모델을 구축하고 배포하는 방법을 살펴보았으니, Lakehouse Monitoring을 사용하여 이를 모니터링하는 주요 측면을 자세히 살펴보겠습니다.
예측 모델이 프로덕션 환경에서 계속 잘 작동하도록 하려면 입력 데이터와 모델 예측 모두를 잠재적인 문제에 대해 모니터링하는 것이 중요합니다. 데이터브릭스 Lakehouse Monitoring을 사용하면 입력 피처 테이블과 추론 로그 테이블에 대한 모니터를 쉽게 생성할 수 있습니다. Lakehouse Monitoring은 Unity Catalog 위에 구축되어 데이터를 통합적으로 관리하고 모니터링할 수 있게 해주며, 작업 공간에 Unity Catalog가 활성화되어 있어야 합니다.
예측 모델을 모니터링하려면 모델의 입력 특성, 예측, 그리고 선택적으로 실제 레이블을 포함하는 테이블에 대해 추론 프로필 모니터를 생성해야 합니다. 데이터브릭스 UI 또는 Python API를 사용하여 모니터를 생성할 수 있습니다.
UI에서 추론 테이블로 이동하여 "품질(Quality)" 탭을 클릭합니다. "시작하기(Get Started)"를 클릭하고 모니터 유형으로 "추론 프로필(Inference Profile)"을 선택합니다. 그런 다음 아래와 같은 주요 매개변수를 구성합니다.