Развертывание проекта tfjs-node на облачной платформе

В этом документе описывается, как запустить процесс Node.js с пакетом @tensorflow/tfjs-node на облачных платформах.

Начиная с tfjs-node@1.2.4, запуск проекта Node.js на облачных платформах не требует дополнительной настройки. В этом руководстве показано, как запустить пример mnist-node в репозитории @tensorflow/tfjs-examples в Heroku и GCloud. Поддержка Node.js в Heroku описана в этой статье . Запуск Node.js на Google Cloud Platform описан здесь .

Развертывание проекта Node.js на Heroku

Предварительные условия

  1. Node.js и npm установлены.
  2. Аккаунт Героку
  3. Интерфейс командной строки Хероку

Создайте приложение Node.js.

  1. Создайте папку и скопируйте файлы data.js , main.js , model.js и package.json из примера mnist-node .
  2. Убедитесь, что зависимость @tensorflow/tfjs-node имеет версию @1.2.4 или новее.

Создайте свое приложение и запустите его локально

  1. Запустите команду npm install в своем локальном каталоге, чтобы установить зависимости, объявленные в файле package.json . Вы должны увидеть, что пакет tfjs-node установлен и загружен 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. Обучите модель локально, запустив 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. Обязательно игнорируйте артефакты сборки, такие как node_modules, в файле .gitignore.

Создайте и разверните приложение Heroku.

  1. Создайте новое приложение на сайте Heroku.
  2. Зафиксируйте изменения и отправьте их мастеру Heroku.
$ git init
$ heroku git:remote -a your-app-name
$ git add .
$ git commit -m "First Commit"
$ git push heroku master
  1. В журналах сборки вы должны увидеть, как пакет tfjs-node загружает библиотеку TensorFlow C и загружает собственное дополнение 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:

В журналах процессов Heroku вы сможете увидеть журналы обучения модели:

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

Вы также можете запустить или отладить процесс в консоли Heroku.

Использование tfjs-node до версии 1.2.4

Если вы используете пакет tfjs-node до версии 1.2.4, пакету требуется g++ для компиляции собственного дополнения узла из исходных файлов. Вам необходимо убедиться, что в вашем стеке есть пакет, необходимый для сборки Linux (в стеке более новой версии его может не быть по умолчанию).

Развертывание проекта Node.js на Google Cloud Platform

Предварительные условия

  1. Иметь действующий проект Google Cloud с платежным аккаунтом.
  2. Установите клиентский инструмент Google Cloud
  3. Добавьте файл app.yaml для настройки среды выполнения Node.js.

Развертывание приложения в GCloud

Запустите gcloud app deploy , чтобы развернуть локальный код и конфигурации в App Engine. В журналах развертывания вы увидите, что tfjs-node установлен:

$ 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

В журналах приложений вы сможете увидеть процесс обучения модели:

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