TensorFlow.js في Node.js

يصف هذا الدليل حزم TensorFlow.js وواجهات برمجة التطبيقات المتاحة لـ Node.js.

لمعرفة كيفية تثبيت TensorFlow.js في Node.js ، راجع برنامج الإعداد التعليمي . للحصول على معلومات إضافية حول التثبيت والدعم ، راجع TensorFlow.js لمستودع Node.js.

وحدة المعالجة المركزية TensorFlow

يمكن استيراد حزمة TensorFlow CPU على النحو التالي:

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'

مثل حزمة وحدة المعالجة المركزية ، يتم تسريع الوحدة بواسطة TensorFlow C. لكن حزمة GPU تقوم بتشغيل عمليات موتر على GPU باستخدام CUDA ، لذا فهي متوفرة فقط على Linux. يمكن أن يكون هذا الربط على الأقل من حيث الحجم أسرع من خيارات الربط الأخرى.

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 الخاص بك سلسلة الرسائل الرئيسية.

واجهات برمجة التطبيقات

عند استيراد الحزمة كـ tf باستخدام أي من الخيارات أعلاه ، تظهر جميع رموز TensorFlow.js العادية في الوحدة النمطية المستوردة.

tf. المتصفح

لا يمكن استخدام واجهات برمجة التطبيقات في مساحة الاسم tf.browser.* في Node.js لأنها تعتمد على واجهات برمجة التطبيقات الخاصة بالمتصفح. للحصول على قائمة tf.browser APIs ، راجع المستعرض .

tf.node

توفر حزمتا Node.js أيضًا مساحة اسم ، tf.node ، والتي تحتوي على واجهات برمجة تطبيقات خاصة بـ 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();