- PyTorch GPU 버전을 설치한다고 GPU를 사용하지 않습니다.
- GPU가 여럿이라면 어떤 GPU가 사용 가능한지 확인하고,
- 변수와 모델에 GPU 사용 설정을 해야 합니다.
1. PyTorch 버전 확인
- 현재 버전을 확인합니다.
1
2
3import torch, torchvision
print(torch.__version__)
print(torchvision.__version__)- 실행 결과
1
21.7.1+cu101
0.8.2+cu101
- 실행 결과
2. GPU 현황 확인
- GPU가 사용 가능한지 확인합니다.
- 사용 가능하다면, 메모리 점유 현황을 출력합니다.
1
2
3
4
5
6
7
8
9if torch.cuda.is_available():
for i in range(torch.cuda.device_count()):
print(f"# DEVICE {i}: {torch.cuda.get_device_name(i)}")
print("- Memory Usage:")
print(f" Allocated: {round(torch.cuda.memory_allocated(i)/1024**3,1)} GB")
print(f" Cached: {round(torch.cuda.memory_cached(i)/1024**3,1)} GB\n")
else:
print("# GPU is not available")- 실행 결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14# DEVICE 0: Tesla V100-PCIE-32GB
- Memory Usage:
Allocated: 0.0 GB
Cached: 0.0 GB
# DEVICE 1: Tesla V100-PCIE-32GB
- Memory Usage:
Allocated: 0.0 GB
Cached: 0.0 GB
# DEVICE 2: Tesla V100-PCIE-32GB
- Memory Usage:
Allocated: 0.0 GB
Cached: 0.0 GB
- 실행 결과
3. GPU 할당 변경
- 작업할 GPU를 선정합니다.
1
2
3
4
5
6# GPU 할당 변경하기
GPU_NUM = 2 # 원하는 GPU 번호 입력
device = torch.device(f'cuda:{GPU_NUM}' if torch.cuda.is_available() else 'cpu')
torch.cuda.set_device(device) # change allocation of current GPU
print ('# Current cuda device: ', torch.cuda.current_device()) # check- 실행 결과
1
# Current cuda device: 2
- 실행 결과
4. GPU 사용을 기본값으로 설정
- 변수를 만들때 자동으로 GPU를 사용하게 설정합니다.
- 앞서
GPU_NUM
으로 지정한 GPU에 할당됩니다.1
2
3if torch.cuda.is_available():
torch.set_default_tensor_type(torch.cuda.FloatTensor)
print(f"using cuda: {GPU_NUM}, {torch.cuda.get_device_name(GPU_NUM)}") - 실행 결과
1
using cuda: 2, Tesla V100-PCIE-32GB
변수를 만들어 확인합니다.
1
2x = torch.FloatTensor([1.0])
x.type()- 실행 결과
1
'torch.FloatTensor'
- 실행 결과
GPU 사용을 기본값으로 명시했는데 안올라갑니다.
강제로 올려봅니다.
1
2x = x.cuda()
x.type()- 실행 결과
1
'torch.cuda.FloatTensor'
- 실행 결과
- 그냥
torch.Tensor()
를 해야 GPU에 올라갑니다. - 자료형도 내가 원하는
torch.cuda.FloatTensor
입니다.1
2x = torch.Tensor([1.0])
x.type()- 실행 결과
1
'torch.cuda.FloatTensor'
- 실행 결과