TensorFlow.js trong Node.js

Hướng dẫn này mô tả các gói và API TensorFlow.js có sẵn cho Node.js.

Để tìm hiểu cách cài đặt TensorFlow.js trong Node.js, hãy xem hướng dẫn thiết lập . Để biết thêm thông tin về cài đặt và hỗ trợ, hãy xem kho lưu trữ TensorFlow.js cho Node.js.

CPU TensorFlow

Gói CPU TensorFlow có thể được nhập như sau:

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

Khi nhập TensorFlow.js từ gói này, bạn sẽ nhận được một mô-đun được tăng tốc bởi tệp nhị phân TensorFlow C và chạy trên CPU. TensorFlow trên CPU sử dụng khả năng tăng tốc phần cứng để tối ưu hóa tính toán đại số tuyến tính.

Gói này hoạt động trên các nền tảng Linux, Windows và macOS có hỗ trợ TensorFlow.

GPU TensorFlow

Gói GPU TensorFlow có thể được nhập như sau:

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

Giống như gói CPU, mô-đun được tăng tốc bằng mã nhị phân TensorFlow C. Nhưng gói GPU chạy các phép toán tensor trên GPU bằng CUDA nên chỉ có trên Linux. Liên kết này có thể nhanh hơn ít nhất một bậc so với các tùy chọn liên kết khác.

TensorFlow cho JavaScript thuần túy

Ngoài ra còn có phiên bản TensorFlow.js chạy JavaScript thuần trên CPU. Nó có thể được nhập khẩu như sau:

import * as tf from '@tensorflow/tfjs'

Gói này giống với gói bạn sử dụng trong trình duyệt. Trong gói này, các hoạt động được chạy bằng JavaScript nguyên bản trên CPU. Gói này nhỏ hơn nhiều so với các gói khác vì nó không cần nhị phân TensorFlow nhưng cũng chậm hơn nhiều.

Vì gói này không dựa vào TensorFlow nên nó có thể được sử dụng trên nhiều thiết bị hỗ trợ Node.js hơn. Nó không giới hạn ở các nền tảng Linux, Windows và macOS hỗ trợ TensorFlow.

Cân nhắc sản xuất

Các liên kết Node.js cung cấp phần phụ trợ cho TensorFlow.js để triển khai các hoạt động một cách đồng bộ. Điều này có nghĩa là, ví dụ: khi bạn gọi một thao tác như tf.matMul(a, b) , nó sẽ chặn luồng chính cho đến khi thao tác hoàn tất.

Vì lý do này, các liên kết rất phù hợp cho các tập lệnh và tác vụ ngoại tuyến. Nếu muốn sử dụng các liên kết Node.js trong một ứng dụng sản xuất như máy chủ web, bạn nên thiết lập hàng đợi công việc hoặc thiết lập các luồng công việc để mã TensorFlow.js của bạn không chặn luồng chính.

API

Khi bạn nhập gói dưới dạng tf bằng bất kỳ tùy chọn nào ở trên, tất cả các ký hiệu TensorFlow.js thông thường sẽ xuất hiện trên mô-đun đã nhập.

tf.browser

Các API trong không gian tên tf.browser.* không thể sử dụng được trong Node.js vì chúng phụ thuộc vào các API dành riêng cho trình duyệt. Để biết danh sách các API tf.browser , hãy xem Trình duyệt .

tf.node

Hai gói Node.js cũng cung cấp một không gian tên, tf.node , chứa các API dành riêng cho Node.js (ví dụ: TensorBoard).

Dưới đây là ví dụ về xuất tóm tắt sang TensorBoard trong 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();