Databricks
- 스파크를 만든 엔지니어들이 설립한회사
- 아파치 스파크 실행환경 제공해주는 클라우드 기반 플랫폼
- 스파크 소스를 테스트 할 수 있는 웹 UI 환경 제공. 설치작업 없이 테스트 가능
- Spark, Dleta Lake, MLFlow, Koalas까지 데이터 환경 오픈소스 만듦
- Lakehouse Platform 서비스 제공
주요기능
- 데이터 처리 예약 및 관리, 특히 ETL
- 대시보드 및 시각화 생성
- 보안, 거버넌스, 고가용성 및 재해 복구 관리
- 데이터 검색, 주석 및 탐색
- ML(기계 학습) 모델링, 추적 및 모델 서비스
- 생성 AI 솔루션
요금
- Databricks Unit(DBU): 사용되는 처리 능력의 정규 단위 (시간당 처리 단위. 초당 사용량 증가분에 따라 청구됨)
- 전기요금 지불처럼 소비한 에너지 양에 대한 비용 지불
Service
- 클라우드-런타임-워크스페이스 레이어를 중점으로 바라보면 아래와 같은 구조를 가짐
- AWS, Azure, Google Cloud와 연동 가능
- 단 하나의 플랫폼에서 데이터 분석가, 엔지니어 ,사이언티스트, 플랫폼 운영자 각각의 목적에 맞게 빠르게 데이터 환경 구축하고 원하는 작업 수행할 수 있도록 단순화
Databricks Architecture
- control과 data plane으로 나뉨
- Control plane:데이터 브릭스가 관리하는 백엔드 서비스들 포함. 노트북 커맨드와 다른 워크스페이스 설정은 이곳에 암호화되어 저장
- Data plane: AWS, Azure, Goolge 계정을 통해 관리되며 데이터가 저장되는 곳임 동시에 데이터가 처리되는 곳.
- 각 클라우드 계정을 사용해 다른 외부 데이터 저장소 접근 및 외부 스트리밍 데이터 원천으로부터 데이터 입수 가능
모델이 아닌 코드 배포 접근 방식을 권장
- ML 개발시 Databricks는 모델이 아닌 코드 배포를 권장
- 매주 모델을 재교육해야하는 ML파이프라인을 개발할 경우, 코드는 변경되지 않을 수 있지만 새로운 데이터때문에 모델은 매주 재교육 해야할 수 있음
- 모델 교육에는 비용과 시간이 많이 소요됨. 모델을 배포, 제공, 모니터링 하는 코드는 모델을 재교육하지 않고도 업데이트 가능
- 여러번의 검증으로 보다 확실한 성능 확인 가능
Databricks MLflow이란
MLflow
- 머신러닝 라이프 사이클을 관리하기 위한 오프소스 플랫폼.
- 주요기능
- 실험을 추적하여 매개변수와 결과를 비교하고 기록
- 다른 데이터 과학자와 공유, 프로덕션으로 전송하기 위해 ML코드 패키징
- 사용 가능한 다양한 라이브러리를 사용하여 ML 모델 관리 및 배포
- 모델관리를 위해 모델 등록, 모델 제공 이를 REST 앤드포인트로 호스팅
MLflow Tracking
- 모델 개발 시 얻게되는 모든 데이터와 정보를 쉽게 기록, 추적, 시각화 기능 제공
- 시각화하기위해 기계학습 코드를 실행할 때 매개변수, 코드버전, 측정항목 및 출력파일을 로깅하기 위한 API 및 UI
MLflow 프로젝트
- 모델 개발 시 프로젝트 구성 및 관리 기능 제공
- 재현 가능한 방식으로 코드, 데이터, 환경정보, 파라미터 등을 패키징
- 코드버전 관리: git 과 같은 버전 관리 시스템과 통합하여 관리
- 프로젝트 패키징: 코드와 필요한 패키지, 데이터 등을 패키징하여 쉽게 배포하고 실행환경 제공
- 실행환경 관리: 실행환경 설정하여 독립적인 실행 환경 생성 가능
- 파라미터 관리: 실행 시 사용되는 파라미터 관리
- 모델 버전 관리: 버전을 관리하고 저장하여 재사용이 가능하도록 기능 제공
MLflow 모델
- 모델 개발 시 모델 관리 및 배포를 위한 기능 제공
- 머신러닝의 모델 훈련과 평가,추론을 모두 지원하는 종합적인 모델 관리 기능
- 모델의 저장, 버전관리, 형식 변환, 메타데이터 관리, 배포 등을 편리하게 수행할 수 있게 기능제공
- 모델 저장 및 버전 관리: 모델 저장하고 버전 관리하여 이전 버전과 비교 및 재사용 가능
- 모델 추론 함수 정의: 저장된 모델에 대한 추론 함수 정의, 새로운 데이터에 대한 예측 쉽게 수행 가능
- 모델 형식 변환: 다양한 머신러닝 라이브러리와 프레임워크 간의 모델 형식 변환, 모델 쉽게 이식 가능
- 모델 메타데이터 관리: 모델의 생성일자, 생성자, 학습된 데이터 등을 추적 기능
- 모델 배포: 저장된 모델을 서버에 배포. 클라이언트에서 쉽게 모델 추론 수행 가능
Model Registry
- 머신러닝 모델을 팀 내에서 공유, 추적, 검증, 배포하기 위한 중앙 집중식 저장소 역할
- 팀 내의 머신러닝 개발자와 데이터 과학자가 함께 모델 버전 관리
- 모델 저장 및 버전관리: 모델 저장 하고 버전관리, 이전 버전과 비교 및 재사용 가능
- 모델 등록: 모델을 등록하여 다른 팀원이 모델에 대한 정보 공유
- 모델 버전 관리: 모델 버전을 관리하여 이전 버전과 비교 및 추적 가능
- 모델 배포: 모델을 배포하여 다른 팀원이 모델 추론을 수행할 수 있도록 함
Databricks ML Workflow
Data preparation & featurization
- 데이터 준비
- EDA
- 노트북을 사용하여 데이터를 탐색하고 분석
- 사용 가능 데이터가 비즈니스 문제 해결할 수 있는지 평가하는 것
- 모델 훈련을 위한 데이터 준비 및 기능화 단계 식별
ML (MLflow 활용)
- MLflow는 머신러닝 프로젝트의 전체 수명 주기 관리 플랫폼
- 개발
- 카탈로그 테이블을 사용하여 모델 훈련 파이프라인 개발
- 훈련 및 튜닝
- 모델 매개변수, 지표 및 아키팩트를 ML 추적 서버에 기록
- 하이퍼파라미터 훈련하고 튜닝한 후 최종 모델 아티팩트가 추적 서버에 기록되어 모델, 훈련 입력 데이터, 모델 생성에 사용된 코드 간의 링크 기록
- 평가
- 보유 데이터를 테스트하여 모델 품질 평가
- 테스트 결과는 MLflow 추적 서버에 기록
- 평가 목적은 새로 개발된 모델이 현재 생산 모델보다 더 나은 성능인지 판단하는 것
- 모델 검증 및 배포
- 모델 검증
모델 훈련 파이프라인에서 URI를 가져와 Unity 카탈로그에 모델을 로드하고 유효성 검사 실행
유효성 검사는 상황에 따라 다름.
주요기능은 모델 배포 단계를 진행해야 하는지 여부 결정
- 모델 배포
모델 제공 앤드포인트와 같은 필요한 추론 인프라를 설정할 수 있음
Git Architecture
Databricks platform 개념
workspace
- Control Plane에 존재하는 모든 데이터브릭스 자산에 접근할 수 있는 환경
- 노트북, 라이브러리, 대시보드와 실험과 같은객체들을 폴더로 구조화하고 객체와 컴퓨팅 리소스에 대한 접근을 제공
- 라이브러리: 노트북이나 job에 사용 가능한 코드패키지
- 실험: ML 모델 훈련을 위한 ML flow 실행의 묶음
interface
- 여러 assets에 접근하기 위해 데이터브릭스가 제공하는 인터페이스(UI, API, CLI)
Data Management
- 분석을 행하거나 ML 모델에 들어가는 데이터를 가지고 있는 객체를 관리
Databricks File System(DBFS)
- blob 스토어를 래핑한 파일시스템 추상화 레이어
- 파일과 다른 디렉토리들을 포함한 디렉토리를 가지고 있음
- 데이터브릭스를 학습하기위해 사용할 수 있는 데이터셋을 가지고 자동적으로 생성
Metastore
- 데이터웨어하우스에 존재하는 다양한 테이블들과 파티션들에 대한 구조 정보 저장하는 컴포넌트
- 모든 데이터브릭스 배포는 모든 메타데이터를 영속화하기 위해서 모든 클러스터가 접근 가능한 중앙 하이브 메타스토어를 가짐
Computation management
- 데이터브릭스에서 컴퓨팅을 하기 위해 알 필요있는 개념
Cluster
- job 들이 실행되는 컴퓨팅 자원이나 설정들의 모음
- all-purpose: UI, CLI또는 Rest API를 사용해서 이 타입의 클러스터 생성가능. 수동으로 클러스터 종료, 재시작, 공유 가능
- job: job을 새로운 클러스터에서 실행할 때 새로은 job cluster를 생성하고 job이 끝나면 클러스터 종료
- idle한 상태로 사용할 수 있는 인스턴트들로 클러스터 시작과 오토 스케일링 시간을 줄임
- pool에 attatched되었을 때 하나의 클러스터는 풀에서 클러스터의 드라이버와 워커 할당
- 만약 풀이 클러스터 요청을 처리하기 충분한 idle리소스를 가지지 못한다면 인스턴스 provider로 부터 새로운 인스턴스 할당하도록 하여 확장
- attached 클러스터가 종료할 때, 클러스터가 사용한 인스턴스들은 pool에 반환되고 다른 클러스터에 의해 재사용 될 수 있음
- 데이터 브릭스에 의해 관리되는 클러스터에서 실행되는 핵심 컴포넌트
- 데이터 브릭스 런타임
아파치 스파크를 포함하는 동사에 사용성, 성능, 분석의 보안을 높여주는 몇가지 컴포넌트와 업데이트 추가
- ML용 데이터 브릭스 런타임
데이터 브릭스 런타임 기반
ML과 데이터 사이언스를 위한 환경을 제공
Tensorflow, Keras, Pytorch, XGBoost같은 유명한 라이브러리 포함
- Genomics용 데이터브릭스 런타임
genomic과 biomedical 데이터를 다루는데 최적화된 데이터브릭스 런타임 버전
- 데이터브릭스 라이트
오픈소스 아파치 스파크 런타임 패키징
데이터브릭스가 제공하는 추가 성능이나 기능이 필요없는 작업에 사용
- 노트북 라이브러리를 즉시 또는 스케쥴된 형태로 실행하는 non-interactive한 메커니즘
- 다른 가격 정책을 적용 받는 2가지 타입의 워크로드 구분
- 데이터 엔지니어링
데이터 브릭스 job 스케쥴러가 각 워크로드를 위해 생성하는 job 클러스터에서 실행되는 워크로드
- 데이터 분석
interactive한 워크로드로 all-purpose 클러스터에서 실행되나, all-purpose 클러스터에서 실행되는 job도 interactive 워크로드로 간주
- 각각 지원하는 프로그래밍 언어를 위한 REPL 환경상태
- Python, R, Scala, SQL
Model Management
Model
- 예측값들과 결과물 간의 관계를 나타내는 수학적 함수
- training과 inference 스탭으로 구성
- 존재하는 데이터셋을 사용해 모델 train, 새로운 데이터에 대한 결과물을 예측하기 위해 모델 사용
- ML 모델 훈련과 관련된 파라미터, 메트릭, 태그들의 모음
- Runs를 위한 점근 관리 및 묶임의 주요 단위
- 모든 MLflow Runs는 Experiment(실험)에 속하게 됨
- 시각화, 검색, runs들을 비교, run 아키팩트나 다른 도구에서의 분석을 위한 메타데이터를 다운로드 할 수 있도록 해줌
Authentication and authorization
- 인증과 인가는 User, Group, Access Control List(ACL)이라는 개념을 중심으로 처리
플랫폼
- Databricks platform
- Buisness용.
- 제약없이 모든 기능 사용가능
- Free trial 버전 14일간 사용
- Community edition
Databricks 생성 및 S3 데이터 연동 hands on
작업공간 생성
- workspace name 설정, aws region 설정
- quick start 버튼 클릭 후 바로 aws로 넘어감
- 모든 필드는 미리 작성되어 있음
- iam 리소스 생성 승인 체크
- 스택생성
- 작업공간 생성 완료 상태 Create Complete 확인
클러스터 생성
{
"num_workers": 0,
"cluster_name": "soojung choi's Personal Compute Cluster",
"spark_version": "15.3.x-cpu-ml-scala2.12",
"spark_conf": {
"spark.master": "local[*, 4]",
"spark.databricks.cluster.profile": "singleNode"
},
"aws_attributes": {
"first_on_demand": 1,
"availability": "ON_DEMAND",
"zone_id": "auto",
"instance_profile_arn": null,
"spot_bid_price_percent": 100
},
"node_type_id": "i3.xlarge",
"driver_node_type_id": "i3.xlarge",
"ssh_public_keys": [],
"custom_tags": {
"ResourceClass": "SingleNode"
},
"spark_env_vars": {},
"autotermination_minutes": 4320,
"enable_elastic_disk": true,
"init_scripts": [],
"single_user_name": "soojungchoi564@gmail.com",
"policy_id": "000A0609E8F85CD4",
"data_security_mode": "SINGLE_USER",
"runtime_engine": "STANDARD"
}
- ui/json으로 설정가능
- 정책, 액세스모드, 성능 선택
- Personal Compute
개인용 컴퓨팅 정책
작업공간의 모든 사용자가 사용 가능
최소한의 구성 옵션으로 단일 노드 컴퓨팅 리소스를 쉽게 생성가능
- Share Compute
여러 사용자가 공유 할 수 있도록 더 큰 다중 노드 리소스
다목적 컴퓨팅 전용/여러 사용자 리소스 사용할 수 있도록 공유 액세스 모드/ 기본값은 최신 LTS Databricks Runtime/작업공간 관리자만 사용 가능
- Power User Compute
더 큰 다중 노드 리소스 생성
personal compute보다 더 많은 컴퓨팅 리소스가 필요한 단일 사용자 워크로드를 위한 것
S3 데이터 가져오기
- databricks에 자동으로 생성된 s3 bucket과 기본적으로 연동되서 확인 가능
- workspace 부분을 클릭하고 외부에 있는 s3 데이터를 가져오고자 함
- 외부위치 클릭
- s3 저장된 데이터 파일 확인 후 체크
- 테이블 미리보기 선택
- 카탈로그, 스키마, 테이블이름 지정 후 테이블 만들기 선택
- workspace_test 카탈로그 내부에있는 default 스키마 안에 테이블 적재 확인
- 적재 확인이 안된다면 새로고침 해볼 것
댓글