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
- Node.js et npm installés
- Compte Heroku
- CLI Heroku
Créer l'application Node.js
- Créez un dossier et copiez les fichiers
data.js
,main.js
,model.js
etpackage.json
de l'exemple mnist-node . - 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
- Exécutez la commande
npm install
dans votre répertoire local pour installer les dépendances déclarées dans le fichierpackage.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
- 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
- Assurez-vous d'ignorer les artefacts de construction, tels que node_modules, dans votre fichier .gitignore.
Créer et déployer l'application Heroku
- Créez une nouvelle application sur le site Web Heroku
- 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
- 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
- Avoir un projet Google Cloud valide avec un compte de facturation
- Installer l'outil client Google Cloud
- 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