GPU 사용 유무 + 모델 학습코드로 GPU 확인 with Tensorflow_python
DataScience/인공지능

GPU 사용 유무 + 모델 학습코드로 GPU 확인 with Tensorflow_python

728x90

https://www.shutterstock.com/ko/search/gpu

내 컴퓨팅 환경 정보

  • OS : window 11
  • 그래픽카드 : GeForce RTX 3080
  • CUDA Toolkit : 11.2
  • Cudnn : 8.1
  • Tensorflow : 2.10.0

파이썬으로 GPU 정보와 사용 유무 확인

  • 방법 1
# tensorflow device 확인
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

위 결과처럼 GPU가 나와야 성공

* CPU만 나오면 GPU연결 실패

  • 방법 2
# tensorflow version 확인 후 GPU 확인
import tensorflow as tf

print(f'tf.__version__: {tf.__version__}')

gpus = tf.config.experimental.list_physical_devices('GPU')
# tf.config.list_physical_devices('GPU') 이 코드도 가능
for gpu in gpus:
    print(gpu)

위 그림처럼 device_type이 'GPU'로 나와야 성공

  • 확인 3 _ 인식한 GPU 개수 출력
# 주로 사용하는 코드 2 : 인식한 GPU 개수 출력
import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))


딥러닝 학습 코드로 GPU 사용하는지 확인

  • XGBOOST 모델 사용
import time
from sklearn.datasets import make_regression
from xgboost import XGBRegressor

def model_test(model_name, model):
    x, y = make_regression(n_samples=100000, n_features=100)
    
    start_time = time.time()
    model.fit(x, y)
    end_time = time.time()
    return f'{model_name}: 소요시간: {(end_time - start_time)} 초'

xgb = XGBRegressor(n_estimators=1000, 
                   learning_rate=0.01, 
                   subsample=0.8, 
                   colsample_bytree=0.8,
                   objective='reg:squarederror', 
                  )

print(model_test('xgb (cpu)', xgb))

xgb = XGBRegressor(n_estimators=1000, 
                   learning_rate=0.01, 
                   subsample=0.8, 
                   colsample_bytree=0.8,
                   objective='reg:squarederror', 
                   tree_method='gpu_hist')

print(model_test('xgb (gpu)', xgb))

위 결과를 확인하면 CPU시간과 GPU시간이 출력 되는데, GPU사용할 때의 속도차이를 비교할 수 있음

  • Mnist데이터 기본 분류 모델
import tensorflow as tf

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28,28)),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
])

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

model.fit(x_train, y_train, epochs=10)
model.evaluate(x_test, y_test)

1epoch당 10초를 안넘기면 GPU가 사용되고 있다고 생각

그리고 모델 학습 진행되고 있을때 아래 그림처럼

GPU가 사용이 되는지 작업관리자를 켜서 확인하기.

728x90