TensorFlow.js ב-Node.js

מדריך זה מתאר את חבילות TensorFlow.js וממשקי API הזמינים עבור Node.js.

כדי ללמוד כיצד להתקין את TensorFlow.js ב-Node.js, עיין במדריך ההתקנה . למידע נוסף על התקנה ותמיכה, עיין במאגר TensorFlow.js עבור Node.js.

מעבד TensorFlow

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

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

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

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

TensorFlow GPU

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

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

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

TensorFlow עבור JavaScript טהור

יש גם גרסה של TensorFlow.js שמריצה JavaScript טהור במעבד. ניתן לייבא אותו באופן הבא:

import * as tf from '@tensorflow/tfjs'

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

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

שיקולי ייצור

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

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

ממשקי API

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

tf.browser

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

tf.node

שתי חבילות Node.js מספקות גם מרחב שמות, tf.node , המכיל ממשקי API ספציפיים ל-Node.js (לדוגמה, TensorBoard).

הנה דוגמה לייצוא סיכומים ל-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 purposes.
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();