instalar como python ubuntu tensorflow

python - como - install tensorflow windows



¿Cómo saber si tensorflow está usando la aceleración de gpu desde el interior de Python Shell? (18)

¿Esto confirmará que tensorflow usa GPU durante el entrenamiento también?

Código

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Salida

I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties: name: GeForce GT 730 major: 3 minor: 5 memoryClockRate (GHz) 0.9015 pciBusID 0000:01:00.0 Total memory: 1.98GiB Free memory: 1.72GiB I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0: Y I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0) Device mapping: /job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0 I tensorflow/core/common_runtime/direct_session.cc:255] Device mapping: /job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0

He instalado tensorflow en mi ubuntu 16.04 usando la segunda respuesta here con la instalación de cuda apt incorporada de ubuntu.

Ahora mi pregunta es ¿cómo puedo probar si tensorflow realmente está usando gpu? Tengo una gtx gtx 960m. Cuando import tensorflow esta es la salida

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally

¿Es esta salida suficiente para verificar si tensorflow está usando gpu?


Además de otras respuestas, lo siguiente debería ayudarlo a asegurarse de que su versión de tensorflow incluya soporte para GPU.

import tensorflow as tf print(tf.test.is_built_with_cuda())


Además de usar sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) que se describe en otras respuestas, así como en la documentation oficial de TensorFlow, puede intentar asignar un cálculo a la GPU y ver si tiene un error.

import tensorflow as tf with tf.device(''/gpu:0''): a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name=''a'') b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name=''b'') c = tf.matmul(a, b) with tf.Session() as sess: print (sess.run(c))

aquí

  • "/ cpu: 0": la CPU de su máquina.
  • "/ gpu: 0": la GPU de su máquina, si tiene una.

Si tiene una GPU y puede usarla, verá el resultado. De lo contrario, verá un error con un largo stacktrace. Al final tendrás algo como esto:

No se puede asignar un dispositivo al nodo ''MatMul'': no ​​se pudo satisfacer la especificación explícita del dispositivo ''/ dispositivo: GPU: 0'' porque no se registraron dispositivos que coincidan con esa especificación en este proceso

Recientemente aparecieron algunas funciones útiles en TF:

También puede verificar los dispositivos disponibles en la sesión:

with tf.Session() as sess: devices = sess.list_devices()

devices te devolverán algo como

[_DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:CPU:0, CPU, -1, 4670268618893924978), _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 17179869184, 6127825144471676437), _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_GPU:0, XLA_GPU, 17179869184, 16148453971365832732), _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:0, TPU, 17179869184, 10003582050679337480), _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:1, TPU, 17179869184, 5678397037036584928)


Con las actualizaciones recientes de Tensorflow, puede verificarlo de la siguiente manera:

import tensorflow as tf tf.test.gpu_device_name()

Esto devolverá True si GPU está siendo utilizado por Tensorflow , y devolverá False contrario.

Si desea el dispositivo device_name , puede escribir: tf.test.gpu_device_name() . Obtenga más detalles desde here


Creo que hay una manera más fácil de lograr esto.

import tensorflow as tf if tf.test.gpu_device_name(): print(''Default GPU Device: {}''.format(tf.test.gpu_device_name())) else: print("Please install GPU version of TF")

Por lo general se imprime como

Default GPU Device: /device:GPU:0

Esto me parece más fácil que esos registros detallados.


Ejecute lo siguiente en Jupyter,

import tensorflow as tf sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Si ha configurado su entorno correctamente, obtendrá la siguiente salida en la terminal donde ejecutó "jupyter notebook" ,

2017-10-05 14:51:46.335323: I c:/tf_jenkins/home/workspace/release-win/m/windows-gpu/py/35/tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Quadro K620, pci bus id: 0000:02:00.0) Device mapping: /job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0 2017-10-05 14:51:46.337418: I c:/tf_jenkins/home/workspace/release-win/m/windows-gpu/py/35/tensorflow/core/common_runtime/direct_session.cc:265] Device mapping: /job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0

Puedes ver aquí que estoy usando TensorFlow con un Nvidia Quodro K620.


El siguiente fragmento de código debería proporcionarle todos los dispositivos disponibles para tensorflow.

from tensorflow.python.client import device_lib print(device_lib.list_local_devices())

Salida de muestra

[name: "/ cpu: 0" device_type: "CPU" memory_limit: 268435456 localidad {} encarnación: 4402277519343584096,

name: "/ gpu: 0" device_type: "GPU" memory_limit: 6772842168 localidad {bus_id: 1} encarnación: 7471795903849088328 physical_device_desc: "dispositivo: 0, nombre: GeForce GTX 1070, identificación del bus pci: 0000: 05: 00.0"]


Encuentro que consultar el gpu desde la línea de comandos es más fácil:

nvidia-smi +-----------------------------------------------------------------------------+ | NVIDIA-SMI 384.98 Driver Version: 384.98 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 980 Ti Off | 00000000:02:00.0 On | N/A | | 22% 33C P8 13W / 250W | 5817MiB / 6075MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 1060 G /usr/lib/xorg/Xorg 53MiB | | 0 25177 C python 5751MiB | +-----------------------------------------------------------------------------+

si su aprendizaje es un proceso en segundo plano, el pid de jobs -p debe coincidir con el pid de nvidia-smi


Esta es la línea que estoy usando para enumerar los dispositivos disponibles para tf.session directamente desde bash:

python -c "import os; os.environ[''TF_CPP_MIN_LOG_LEVEL''] = ''3''; import tensorflow as tf; sess = tf.Session(); [print(x) for x in sess.list_devices()]; print(tf.__version__);"

Imprimirá los dispositivos disponibles y la versión de tensorflow, por ejemplo:

_DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 268435456, 10588614393916958794) _DeviceAttributes(/job:localhost/replica:0/task:0/device:XLA_GPU:0, XLA_GPU, 17179869184, 12320120782636586575) _DeviceAttributes(/job:localhost/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 17179869184, 13378821206986992411) _DeviceAttributes(/job:localhost/replica:0/task:0/device:GPU:0, GPU, 32039954023, 12481654498215526877) 1.14.0


Esto debería proporcionar la lista de dispositivos disponibles para Tensorflow (en Py-3.6):

import tensorflow as tf assert tf.test.is_gpu_available() assert tf.test.is_built_with_cuda()


No, no creo que "abrir la biblioteca CUDA" sea suficiente, porque diferentes nodos del gráfico pueden estar en diferentes dispositivos.

Para saber qué dispositivo se usa, puede habilitar la ubicación del dispositivo de registro de esta manera:

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Verifique su consola para este tipo de salida.


Ok, primero inicie un ipython shell desde la terminal e import TensorFlow

$ ipython --pylab Python 3.6.5 |Anaconda custom (64-bit)| (default, Apr 29 2018, 16:14:56) Type ''copyright'', ''credits'' or ''license'' for more information IPython 6.4.0 -- An enhanced Interactive Python. Type ''?'' for help. Using matplotlib backend: Qt5Agg In [1]: import tensorflow as tf

Ahora, podemos ver el uso de la memoria de la GPU usando el comando:

# realtime update for every 2s $ watch -n 2 nvidia-smi

Como solo hemos import ed TensorFlow pero aún no hemos usado ninguna GPU, las estadísticas de uso serán:

Observe cómo el uso de memoria de la GPU es muy inferior (~ 200 MB).

Ahora, carguemos la GPU en nuestro código. Como se indica en la tf documentation , haga:

In [2]: sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Ahora, las estadísticas del reloj deberían mostrar la memoria de uso de GPU actualizada como se muestra a continuación:

Observe cómo nuestro proceso de Python desde el shell de ipython está utilizando 7.7GB de la memoria de la GPU.

PD: puede seguir viendo estas estadísticas mientras se ejecuta el código, para ver qué tan intenso es el uso de la GPU.


Pon esto cerca de la parte superior de tu cuaderno jupyter. Comenta lo que no necesitas.

# confirm TensorFlow sees the GPU from tensorflow.python.client import device_lib assert ''GPU'' in str(device_lib.list_local_devices()) # confirm Keras sees the GPU from keras import backend assert len(backend.tensorflow_backend._get_available_gpus()) > 0 # confirm PyTorch sees the GPU from torch import cuda assert cuda.is_available() assert cuda.device_count() > 0 print(cuda.get_device_name(cuda.current_device()))

Originalmente respondido https://.com/a/53244520/420400 .


Prefiero usar nvidia-smi para monitorear el uso de GPU. Si aumenta significativamente cuando inicia su programa, es una buena señal de que su flujo de tensor está utilizando GPU.


Puede verificar si actualmente está utilizando la GPU ejecutando el siguiente código:

from tensorflow.python.client import device_lib device_lib.list_local_devices()

Si la salida es '''' , significa que está usando solo CPU ;
Si la salida es algo así /device:GPU:0 , significa que la GPU funciona.

Y use el siguiente código para verificar qué GPU está usando:

tf.test.is_gpu_available( cuda_only=False, min_cuda_compute_capability=None)


Simplemente desde el símbolo del sistema o el entorno Linux ejecute el siguiente comando.

python -c ''import torch; print(torch.cuda.is_available())'' python -c ''import torch; print(torch.cuda.is_available())'' Lo anterior debe imprimir'' True ''

python -c ''import torch; print(torch.rand(2,3).cuda())'' python -c ''import torch; print(torch.rand(2,3).cuda())'' Este debería imprimir lo siguiente

tensor([[0.7997, 0.6170, 0.7042], [0.4174, 0.1494, 0.0516]], device=''cuda:0'')


Tiene algunas opciones para probar si su instalación de TensorFlow está utilizando la aceleración de GPU.

Puede escribir los siguientes comandos en tres plataformas diferentes.

import tensorflow as tf sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

  1. Jupyter Notebook: comprueba la consola que ejecuta Jupyter Notebook. Podrá ver la GPU en uso.
  2. Python Shell: podrá ver directamente el resultado. (Nota: no asigne la salida del segundo comando a la variable ''sess''; si eso ayuda).
  3. Spyder: escriba el siguiente comando en la consola.

    import tensorflow as tf tf.test.is_gpu_available()


Tensorflow 2.0

A partir de tensorflow 2.0, las sesiones ya no se usan. Una forma que sigue funcionando para probar la funcionalidad de la GPU es:

tf = tf.Session(config=tf.ConfigProto(log_device_placement=True)) tf.list_devices() # _DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 268435456)

Si obtiene un error, debe verificar su instalación.