pytorch- device 설정

seung·2024년 8월 11일

pytorch

목록 보기
1/2

device 확인 및 GPU 여러 설정 확인하기

# tensor가 cpu에 있는지 gpu에 있는지 확인하기
a=torch.tensor([1,2,3])
a.device

# CUDA 기술을 사용할 수 있는 환경
torch.cuda.is_available()

# CUDA device 이름 확인하는 코드
torch.cuda.get_cuda_name(device=0)

# 사용 가능한 GPU개수 파악하기
torch.cuda.device_count()

pytorch에서 GPU 쓰는 법

파이토치에서 gpu로 모델을 돌리고 싶다면 cpu에 있는 모델과 tensor들을 gpu에 올려놔야한다.

# 파이토치에 gpu 할당하는 법(3가지)
device='cuda' if torch.cuda.is_avaliable() else 'cpu'
1. x = torch.tensor([1., 2.], device) 
2. x = torch.tensor([1., 2.]).cuda() 
3. x = torch.tensor([1., 2.]).to(device)

model.to(device)
input=inputs.to(device)

model.to(device) vs model=model.to(device) ?

모델을 돌리다 보면 의문점이 들었다.
device tensor들은 device로 보낸 후 다시 변수 지정을 통해 device로 보낸 인스턴스를 저장하는데 model은 보면 그냥 model.to(device)만 하는 것을 볼 수 있었다.
이렇게 하면 device로 보낸 새로운 모델을 저장하지 않았으니깐 작동하지 않는거 아닌가 하는 의문이 들었다.
그걸 stackoverflow 사이트에서 의문점을 해결할 수 있었다.
(https://stackoverflow.com/questions/59560043/what-is-the-difference-between-model-todevice-and-model-model-todevice)

nn.Module에서 to와 tensor에서 쓰는 to는 다르다는 것을 알 수 있었다.

## 1) tensor
# tensor a is in CPU
device = torch.device('cuda:0')
b = a.to(device)
# a is still in CPU!
# b is in GPU!
# a and b are different

## 2) model
# model a is in CPU
device = torch.device('cuda:0')
b = a.to(device)
# a and b are in GPU
# a and b point to the same model 

0개의 댓글