는지 알고 싶다면pytorch
용 GPU. It's 을 검출하는 것이 가능합과 함께nvidia-smi
이 있는 경우 모든 활동에서는 GPU 프로세스 동안,하지만 내가 원하는 무언가에서 작성된파이썬
스크립트입니다.
는 방법이 있을까?
이 작동하는 것입니다:
In [1]: import torch
In [2]: torch.cuda.current_device()
Out[2]: 0
In [3]: torch.cuda.device(0)
Out[3]: <torch.cuda.device at 0x7efce0b03be0>
In [4]: torch.cuda.device_count()
Out[4]: 1
In [5]: torch.cuda.get_device_name(0)
Out[5]: 'GeForce GTX 950M'
In [6]: torch.cuda.is_available()
Out[6]: True
이것을 알려주는 GPUGeForce GTX950M
의해 사용되는PyTorch
.
를 시작한 후 실행하는 훈련을 반복하려는 경우**manually 그것을보고 터미널에서 여부를 프로그램을 활용하여 GPU 리소스 그리고 어느 정도까지,다음 사용할 수 있습니다:
$ watch -n 2 nvidia-smi
이 것입 업데이트 사용 통계를 위해 모든 2 초 동안 누를 때까지>ctrl+c
또한,당신은 여부를 확인할 수 있습의 설치 PyTorch 감지하 CUDA 설치에 의해 올바르게 하고 있:
In [13]: import torch
In [14]: torch.cuda.is_available()
Out[14]: True
진정한
상태를 의미하는 PyTorch 이 올바르게 구성되어 있고****는 GPU 를 사용하지만 당신은/이동 장소 tensors 으로 필요한 문서 당신의 코드입니다.
당신이 원하는 경우 이 안에는 파이썬 코드고,그 다음으로 이 모듈:
https://github.com/jonsafari/nvidia-ml-py 또는 pypi 여기:https://pypi.python.org/pypi/nvidia-ml-py/
로 그't 이 제안되어 여기에,나는'm 를 추가하는 방법을 사용하여토치.디바
으로,이것은 매우 편리한다면,초기화 tensors 에서 올바른 장치.
# setting device on GPU if available, else CPU
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print('Using device:', device)
print()
#Additional Info when using cuda
if device.type == 'cuda':
print(torch.cuda.get_device_name(0))
print('Memory Usage:')
print('Allocated:', round(torch.cuda.memory_allocated(0)/1024**3,1), 'GB')
print('Cached: ', round(torch.cuda.memory_cached(0)/1024**3,1), 'GB')
출력:
Using device: cuda
Tesla K80
Memory Usage:
Allocated: 0.3 GB
Cached: 0.6 GB
위에서 언급한 바와 같이,사용하는디바
이 수**:
-하려면이동텐서 각각의 장치:
습니다.랜드(10).(장치)
-을창의텐서는 직접에서``장치:
습니다.랜드(10,장치=장치)
을 만드는 사이의 전환CPU과GPU편안한을 변경하지 않고 실제 코드입니다.
으로 하고있는 몇 가지 질문에 대한 혼란의캐시and*할당된 메모리 저는'm 추가 몇 가지 추가 정보:
-
토치.cuda.max_memory_cached(장치=None)
반환합니다 최대의 GPU 를 메모리에 의해 관리 할당자를 캐싱에 대 바 어 장치.-
토치.cuda.memory_allocated(장치=None)
반환합니다 현재 온보드 메모리 사용량을 텐서에 대한 바이 지정된 장치입니다.
할 수 있습을 직접 손장치
로 지정된 추가 위에 게시하거나 당신이 그것을 남길 수 있습니다없음고 그것을 사용하는 것current_device()
.
에 사무실이트 얻을 시작 페이지를 확인 GPU 에 대한 PyTorch 아래와 같:
import torch
torch.cuda.is_available()
에서 실용적 관점에서 단 하나의 작은 여담:
import torch
dev = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
이dev
이제 알고있는 경우 cuda 또는 cpu.
과는 차이가 있는 방법을 다루는 모델으로 tensors 로 이동할 때 cuda. 그것은 처음에는 조금 이상하다.
import torch
dev = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
t1 = torch.randn(1,2)
t2 = torch.randn(1,2).to(dev)
print(t1) # tensor([[-0.2678, 1.9252]])
print(t2) # tensor([[ 0.5117, -3.6247]], device='cuda:0')
t1.to(dev)
print(t1) # tensor([[-0.2678, 1.9252]])
print(t1.is_cuda) # False
t1=t1.to(dev)
print(t1) # tensor([[-0.2678, 1.9252]], device='cuda:0')
print(t1.is_cuda) # True
model = M() # not on cuda
model.to(dev) # is on cuda (all parameters)
print(next(model.parameters()).is_cuda) #True
이 모든 것은 까다로운 이해와 그것은 한 번,당신은 거래를 빨리 미만 디버깅이 가능합니다.
이 있는지 확인하기 위해 GPU 를 사용:
torch.cuda.is_available()
는 경우 위의 기능을 반환False
,당신은 하나도 없 GPU,또는 Nvidia 드라이버가 설치되지 않도록 OS 표시되지 않는 GPU,또는 GPU 되고 숨겨진에 의해 환경 변수CUDA_VISIBLE_DEVICES
. 을 때의 값이CUDA_VISIBLE_DEVICES
-1,다음의 모든 장치가 숨겨져 있습니다. 을 확인할 수 있는 가치 코드에서는 이선:`os.environ['CUDA_VISIBLE_DEVICES']
는 경우 위의 기능을 반환True
하지 않는 반드시 사용하고 있는 GPU. 에 Pytorch 할당할 수 있습니다 tensors 장치 때 당신이 그들을 찾을 수 있습니다. 기본적으로,tensors 얻을 할당cpu
. 을 확인하는 귀하의 텐서는 할당되지:
# assuming that 'a' is a tensor created somewhere else
a.device # returns the device where the tensor is allocated
참고는 당신이 작동할 수 없습니다 tensors 에 할당된 다른 장치입니다. 는 방법을 참조 할당을 텐서 GPU,여기를 참조하십시오:https://pytorch.org/docs/stable/notes/cuda.html
거의 모든 대답을 여기에 참조토치.cuda.is_available()
. 그러나는's 의 한 부분은 동전. 그것은 여부를 알려줍 GPU(실제로 CUDA 도)이용이 가능 여부,그's 이 실제로 사용되고 있습니다. 에서 일반적인 설치는,당신이 설정한 장치와 같은 것이:
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
그러나 더 큰 환경(예를 들어의 연구)그것은 또한 일반적인 사용자에게 더 많은 옵션,그래서 입력에 따라 그들은 비활성화 할 수 있습 CUDA,지정 CUDA Id 니다. 이러한 경우에는지 여부,GPU 를 사용하지 않는지 여부를 기준으로 사용할 수 있다. 후에는 장치로 설정되었습니다 성화 장치,당신이 얻을 수있는 그것의 종류의 재산지 여부를 확인하 it's CUDA 나지 않습니다.
if device.type == 'cuda':
# do something
FWIW:는 경우 당신은 여기에 있기 때문에 당신의 pytorch 상false
for토치.cuda.is_available()
는's 기 때문에 아마 당신이 설치되어 pytorch 버전지 않고 GPU 지원합니다. (예를 들어:당신은 코드에서는 노트북은 다음에 대한 테스트 server). 솔루션을 제거 및 설치 pytorch 다시 오른쪽에서 명령을 pytorchdownloads포함되어 있습니다. 또한 이](https://github.com/pytorch/pytorch/issues/6041)pytorch 문제입니다.