Cuda, tensorflow, versões e desilusões

Tensorflow com aceleração de gpu

No repositorio automec-ad estão uns nodes de ROS que implementam uma solução de condução autónoma recorrendo ao opencv, tensorflow e keras. Estes nodes estavam funcionais até que decidi explorar e usar CUDA no processamento.

Entretanto começou uma saga de instalações, configurações, desinstalações e desilusões.

Portanto, como o meu portátil tem um nvidia  GeForce MX110 (GM108M), com 64 cuda cores, e um compute level de 5.0, decidi fazer essa jornada.

Passei por várias versões, em que alguma coisa falhava, até chegar aqui, onde continua  a falhar qualquer coisa, no caso os referidos nodes de ROS.

O que tinha instalado com o tensorflow gpu acelerado era o seguinte:

  • GeForce MX110
  • Nvidia driver 460 (proprietary, tested, from apt)
  •  Cuda compilation tools, release 10.1, V10.1.243
  • TensorFlow 2.2.2
  • CuDNN 7.6.5
  • Keras 2.3.0-tf

TypeError: (‘Keyword argument not understood:’, ‘groups’)

Esta configuração com tensorflow 2.2.2 funciona com o cuda 10.1  que é o que está instalado e portanto a aceleração gpu funciona (no entanto os nodes não funcionam).


Tensorflow em aceleração de gpu mas com cuda instalado

Configuração de software em que o tensorflow/keras funciona nos nodes referidos, mas sem aceleração de GPU

  • GeForce MX110
  • Nvidia driver 460 (proprietary, tested, from apt)
  • Cuda compilation tools, release 10.1, V10.1.243
  • TensorFlow 2.5.0
  • CuDNN 7.6.5
  • Keras 2.5.0
  • OpenCV 4.2.0 (nota 1)

nota 1: apos a instalação do pacote imgaug com:

pip3 install imgaug –user

A ficou a versão OpenCV 4.5.3, em vez da 4.2.0.

As diferenças são a versões do TensorFlow e Keras, que passaram ambas para a versão 2.5.0.

O tensorflow 2.5.0 funciona com o cuda 11.0, e como o cuda instalado é o 10.1, então a aceleração gpu não funciona, (mas os nodes funcionam).

Portanto, como não posso ter dois mundo num só, criei um utilizador novo, ubuntu, e installei localmente o tensorflow 2.2.2.


Tanto quanto me apercebi, para poder instalar o cuda 11.0 tenho que ter uma versão superior do driver da placa de video , provavelmente o 465, mas que em experiencias anteriores não consegui por a funcionar correctamente.

 


Commands to get installed versions

nvcc –version

python3 -c ‘import tensorflow as tf; print(tf.__version__)’

cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

python -c ‘import keras; print(keras.__version__)’

or

from tensorflow import keras
print(keras.__version__)
2.3.0-tf

Testing cuda gpu tensorflow instalation

import tensorflow as tf
gpu_available = tf.test.is_gpu_available()
is_cuda_gpu_available = tf.test.is_gpu_available(cuda_only=True)
is_cuda_gpu_min_3 = tf.test.is_gpu_available(True, (3,0))

OpenCV version

import cv2
cv2.__version__