CPU TensorFlow
بسته CPU TensorFlow را می توان به صورت زیر وارد کرد:
import * as tf from '@tensorflow/tfjs-node'
هنگام وارد کردن TensorFlow.js از این بسته، ماژولی که دریافت می کنید توسط باینری TensorFlow C تسریع می شود و روی CPU اجرا می شود. TensorFlow در CPU از شتاب سخت افزاری برای تسریع محاسبات جبر خطی در زیر هود استفاده می کند.
این بسته روی پلتفرمهای لینوکس، ویندوز و مک که از TensorFlow پشتیبانی میشود، کار میکند.
GPU TensorFlow
بسته GPU TensorFlow را می توان به صورت زیر وارد کرد:
import * as tf from '@tensorflow/tfjs-node-gpu'
مانند بسته CPU، ماژولی که دریافت می کنید توسط باینری TensorFlow C شتاب می گیرد، اما عملیات تانسور را روی GPU با CUDA و بنابراین فقط لینوکس اجرا می کند. این اتصال می تواند حداقل یک مرتبه بزرگتر از سایر گزینه های اتصال باشد.
سی پی یو وانیلی
نسخه TensorFlow.js در حال اجرا با عملیات CPU vanilla را می توان به صورت زیر وارد کرد:
import * as tf from '@tensorflow/tfjs'
این بسته همان بسته ای است که در مرورگر استفاده می کنید. در این پکیج عملیات به صورت وانیلی جاوا اسکریپت روی CPU اجرا می شود. این بسته بسیار کوچکتر از سایرین است زیرا به باینری TensorFlow نیاز ندارد، با این حال بسیار کندتر است.
از آنجایی که این بسته به TensorFlow متکی نیست، میتوان از آن در دستگاههای بیشتری که Node.js را پشتیبانی میکنند، استفاده کرد تا فقط لینوکس، ویندوز و مک.
ملاحظات تولید
اتصالات Node.js یک Backend برای TensorFlow.js فراهم می کند که عملیات را به صورت همزمان اجرا می کند. این بدان معناست که وقتی شما یک عملیات را فراخوانی می کنید، به عنوان مثال tf.matMul(a, b)
، تا زمانی که عملیات کامل شود، رشته اصلی را مسدود می کند.
به همین دلیل، اتصالات در حال حاضر برای اسکریپت ها و کارهای آفلاین مناسب هستند. اگر میخواهید از پیوندهای Node.js در یک برنامه تولیدی، مانند وب سرور، استفاده کنید، باید یک صف شغلی راهاندازی کنید یا رشتههای worker را راهاندازی کنید تا کد TensorFlow.js شما رشته اصلی را مسدود نکند.
API ها
هنگامی که بسته را به عنوان tf در هر یک از گزینه های بالا وارد کردید، تمام نمادهای TensorFlow.js معمولی در ماژول وارد شده ظاهر می شوند.
tf.browser
در بسته معمولی TensorFlow.js، نمادهای موجود در فضای نام tf.browser.*
در Node.js قابل استفاده نخواهند بود زیرا از API های خاص مرورگر استفاده می کنند.
در حال حاضر این موارد عبارتند از:
- tf.browser.fromPixels
- tf.browser.toPixels
tf.node
دو بسته Node.js همچنین یک فضای نام به نام tf.node
ارائه می دهند که حاوی API های مخصوص گره است.
TensorBoard یک نمونه قابل توجه از APIهای ویژه Node.js است.
نمونه ای از صادرات خلاصه به 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 purpose.
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();