딥러닝을 구동하기 위해서는 별도의 개발 환경을 구축해야 한다.
대략적으로 설치해야 되는 항목은 아래와 같다.
- 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 사양이 다를 것 같다.
이만하면 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
위 글이 도움 되셨다면, 광고 한 번만 눌러주세요.
블로그 관리에 큰 힘이 됩니다:)
감사합니다 \( ˆoˆ )/
'AI | 딥러닝 > Coding' 카테고리의 다른 글
[Python] 1x1 point convolution 코드 (0) | 2023.09.09 |
---|---|
[Pytorch 프로젝트] CNN(Convolutional Neural Network)으로 MNIST 데이터 분류하기 (0) | 2021.10.25 |
[Pytorch 프로젝트] MLP(Multi-Layer Perceptron)으로 MNIST 데이터 분류하기 (2) | 2021.10.24 |
[Pytorch 프로젝트] Softmax regression으로 MNIST 데이터 분류하기 (0) | 2021.10.24 |
[딥러닝 프로젝트] 1. 신경망 훈련: 기초적인 분류 문제 (Feat. TensorFlow) (0) | 2021.08.25 |
댓글