Assistez au symposium Women in ML le 7 décembre Inscrivez-vous maintenant

Déployer le projet tfjs-node sur la plate-forme cloud

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

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 les plateformes cloud ne nécessite pas de configuration supplémentaire. Ce guide vous montrera comment exécuter le mnist nœud par exemple dans le @ tensorflow / tfjs-exemples du référentiel sur Heroku et gcloud. Le soutien de Node.js Heroku est documenté dans cet article . Node.js en cours sur Google Cloud Platform est documenté 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 data.js , main.js , model.js et package.json fichiers à partir du mnist nœud par exemple.
  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 le npm install la commande dans votre répertoire local pour installer les dépendances qui sont déclarées dans le package.json fichier. 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. Former le modèle local 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 build, tels que node_modules, dans votre fichier .gitignore.

Créer et déployer l'application Heroku

  1. Créer une nouvelle application sur le site Heroku
  2. Engagez votre changement et poussez vers le 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 l'addon 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 d'entraînement des modèles :

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 Heroku console .

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 g++ pour compiler l'addon natif du nœud à partir des fichiers source. Vous devrez vous assurer que votre pile dispose du package Linux build-essential (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 Google Cloud outil client
  3. Ajouter app.yaml fichier pour configurer le Node.js Runtime

Déployer l'application sur GCloud

Exécutez gcloud app deploy pour déployer le code local et configurations pour 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 d'entraînement 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