LiteRT.js হল Google-এর উচ্চ কার্যক্ষমতাসম্পন্ন WebAI রানটাইম, উৎপাদন ওয়েব অ্যাপ্লিকেশনকে লক্ষ্য করে। এটি LiteRT স্ট্যাকের একটি ধারাবাহিকতা, মাল্টি-ফ্রেমওয়ার্ক সমর্থন নিশ্চিত করে এবং সমস্ত প্ল্যাটফর্ম জুড়ে আমাদের মূল রানটাইম একত্রিত করে।
LiteRT.js নিম্নলিখিত মূল বৈশিষ্ট্যগুলিকে সমর্থন করে:
- LiteRT মডেলের জন্য ইন-ব্রাউজার সমর্থন : CPU-তে সেরা পারফরম্যান্স সহ মডেলগুলি চালান, WebAssembly (Wasm) তে XNNPack এর মাধ্যমে ত্বরান্বিত এবং WebGPU API ব্যবহার করে GPU।
- মাল্টি-ফ্রেমওয়ার্ক সামঞ্জস্যতা : আপনার পছন্দের এমএল ফ্রেমওয়ার্ক ব্যবহার করুন: পাইটর্চ, জ্যাক্স বা টেনসরফ্লো।
- বিদ্যমান পাইপলাইনগুলিতে তৈরি করুন : ইনপুট এবং আউটপুট হিসাবে TensorFlow.js টেনসর সমর্থন করে বিদ্যমান TensorFlow.js পাইপলাইনগুলির সাথে একীভূত করুন।
ইনস্টলেশন
npm থেকে @litertjs/core প্যাকেজ ইনস্টল করুন:
npm install @litertjs/core
Wasm ফাইলগুলি, node_modules/@litertjs/core/wasm/ এ অবস্থিত। সুবিধার জন্য, সম্পূর্ণ wasm/ ফোল্ডারটি কপি করে পরিবেশন করুন। তারপর, প্যাকেজটি আমদানি করুন এবং Wasm ফাইলগুলি লোড করুন:
import {loadLiteRt} from '@litertjs/core;
// Host LiteRT's Wasm files on your server.
await loadLiteRt(`your/path/to/wasm/`);
মডেল রূপান্তর
LiteRT.js একই .tflite ফর্ম্যাট Android এবং iOS ব্যবহার করে এবং এটি Kaggle এবং Huggingface- এ বিদ্যমান মডেলগুলিকে সমর্থন করে। আপনার যদি একটি নতুন PyTorch মডেল থাকে তবে আপনাকে এটি রূপান্তর করতে হবে।
একটি PyTorch মডেলকে LiteRT এ রূপান্তর করুন
একটি PyTorch মডেলকে LiteRT তে রূপান্তর করতে, 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 =
await new Tensor(image, /* shape */ [1, 3, 224, 224]).moveTo('webgpu');
// Run the model
const outputs = model(inputTensor);
// You can also use model([inputTensor])
// or model({'input_tensor_name': inputTensor})
// Clean up and get outputs
inputTensor.delete();
const outputTensorCpu = await outputs[0].moveTo('wasm');
const outputData = outputTensorCpu.toTypedArray();
outputTensorCpu.delete();
বিদ্যমান TensorFlow.js পাইপলাইনে একীভূত করুন
নিম্নলিখিত কারণে আপনার TensorFlow.js পাইপলাইনে LiteRT.js একীভূত করার কথা বিবেচনা করা উচিত:
- সেরা-শ্রেণীর WebGPU পারফরম্যান্স : LiteRT.js WebGPU-তে চলমান রূপান্তরিত মডেলগুলি ব্রাউজার পারফরম্যান্সের জন্য অপ্টিমাইজ করা হয় এবং বিশেষ করে Chromium-ভিত্তিক ব্রাউজারগুলিতে দ্রুত।
- সহজ মডেল রূপান্তর পথ : LiteRT.js রূপান্তর পথ সরাসরি PyTorch থেকে LiteRT এ যায়। PyTorch থেকে TensorFlow.js রূপান্তর পথটি উল্লেখযোগ্যভাবে আরও জটিল, আপনাকে PyTorch -> ONNX -> TensorFlow -> TensorFlow.js থেকে যেতে হবে।
- ডিবাগিং টুলস : LiteRT.js কনভার্সন পাথ ডিবাগিং টুলের সাথে আসে।
LiteRT.js কে TensorFlow.js পাইপলাইনগুলির মধ্যে কাজ করার জন্য ডিজাইন করা হয়েছে, এবং এটি TensorFlow.js প্রি- এবং পোস্ট-প্রসেসিংয়ের সাথে সামঞ্জস্যপূর্ণ, তাই আপনাকে শুধুমাত্র মডেলটি স্থানান্তর করতে হবে।
নিম্নলিখিত ধাপগুলি সহ TensorFlow.js পাইপলাইনে LiteRT.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, ইনপুট) দিয়ে প্রতিস্থাপন করুন।runWithTfjsTensorsএকই ইনপুট টেনসর নেয় যা TensorFlow.js মডেল ব্যবহার করে এবং TensorFlow.js টেনসর আউটপুট করে। - পরীক্ষা করুন যে মডেল পাইপলাইনটি আপনার প্রত্যাশা অনুযায়ী ফলাফল দেয়।
runWithTfjsTensors সাথে LiteRT.js ব্যবহার করার জন্য মডেল ইনপুটগুলিতে নিম্নলিখিত পরিবর্তনগুলির প্রয়োজন হতে পারে:
- ইনপুটগুলি পুনঃক্রম করুন : রূপান্তরকারী মডেলের ইনপুট এবং আউটপুটগুলি কীভাবে অর্ডার করেছে তার উপর নির্ভর করে, আপনি সেগুলি পাস করার সাথে সাথে আপনাকে তাদের অর্ডার পরিবর্তন করতে হতে পারে৷
- ট্রান্সপোজ ইনপুট : এটাও সম্ভব যে কনভার্টার TensorFlow.js যা ব্যবহার করে তার তুলনায় মডেলের ইনপুট এবং আউটপুটগুলির লেআউট পরিবর্তন করেছে। আপনাকে মডেলের সাথে মেলে আপনার ইনপুটগুলি স্থানান্তর করতে হতে পারে এবং বাকি পাইপলাইনের সাথে মেলে আউটপুটগুলি।
- ইনপুটগুলি পুনঃনামকরণ করুন : আপনি যদি নামযুক্ত ইনপুটগুলি ব্যবহার করেন তবে নামগুলিও পরিবর্তিত হতে পারে৷
আপনি model.getInputDetails() এবং model.getOutputDetails() দিয়ে মডেলের ইনপুট এবং আউটপুট সম্পর্কে আরও তথ্য পেতে পারেন।