Implantar projeto tfjs-node na plataforma de nuvem

Este documento descreve como executar um processo Node.js com o pacote @ tensorflow / tfjs-node em plataformas de nuvem.

A partir de tfjs-node@1.2.4, a execução do projeto Node.js em plataformas em nuvem não requer configuração adicional. Este guia irá mostrar como executar o mnist-node exemplo, no @ tensorflow / tfjs-exemplos repositório em Heroku e gcloud. Apoio Node.js do Heroku está documentada neste artigo . Executando Node.js no Google Cloud Platform está documentado aqui .

Implantar projeto Node.js no Heroku

Pré-requisitos

  1. Node.js e npm instalados
  2. Conta Heroku
  3. Heroku CLI

Crie o aplicativo Node.js

  1. Crie uma pasta e copiar os data.js , main.js , model.js e package.json arquivos do mnist-node exemplo.
  2. Certifique-se de que a dependência @ tensorflow / tfjs-node seja @ 1.2.4 ou uma versão mais recente.

Crie seu aplicativo e execute-o localmente

  1. Execute o npm install comando em seu diretório local para instalar as dependências que são declarados na package.json arquivo. Você deve ser capaz de ver que o pacote tfjs-node está instalado e o libtensorflow foi baixado.
$ 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. Treinar o modelo localmente, executando 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. Certifique-se de ignorar os artefatos de construção, como node_modules, em seu arquivo .gitignore.

Crie e implante o aplicativo Heroku

  1. Crie um novo aplicativo no site do Heroku
  2. Comprometa sua mudança e empurre para o mestre heroku
$ git init
$ heroku git:remote -a your-app-name
$ git add .
$ git commit -m "First Commit"
$ git push heroku master
  1. Nos registros de compilação, você deve conseguir ver o pacote tfjs-node fazendo o download da Biblioteca C do TensorFlow e carregando o complemento Node.js do TensorFlow:
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:

Nos registros do processo no Heroku, você deve ser capaz de ver os registros de treinamento do modelo:

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

Você também pode iniciar ou depurar o processo em Heroku consola .

Usando tfjs-node antes da versão 1.2.4

Se você estiver usando o pacote tfjs-node antes da versão 1.2.4, o pacote requer g ++ para compilar o addon nativo do nó a partir dos arquivos de origem. Você terá que se certificar de que sua pilha contém o pacote essencial para a construção do Linux (a pilha da versão mais recente pode não tê-lo como padrão).

Implantar projeto Node.js no Google Cloud Platform

Pré-requisitos

  1. Ter um projeto válido do Google Cloud com conta de faturamento
  2. Instalar Google Cloud ferramenta de cliente
  3. Adicionar app.yaml arquivo para configurar o Node.js Runtime

Implante o aplicativo no GCloud

Execute gcloud app deploy para implantar o código local e configurações para o App Engine. Nos logs de implantação, você deve ser capaz de ver que tfjs-node está instalado:

$ 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

Nos logs de aplicativos, você deve ser capaz de ver o processo de treinamento do modelo:

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