본문 바로가기
AI

GCP로 AI공부하기[1] - Google Cloud Platform과 CMLE

by 오늘의개발부 2019. 7. 4.
반응형

  구글의 CEO(최고경영자) 순다 피차이가 ‘Google Cloud Next 19’ 이벤트에서 AI의 엑셀화에 대해 이야기했다. 우리 모두는 엑셀을 편하게 사용하고 있지만, 엑셀 내부의 동작원리까지 파악하지 않는다. 구글이 AI도 그렇게 엑셀화하겠다는 것이다. 이는 구글뿐만 아니라 아마존도 수년전부터 주장하던 흐름과 동일하다. 이 핫한 기술에 대해서 깊지 못하더라도 그 사용법에 대해서는 알아야하지 않을까...싶은 마음. 그리고 AI의 간단한 원리라도 파악할 수 있으면 좋겠다... 싶은 마음으로 공부하며 시리즈를 시작한다.
AI는 훗날 '엑셀'이 될 수 있을까(http://kspsoft.webiz.kr/20/?q=YToyOntzOjEyOiJrZXl3b3JkX3R5cGUiO3M6MzoiYWxsIjtzOjQ6InBhZ2UiO2k6MTt9&bmode=view&idx=1830769&t=board)


GCP 시작하기

GCP의 첫화면은 보면 생각보다 느린 로딩속도와 엄청나게 많은 레이어들에 흠칫하게 된다. 마치 AWS를 처음 만났을 때의 느낌이다. AWS를 쓰다보면 느끼는 것이겠지만, 모든 서비스들을 완벽하게 이해할 수 없다.... 아니 이해하면 좋지만 적정수준으로 사용해야 좋다. 러닝커브가 지나치게 높으면 본질을 놓칠 염려가 있다. ML을 자주사용하게 될테니 관련 메뉴들만 둘러보자


Storage

아마존에서의 S3느낌인가 싶다. 서비스를 위해 내 Bucket을 생성하고 이미지파일이나 소스파일등을 업로드하여 공유 및 서비스에 사용할 수 있다.


Big Query

핵심은 서버리스 데이터 웨어하우스. SQL문법으로 관리가 가능하다. BigQuery로 조회, 수정, 삭제 등의 SQL 쿼리를 요청하면 그 결과를 리턴해준다. 빅데이터 관리와 GCP를 통한 머신러닝 시스템 운용의 편리성 향상에 큰 도움을 준다고 생각한다.


CMLE

Cloud ML Engine. 구글이 제공하는 클라우드 머신러닝 엔진. tensorflow로 구성되어 있다. CMLE의 장점으로 "서비스 중에도 학습 가능할 정도로 반복 가능"하다는 것. 모델의 학습은 서비스의 종류에 따라 동적모델과 정적모델로 나뉘어 질 수 있다. 동적모델은 사용자의 접근이나 업로드 등 데이터의 수신에 따라 그에 맞게 다시 모델을 학습 및 예측하는 형태, 정적모델은 학습으로 만들어진 모델을 서비스중에는 다시 학습시키지 않는 방식이다. GCP의 서비스들을 이용하면 편리하게 동적모델 환경을 구축할 수 있다고 한다... 나도 회사에서 지원해주면 해보고 싶다.
그 다음 장점으로 "오토스케일링"이다. 스케일업과 스케일아웃의 차이를 먼저 생각해보자. 이 두가지는 서버확장방식으로 스케일업은 기존서버의 CPU, RAM, GPU 등 스펙 상승을 의미하고 스케일아웃은 추가 서버를 확보하는 분산처리를 의미한다. CMLE는 자동으로 스케일아웃되어 운용할 수 있다. 이런 지점에서 개발자들의 정신건강에 단비가 내리나보다.
"하이퍼 파라미터 튜닝". 모델의 학습에 필요한 인자들에 대한 튜닝이 가능하다. apoch, step 등 모델의 학습에 있어서 직간접적으로 영향을 끼치는 값들이다.


Cloud Dataflow

데이터 파이프라인을 위한 서비스. Cloud Dataflow를 사용하면 데이터 파이프라인을 탄력적으로 상용서비스에 적용 가능하다. 머신러닝 모델을 만든다는 전체 과정은 세단계로 생각해 볼 수 있다. 데이터 셋을 만드는 것, 모델의 구조를 만드는 것, 모델을 운용하는 것. 여기서 머신러닝 모델의 운용은 데이터셋을 만드는 것과 모델을 운용하는 것의 관계다. Cloud Dataflow는 거대한 양의 데이터를 병렬처리로 조작하는 것이 가능하고, 데이터를 일괄작업하거나, 실시간 스트리밍 작업하는 것이 모두 가능하다. 파이프라인이 작성되면, 작성된 동일한 코드는 모델의 학습 및 서비스 단계의 예측시에 모두 공통된 박식의 사용이 가능하다.


Apache Beam

Beam이라는 단어는 Batch + Stream을 의미한다. 데이터 병렬처리를 위한 파이프라인을 정의하는 통합된 모델링 툴이며, 일괄작업(batch)과 실시간 스트리밍(stream)이 모두 가능하다. Apache Beam API를 사용하여 파이프라인을 정의하면 해당 파이프라인은 Dataflow를 통해서 실질적으로 실행한다. Apache Beam 파이프라인은 단순히 파이프라인을 정의하는 일이다.


데이터의 흐름

  • 1. BigQuery에서 머신러닝 모델의 입력에 필요한 데이터를 조회한다.
  • 2. 쿼리된 데이터를 Apache Beam에서 정의한 파이프라인을 통해 전처리한다.
  • 3. 전처리된 데이터를 GCP 스토리지에 저장한다.
  • 4. 트레인셋과 테스트셋을 구성한다.
  • 5. 머신러닝 모델에 사용한다.
반응형