TensorFlow.js ב-Node

מעבד TensorFlow

ניתן לייבא את חבילת המעבד TensorFlow באופן הבא:

import * as tf from '@tensorflow/tfjs-node'

כאשר מייבאים את TensorFlow.js מחבילה זו, המודול שתקבל יואץ על ידי הבינארי TensorFlow C ויפעל על המעבד. TensorFlow במעבד משתמש בהאצת חומרה כדי להאיץ את חישוב האלגברה הליניארי מתחת למכסה המנוע.

חבילה זו תעבוד על פלטפורמות Linux, Windows ו-Mac בהן TensorFlow נתמך.

TensorFlow GPU

ניתן לייבא את חבילת TensorFlow GPU באופן הבא:

import * as tf from '@tensorflow/tfjs-node-gpu'

כמו חבילת ה-CPU, המודול שתקבל יואץ על ידי הבינארי TensorFlow C, אולם הוא יפעיל פעולות טנסור על ה-GPU עם CUDA ובכך רק לינוקס. כריכה זו יכולה להיות מהירה לפחות בסדר גודל מאשר אפשרויות הכריכה האחרות.

מעבד וניל

ניתן לייבא את הגרסה של TensorFlow.js הפועלת עם פעולות CPU וניל באופן הבא:

import * as tf from '@tensorflow/tfjs'

חבילה זו היא אותה חבילה כמו מה שהיית משתמש בדפדפן. בחבילה זו, הפעולות מופעלות ב-vanilla JavaScript במעבד. החבילה הזו קטנה בהרבה מהאחרות מכיוון שהיא לא צריכה את הבינארי TensorFlow, אולם היא הרבה יותר איטית.

מכיוון שחבילה זו אינה מסתמכת על TensorFlow, ניתן להשתמש בה ביותר התקנים התומכים ב-Node.js מאשר רק Linux, Windows ו-Mac.

שיקולי ייצור

הכריכות של Node.js מספקות קצה אחורי עבור TensorFlow.js שמיישם פעולות באופן סינכרוני. כלומר, כאשר אתה קורא מבצע, למשל tf.matMul(a, b) , זה יחסום את החוט הראשי עד להשלמת הפעולה.

מסיבה זו, הכריכות כיום מתאימות היטב עבור סקריפטים ומשימות לא מקוונות. אם ברצונך להשתמש בקשרי Node.js ביישום ייצור, כמו שרת אינטרנט, עליך להגדיר תור עבודה או להגדיר שרשורי עובדים כך שקוד TensorFlow.js שלך לא יחסום את השרשור הראשי.

ממשקי API

ברגע שאתה מייבא את החבילה כ-tf בכל אחת מהאפשרויות שלמעלה, כל הסמלים הרגילים של TensorFlow.js יופיעו במודול המיובא.

tf.browser

בחבילה TensorFlow.js נורמלי, הסמלים של tf.browser.* מרחב לא יהיה שמיש ב Node.js כפי שהם משתמשים APIs ספציפי לכל דפדפן.

נכון לעכשיו, אלה הם:

  • tf.browser.fromPixels
  • tf.browser.toPixels

tf.node

שתי חבילות Node.js גם לספק מרחב, tf.node , אשר מכיל APIs צומת-ספציפי.

TensorBoard היא דוגמה בולטת לממשקי API ספציפיים ל-Node.js.

דוגמה לייצוא סיכומים ל-TensorBoard ב-Node.js:

const model = tf.sequential();
model.add(tf.layers.dense({ units: 1, inputShape: [200] }));
model.compile({
  loss: 'meanSquaredError',
  optimizer: 'sgd',
  metrics: ['MAE']
});


// Generate some random fake data for demo purpose.
const xs = tf.randomUniform([10000, 200]);
const ys = tf.randomUniform([10000, 1]);
const valXs = tf.randomUniform([1000, 200]);
const valYs = tf.randomUniform([1000, 1]);


// Start model training process.
async function train() {
  await model.fit(xs, ys, {
    epochs: 100,
    validationData: [valXs, valYs],
    // Add the tensorBoard callback here.
    callbacks: tf.node.tensorBoard('/tmp/fit_logs_1')
  });
}
train();