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 الثنائي وتعمل على وحدة المعالجة المركزية (CPU). يستخدم TensorFlow الموجود على وحدة المعالجة المركزية تسريع الأجهزة لتحسين حسابات الجبر الخطي.

تعمل هذه الحزمة على أنظمة Linux وWindows وmacOS حيث يتم دعم TensorFlow.

وحدة معالجة الرسومات TensorFlow

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

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

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

TensorFlow لجافا سكريبت النقي

هناك أيضًا إصدار من TensorFlow.js يقوم بتشغيل JavaScript خالصًا على وحدة المعالجة المركزية. ويمكن استيراده على النحو التالي:

import * as tf from '@tensorflow/tfjs'

هذه الحزمة هي نفس الحزمة التي ستستخدمها في المتصفح. في هذه الحزمة، يتم تشغيل العمليات في 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.browser

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

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();