Wdróż projekt węzła tfjs na platformie chmurowej

W tym dokumencie opisano, jak uruchomić proces Node.js z pakietem @tensorflow/tfjs-node na platformach chmurowych.

Począwszy od tfjs-node@1.2.4, uruchomienie projektu Node.js na platformach chmurowych nie wymaga dodatkowej konfiguracji. Ten przewodnik pokaże, jak uruchomić przykład mnist-node w repozytorium @tensorflow/tfjs-examples na Heroku i GCloud. Obsługa Node.js przez Heroku jest udokumentowana w tym artykule . Uruchamianie Node.js na Google Cloud Platform jest udokumentowane tutaj .

Wdróż projekt Node.js na Heroku

Warunki wstępne

  1. Zainstalowano Node.js i npm
  2. Konto Heroku
  3. Heroku CLI

Utwórz aplikację Node.js

  1. Utwórz folder i skopiuj pliki data.js , main.js , model.js i package.json z przykładu mnist-node .
  2. Upewnij się, że zależność @tensorflow/tfjs-node to @1.2.4 lub nowsza wersja.

Zbuduj aplikację i uruchom ją lokalnie

  1. Uruchom komendę npm install w katalogu lokalnym, aby zainstalować zależności zadeklarowane w pliku package.json . Powinieneś zobaczyć, że pakiet tfjs-node jest zainstalowany i pobrany jest pakiet libtensorflow.
$ 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. Wytrenuj model lokalnie, uruchamiając 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. Upewnij się, że ignorujesz artefakty kompilacji, takie jak moduły węzłów, w pliku .gitignore.

Utwórz i wdróż aplikację Heroku

  1. Utwórz nową aplikację na stronie Heroku
  2. Zatwierdź zmianę i naciśnij do mistrza heroku
$ git init
$ heroku git:remote -a your-app-name
$ git add .
$ git commit -m "First Commit"
$ git push heroku master
  1. W dziennikach kompilacji powinieneś zobaczyć pakiet tfjs-node pobierający bibliotekę TensorFlow C i ładujący natywny dodatek 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:

W dziennikach procesów na Heroku powinieneś zobaczyć dzienniki uczenia modelu:

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

Możesz także uruchomić lub debugować proces w konsoli Heroku.

Używanie węzła tfjs przed wersją 1.2.4

Jeśli używasz pakietu tfjs-node przed wersją 1.2.4, pakiet wymaga g++ do skompilowania natywnego dodatku węzła z plików źródłowych. Będziesz musiał upewnić się, że twój stos zawiera pakiet niezbędny do kompilacji systemu Linux (stos nowszej wersji może nie mieć go domyślnie).

Wdróż projekt Node.js na Google Cloud Platform

Warunki wstępne

  1. Posiadaj ważny projekt Google Cloud z kontem rozliczeniowym
  2. Zainstaluj narzędzie klienckie Google Cloud
  3. Dodaj plik app.yaml, aby skonfigurować środowisko wykonawcze Node.js

Wdróż aplikację w GCloud

Uruchom gcloud app deploy , aby wdrożyć lokalny kod i konfiguracje w App Engine. W dziennikach wdrażania powinieneś zobaczyć, że zainstalowany jest węzeł tfjs:

$ 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

W dziennikach aplikacji powinien być widoczny proces uczenia modelu:

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