TensorFlow.js ใน Node.js

คู่มือนี้จะอธิบายแพ็คเกจ TensorFlow.js และ API ที่พร้อมใช้งานสำหรับ Node.js

หากต้องการเรียนรู้วิธีติดตั้ง TensorFlow.js ใน Node.js โปรดดู บทช่วยสอนการตั้งค่า สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและการสนับสนุน โปรดดู ที่เก็บ TensorFlow.js สำหรับ Node.js

ซีพียูเทนเซอร์โฟลว์

สามารถนำเข้าแพ็คเกจ TensorFlow CPU ได้ดังต่อไปนี้:

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

เมื่อคุณนำเข้า TensorFlow.js จากแพ็คเกจนี้ คุณจะได้รับโมดูลที่เร่งความเร็วโดยไบนารี TensorFlow C และทำงานบน CPU TensorFlow บน CPU ใช้การเร่งด้วยฮาร์ดแวร์เพื่อเพิ่มประสิทธิภาพการคำนวณพีชคณิตเชิงเส้น

แพ็คเกจนี้ทำงานบนแพลตฟอร์ม Linux, Windows และ macOS ที่รองรับ TensorFlow

GPU เทนเซอร์โฟลว์

สามารถนำเข้าแพ็คเกจ TensorFlow GPU ได้ดังต่อไปนี้:

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

เช่นเดียวกับแพ็คเกจ CPU โมดูลจะถูกเร่งความเร็วโดยไบนารี TensorFlow C แต่แพ็คเกจ GPU รันการดำเนินการเทนเซอร์บน GPU ด้วย CUDA ดังนั้นจึงมีเฉพาะบน Linux เท่านั้น การเชื่อมโยงนี้สามารถมีลำดับความสำคัญเร็วกว่าตัวเลือกการผูกอื่นๆ เป็นอย่างน้อย

TensorFlow สำหรับ JavaScript ล้วนๆ

นอกจากนี้ยังมี TensorFlow.js เวอร์ชันที่รัน JavaScript บน CPU เพียงอย่างเดียว สามารถนำเข้าได้ดังนี้:

import * as tf from '@tensorflow/tfjs'

แพ็คเกจนี้เป็นแพ็คเกจเดียวกับที่คุณใช้ในเบราว์เซอร์ ในแพ็คเกจนี้ การดำเนินการจะดำเนินการในรูปแบบวานิลลา JavaScript บน CPU แพ็คเกจนี้มีขนาดเล็กกว่าแพ็คเกจอื่นมากเนื่องจากไม่จำเป็นต้องใช้ไบนารี 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.เบราว์เซอร์

API ในเนมสเป tf.browser.* ไม่สามารถใช้งานได้ใน Node.js เนื่องจากขึ้นอยู่กับ API เฉพาะเบราว์เซอร์ สำหรับรายการ tf.browser API โปรดดูที่ Browser

tf.โหนด

แพ็กเกจ 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();