LiteRT.js হল Google এর উচ্চ কার্যক্ষমতা সম্পন্ন WebAI রানটাইম, যা উৎপাদন ওয়েব অ্যাপ্লিকেশনগুলিকে লক্ষ্য করে। এটি LiteRT স্ট্যাকের ধারাবাহিকতা, যা মাল্টি-ফ্রেমওয়ার্ক সাপোর্ট নিশ্চিত করে এবং সমস্ত প্ল্যাটফর্ম জুড়ে আমাদের মূল রানটাইমকে একীভূত করে।
LiteRT.js নিম্নলিখিত মূল বৈশিষ্ট্যগুলিকে সমর্থন করে:
- LiterRT মডেলের জন্য ব্রাউজারে সাপোর্ট : CPU-তে সেরা পারফরম্যান্স সহ মডেলগুলি চালান, WebAssembly (Wasm) এ XNNPack দ্বারা ত্বরান্বিত, এবং WebGPU API ব্যবহার করে GPU।
- মাল্টি-ফ্রেমওয়ার্ক সামঞ্জস্যতা : আপনার পছন্দের ML ফ্রেমওয়ার্ক ব্যবহার করুন: PyTorch, Jax অথবা TensorFlow।
- বিদ্যমান পাইপলাইনের উপর ভিত্তি করে তৈরি করুন : ইনপুট এবং আউটপুট হিসেবে TensorFlow.js টেনসর সমর্থন করে বিদ্যমান TensorFlow.js পাইপলাইনের সাথে একীভূত করুন।
স্থাপন
npm থেকে @litertjs/core প্যাকেজটি ইনস্টল করুন:
npm install @litertjs/core
Wasm ফাইলগুলি node_modules/@litertjs/core/wasm/ এ অবস্থিত। সুবিধার জন্য, সম্পূর্ণ wasm/ ফোল্ডারটি কপি করে পরিবেশন করুন। তারপর, প্যাকেজটি আমদানি করুন এবং Wasm ফাইলগুলি লোড করুন:
import {loadLiteRt} from '@litertjs/core';
// Load the LiteRT.js Wasm files from a CDN.
await loadLiteRt('https://cdn.jsdelivr.net/npm/@litertjs/core/wasm/')
// Alternatively, host them from your server.
// They are located in node_modules/@litertjs/core/wasm/
await loadLiteRt(`your/path/to/wasm/`);
মডেল রূপান্তর
LiteRT.js অ্যান্ড্রয়েড এবং iOS এর মতো একই .tflite ফর্ম্যাট ব্যবহার করে এবং এটি Kaggle এবং Huggingface এর বিদ্যমান মডেলগুলিকে সমর্থন করে। যদি আপনার একটি নতুন PyTorch মডেল থাকে, তাহলে আপনাকে এটি রূপান্তর করতে হবে।
একটি PyTorch মডেলকে LiteRT এ রূপান্তর করুন
একটি PyTorch মডেলকে LiterRT তে রূপান্তর করতে, ai-edge-torch কনভার্টার ব্যবহার করুন।
import ai_edge_torch
# Load your torch model. We're using resnet for this example.
resnet18 = torchvision.models.resnet18(torchvision.models.ResNet18_Weights.IMAGENET1K_V1)
sample_inputs = (torch.randn(1, 3, 224, 224),)
# Convert the model to LiteRT.
edge_model = ai_edge_torch.convert(resnet18.eval(), sample_inputs)
# Export the model.
edge_model.export('resnet.tflite')
রূপান্তরিত মডেলটি চালান
মডেলটিকে .tflite ফাইলে রূপান্তর করার পরে, আপনি এটি ব্রাউজারে চালাতে পারেন।
import {loadAndCompile} from '@litertjs/core';
// Load the model hosted from your server. This makes an http(s) request.
const model = await loadAndCompile('/path/to/model.tflite', {
accelerator: 'webgpu', // or 'wasm' for XNNPack CPU inference
});
// The model can also be loaded from a Uint8Array if you want to fetch it yourself.
// Create image input data
const image = new Float32Array(224 * 224 * 3).fill(0);
const inputTensor = new Tensor(image, /* shape */ [1, 3, 224, 224]);
// Run the model
const outputs = await model.run(inputTensor);
// You can also use `await model.run([inputTensor]);`
// or `await model.run({'input_tensor_name': inputTensor});`
// Clean up and get outputs
inputTensor.delete();
const output = outputs[0];
const outputData = await output.data();
output.delete();
বিদ্যমান TensorFlow.js পাইপলাইনে ইন্টিগ্রেট করুন
নিম্নলিখিত কারণে আপনার TensorFlow.js পাইপলাইনে LiteRT.js সংহত করার কথা বিবেচনা করা উচিত:
- সেরা ওয়েবজিপিইউ পারফরম্যান্স : LiterRT.js-এ চলমান রূপান্তরিত মডেলগুলি ওয়েবজিপিইউ ব্রাউজার পারফরম্যান্সের জন্য অপ্টিমাইজ করা হয় এবং বিশেষ করে ক্রোমিয়াম-ভিত্তিক ব্রাউজারগুলিতে দ্রুত।
- মডেল রূপান্তরের পথ সহজতর : LiteRT.js রূপান্তর পথটি সরাসরি PyTorch থেকে LiteRT-তে যায়। PyTorch থেকে TensorFlow.js রূপান্তর পথটি উল্লেখযোগ্যভাবে জটিল, যার জন্য আপনাকে PyTorch -> ONNX -> TensorFlow -> TensorFlow.js থেকে যেতে হবে।
- ডিবাগিং টুল : LiteRT.js কনভার্সন পাথ ডিবাগিং টুলের সাথে আসে।
LiteRT.js টি TensorFlow.js পাইপলাইনের মধ্যে কাজ করার জন্য ডিজাইন করা হয়েছে, এবং এটি TensorFlow.js এর প্রি- এবং পোস্ট-প্রসেসিংয়ের সাথে সামঞ্জস্যপূর্ণ, তাই আপনাকে মাইগ্রেট করার জন্য কেবলমাত্র মডেলটিই প্রয়োজন।
নিম্নলিখিত ধাপগুলি অনুসরণ করে LiterRT.js কে TensorFlow.js পাইপলাইনে একীভূত করুন:
- আপনার আসল TensorFlow, JAX, অথবা PyTorch মডেলটিকে
.tfliteতে রূপান্তর করুন। বিস্তারিত জানার জন্য, মডেল রূপান্তর বিভাগটি দেখুন। -
@litertjs/coreএবং@litertjs/tfjs-interopNPM প্যাকেজগুলি ইনস্টল করুন। - TensorFlow.js WebGPU ব্যাকএন্ড আমদানি করুন এবং ব্যবহার করুন। LiteRT.js-এর TensorFlow.js-এর সাথে ইন্টারঅপারেট করার জন্য এটি প্রয়োজন।
- TensorFlow.js মডেল লোড করার পরিবর্তে LiteRT.js মডেল লোড করুন ।
- TensorFlow.js
model.predict(ইনপুট) অথবাmodel.execute(ইনপুট) এর পরিবর্তেrunWithTfjsTensors(liteRtModel, ইনপুট) ব্যবহার করুন।runWithTfjsTensorsTensorFlow.js মডেলের মতো একই ইনপুট টেনসর ব্যবহার করে এবং TensorFlow.js টেনসর আউটপুট দেয়। - পরীক্ষা করুন যে মডেল পাইপলাইনটি আপনার প্রত্যাশিত ফলাফল দেয়।
runWithTfjsTensors এর সাথে LiteRT.js ব্যবহার করার জন্য মডেল ইনপুটগুলিতে নিম্নলিখিত পরিবর্তনগুলির প্রয়োজন হতে পারে:
- ইনপুটগুলি পুনঃক্রম করুন : কনভার্টার মডেলের ইনপুট এবং আউটপুটগুলিকে কীভাবে অর্ডার করেছে তার উপর নির্ভর করে, আপনাকে সেগুলি দেওয়ার সময় তাদের ক্রম পরিবর্তন করতে হতে পারে।
- ট্রান্সপোজ ইনপুট : এটাও সম্ভব যে কনভার্টারটি TensorFlow.js এর ব্যবহার করা পদ্ধতির তুলনায় মডেলের ইনপুট এবং আউটপুটের লেআউট পরিবর্তন করেছে। মডেল এবং আউটপুটগুলিকে পাইপলাইনের বাকি অংশের সাথে মেলানোর জন্য আপনার ইনপুটগুলি ট্রান্সপোজ করতে হতে পারে।
- ইনপুটগুলির নাম পরিবর্তন করুন : যদি আপনি নামযুক্ত ইনপুট ব্যবহার করেন, তাহলে নামগুলিও পরিবর্তিত হতে পারে।
আপনি model.getInputDetails() এবং model.getOutputDetails() ব্যবহার করে মডেলের ইনপুট এবং আউটপুট সম্পর্কে আরও তথ্য পেতে পারেন।