딥러닝 프레임워크에서 GPU 가속 사용법
딥러닝 모델을 학습할 때 GPU(그래픽 처리 장치)를 활용하면 속도를 획기적으로 개선할 수 있습니다. 특히 대량의 행렬 연산을 수행하는 딥러닝 모델에서는 GPU를 효과적으로 사용하면 수 시간에서 수 일 걸리던 학습을 몇 분 또는 몇 시간으로 단축할 수 있습니다. 본 포스팅에서는 주요 딥러닝 프레임워크에서 GPU를 활용하는 방법을 설명하겠습니다.
1. GPU 가속이 필요한 이유
CPU와 GPU는 서로 다른 아키텍처를 가지고 있습니다. CPU는 직렬 연산에 강점을 보이지만, GPU는 대량의 병렬 연산을 효과적으로 수행할 수 있습니다. 딥러닝 모델의 주요 연산은 행렬 곱셈과 같은 대규모 연산이므로, GPU를 사용하면 학습 및 추론 속도를 획기적으로 향상시킬 수 있습니다.
GPU 가속의 장점
- 대량의 행렬 연산을 병렬로 처리하여 빠른 계산 수행
- CPU 대비 높은 FLOPS(Floating Point Operations per Second) 제공
- 딥러닝 학습 속도 향상 및 실시간 추론 가능
2. TensorFlow에서 GPU 사용법
TensorFlow는 NVIDIA의 CUDA 라이브러리를 활용하여 GPU 가속을 지원합니다. 다음은 TensorFlow에서 GPU를 사용하는 방법입니다.
2.1 TensorFlow GPU 버전 설치
TensorFlow는 CPU 전용 버전과 GPU 지원 버전이 있습니다. GPU를 활용하려면 다음과 같이 tensorflow-gpu
를 설치해야 합니다.
pip install tensorflow
또한, GPU 가속을 위해 다음과 같은 추가 라이브러리가 필요합니다.
- NVIDIA CUDA Toolkit: GPU 가속을 위한 기본 드라이버 및 라이브러리
- cuDNN (CUDA Deep Neural Network Library): 딥러닝을 위한 최적화된 GPU 가속 라이브러리
설치 후 GPU가 정상적으로 인식되는지 확인하려면 아래 코드를 실행합니다.
import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
2.2 GPU 활성화 확인
TensorFlow는 자동으로 GPU를 감지하여 사용합니다. 사용 가능한 GPU를 확인하려면 아래 코드를 실행합니다.
print(tf.config.list_physical_devices('GPU'))
출력 예시:
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
만약 위 코드에서 GPU가 감지되지 않는다면, CUDA 및 cuDNN이 올바르게 설치되었는지 확인해야 합니다.
2.3 GPU 메모리 설정
기본적으로 TensorFlow는 사용 가능한 모든 GPU 메모리를 할당합니다. 하지만 필요에 따라 메모리 사용량을 조절할 수 있습니다.
# GPU 메모리 제한 설정
physical_devices = tf.config.list_physical_devices('GPU')
if physical_devices:
try:
tf.config.experimental.set_memory_growth(physical_devices[0], True)
print("GPU 메모리 성장 모드 활성화")
except Exception as e:
print(e)
이렇게 설정하면 TensorFlow가 필요한 만큼의 GPU 메모리만 할당하게 됩니다.
3. PyTorch에서 GPU 사용법
PyTorch는 GPU 연산을 직관적으로 지원하며, CUDA가 활성화되어 있는 경우 GPU를 자동으로 활용합니다.
3.1 PyTorch 설치
PyTorch의 GPU 지원 버전을 설치하려면 공식 웹사이트(https://pytorch.org/)에서 CUDA 버전에 맞는 설치 명령어를 확인한 후 실행합니다.
예를 들어, CUDA 11.8 버전이 설치된 환경에서는 다음과 같이 PyTorch를 설치할 수 있습니다.
pip install torch torchvision torchaudio
3.2 GPU 사용 여부 확인
PyTorch에서 GPU가 정상적으로 인식되는지 확인하려면 아래 코드를 실행합니다.
import torch
print("CUDA 사용 가능 여부:", torch.cuda.is_available())
print("사용 가능한 GPU 개수:", torch.cuda.device_count())
print("GPU 이름:", torch.cuda.get_device_name(0))
출력 예시:
CUDA 사용 가능 여부: True
사용 가능한 GPU 개수: 1
GPU 이름: NVIDIA GeForce RTX 3090
3.3 Tensor를 GPU로 이동시키기
PyTorch에서 모델과 데이터를 GPU에서 실행하려면 .to(device)
메서드를 사용하여 GPU로 이동시켜야 합니다.
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 데이터 및 모델을 GPU로 이동
model = MyNeuralNetwork().to(device)
data = torch.randn(10, 3, 224, 224).to(device)
이렇게 하면 GPU에서 모델을 실행할 수 있습니다.
4. GPU 가속을 위한 추가 팁
4.1 여러 개의 GPU 사용하기
하나의 GPU가 아니라 여러 개의 GPU를 활용하려면 멀티 GPU 학습을 설정해야 합니다.
- TensorFlow에서는
tf.distribute.MirroredStrategy()
를 사용합니다.
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
model = tf.keras.Sequential([...])
model.compile(...)
- PyTorch에서는
DataParallel
을 사용할 수 있습니다.
import torch.nn as nn
model = nn.DataParallel(model)
4.2 Mixed Precision 사용
Mixed Precision
기법을 활용하면 부동소수점 연산을 최적화하여 연산 속도를 더욱 빠르게 할 수 있습니다.
TensorFlow에서는 tf.keras.mixed_precision
을 활성화하면 됩니다.
from tensorflow.keras.mixed_precision import set_global_policy
set_global_policy('mixed_float16')
PyTorch에서는 torch.cuda.amp
를 사용할 수 있습니다.
scaler = torch.cuda.amp.GradScaler()
4.3 CUDA 연산 최적화
PyTorch에서는 torch.backends.cudnn.benchmark = True
를 설정하면 GPU 연산을 최적화할 수 있습니다.
torch.backends.cudnn.benchmark = True
5. 결론
딥러닝 프레임워크에서 GPU를 활용하면 모델 학습 속도를 획기적으로 개선할 수 있습니다. TensorFlow와 PyTorch 모두 GPU를 지원하며, CUDA와 cuDNN을 올바르게 설정하면 최적의 성능을 얻을 수 있습니다. 또한, 멀티 GPU, Mixed Precision 등의 기법을 활용하면 학습 성능을 더욱 향상시킬 수 있습니다. 앞으로의 연구나 프로젝트에서 GPU를 적극적으로 활용하여 딥러닝 모델을 효율적으로 개발해 보시기 바랍니다.
'Python DeepLearning' 카테고리의 다른 글
PyTorch의 데이터 로딩 및 변환 (Dataset과 DataLoader) (0) | 2025.04.10 |
---|---|
TensorFlow의 데이터 입력 파이프라인 (tf.data) (0) | 2025.04.09 |
모델 저장 및 로드 방법 (TensorFlow & PyTorch) (0) | 2025.04.07 |
PyTorch와 TensorFlow 비교: 어떤 프레임워크를 선택할까? (0) | 2025.04.06 |
PyTorch란? 설치 및 기본 사용법 (0) | 2025.04.05 |