PyTorch로 GPU를 사용하는 방법
딥러닝 모델에 PyTorch로 GPU를 사용하는 방법에 대한 간략한 튜토리얼.
Created on February 2|Last edited on February 2
Comment
섹션
섹션도입GPU 가용성 확인GPU - Gotcha 사용Torch CUDA 패키지예시 및 GPU 메트릭 시각화요약Weights & BiasesPyTorch에 관심있는 분들에게 추천하는 내용
도입
이 보고서에서는 GPU를 보다 효과적으로 사용 및 제어할 수 있는 방법에 대해 설명하고자 합니다.
모든 GPU와 CPU 활용률 메트릭(Utilization Metrics)을 자동으로 로그(Log)할 수 있는 가중치 & 바이어스 (Weights & Biases)를 사용할 것입니다. 수많은 모델에 트레이닝을 제공함에 따라 컴퓨팅 리소스 사용량을 쉽게 모니터링할 수 있습니다.
GPU 가용성 확인
GPU에 액세스할 수 있는지 확인하는 가장 쉬운 방법은 torch.cuda.is_available()을 콜(Call)하는 것입니다. 결과가 True인 경우 시스템에 Nvidia 드라이버가 올바르게 설치된 것입니다.
>>> import torch>>> torch.cuda.is_available()
GPU - Gotcha 사용
- 텐서 (Tensor)는 디폴트 값으로 CPU에서 생성되며 모델도 CPU에서 초기화됩니다. 따라서 GPU를 사용하여 작업이 완료되었는지 수동으로 확인해야 합니다.>>> X_train = torch.FloatTensor([0., 1., 2.])>>> X_train.is_cudaFalse
- PyTorch는 CPU가 생성한 텐서 (Tensor)를 GPU로 전송할 수 있도록 하는 간편한 API를 제공합니다. 다행히 새로운 텐서 (Tensor)는 상위 텐서와 동일한 장치에 생성됩니다.>>> X_train = X_train.to(device)>>> X_train.is_cudaTrue
- 모델에도 같은 로직이 적용됩니다.model = MyModel(args)model.to(device)
- 따라서 데이터와 모델은 GPU로 전송되어야 합니다. 그렇다면 장치device 란 무엇일까요?
- 일반적으로 트레이닝 중인 장치(CPU 또는 GPU)에 보관할 장치device를 초기화하는 것이 PyTorch의 일반적인 관행입니다.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")print(device)
Torch CUDA 패키지
PyTorch에서 torch.cuda 패키지가 CPU 텐서와 동일한 기능을 구현하는 CUDA 텐서 유형을 추가로 지원하지만 컴퓨팅을 위해 GPU를 활용합니다.
- 만약 GPU에 탠서를 원한다면, .cuda()를 콜(Call)하세요.>>> X_train = torch.FloatTensor([0., 1., 2.])>>> X_train = X_train.cuda()
- 이미 GPU에 텐서(Tensor)가 있는 경우 CPU에 가져오려면 .cpu()를 콜(Call)하세요. 이는 일반적으로 모델의 출력값(텐서)을 CPU로 가져오는 데 사용됩니다.
- 현재 선택한 장치의 인덱스 가져오기.>>> torch.cuda.current_device() # returns 0 in my case
- 사용할 수 있는 GPU 수 가져오기.>>> torch.cuda.device_count() # returns 1 in my case
- 장치 이름을 가져오기.>>> torch.cuda.get_device_name(0) # good old Tesla K80
예시 및 GPU 메트릭 시각화
PyTorch를 사용하여 간단한 MNIST classifier를 트레이닝하기 위해 링크된 코랩 노트북(Colab Notebook)을 사용해 보세요. 노트북은 Weights & Biases와 통합되어 있습니다.
Weights & Biases를 사용하여 모델을 추적하는 경우 GPU 활용률을 포함한 모든 시스템 메트릭이 자동으로 로그(기록)됩니다. 로그(기록)된 가장 중요한 메트릭 중 일부에는 할당된 GPU 메모리와 사용률, CPU 사용률 등이 포함되어 있습니다. 로그된 메트릭의 전체 목록은 여기에서 확인할 수 있습니다.
다음의 미디어 패널은 트레이닝 중에 W&B (가중치 & 바이어스)에서 자동으로 로그(기록)한 이러한 시스템 메트릭 중 일부를 보여줍니다.
요약
이 아티클에서는 케라스(Keras)를 사용한 딥 러닝 연구에 GPU를 활용하고 가중치 & 바이어스를 사용하여 리소스의 소비를 모니터링하는 방법을 살펴보고자 합니다. W&B로 트레이닝 하는 동안 리소스 활용률 추적 시스템 (Tracking System Resource Utilization)에 대한 람다 랩스(Lambda Labs)의 이 훌륭한 아티클의 확인해보세요.
Weights & Biases
Weights & Biases는 여러분의 머신 러닝 실험을 추적할 수 있도록 도와줍니다. 우리 툴을 사용하면 실행에서 하이퍼 파라미터 (Hyperparameter)와 출력 메트릭을 로그(기록)한 후에 결과값을 시각화 및 비교하고 결과값을 동료 분들과 신속하게 공유할 수 있습니다.
PyTorch에 관심있는 분들에게 추천하는 내용
PyTorch Dropout for regularization - tutorial
Learn how to regularize your PyTorch model with Dropout, complete with a code tutorial and interactive visualizations
Transfer Learning Using PyTorch Lightning
In this article, we have a brief introduction to transfer learning using PyTorch Lightning, building on the image classification example from a previous article.
Image Classification Using PyTorch Lightning and Weights & Biases
This article provides a practical introduction on how to use PyTorch Lightning to improve the readability and reproducibility of your PyTorch code.
How to save and load models in PyTorch
This article is a machine learning tutorial on how to save and load your models in PyTorch using Weights & Biases for version control.
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.