[Reliable Machine Learning] Chapter 7. Training Systems (1) - Overview
이 글은 <Reliable Machine Learning, Cathy Chen, Niall Richard Murphy, Kranti Parisa, D. Sculley, Todd Underwood> 7장 Training Systems을 참고하여 작성했습니다.
Chapter 7. Training Systems (1) - Overview
이번 글에서는 ML 학습 시스템의 주요 구성 요소와 아키텍처를 살펴보겠습니다.
ML 학습 시스템의 핵심 구성 요소
ML 학습 시스템은 데이터를 읽고 처리하는 것부터 최종 모델 배포까지의 전체 소프트웨어 환경을 의미하며, 학습 시스템의 주요 구성 요소는 다음과 같습니다:
- 학습 데이터
Feature와 Label를 포함한 학습에 필요한 모든 데이터를 의미하며, 이 데이터는 이미 전처리 및 표준화가 완료되어 있어야 합니다. 또한, 학습 과정에서 효율적으로 접근할 수 있도록 최적화된 형식으로 저장되며, 보안이 적용된 환경에서 관리되어야 합니다. - 모델 구성 시스템
모델의 구성 정보(하이퍼파라미터 포함)를 저장하고 관리하는 시스템입니다. 이 시스템은 버전 관리가 가능해야 하며, 모델을 만든 팀과 사용된 데이터를 기록한 메타데이터도 포함해야 합니다. - 모델 학습 프레임워크
TensorFlow, PyTorch와 같은 표준화된 ML 프레임워크를 사용하여 모델을 더 쉽게 구축할 수 있습니다. 이러한 프레임워크는 다음과 같은 기능을 제공합니다:- 오케스트레이션: 학습 프로세스의 여러 단계를 조정하고 올바른 순서로 작업이 수행되도록 합니다.
- 작업/작업 스케줄링: 분산 시스템에서 학습 작업을 시작하고 관리하는 기능입니다.
- 모델 품질 평가 시스템
모델 개발 과정에서 필수적인 요소로, 학습된 모델의 성능을 빠르고 일관되게 평가하여 개발자가 모델을 개선하거나 버릴지 결정할 수 있도록 도와줍니다. - 서빙 시스템으로 모델 동기화
학습과 평가가 끝난 후에는 모델을 서빙 시스템으로 동기화하여 실제 애플리케이션에서 사용할 수 있도록 해야 합니다.
기본적인 ML 학습 시스템 아키텍처
간단한 ML 학습 시스템은 데이터가 왼쪽에서 입력되고, 데이터를 처리한 후 모델이 오른쪽에서 출력되는 파이프라인을 가지고 있습니다. 이 과정에서 데이터는 정리되고 변환되며, ML 프레임워크를 통해 모델로 변환됩니다. 생성된 모델은 품질 평가 시스템을 통해 평가되며, 그 후 서빙 시스템에 동기화되어 배포됩니다.
주요 단계는 다음과 같습니다:
- 데이터 수집: 여러 소스에서 데이터를 수집합니다.
- 데이터 변환: 데이터를 정리하고, 표준화하며, 학습에 적합하게 변환합니다.
- 모델 학습: ML 프레임워크를 사용하여 알고리즘을 적용하고 모델을 생성합니다.
- 모델 평가: 생성된 모델의 정확도와 유용성을 평가합니다.
- 모델 배포: 평가가 완료된 모델을 서빙 시스템으로 동기화하여 실사용 애플리케이션에 통합합니다.
이제는 위 사진에서 확인되는 구성요소들의 역할에 대해서 다뤄보겠습니다.
Feature Store: 학습 데이터 관리
특징(Feature)은 학습 데이터에서 측정 가능한 요소를 말합니다. 예를 들어, 소매 데이터에서 '구매 가격'은 하나의 특징이 될 수 있습니다. 이러한 특징들은 일관된 표준화를 거쳐 시스템 전반에서 동일하게 사용되어야 합니다.
특징 저장소(Feature Store)는 이러한 특징을 저장하고 관리하는 시스템입니다. 매번 학습할 때마다 특징을 추출하는 대신, 한 번 저장해두고 필요할 때마다 불러와 사용할 수 있어 학습 속도를 크게 향상시킬 수 있습니다. 특징 저장소를 사용할 때는 학습에 사용된 특징 버전과 서빙에 사용되는 특징 버전이 달라질 수 있다는 점을 유의해야 합니다.
Model Management System: 모델 추적 및 관리
모델 관리 시스템은 모델의 메타데이터, 하이퍼파라미터, 학습 데이터를 추적 및 관리하며, 학습된 모델의 스냅샷을 저장해 전이 학습과 재학습에 유용하게 활용됩니다. 또한, 모델에서 사용된 특징과 저자를 추적할 수 있어 개발 및 디버깅에 도움이 됩니다. 체계적인 관리 시스템이 없으면 운영 중 문제를 파악하기 어려울 수 있으므로 필요에 맞는 시스템 구축이 중요합니다.
(모델 관리 시스템에서 다뤄야하는 메타데이터에 대한 정보는 여기에 더 자세히 있습니다)
Orchestration: 작업 스케줄링과 ML 프레임워크
오케스트레이션은 학습 프로세스의 다양한 작업을 조정하고 관리하는 역할을 합니다. Apache Airflow와 같은 도구를 통해 학습 작업이 제대로 수행되고 완료되는지 추적할 수 있습니다. 또한, Kubernetes를 사용해 네트워크 설정이나 자원 스케줄링을 처리하고, ML 프레임워크를 이용해 데이터를 쉽게 처리하는 것도 본 구성요소의 역할에 속합니다.
모델 품질 평가
ML 모델 개발은 끊임없는 시도와 실패의 연속입니다. 따라서 모델 품질을 평가하는 모델 품질 평가 시스템이 필수적입니다. 모델이 기대 성능을 내는지 확인하고, 성능이 나쁜 모델이 배포되는 것을 방지하는 자동화된 품질 관문 역할을 합니다. 모델 품질 평가를 어떻게 하는지에 대한 정보는 여기1, 여기2에 더 자세히 정리해두었습니다)
모니터링
전체 파이프라인을 모니터링하는 것이 중요합니다. 학습 시스템 처리량과 같은 주요 지표를 추적하여 시스템의 성능이 떨어질 경우 경고를 받을 수 있도록 모니터링 시스템을 구축해두는 것이 좋습니다. 모니터링 시스템을 어떻게 구축하는 지에 대한 자세한 내용은 9장에서 다룰 예쩡입니다.