Distribuisci il progetto tfjs-node sulla piattaforma cloud

Questo documento descrive come eseguire un processo Node.js con il pacchetto @tensorflow/tfjs-node su piattaforme cloud.

A partire da tfjs-node@1.2.4, l'esecuzione del progetto Node.js su piattaforme cloud non richiede configurazioni aggiuntive. Questa guida mostrerà come eseguire l'esempio mnist-node nel repository @tensorflow/tfjs-examples su Heroku e GCloud. Il supporto Node.js di Heroku è documentato in questo articolo . L'esecuzione di Node.js su Google Cloud Platform è documentata qui .

Distribuisci il progetto Node.js su Heroku

Prerequisiti

  1. Node.js e npm installati
  2. Conto Heroku
  3. CLI di Heroku

Crea l'app Node.js

  1. Crea una cartella e copia i file data.js , main.js , model.js e package.json dall'esempio mnist-node .
  2. Assicurati che la dipendenza @tensorflow/tfjs-node sia @1.2.4 o versione successiva.

Crea la tua app ed eseguila localmente

  1. Esegui il comando npm install nella directory locale per installare le dipendenze dichiarate nel file package.json . Dovresti essere in grado di vedere che il pacchetto tfjs-node è installato e libtensorflow è scaricato.
$ 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. Addestra il modello localmente eseguendo 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. Assicurati di ignorare gli artefatti di compilazione, come node_modules, nel tuo file .gitignore.

Crea e distribuisci l'app Heroku

  1. Crea una nuova app sul sito web di Heroku
  2. Impegna il tuo cambiamento e spingilo verso Heroku Master
$ git init
$ heroku git:remote -a your-app-name
$ git add .
$ git commit -m "First Commit"
$ git push heroku master
  1. Nei log di build, dovresti essere in grado di vedere il pacchetto tfjs-node che scarica la libreria TensorFlow C e carica il componente aggiuntivo nativo di 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:

Nei registri del processo su Heroku, dovresti essere in grado di vedere i registri di addestramento del modello:

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

Puoi anche avviare o eseguire il debug del processo nella console Heroku.

Utilizzando tfjs-node prima della versione 1.2.4

Se stai utilizzando il pacchetto tfjs-node prima della versione 1.2.4, il pacchetto richiede g++ per compilare il componente aggiuntivo nativo del nodo dai file di origine. Dovrai assicurarti che il tuo stack abbia il pacchetto Linux build-essential (lo stack della versione più recente potrebbe non averlo di default).

Distribuisci il progetto Node.js su Google Cloud Platform

Prerequisiti

  1. Avere un progetto Google Cloud valido con un account di fatturazione
  2. Installa lo strumento client Google Cloud
  3. Aggiungi il file app.yaml per configurare il runtime Node.js

Distribuisci l'app su GCloud

Esegui gcloud app deploy per distribuire il codice locale e le configurazioni su App Engine. Nei log di distribuzione dovresti essere in grado di vedere che tfjs-node è installato:

$ 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

Nei log delle app, dovresti essere in grado di vedere il processo di addestramento del modello:

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