python ¿Cómo comprobar si Pytorch está utilizando la GPU?





2 Answers

Después de comenzar a ejecutar el ciclo de entrenamiento, y luego, si desea verlo manualmente desde el terminal, si su programa está utilizando los recursos de la GPU y hasta qué punto, puede usar:

$ watch -n 2 nvidia-smi

Esto actualizará las estadísticas por cada 2 segundos hasta que presione ctrl + c

Además, puede verificar si su instalación de PyTorch detecta su instalación de CUDA correctamente haciendo:

In [13]: import  torch

In [14]: torch.cuda.is_available()
Out[14]: True

True estado True significa que PyTorch está configurado correctamente y está utilizando la GPU, aunque tiene que mover / colocar los tensores con las declaraciones necesarias en su código.

Si quieres hacer esto dentro del código de Python, mira este módulo:

https://github.com/jonsafari/nvidia-ml-py o en pypi aquí: https://pypi.python.org/pypi/nvidia-ml-py/

python memory-management gpu nvidia pytorch

Me gustaría saber si pytorch está utilizando mi GPU. Es posible detectar con nvidia-smi si hay alguna actividad de la GPU durante el proceso, pero quiero algo escrito en un script de python .

Hay una manera de hacerlo ?




Como no se ha propuesto aquí, estoy agregando un método utilizando torch.device , ya que es bastante útil, también al inicializar tensores en el device correcto.

# 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')

Salida:

Using device: cuda

Tesla K80
Memory Usage:
Allocated: 0.3 GB
Cached:    0.6 GB

Como se mencionó anteriormente, utilizando un device es posible:

  • Para mover los tensores al device respectivo:

    torch.rand(10).to(device)
  • O crea un tensor directamente en el device :

    torch.rand(10, device=device)

Lo que hace que el cambio entre la CPU y la GPU sea cómodo sin cambiar el código real.




Related