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
- Node.js e npm installati
- Conto Heroku
- CLI di Heroku
Crea l'app Node.js
- Crea una cartella e copia i file
data.js
,main.js
,model.js
epackage.json
dall'esempio mnist-node . - Assicurati che la dipendenza @tensorflow/tfjs-node sia @1.2.4 o versione successiva.
Crea la tua app ed eseguila localmente
- Esegui il comando
npm install
nella directory locale per installare le dipendenze dichiarate nel filepackage.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
- 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
- Assicurati di ignorare gli artefatti di compilazione, come node_modules, nel tuo file .gitignore.
Crea e distribuisci l'app Heroku
- Crea una nuova app sul sito web di Heroku
- 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
- 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
- Avere un progetto Google Cloud valido con un account di fatturazione
- Installa lo strumento client Google Cloud
- 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