일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- API
- BigQuery
- UDF
- airflow subdag
- correlation
- 유튜브 API
- XAI
- requests
- 상관관계
- spark udf
- GCP
- API Gateway
- integrated gradient
- hadoop
- GenericGBQException
- grad-cam
- top_k
- subdag
- 공분산
- tensorflow text
- chatGPT
- Airflow
- Counterfactual Explanations
- session 유지
- youtube data
- Retry
- flask
- login crawling
- gather_nd
- TensorFlow
- Today
- Total
데이터과학 삼학년
Data engineering on GCP 본문
Data engineering on GCP
[Introduction]
Data
-
structured -> Bigquery, Dataflow
-
unstructured -> Dataproc, AutoML(CMLE), CMLE(tensorflow, scikit-learn 내재)
Map-reduce
-
DATA 쪼개기 : Shard
-
DATA 입력 : Map
-
DATA를 ID(식별자)에 따라 재분류 : Shuffling
-
처리된 DATA를 합치기 : Reduce
Ex) HADOOP, Spark
-
병렬분산 처리로 방대한 DATA를 처리하지만, 머신의 고장과 과정의 복잡성, 최적화 등의 문제로 어려움 발생
-
병렬분산 구조 완성과 Hadoop 시스템을 대신 관리 : Dataproc
DataProc
-
GCP -> Create cluster
-
원하는 처리 환경을 설정(master, worker node 설정)
-
평균 90초이내 생성
-
기존 하둡 & 스파크 유저에게 유용할 것으로 보임
Google Cloud
-
머신 내에서 CPU, MEMORY, STORAGE 분리하여 처리
CPU |
→ |
CPU |
MEMORY |
MEMORY |
|
============= |
STORAGE |
|
STORAGE |
-
서버없이 작업 가능하도록 환경 구성
-
Compute // Storage 분리
-
Lazy evaluation
-
Step에 따라 일일이 수행하며 정산되는 것이 아니라 명령을 최대한 모아 놓았다가 효율적으로 처리하는 방법
[Analyzing unstructured data]
Google ML API
-
사전 훈련된 모형 사용 (ex.개, 고양이 이미지 등)
-
예측만 사용자가 실행
Cloud AutoML
-
언어, 이미지 분석 및 번역에 특화
-
사용자가 직접 데이터를 이용하여 학습
-
ML API
-
Ex. 사진을 업로드만 하면 이미지 자동 분류(자동차)
Cloud ML Engine
-
사용자가 코드 작성
-
클라우드 환경에서 실행
-
사용자가 직접 데이터를 이용하여 학습
NLP 활용 사례
-
자동응답 기술_google deepmind Wavenet
-
Ex. 통화로 미용실, 음식점 예약
[Analyzing structured data]
BigQuery : 분석에 필요한 원하는 정제된 data를 추출할 때 필요
SELECT FROM ‘project.dataset.table’ WHERE |
Cloud BigTable : 방대한 data를 끊임없이 수집하여 저장할 때 필요 => 대대용량 데이터에 적용
Cloud storage
BigQuery
-
normalized vs denormalized 2가지 방식을 택하여 이용
-> column안에 table, column안에 column이 있는 형태
- array / struct
array : table안에 table이 있는 형태
struct : table안에 table이 나눠져 있는 형태
Titles |
|
title |
score |
Grouping - low cardinality로 grouping 권장
low cardinality : 국가, 성별 <-> high cardinality : 이름, 주민번호
wildcard tables
ex. FROM ‘g-p-data.noaa_gsod.gsod*’ -> gsod* : gsod 테이블을 모두 union 해라
table partitioning : 어떤 기준에 따라 table을 분리하는 방법(ex. 날짜별로 테이블 분리)
DataFlow (Apache Beam을 사용)
-
Data를 정제하는 기능
-
streaming data는 data의 수집 변동성으로 machine이 elastic하게 운영되며 처리됨
-
source : data input_(설명 : pp13)
-
Pcollection : step에 따라 병렬로 처리되는 데이터의 집합_(설명 : pp11~12)
-
transform : 기준에 따라 data를 정리하는 역할
-
sink : 분산된 데이터를 한 곳에 모아 처리 종결_(설명 : pp14)
-
Pipeline : Data source -> Pcollection -> transform -> sink 가 되는 일련의 과정_(설명 : pp9~10)
-
run : pipeline 실행_(설명 : pp15)
-
python과 java 언어를 지원
-
ParDo : 병렬처리 명령
-
pipeline을 짜고 run 을 통해 실행 -> lazy evaluation을 위해
-
Data 처리 과정
source |
분석(정제, 변환) |
sink |
Cloud Pub/sub |
DataFlow |
BigQuery |
Cloud Storage |
pub/sub |
|
storage |
-
data(Pcollection)이 transform되고 transform 데이터는 또다른 Pcollection이 되어 다시 다음 step을 거치게 됨
-
ParDo : Filtering, converting, extracting, calculating에 사용
-
Groupby : key별로 나눈후 연산하는 방식
-
Combine : shuffle된 값을 연산을 먼저하고 key별로 정리 후 groupby 방식으로 몰아서 연산하는 방식
-
Map-reduce : dataflow python version에서는 map, flatmap을 이용해서 분산처리
Dataprep : 데이터 전처리에 유용하게 사용 가능, petabyte의 자료도 셀로 들어갈 수 있게 제공할 예정
Cloud ML
-
Cloud ML engine model로 training 후 predict
-
hyper parameter : 뉴런수, hidden layer 수, lr, Activation Function, epoch, batch size...등
-
hyper parameter optimization -> 보완중
ML with Tensorflow
Tensor
Rank 0 (차원) |
Rank 1 |
Rank 2 |
Rank 3 |
Rank 4 |
tensor |
tensor |
tensor |
tensor |
tensor |
scalar |
vector |
matrix |
Tensorflow
-
lazy evaluation을 위해 session 함수를 이용하여 틀을 짠 후 연산
from tensorflow.contrib.eager.python import tfe tfe.enable_eager_execution() |
해당 명령문을 입력하면 lazy evaluation 하지 않고 연산 |
ML 작업 순서
-
Feature selection
-
Model Definition
-
Training
-
Evaluation
-
Prediction
tf.data (library) : 데이터 sharding 할 때 이용
MLengine
-
내 코드를 작성한 다음 cloud내에 있는 머신에 넣기
-
input -> preprocessing -> feature creation -> train model -> predict
-
train model : hyper parameter tuning
Backend
-
load balancer에 의해 지역별 서버 분배 시스템이 있음
-
Demand에 따라 server 자동적으로 분배(auto scaler)
-
Cloud MLE를 이용하면 다운발생이 거의 없을 수 있음
Cloud ML Engine
-
코드를 짜서 packaging(_init__.py, model.py, task.py)
-
model.py : 분석가가 원하는 모형을 코드로 짠 것
-
task.py : model을 돌리는 등 작업 코드
Feature Engineering
-
보통 전문가의 insight를 통해 발굴(그룹의 회의)
-
Feature의 속성에 맞게 범주형, 연속형으로 구분하여 사용
-
ML을 이용하여 Feature importance로 feature selection 고려도 필요
Hyper Parameter
%writefile hyperparam.yaml 으로 하이퍼파라미터 튜닝 try를 설정하고, --config=hyperparam.yaml 으로 실행하면 하이퍼 파라미터 설정에 도움받을 수 있음
'GCP' 카테고리의 다른 글
Bigquery Table_Suffix 관련 error(적재되는 data type이 꼬였을 때) (0) | 2020.01.30 |
---|---|
Data_analysis on GCP (0) | 2020.01.17 |
Kubeflow pipeline (0) | 2020.01.09 |
Bigquery load error (GenericGBQException)_(동시접근, parallel 작업시) (0) | 2020.01.09 |
Bigquery ML (0) | 2020.01.09 |