학습 목표
- RDBMS와 NoSQL의 차이와 각각의 장단점을 이해할 수 있다.
- 충분한 가용성이 확보되지 않은 다양한 문제 상황을 이해하고, 상황에 따른 솔루션이 무엇인지 이해할 수 있다.
- 다음 용어에 대한 간단한 정의를 내릴 수 있다: 인덱싱, 레플리카, 파티셔닝, 캐싱, 배치 작업, 스트림 처리
- 이벤트 기반 아키텍처를 설명할 수 있다.
- RDBMS에서 테이블을 만들 때 스키마(필드) 디자인을 할 수 있다.
- 데이터 파이프라인의 필요성을 이해할 수 있다.
- OLTP와 OLAP의 차이를 이해할 수 있다.
- ETL 과정을 설명할 수 있다.
- MLOps와 DevOps의 차이를 이해할 수 있다.
- 리눅스 명령과 프로그래밍 언어를 이용해 간단한 데이터 파이프라인을 구현할 수 있다.
- 간단한 수준의 SQL문을 사용할 수 있다.
- 다양한 데이터 소스로부터 원시 데이터를 수집하여 분석을 위해 데이터 웨어하우스와 같은 별도의 데이터 저장소로 이전하는 과정
- 다양한 경로로부터 수집되는 데이터를 웨어하우스에 적재한 후, 적재한 데이터를 바탕으로 효과적으로 분석하기 용이하게 만들기 위함
- MLOps를 실천하기 위해 사전에 준비되어야 할 필수적인 단계
OLTP vs OLAP
- OLTP(Online Transaction Processing)
- 목적이 트랜잭션(기본적인 CRUD 작업)에 포커스가 맞추어진 데이터베이스
- 분석이 불가능한 것은 아니지만, 여러 개의 테이블을 함께 묶어 조회하려면 그만큼 복잡도가 늘어나며, 복잡한 조회로 인해 기본적인 트랜잭션에도 성능상의 지장을 줄 수 있음
- OLAP(Online Analytical Processing)
- 적재된 데이터를 다양한 방법으로 분석하는 데 포커스가 맞춰진 데이터베이스
- 데이터 기반의 의사결정을 위한 도구로, 다양한 관점의 분석을 하는 데 적합함
- 다양한 데이터 소스로부터 수집되는 데이터를 통합하는 데 목적이 있음
- 성능상의 한계를 극복하기 위해 OLTP가 지원하는 몇 가지 기능을 포기함으로서, 빠른 분석 성능을 달성할 수 있음
OLTP | OLAP | |
목적 | CRUD 작업과 같은 트랜잭션 처리 | 분석, 빅데이터 수집 |
데이터 종류 | 정형적이며, 정규화된 데이터 | 정형 및 비정형 데이터 |
특징 | 테이블 간 관계, 데이터의 무결성, 정규화 여부가 중요 | 빠른 분석과 다차원 정보 제공이 중요 |
ETL과 ELT
- Extract 추출
- 대상
- 관계형 데이터베이스(RDBMS)
- NoSQL
- 텍스트 파일(JSON, log, txt 등)
- SaaS로부터 생성되는 데이터(Google Ads와 같은 광고 데이터)
- 데이터 레이크(비정형 데이터를 포함해 원시 데이터를 저장하는 공간)
- 대상
- Load 적재
- 대상
- 데이터 웨어하우스
- 대상
- Transform 변환
- 비정형 데이터를 정형화하는 과정이 포함될 수 있음
- ETL
- 추출→변환→적재
- 적재하는 과정에서 변환이 이루어짐
- Schema-on-Write
- 이 방식으로 적재된 데이터는 이미 정형화되어 있기 때문에, 비즈니스 분석이나 시각화에 용이함
- ELT
- 추출→적재→변환
- 적재하고 나서 분석을 시작할 때 변환 작업이 일어남
- Schema-on-Read
- 비정형 데이터를 분석할 경우 해당 작업이 진행되는데, 상대적으로 정형화된 데이터 분석보다는 훨씬 느리지만 최근에는 클라우드의 발전 덕분에 빈번하게 사용됨
- 데이터가 쌓이는 규모가 큰 현대의 빅데이터 시대에는 적재하기 전 변환 과정이 오히려 병목이 될 수 있으므로, 이러한 한계를 극복하기 위해 해당 방식을 사용하기도 함
MLOps
- 머신 러닝(Machine Learning)
- 데이터를 이해하는 알고리즘의 과학이자 애플리케이션
- 세 가지 주요 학습
- 지도학습으로 미래 예측
- 강화학습으로 반응형 문제 해결
- 비지도 학습으로 숨겨진 구조 발견
- 전처리→학습→평가→예측의 순서로 워크플로 시스템을 구축하고 있음
- MLOps
- DevOps는 개발과 운영을 따로 나누지 않고 개발의 생산성과 운영의 안정성을 최적화하기 위한 문화이자 방법론
- 이 DevOps를 머신 러닝 시스템에 적용한 것
- MLOps 파이프라인에서 모델 검증 및 제공/배포 단계는 DevOps에서 애플리케이션을 테스트하고 배포하는 과정과 흡사함
- 머신 러닝을 도입한 데이터 처리 파이프라인
- 데이터 분석
- 데이터의 이해를 위한 탐색적 데이터 분석(EDA, Exploratory Data Analysis) 수행
- 이때 모델에 필요한 데이터 스키마 및 특성을 이해해야 함
- 데이터 준비(추출 및 정재)
- 데이터 소스에서 관련 데이터를 추출(extract) 및 정제
- 변환(transform), 집합(aggregate), 중복 제거 등의 과정이 포함됨
- 모델 학습 및 튜닝
- 다양한 알고리즘을 구현하고, 하이퍼 파라미터를 조정(튜닝)하고 적용하여 학습된 모델로 결과를 도출함
- 모델 평가 및 검증
- 모델을 평가하여 모델의 정확도 수치를 확인함
- 모델 성능을 검증하여 배포에 적합한 수준인지 검증
- 모델 제공
- CI/CD 툴을 이용하여 프로덕션 수준에서 이용할 수 있도록 파이프라인을 자동화
- 모델 배포 및 모니터링
- 애플리케이션에서 사용 가능하도록 endpoint를 활성화
- 데이터 분석
실험(Machine Learning) | 개발(Develop) | 운영(Operation) |
비즈니스의 이해 데이터 탐색/가공 초기 모델 최적화/평가 | 지속적 통합 - 빌드(모델 최적화) - 테스트 지속적 전달 - 모델 등록 | 지속적 배포 - 서빙 데이터 피드백 루프 - Data Collection 시스템/모델 모니터링 - Data Drift 모니터링 |
- 머신 러닝 생애 주기
- MLOps의 전망
- 단순히 머신 러닝 뿐 아니라 데이터를 수집하고 분석하는 단계, 머신러닝 모델을 학습하고 배포하는 단계까지 전 과정을 대상으로 보고있음
- AI 사용이 급격하게 증가한 지금 머신 러닝을 서비스에 구현하고자 한다면 MLOps는 선택이 아니라 필수적으로 도입되어야 함
- 머신 러닝 시스템을 적용하고 운영하기 위해서는 단순히 좋은 머신 러닝 모델만으로 간으한 것이 아니라, 모델을 운영하기 위한 기반 데이터와 인프라를 포함한 모든 시스템이 유기적으로 돌아가야 함
- ML 프로세스의 자동화 수준에 따라 ML 시스템의 성숙도를 평가할 수도 있음
- DevOps와 비교
Stage | DevOps | MLOps |
Test | 애플리케이션 모듈 간의 통합 테스트 | 데이터 검증, 학습된 모델 품질 평가, 몯레 검증 |
Deployment | 프로비저닝 및 애플리케이션 준비 | 학습된 ML 모델 배포 + 새로운 모델이 재학습 될 수 있는 파이프라인 구성 |
Operate | 애플리케이션 트래픽, 사용자 등의 모니터링 | 데이터 요약 통계 모니터링 |
- 지속적 통합과 지속적 배포(CI/CD)의 정의가 다르게 해석될 수 있음
DevOps | MLOps | |
통합의 대상 | 다양한 코드가 하나의 artifact로 결합되는 통합 | 데이터, 스키마, 모델 테스트를 결합하는 통합 |
배포의 대상 | 단일 소프트웨어 패키지의 배포 | ML 파이프라인 전체를 배포 |
- MLOps에서 모델을 꾸준히 학습시키고 평가하는 단계를 일컬어 CT(Continuous Training)라고 표현함
'Code States > TIL' 카테고리의 다른 글
[0403] Section 1. 프로젝트 - WAS, Web Server 실습 Day 1 (0) | 2023.04.03 |
---|---|
[0331] (페어) 데이터베이스 - 로그 파이프라인 (0) | 2023.03.31 |
[0329] 데이터베이스 - 문제 상황에 따른 해결책 (0) | 2023.03.29 |
[0329] 데이터베이스 - 데이터베이스 기초 (0) | 2023.03.29 |
[0328] (페어) WAS와 Web Server - CozStory WAS 개발 (0) | 2023.03.28 |