Déployer le projet tfjs-node sur la plateforme cloud

Ce document décrit comment exécuter un processus Node.js avec le package @tensorflow/tfjs-node sur les plateformes cloud.

À partir de tfjs-node@1.2.4, l'exécution du projet Node.js sur des plateformes cloud ne nécessite aucune configuration supplémentaire. Ce guide montrera comment exécuter l'exemple mnist-node dans le référentiel @tensorflow/tfjs-examples sur Heroku et GCloud. La prise en charge de Node.js par Heroku est documentée dans cet article . L'exécution de Node.js sur Google Cloud Platform est documentée ici .

Déployer le projet Node.js sur Heroku

Conditions préalables

  1. Node.js et npm installés
  2. Compte Heroku
  3. CLI Heroku

Créer l'application Node.js

  1. Créez un dossier et copiez les fichiers data.js , main.js , model.js et package.json de l'exemple mnist-node .
  2. Assurez-vous que la dépendance @tensorflow/tfjs-node est @1.2.4 ou une version plus récente.

Créez votre application et exécutez-la localement

  1. Exécutez la commande npm install dans votre répertoire local pour installer les dépendances déclarées dans le fichier package.json . Vous devriez pouvoir voir que le package tfjs-node est installé et que libtensorflow est téléchargé.
$ npm install
> @tensorflow/tfjs-node@1.2.5 install mnist-node/node_modules/@tensorflow/tfjs-node
> node scripts/install.js

CPU-linux-1.2.5.tar.gz
* Downloading libtensorflow
[==============================] 22675984/bps 100% 0.0s
* Building TensorFlow Node.js bindings
  1. Entraînez le modèle localement en exécutant npm start .
$ npm start
> tfjs-examples-mnist-node@0.1.0 start /mnist-node
> node main.js

2019-07-30 17:33:34.109195: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2019-07-30 17:33:34.147880: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 3492175000 Hz
2019-07-30 17:33:34.149030: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x52f7090 executing computations on platform Host. Devices:
2019-07-30 17:33:34.149057: I tensorflow/compiler/xla/service/service.cc:175]   StreamExecutor device (0): <undefined>, <undefined>

Total params: 594922
Trainable params: 594922
Non-trainable params: 0
_________________________________________________________________
Epoch 1 / 20
Epoch 1 / 20
========================>----------------------------------------------------------------------------------: 35.5
  1. Assurez-vous d'ignorer les artefacts de construction, tels que node_modules, dans votre fichier .gitignore.

Créer et déployer l'application Heroku

  1. Créez une nouvelle application sur le site Web Heroku
  2. Validez votre modification et envoyez-la au maître heroku
$ git init
$ heroku git:remote -a your-app-name
$ git add .
$ git commit -m "First Commit"
$ git push heroku master
  1. Dans les journaux de build, vous devriez pouvoir voir le package tfjs-node télécharger la bibliothèque TensorFlow C et charger le module complémentaire natif TensorFlow Node.js :
remote: -----> Installing dependencies
remote:        Installing node modules (package.json)
remote:
remote:        > @tensorflow/tfjs-node@1.2.5 install /tmp/build_de800e169948787d84bcc2b9ccab23f0/node_modules/@tensorflow/tfjs-node
remote:        > node scripts/install.js
remote:
remote:        CPU-linux-1.2.5.tar.gz
remote:        * Downloading libtensorflow
remote:
remote:        * Building TensorFlow Node.js bindings
remote:        added 92 packages from 91 contributors and audited 171 packages in 9.983s
remote:        found 0 vulnerabilities
remote:

Dans les journaux de processus sur Heroku, vous devriez pouvoir voir les journaux de formation du modèle :

Total params: 594922
Trainable params: 594922
Non-trainable params: 0
_________________________________________________________________
Epoch 1 / 20
Epoch 1 / 20
====>--------------------------------------------------------------------: 221.9

Vous pouvez également démarrer ou déboguer le processus dans la console Heroku.

Utilisation de tfjs-node avant la version 1.2.4

Si vous utilisez le package tfjs-node avant la version 1.2.4, le package nécessite que g++ compile le module complémentaire natif du nœud à partir des fichiers sources. Vous devrez vous assurer que votre pile dispose du package Linux essentiel à la construction (la pile de version plus récente peut ne pas l'avoir par défaut).

Déployer le projet Node.js sur Google Cloud Platform

Conditions préalables

  1. Avoir un projet Google Cloud valide avec un compte de facturation
  2. Installer l'outil client Google Cloud
  3. Ajoutez le fichier app.yaml pour configurer le runtime Node.js

Déployer l'application sur GCloud

Exécutez gcloud app deploy pour déployer le code local et les configurations sur App Engine. Dans les journaux de déploiement, vous devriez pouvoir voir que tfjs-node est installé :

$ gcloud app deploy

Step #1:
Step #1: > @tensorflow/tfjs-node@1.2.5 install /app/node_modules/@tensorflow/tfjs-node
Step #1: > node scripts/install.js
Step #1:
Step #1: CPU-linux-1.2.5.tar.gz
Step #1: * Downloading libtensorflow
Step #1:
Step #1: * Building TensorFlow Node.js bindings
Step #1: added 88 packages from 85 contributors and audited 171 packages in 13.392s
Step #1: found 0 vulnerabilities

Dans les journaux des applications, vous devriez pouvoir voir le processus de formation du modèle :

Total params: 594922
Trainable params: 594922
Non-trainable params: 0

Epoch 1 / 20
===============================================================================>
745950ms 14626us/step - acc=0.920 loss=0.247 val_acc=0.987 val_loss=0.0445
Loss: 0.247 (train), 0.044 (val); Accuracy: 0.920 (train), 0.987 (val) (14.62 ms/step)
Epoch 2 / 20
===============================================================================>
818140ms 16042us/step - acc=0.980 loss=0.0655 val_acc=0.989 val_loss=0.0371
Loss: 0.066 (train), 0.037 (val); Accuracy: 0.980 (train), 0.989 (val) (16.04 ms/step)
Epoch 3 / 20
Epoch 3 / 20