반응형
PyTorch에는 CPU에서 GPU에 텐서를 전달할 때 .to('cuda')와 .cuda() 두 가지 방법이 있다.
물론 GPU에 바로 텐서를 만들 수도 있다.
바로 만드는 방법과 차이점은 이 글에서 확인하자.
이제 .to('cuda')와 .cuda() 두 가지 방법의 차이를 알아보자.
.to('cuda')
이 방법은 지정된 디바이스(일반적으로 GPU)로 텐서를 이동시키기 위한 보다 일반적인 방법이다.
.to('cuda')를 호출하여 텐서를 현재 기본 CUDA 디바이스로 전송할 수 있다.
여러 개의 GPU가 있는 경우, PyTorch가 지정한 기본 디바이스(기본적으로는 GPU 0)를 사용한다.
근데 .to('cuda:1')과 같이 디바이스 인덱스를 전달하여 다른 디바이스(GPU)을 사용하도록 직접 지정할 수도 있다.
.cuda()
이 방법은 PyTorch에서만 사용되는 방법으로 텐서를 기존의 CUDA 디바이스로 전달하는 데 사용된다.
.to('cuda')와 유사하지만, 디바이스를 명시적으로 지정하는 유연성은 없다.
대신, PyTorch에 의해 설정된 현재 기본 CUDA 디바이스로만 자동으로 텐서를 전달한다.
디바이스를 선택하는 방법은 다른 글에서 다뤄보겠다.
마지막으로 아주 간단한 예제를 통해 다시 살펴보자.
import torch
# Pass tensor to default CUDA device using .to('cuda')
tensor1 = torch.tensor([1, 2, 3]).to('cuda')
# Pass tensor to default CUDA device using .cuda()
tensor2 = torch.tensor([4, 5, 6]).cuda()
# Explicitly pass tensor to a specific CUDA device using .to('cuda')
tensor3 = torch.tensor([7, 8, 9]).to('cuda:1')
위 예제에서 tensor1와 tensor2는 각각 .to('cuda')와 .cuda() 메소드를 사용하여 디폴트로 설정된 CUDA 장치로 전달된다.
tensor3은 장치 인덱스(이 경우 cuda:1)를 지정하여 특정 CUDA 장치에 텐서를 전달한다.
반응형
'코딩 환경 > PyTorch' 카테고리의 다른 글
| [PyTorch] 파이토치 모델 저장 및 불러오기 (0) | 2024.09.03 |
|---|---|
| [PyTorch] 파이토치에서 특정 GPU 선택, 지정하는 방법 (0) | 2023.05.27 |
| [PyTorch] 파이토치 코드 실행 속도 높이기 / .cuda()와 device=torch.device('cuda')의 차이 + 애플 m1, m2 칩 (0) | 2023.05.27 |
| [PyTorch] num_workers 설명과 빠른 트레이닝을 위한 값 최적화 (0) | 2023.05.24 |
| [PyTorch] 서버에서 TensorBoard(텐서보드) 실행하고 Port Forwarding(포트 포워딩)으로 로컬에서 모니터링하는 방법 (1) | 2023.05.15 |