En voulant tester quelques bouts de code utilisant Tensorflow, j’ai constaté que mon PC datait un peu: il n’a pas de support CPU supportant les instructions AVX.
Une version « raspberry-pi » existe depuis 2018 mais elle est loin de permettre de travailler efficacement. L’exemple classic sur le dataset MNIST prend en effet un temps assez conséquent à s’exécuter:
import tensorflow as tf mnist = tf.keras.datasets.mnist (x_train, y_train),(x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(), tf.keras.layers.Dense(512, activation=tf.nn.relu), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation=tf.nn.softmax) ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=5) model.evaluate(x_test, y_test)
Le résultat avec le raspberry-pi:
pi@raspberrypi:~/tensorflow $ python3 mninst.py
Downloading data from ...
11493376/11490434 [===] - 2s 0us/step
Epoch 1/5
60000/60000 [===] - 107s 2ms/step - loss: 0.2007 - acc: 0.9407
Epoch 2/5
60000/60000 [===] - 104s 2ms/step - loss: 0.0797 - acc: 0.9758
Epoch 3/5
60000/60000 [===] - 104s 2ms/step - loss: 0.0515 - acc: 0.9835
...
Soit près de 2ms par step.
Depuis une année, Google propose Colab : https://colab.research.google.com qui permet gratuitement un environnement Jupyter avec tensorflow pré-installé. Il y a même des GPU disposition.
CPU:
Epoch 1/5
60000/60000 [===] - 17s 289us/sample - loss: 0.2223 - acc: 0.9342
Epoch 2/5
60000/60000 [===] - 17s 281us/sample - loss: 0.0969 - acc: 0.9706
Epoch 3/5
60000/60000 [===] - 17s 282us/sample - loss: 0.0696 - acc: 0.9783
Epoch 4/5
60000/60000 [===] - 17s 286us/sample - loss: 0.0532 - acc: 0.9836
Epoch 5/5
60000/60000 [===] - 18s 301us/sample - loss: 0.0442 - acc: 0.9856
10000/10000 [===] - 1s 64us/sample - loss: 0.0715 - acc: 0.9805
[0.07151023466372862, 0.9805]
GPU:
Epoch 1/5
60000/60000 [===] - 8s 136us/sample - loss: 0.2170 - acc: 0.9358
Epoch 2/5
60000/60000 [===] - 8s 134us/sample - loss: 0.0954 - acc: 0.9718
Epoch 3/5
60000/60000 [===] - 8s 133us/sample - loss: 0.0690 - acc: 0.9781
Epoch 4/5
60000/60000 [===] - 8s 133us/sample - loss: 0.0530 - acc: 0.9830
Epoch 5/5
60000/60000 [===] - 8s 134us/sample - loss: 0.0442 - acc: 0.9853
10000/10000 [===] - 1s 70us/sample - loss: 0.0609 - acc: 0.9807
[0.06085205714175245, 0.9807]
La version CPU sur Colab est plus de 5x plus rapide que sur un raspberry-pi et la version GPU 10x plus rapide (pour l’exemple ci-dessus).
Il peut donc être intéressant de créer ses modèles sur Colab, à condition d’être conscient que Google y a probablement accès…