Tfjs-node projesini bulut platformunda dağıtın

Bu belgede, bulut platformlarında @tensorflow/tfjs-node paketiyle bir Node.js işleminin nasıl çalıştırılacağı açıklanmaktadır.

tfjs-node@1.2.4'ten itibaren Node.js projesini bulut platformlarında çalıştırmak ek yapılandırma gerektirmez. Bu kılavuz, mnist-node örneğinin Heroku ve GCloud'daki @tensorflow/tfjs-examples deposunda nasıl çalıştırılacağını gösterecektir. Heroku'nun Node.js desteği bu makalede belgelenmiştir. Node.js'nin Google Cloud Platform'da çalıştırılması burada belgelenmiştir.

Node.js projesini Heroku'da dağıtma

Önkoşullar

  1. Node.js ve npm yüklü
  2. Heroku hesabı
  3. Heroku CLI

Node.js uygulamasını oluşturun

  1. Bir klasör oluşturun ve mnist-node örneğinden data.js , main.js , model.js ve package.json dosyalarını kopyalayın.
  2. @tensorflow/tfjs-node bağımlılığının @1.2.4 veya daha yeni bir sürüm olduğundan emin olun.

Uygulamanızı oluşturun ve yerel olarak çalıştırın

  1. package.json dosyasında bildirilen bağımlılıkları yüklemek için yerel dizininizde npm install komutunu çalıştırın. tfjs-node paketinin kurulduğunu ve libtensorflow'un indirildiğini görebilmeniz gerekir.
$ 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 çalıştırarak modeli yerel olarak eğitin.
$ 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. .gitignore dosyanızdaki node_modules gibi derleme yapıtlarını yok saydığınızdan emin olun.

Heroku uygulamasını oluşturun ve dağıtın

  1. Heroku web sitesinde yeni bir uygulama oluşturun
  2. Değişikliğinizi tamamlayın ve heroku master'a iletin
$ git init
$ heroku git:remote -a your-app-name
$ git add .
$ git commit -m "First Commit"
$ git push heroku master
  1. Derleme günlüklerinde, tfjs-node paketinin TensorFlow C Kitaplığını indirdiğini ve TensorFlow Node.js yerel eklentisini yüklediğini görebilmeniz gerekir:
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'daki süreç günlüklerinde model eğitim günlüklerini görebilmeniz gerekir:

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

İşlemi Heroku konsolunda da başlatabilir veya hata ayıklayabilirsiniz.

1.2.4 sürümünden önce tfjs-node'un kullanılması

Sürüm 1.2.4'ten önceki tfjs-node paketini kullanıyorsanız paket, düğüm yerel eklentisini kaynak dosyalardan derlemek için g++ gerektirir. Yığınınızın Linux build-essential paketine sahip olduğundan emin olmanız gerekecektir (daha yeni sürüm yığınında varsayılan olarak bu paket bulunmayabilir).

Node.js projesini Google Cloud Platform'da dağıtın

Önkoşullar

  1. Faturalandırma hesabına sahip geçerli bir Google Cloud Projeniz olsun
  2. Google Cloud istemci aracını yükleyin
  3. Node.js Çalışma Zamanını yapılandırmak için app.yaml dosyasını ekleyin

Uygulamayı GCloud'a dağıtın

Yerel kodu ve yapılandırmaları App Engine'e dağıtmak için gcloud app deploy çalıştırın. Dağıtım günlüklerinde tfjs-node'un kurulu olduğunu görebilmeniz gerekir:

$ 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

Uygulama günlüklerinde model eğitim sürecini görebilmeniz gerekir:

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