반응형
이전 블로그에서 Tensorflow를 사용하여 Windows PC의 GPU를 사용하도록 설정했습니다.
https://android-developer.tistory.com/94
이제 TensorFlow가 GPU를 사용하니 CPU를 사용했을 때와 GPU를 사용했을 때 성능 차이가 얼마나 나는지 비교해보겠습니다.
참고로 제 노트북의 스펙은 다음과 같습니다.
CPU: RTX 4070 Laptop
GPU: i7-14700HX
파이썬의 Tensorflow를 사용하여 코드 작성하기 - Windows PC
다음과 같이 코드를 작성합니다.
코드 사이에 설명을 코멘트로 적었으니 쉽게 이해할 수 있을거라 생각합니다.
윈도우에서 돌릴 때는 이전 포스트에서 말했다 시피 2.10.0 버전을 다운로드 하셔야합니다.
pip install tensorflow==2.10.0
import tensorflow as tf
import time
# 간단한 신경망 모델을 생성하는 함수
def create_model():
model = tf.keras.models.Sequential([
# 첫 번째 밀집 층, 512 유닛과 ReLU 활성화 함수 사용
tf.keras.layers.Dense(512, activation='relu', input_shape=(784,)),
# 두 번째 밀집 층, 512 유닛과 ReLU 활성화 함수 사용
tf.keras.layers.Dense(512, activation='relu'),
# 출력 층, 10개의 유닛 (각 클래스에 하나씩)과 softmax 활성화 함수 사용
tf.keras.layers.Dense(10, activation='softmax')
])
# 모델을 컴파일, Adam 옵티마이저와 sparse categorical crossentropy 손실 함수 사용
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
return model
# MNIST 데이터셋 (손글씨 숫자) 로드
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
# 데이터를 [0, 1] 범위로 정규화
x_train, x_test = x_train / 255.0, x_test / 255.0
# 이미지를 1차원 벡터 (28x28=784)로 변환
x_train = x_train.reshape(-1, 784)
x_test = x_test.reshape(-1, 784)
# 훈련 시간을 측정하는 함수
def measure_time(device):
with tf.device(device): # 사용할 디바이스 (CPU 또는 GPU) 지정
model = create_model() # 새로운 모델 인스턴스 생성
start_time = time.time() # 시작 시간 기록
model.fit(x_train, y_train, epochs=5, batch_size=128, verbose=0) # 모델 훈련
end_time = time.time() # 종료 시간 기록
return end_time - start_time # 경과 시간 계산 및 반환
# CPU에서의 훈련 시간 측정
cpu_time = measure_time('/cpu:0')
print(f"Training time on CPU: {cpu_time:.2f} seconds") # CPU 훈련 시간 출력
# GPU에서의 훈련 시간 측정
if tf.config.list_physical_devices('GPU'): # 사용 가능한 GPU가 있는지 확인
gpu_time = measure_time('/gpu:0')
print(f"Training time on GPU: {gpu_time:.2f} seconds") # GPU 훈련 시간 출력
else:
print("No GPU found. GPU test skipped.") # GPU를 찾을 수 없는 경우 메시지 출력
위 코드를 제 PC에서 실시하면 다음과 같은 결과를 얻을 수 있습니다.
Training time on CPU: 11.92 seconds
Training time on GPU: 5.91 seconds
CPU만 사용했을 때 보다 약 2배 정도 더 빠른 모습을 볼 수 있습니다.
파이썬의 Tensorflow를 사용하여 코드 작성하기 - 코랩(Colab)
코랩(Colab)에서는 Tensorflow의 버전을 맞춰서 설치할 필요가 없습니다.
그렇기 때문에 그냥 다음과 같이 tensorflow를 설치합니다.
!pip install tensorflow
그리고 똑같이 다음과 같은 코드를 실시합니다.
import tensorflow as tf
import time
# Function to create a simple neural network model
def create_model():
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(512, activation='relu', input_shape=(784,)),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
return model
# Load MNIST dataset
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# Flatten the images
x_train = x_train.reshape(-1, 784)
x_test = x_test.reshape(-1, 784)
# Function to measure training time
def measure_time(device):
with tf.device(device):
model = create_model()
start_time = time.time()
model.fit(x_train, y_train, epochs=5, batch_size=128, verbose=0)
end_time = time.time()
return end_time - start_time
# Measure time for CPU
cpu_time = measure_time('/cpu:0')
print(f"Training time on CPU: {cpu_time:.2f} seconds")
# Measure time for GPU
if tf.config.list_physical_devices('GPU'):
gpu_time = measure_time('/gpu:0')
print(f"Training time on GPU: {gpu_time:.2f} seconds")
else:
print("No GPU found. GPU test skipped.")
참고로 T4 GPU를 사용했는데요
그 결과는 다음과 같습니다.
Training time on CPU: 29.14 seconds
Training time on GPU: 11.42 seconds
신기하게 코랩이 제 컴퓨터보다 느리네요...?
제 PC의 CPU로 돌린게 Colab의 GPU로 돌린거보다 느립니다.
생각보다 코랩에서 무료로 제공하는 PC의 성능이 좋지 않은가봅니다.
반응형
'파이썬(Python) > AI' 카테고리의 다른 글
Tensorflow에서 GPU 확인 안될 때 - is_built_with_cuda false (0) | 2024.06.22 |
---|
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글