본문 바로가기
AI | 딥러닝/Coding

[딥러닝 개발 환경 구축] Colab 코랩 이용하기 #GPU

by 고뭉나무 2021. 8. 16.

반응형

 

딥러닝을 구동하기 위해서는 별도의 개발 환경을 구축해야 한다.

대략적으로 설치해야 되는 항목은 아래와 같다.

  • Python 3
  • CUDA 10.1
  • cnDNN v7.6.5
  • TensorFlow / Pytorch

그리고 딥러닝 환경에서 가장 중요한 것은 든든한 GPU!!

하드웨어 장치로 NVIDIA의 GPU가 있어야 한다. 물론 CPU만 있어도 어찌저찌 딥러닝 알고리즘을 돌릴 수는 있지만 연산 속도가 엄~~청 느리다. 그래서 할 수 있는 성능에 한계가 있어 왠만하면 GPU가 있는 것이 개발하는 데 좋다.

 

아래 포스팅에 그 이유가 있으니 참고하면 좋다.

2021.08.08 - [AI | 딥러닝] - [AI/딥러닝] 딥러닝 모델을 GPU에 구동시키는 방법 (Feat. Framework)

 

 

근데 GPU가 없더라도 노트북으로 고성능의 GPU를 사용하여 딥러닝을 돌릴 수 있는 플랫폼이 있다.

바로 Google에서 만든 'Colab(코랩)'이 되겠다 :)

 

 

Colab (코랩)이란

구글 colaboratory 서비스의 줄임말로 브라우저에서 python을 작성하고 실행 가능한 플랫폼이다.

 

  • 별도의 python 설치가 필요 없고
  • 데이터에 분석 사용되는 Tensor Flow, Keras, mataplotlib, scikit-learn, pandas와 같은 패키지가 기본적으로 설치되어 있고
  • GPU를 무료로 사용 가능하고
  • Jupyter 노트북과 비슷하지만 더 좋은 기능을 제공하고
  • 깃과 연동이 가능하여 사람들과 협업하여 코딩이 가능하다

심지어 일정 기능 한에서 무료다! (역시 구글!)

 

 

Colab 서버 스펙 (CPU & GPU)

Colab에서 제공하는 CPU와 GPU 성능은 다음과 같다.

 

  • CPU: Intel (R) Xeon(R) CPU @ 2.30GHz (Dual-Core)
  • GPU: Nvidia Tesla T4
  • GPU Memory: 8GB 
  • Single-Precision Performance: 5.5 TeraFLOPS

실제 CPU에서만 training 해볼 때와 GPU boosting 했을 때 그 차이가 10배 ~ 45배 정도 난다. (엄청난 차이다..)

 

그리고 위 정보는 아래의 사진처럼 다음과 같은 명령어를 입력하면 조회해볼 수 있다.

아마 시기별로 혹은 무료와 프로 버전별로 제공하는 CPU, GPU 사양이 다를 것 같다.

Colab에서 확인 가능한 CPU 정보
Colab에서 확인 가능한 GPU 정보

 

 

이만하면 GPU가 없는 쪼랩 유저들에게 Colab 사용의 이유는 충분한 것 같다.

그럼 이제 Colab 사용법에 대해 알아보자.

 

 

Colab 사용하기

1. 구글 드라이브에 접속하여 새로운 폴더를 하나 만든다.

2. 좌측 상단의 [+새로 만들기] 버튼 > 더보기 > 연결할 앱 더보기 를 선택한다.

 

3. 검색에 'colab'이라고 치면 다음과 같이 조회가 되고 해당 프로그램을 다운로드 한다.

4. 아까 만든 폴더에서 우클릭 > 더보기 > Google Colaboratory 를 클릭한다.

 

5. 그럼 아래 그림과 같이 .ipynb 확장자 파일의 jupyter 노트북이 등장한다. 이제 여기서 원하는 코딩을 진행하면 된다.

 

여기서 중요한 점 하나! GPU를 사용하겠다고 설정해주어야 한다.

6. 런타임 > 런타임 유형 변경 을 클릭한다.

 

7. 하드웨어 가속기를 'GPU'로 설정한다. (기본은 CPU 다)

 

이제 Colab 환경 구축을 완료했으니 위 사이트를 참고하여 코드를 한번 돌려보자. (이렇게 공유가 가능하다.)

코드 실행은 'Ctrl + Enter' 이다.

 

 

그리고 CPU와 GPU의 속도 차이를 볼 수 있는 예제 코드가 있다.

 

TensorFlow 샘플 CNN(keras)의 성능측정(CPU vs GPU)

%tensorflow_version 2.x
import tensorflow as tf
import timeit

device_name = tf.test.gpu_device_name()
if device_name != '/device:GPU:0':
  print(
      '\n\nThis error most likely means that this notebook is not '
      'configured to use a GPU.  Change this in Notebook Settings via the '
      'command palette (cmd/ctrl-shift-P) or the Edit menu.\n\n')
  raise SystemError('GPU device not found')

def cpu():
  with tf.device('/cpu:0'):
    random_image_cpu = tf.random.normal((100, 100, 100, 3))
    net_cpu = tf.keras.layers.Conv2D(32, 7)(random_image_cpu)
    return tf.math.reduce_sum(net_cpu)

def gpu():
  with tf.device('/device:GPU:0'):
    random_image_gpu = tf.random.normal((100, 100, 100, 3))
    net_gpu = tf.keras.layers.Conv2D(32, 7)(random_image_gpu)
    return tf.math.reduce_sum(net_gpu)
  
# We run each op once to warm up; see: https://stackoverflow.com/a/45067900
cpu()
gpu()

# Run the op several times.
print('Time (s) to convolve 32x7x7x3 filter over random 100x100x100x3 images '
      '(batch x height x width x channel). Sum of ten runs.')
print('CPU (s):')
cpu_time = timeit.timeit('cpu()', number=10, setup="from __main__ import cpu")
print(cpu_time)
print('GPU (s):')
gpu_time = timeit.timeit('gpu()', number=10, setup="from __main__ import gpu")
print(gpu_time)
print('GPU speedup over CPU: {}x'.format(int(cpu_time/gpu_time)))

결과는 

Time (s) to convolve 32x7x7x3 filter over random 100x100x100x3 images (batch x height x width x channel).

Sum of ten runs.

CPU (s): 3.862475891000031

GPU (s): 0.10837535100017703

GPU speedup over CPU: 35x

무려 GPU가 CPU 대비 35배가 빠르다..

 

이로써 NVIDIA GPU가 없다면 Colab을 사용할 이유가 충분한 것으로 보인다..

 

 

다음 포스팅에서는 실제 딥러닝 모델을 적용하여 간단한 프로젝트를 진행해보도록 하겠다 :)

 


https://colab.research.google.com/notebooks/gpu.ipynb#scrollTo=v3fE7KmKRDsH

 

Google Colaboratory

 

colab.research.google.com

https://colab.research.google.com/github/kannankumar/data-diary/blob/master/_notebooks/2020-04-22-Tracking_GPU_Memory_Usage.ipynb

 

Tracking_GPU_Memory_Usage.ipynb

Run, share, and edit Python notebooks

colab.research.google.com

 

 

위 글이 도움 되셨다면, 광고 한 번만 눌러주세요.

블로그 관리에 큰 힘이 됩니다:)

감사합니다 \( ˆoˆ )/​

반응형

댓글