Google Colab 무료 GPU로 5분 만에 첫 딥러닝 모델 돌리기 (MNIST, 설치 0)

Google Colab 무료 GPU로 5분 만에 첫 딥러닝 모델 돌리기 (MNIST, 설치 0)

파이썬도, GPU도, 딥러닝 라이브러리도 로컬에 하나 설치하지 않고 딥러닝 모델을 학습시킬 수 있을까요? 결론부터 말하면 가능합니다. 이 글은 Google Colab 무료 GPU로 5분 만에 첫 딥러닝 모델 돌리기를 실제 코드와 함께 처음부터 끝까지 따라 하는 방법을 다룹니다. 설치 과정 없이 브라우저만으로 MNIST 손글씨 숫자를 분류하는 모델을 학습시키고, 정확도까지 직접 확인하는 것이 목표입니다.

이미 Colab이 뭔지 아는 분들을 위한 일반론 반복이 아니라, 실제로 셀 몇 개를 실행했을 때 어떤 순서로, 어떤 출력이 나오는지에 집중했습니다.

노트북 생성과 GPU 런타임 설정

먼저 colab.research.google.com에 구글 계정으로 접속한 뒤 “새 노트북”을 클릭합니다. 이 순간 별도의 파이썬 설치나 가상환경 구성 없이 이미 실행 가능한 주피터 노트북 환경이 준비됩니다.

GPU를 쓰려면 상단 메뉴에서 “런타임 → 런타임 유형 변경”을 클릭하고, 하드웨어 가속기를 “T4 GPU”로 선택합니다. 무료 등급에서는 NVIDIA T4(16GB VRAM)가 배정되며, 사용량이 많은 시간대에는 대기하거나 CPU로 자동 전환될 수 있습니다. 설정을 저장하면 런타임이 재연결되면서 새 세션이 시작됩니다.

GPU가 실제로 잡혔는지 확인하려면 첫 셀에 아래 코드를 입력하고 Shift+Enter로 실행합니다.

import tensorflow as tf
print("TensorFlow 버전:", tf.__version__)
print("GPU 사용 가능:", tf.config.list_physical_devices('GPU'))

정상적으로 GPU가 배정됐다면 GPU 사용 가능: [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')] 형태의 출력이 나옵니다. TensorFlow와 GPU 드라이버, CUDA 라이브러리가 Colab 이미지에 이미 포함되어 있어 별도 설치 명령이 필요 없다는 점이 로컬 환경과 가장 큰 차이입니다.

MNIST 데이터셋 불러오기 (다운로드 명령 없이)

MNIST는 0~9 손글씨 숫자 이미지 7만 장(28×28 픽셀, 흑백)으로 구성된 데이터셋입니다. tf.keras.datasets 모듈에 내장되어 있어 별도 다운로드 URL이나 압축 해제 작업 없이 함수 호출 한 줄로 불러올 수 있습니다.

from tensorflow.keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
print("학습 데이터:", x_train.shape, y_train.shape)
print("테스트 데이터:", x_test.shape, y_test.shape)

브라우저에서 코드를 실행하는 노트북 화면

x_train = x_train / 255.0 x_test = x_test / 255.0

실행 결과는 다음과 같습니다.

학습 데이터: (60000, 28, 28) (60000,)
테스트 데이터: (10000, 28, 28) (10000,)

픽셀 값을 255로 나눠 0~1 범위로 정규화하는 이유는 모델의 가중치 초기값과 스케일이 맞아야 학습 초반 손실(loss)이 발산하지 않기 때문입니다. 이 데이터셋이 처음 실행 시 로컬에 캐시되므로, 같은 세션에서 다시 load_data()를 호출해도 재다운로드하지 않습니다.

모델 구성과 학습 코드

이번 예제는 합성곱 신경망(CNN) 대신 완전연결층(Dense layer)만으로 구성한 가장 단순한 형태를 사용합니다. 구조가 단순할수록 GPU 학습 시간이 체감상 몇 초 단위로 짧아 “5분 완주”라는 목표에 맞습니다.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dense

model = Sequential([
    Flatten(input_shape=(28, 28)),
    Dense(128, activation='relu'),
    Dense(10, activation='softmax')
])

model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy']
)

history = model.fit(x_train, y_train, epochs=5, validation_split=0.1)

Flatten이 28×28 이미지를 784개 값으로 펼치고, 은닉층 128개 뉴런을 거쳐 마지막 Dense(10, softmax)가 0~9 중 어떤 숫자일 확률을 출력합니다. sparse_categorical_crossentropy는 레이블이 원-핫 인코딩 없이 정수(0~9) 형태 그대로일 때 쓰는 손실 함수입니다.

T4 GPU 기준으로 5 에폭 학습은 보통 30초 안팎이면 끝나며, 에폭마다 아래와 비슷한 로그가 출력됩니다.

손글씨 숫자 예시 이미지

Epoch 1/5
1688/1688 [==============================] - 4s 2ms/step - loss: 0.2681 - accuracy: 0.9233 - val_loss: 0.1382 - val_accuracy: 0.9603
...
Epoch 5/5
1688/1688 [==============================] - 3s 2ms/step - loss: 0.0389 - accuracy: 0.9880 - val_loss: 0.0891 - val_accuracy: 0.9750

테스트 정확도 확인과 CPU vs GPU 체감 비교

학습이 끝나면 한 번도 모델이 보지 못한 테스트셋으로 최종 성능을 확인합니다.

test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f"테스트 정확도: {test_acc:.4f}")
313/313 - 0s - loss: 0.0812 - accuracy: 0.9762
테스트 정확도: 0.9762

이 구조 기준으로 테스트 정확도는 대체로 97% 안팎이 나옵니다. 같은 코드를 런타임 유형만 “CPU”로 바꿔 실행하면 정확도는 거의 동일하지만 에폭당 학습 시간이 GPU 대비 눈에 띄게 늘어납니다. 이 예제처럼 Dense 층만 쓴 작은 모델에서는 차이가 크지 않지만, 합성곱층(Conv2D)을 추가하거나 이미지 해상도가 커지면 GPU와 CPU의 속도 차이가 훨씬 벌어집니다. 즉 지금 단계에서는 “GPU가 잡혔다”는 사실 자체보다, 이후 모델을 키워나갈 때 같은 코드 구조에서 하드웨어 가속기만 바꿔 비교해볼 수 있다는 점이 실습 포인트입니다.

세션 유지와 다음 단계

Colab 무료 등급의 노트북은 일정 시간(대개 90분 유휴 또는 최대 12시간 연속 사용) 이후 런타임이 초기화되며, 이때 설치했던 패키지와 메모리에 올린 변수가 모두 사라집니다. 노트북 자체(코드와 텍스트)는 구글 드라이브 또는 Colab 내부 저장소에 자동 저장되지만, 학습된 모델 가중치를 남기고 싶다면 model.save('mnist_model.h5') 후 구글 드라이브를 마운트해 복사해두는 것이 안전합니다.

from google.colab import drive
drive.mount('/content/drive')
model.save('/content/drive/MyDrive/mnist_model.h5')

다음 단계로는 Dense 층 대신 Conv2D를 넣어 합성곱 신경망으로 바꿔보거나, 에폭 수를 늘려 정확도 변화를 관찰하는 것을 추천합니다. TensorFlow와 Keras API에 대한 정확한 스펙은 TensorFlow 공식 문서에서 확인할 수 있습니다.

자주 묻는 질문(FAQ)

Q1. Colab 무료 GPU는 정말 100% 무료인가요?
네, T4 GPU를 포함한 무료 등급 사용 자체는 비용이 들지 않습니다. 다만 사용량이 많은 시간대에는 GPU 배정이 지연되거나 세션이 일찍 끊길 수 있고, 더 안정적인 사용을 원하면 유료 Colab Pro/Pro+ 등급을 선택할 수 있습니다.

Q2. 매번 런타임이 초기화되면 설치한 라이브러리도 다시 설치해야 하나요?
맞습니다. TensorFlow처럼 Colab 이미지에 기본 포함된 라이브러리는 설치가 필요 없지만, pip install로 추가한 패키지는 런타임이 재시작될 때마다 다시 설치해야 합니다.

Q3. GPU가 배정되지 않고 계속 “리소스 사용 제한”이 뜹니다.
무료 등급은 사용량에 따라 GPU 배정에 제한이 걸릴 수 있습니다. 몇 시간 뒤 다시 시도하거나, 학습이 급하지 않다면 런타임 유형을 CPU로 바꿔 코드 검증만 먼저 마치는 방법이 있습니다.

Leave a Comment