Google Cloud Platform(GCP)
가장 일반적인 데이터 파이프라인 구축 단계
- 데이터 추출(Extract):
데이터 파이프라인의 첫 번째 단계는 데이터를 소스에서 추출하는 것.
- Google Cloud Storage: 원시 데이터 파일이나 로그 파일을 저장하는 데 사용됩니다.
- Google BigQuery: 구조화된 데이터를 추출하고 쿼리하여 가져올 수 있습니다.
- 외부 소스(예: 데이터베이스, 외부 API 등): Dataflow나 Cloud Composer 같은 서비스를 사용하여 데이터를 추출할 수 있습니다.
- 데이터 변환(Transform):
추출한 데이터를 원하는 형식으로 변환하고 정제하는 단계입니다. 데이터 변환은 다음과 같은 방법으로 수행될 수 있습니다.
- Google Cloud Dataflow: 배치 또는 스트리밍 데이터를 변환하고 처리하는 데 사용됩니다.
- Apache Beam: Dataflow의 오픈 소스 버전으로 다양한 언어로 데이터 변환 작업을 정의할 수 있습니다.
- 데이터 로딩(Load):
변환된 데이터를 목적지에 로드하는 단계입니다.
- Google BigQuery: 구조화된 데이터를 로드하고 저장하는 데 사용됩니다.
- Google Cloud Storage: 비구조화 데이터를 저장하는 데 사용됩니다.
- 외부 데이터베이스 또는 서비스: 변환된 데이터를 외부 데이터베이스나 웹 서비스에 로드할 수 있습니다.
- 스케줄링과 관리:
데이터 파이프라인을 자동화하고 스케줄링하기 위해 GCP의 다양한 서비스를 사용할 수 있습니다.
- Google Cloud Composer: Apache Airflow를 기반으로 한 워크플로우 자동화 및 스케줄링 서비스입니다.
- Google Cloud Scheduler: 정기적인 작업을 스케줄링하는 데 사용됩니다.
- 모니터링과 로깅:
데이터 파이프라인의 성능을 모니터링하고 문제를 해결하기 위해 로깅 및 모니터링 도구를 활용합니다.
- Google Cloud Monitoring: 애플리케이션 및 인프라스트럭처 성능을 모니터링합니다.
- Google Cloud Logging: 로그 데이터를 수집하고 분석하여 문제를 해결합니다.
위의 단계에서는 주요한 GCP 서비스들을 활용하여 데이터 파이프라인을 구축하는 과정을 설명했습니다. 실제로는 프로젝트의 요구 사항에 따라 이러한 서비스를 조합하고 필요한 작업을 수행하는 방식을 조정하게 될 것입니다.
- 데이터 파이프라인을 구축할 때는 처음에 세 가지 모델을 만들 때 파이프라인을 구축하는 것이 좋습니다. 이렇게 하면 각 모델이 독립적으로 학습하고 평가할 수 있으며, 병합된 모델의 성능을 향상시키는 데 도움이 됩니다.
- GCP 상에서 실시간으로 학습시키는 기능을 추가하려면 CloudML Engine을 사용할 수 있습니다. CloudML Engine은 머신 러닝 모델을 훈련하고 배포하는 데 사용할 수 있는 클라우드 서비스입니다. CloudML Engine을 사용하면 모델을 실시간으로 학습시킬 수 있으며, 새로운 데이터가 제공될 때마다 모델을 자동으로 업데이트할 수 있습니다.
- 모델 자동화는 Cloud Composer를 사용하여 수행할 수 있습니다. Cloud Composer는 Apache Airflow를 기반으로 하는 클라우드 서비스입니다. Apache Airflow는 파이프라인을 자동화하는 데 사용할 수 있는 오픈 소스 프레임워크입니다. Cloud Composer를 사용하면 파이프라인을 정의하고 실행할 수 있으며, 파이프라인을 자동으로 실행할 수 있습니다.
다음은 데이터 파이프라인을 구축하는 예입니다.
- Cloud Storage에 이미지 데이터를 저장합니다.
- Cloud Dataflow를 사용하여 이미지 데이터를 처리하고 각 모델에 공급합니다.
- 각 모델을 Cloud ML Engine에서 훈련합니다.
- Cloud ML Engine에서 훈련된 모델을 Cloud Storage에 저장합니다.
- Cloud Endpoints를 사용하여 모델을 배포합니다.
이 데이터 파이프라인을 사용하면 카메라로 피부 질환을 찍으면, 그 피부 질환이 어떤 것이고, 얼마나 심각하고, 전염성이 있는지 알려주는 웹을 만들 수 있습니다.