본문 바로가기
  • Survival Plan
개발 이야기

[클라우드 데이터 분석 플랫폼 비교-1] 구글 코랩 (Google Colab) vs. MS Azure Notebook

by IT/머신러닝 엔지니어의 독서/경제/육아 공부 리치윈드 - windFlex 2020. 5. 18.

 

 

필자는 전통적인 이미지, 음성 외에 시스템 이벤트 로그 등 다양한 종류의 데이터 분석을 진행하고 있다. 이 때문에 초기 탐색적 분석을 진행하는 경우가 많다. 또한, 최근에는 업무환경이 3개 위치의 사무실, 집 (코로나로 인한 재택근무)와 때때로 외부 회의장소 등에서 데이터 분석환경에 접속하여 작업해야 하는 경우가 발생하곤 한다. 이러한 이유로, 적당히 데이터분석에 대한 퍼포먼스는 나오면서, 원격으로 데이터 분석이 가능한 환경을 필요로 하게 되었다.

 

 

필자의 주요 데이터 분석 환경은, Python 구동이 가능한 Jupyter Notebook 또는 이에 준하는 IDE 환경 (ex. vscode, atom 등)이 필요하였다. 이와 같은 이유로, 클라우드  Python / Jupyter Notebook 환경 4종을 사용해 보고 리뷰를 공유해 본다.

다른 컬럼으로 작성했던 Online IDE와는 속성/경향이 좀 다른 점을 참조하기 바란다. 

     - 관련 글 : 2020/05/09 - [개발 이야기] - 온라인 IDE - 개발 환경 구축 없어 어디서나 웹브라우저로 개발하기

 

리뷰 검토 대상은 다음과 같다. 

  • 구글 코랩 (Google Colab)
  • MS Azure Notebook
  • Binder
  • GitPod

Google Colab은 기존에도 활용했던 차라 익숙하였으며, MS Azure Notebook은 새롭게 서비스를 시작하고 있는 단계이다. Binder는 기존 Github 사용자들 사이에서 이미 알음알음으로 사용중이며, GitPod 또한 github 기반으로 새롭게 주목받고 있는 서비스 이다.

 

성능측정에 사용된 데이터

 

더보기

좀 더 경험적인 체감을 위해서, 속도를 측정할 때 필자가 현재 분석중인 데이터를 사용하였다. 문자열로 이루어진 95만개의 데이터셋이다. 

데이터셋 - 동일 데이터는 존재하지 않고, 953568개의 데이터 갯수가 있는 것을 알수 있다. 파싱하지 않고 String 전체를 1개의 컬럼으로 로딩

 

Nagios로 부터 기록된 시스템 모니터링 이벤트 로그이다. 

 

 

 

 

 구글 코랩 (Google Colab)

 

Jupyter Notebook과 동일하지는 않지만, 이와 유사항 형식에서 구글 스럽게 간소화한 버전의 UI를 가지고 있다. 딱 가지고 있어야 할 것만 가지고 있는 느낌이다. 위쪽 패널은 "+코드", "+텍스트"만 가지고 있는데, 각각 Notebook의 1개 셀(cell)을 추가한다. 다만, 코드는 파이썬 코드 셀을, 텍스트는 마크다운 텍스트셀을 추가 한다. 

 

Google Colab의 Notebook 환경. 간결하다. 

왼족 페널을 하나씩 눌러보면, 1) 목차패널, 2) 코드스니펫 패널, 3) 파일 패널을 열 수 있다. 

자동으로 목차를 생성해 준다. 또한 코드 스니펫을 추천해주고, 파일뷰 등의 기능이 숨겨져 있다. 

 

또 한가지 흥미로운 점은, 원격 호스트에서 뿐만 아니라, 경우에 따라서 로컬PC의 자원으로 구동할 수 도 있다는 점이다. 호스팅된 클라우드에서의 구동이 부족할 경우 로컬에서 Jupyter Server를 돌리고, 로컬로 붙일 수 있다. 그러나, 사실 이럴꺼면 그냥 파일을 내려받아서 구동시켜도 되긴 한다. ^^;;;;

세션관리도 충실하다. 특수한 상황에서 로컬 런타임에 연결도 가능하다. 

 

[ CPU 스펙 및 리소스 ]

제공되는 리소스를 한번 살펴 보도록 하자. Notebook 환경에서 직접 조사해 본 정보를 기반으로 리소스를 확인해 본 결과, 할당된 리소스는 다음과 같다. 2 CPU와 12Gb 메모리를 할당한 것을 확인 할 수 있다. 다른 서비스는 Docker Container 기반으로 구동 되는데 Google은 사실 Container 기반으로 구동되는지 알 수 없다. 12Gb를 전부 사용할 수 있을지는 확인하지 못했다. (참고로, 다른 서비스는 Container간 공유 하는 메모리로 2Gb 내외로 사용이 가능하다.)

!cat /proc/cpuinfo

processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 79
model name	: Intel(R) Xeon(R) CPU @ 2.20GHz
stepping	: 0
microcode	: 0x1
cpu MHz		: 2200.000
cache size	: 56320 KB
		...
!free -h
              total        used        free      shared  buff/cache   available
Mem:            12G        3.0G        7.4G        908K        2.3G         11G
Swap:            0B          0B          0B

 

필자가 초기에 데이터를 로딩할 가장 첫 동작중 하나를, 플랫폼 별로 시간비교를 해 보았다. 실제 아래 코드를 실행하였을 때, 소요 시간은 약 2초~4초 사이로 경우에 따라 다른 결과가 나왔다. 바로 재실행 할 경우는 비슷한 실행 시간 결과가 나오고, 몇시간 지나서 실행을 하면 다른 결과가 나온점을 미루어 볼 때, 자원 공유로 타사용자가 얼마나 리소스를 사용하느냐에 따라서 다른것으로 추정된다. 

2~3초 후반대를 속도를  안정적으로 제공한다. 

 

 

[ 장점 ]

Google Colab의 무엇보다도 가장 큰 장점은,

 - 다른 서비스들이 제공하지 않는 GPU 자원 할당

 - 구글 드라이브 (Google Drive)를 직접 마운트 사용

 - 어디서나, 언제나 접근해서 사용 가능, 간결함

 - 상대적으로 빠른 속도

[ 단점 ] 

 - UI가 좀 옛스럽다. 공용으로 사용하는 UI도 아니며, 최근 트랜디한 UI이 또한 아니다. 
   그러나, 불편함은 없기 때문에 큰 단점이라고 보기도 좀 그렇다. 

 

 

 

Microsoft Azure Notebook 

 

두번째로 사용해본 플랫폼은 MS Azure 환경에서 구동되는 Notebook 이다. 웹페이지 상단에 "Microsoft Azure Notebooks Preview" 검정색 섹션만 제외하면, Jupyter Notebook과 완전히 동일한 환경이다. 매우 친숙하다. 다만, 우리가 주목해야 할 점은 "Preview"라는 부분이다. 서비스 웹페이지를 잘 찾아보면, Preview 버전이므로 아직 개발중에 있는 서비스라는 문구를 발견 할 수 있다. 

 

MS Azure Notebook 화면

 

MS의 상용 서비스를 준비하고 있는 플랫폼 답게 체계적인 관리가 가능할 것으로 예상된다. 또한 MS가 인수한 Github와 연계성을 내보이고 있다. 아직 개발이 완료되어 정식 서비스는 아니라고 하나, 상당히 편리하게 사용할 수 있는 점을 고려할 때, 빠르게 정식 서비스화 되었으면 한다. 

My Projects : 프로젝트 관리 화면, Notebook 단이로 관리하거나, Github 연동이 수월하다. 

 

[ CPU 스펙 및 리소스 ]

제공된 리소스를 Google Colab 과 CPU 스펙 차이는 크지 않았다. CPU 클럭속도와 캐시사이즈가 조금 차이를 보이지만, 거기서 거기로 큰 차이라고 할 부분은 아니다. 다만 할당된 메모리가 3.8Gb로써, 구글의 12GB와 스펙과 상당한 차이를 보였다. Container 기반으로 리소스를 공유하여 사용한다고 가정할 때, 사용자가 몰려 있을 때는 성능저하가 예상된다. 

!cat /proc/cpuinfo

processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 79
model name	: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
stepping	: 1
microcode	: 0xffffffff
cpu MHz		: 2294.689
cache size	: 51200 KB
		...
!free -h
              total        used        free      shared  buff/cache   available
Mem:           3.8G        568M        3.1G         17M        198M        3.0G
Swap:            0B          0B          0B

 

실제 코드를 실행 했을 때, 예상과 같이 상당한 실행속도 차이를 보였다. Google Colab이 2~4초의 결과를 보이던 코드가 67초 이상의 시간이 소요되었다. 다른 시점에 다수회 시도 해보았을 경우도 상당히 느린 속도를 보였으며, 그 중 가장 바른 실행 속도는 15초 내외 였다. 또한, 아래 실행 코드가 아니더라도 평소에 코드라인을 실행하는 체감 속도가 상당히 더뎌서 답답함이 느껴질 정도 였다. 

Preview 버전이라서 그런지 상대적으로 느리다.

이러한 느린 속도에도 불구하고,  MS Azure Notebook은 상당히 매력적이었다. Preview 버전임에도 이정도 만족감을 준다면, 정식 버전에서 실행속도만 개선이 된다면 상당히 상용화로써의 매력을 느낄 것 같다. 또한, 교육용, 참조용, 확인용 등 그 목적에 맞게 활용할 부분이 다양할 것으로 예상된다. 

 

[ 장점 ]

 - Jupyter Notebook 그대로의 UI. 친숙함으로써 별도 러닝커브 없음

 - 언제 어디서든 접근하여 실행할 수 있는 편리함

 - Notebook의 관리와 Github와의 연계성

 - MS가 제공하는 다양한 강좌를이 포함되어 있어 학습하기에 최적의 장소

 

[ 단점 ] 

 - Preview 버전으로써, 현업 개발로 사용하기에는 다소 느림

 - 메모리 할당량이 낮음

 

 

관련글

1. 데이터분석 플랫폼 실제 사용 분석 - 구글 코랩 (Google Colab) vs. MS Azure Notebook

2020/05/18 - [분류 전체보기] - [데이터 분석] 클라우드 파이썬 노트북 (Cloud Python Notebook) 플랫폼 (1부) - 구글 코랩(Colab)과 MS Azure Notebook

2. 데이터분석 플랫폼 실제 사용 분석 - Binder and Gitpod

 

 

관련글

1. 데이터분석 플랫폼 실제 사용 분석 - 구글 코랩 (Google Colab) vs. MS Azure Notebook

댓글0