LiteRT.js adalah runtime WebAI berperforma tinggi Google, yang menargetkan aplikasi Web produksi. Ini adalah kelanjutan dari stack LiteRT, yang memastikan dukungan multi-framework dan menyatukan runtime inti kami di semua platform.
LiteRT.js mendukung fitur inti berikut:
- Dukungan dalam browser untuk model LiteRT: Jalankan model dengan performa terbaik di kelasnya pada CPU, yang dipercepat melalui XNNPack di WebAssembly (Wasm), dan GPU menggunakan WebGPU API.
- Kompatibilitas multi-framework: Gunakan Framework ML pilihan Anda: PyTorch, Jax, atau TensorFlow.
- Bangun di pipeline yang ada: Berintegrasi dengan pipeline TensorFlow.js yang ada dengan mendukung Tensor TensorFlow.js sebagai input dan output.
Penginstalan
Instal paket @litertjs/core
dari npm:
npm install @litertjs/core
File Wasm berada di node_modules/@litertjs/core/wasm/
.
Untuk mempermudah, salin dan sajikan seluruh folder wasm/
. Kemudian, impor paket dan muat file Wasm:
import {loadLiteRt} from '@litertjs/core;
// Host LiteRT's Wasm files on your server.
await loadLiteRt(`your/path/to/wasm/`);
Konversi model
LiteRT.js menggunakan format .tflite
yang sama seperti Android dan iOS, serta mendukung model yang ada di Kaggle dan Huggingface. Jika
Anda memiliki model PyTorch baru, Anda harus mengonversinya.
Mengonversi Model PyTorch ke LiteRT
Untuk mengonversi model PyTorch ke LiteRT, gunakan pengonversi 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')
Menjalankan Model yang Dikonversi
Setelah mengonversi model ke file .tflite
, Anda dapat menjalankannya di browser.
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();
Mengintegrasikan ke dalam pipeline TensorFlow.js yang ada
Anda harus mempertimbangkan untuk mengintegrasikan LiteRT.js ke dalam pipeline TensorFlow.js karena alasan berikut:
- Performa WebGPU terbaik di kelasnya: Model yang dikonversi yang berjalan di WebGPU LiteRT.js dioptimalkan untuk performa browser, dan sangat cepat di browser berbasis Chromium.
- Jalur konversi model yang lebih mudah: Jalur konversi LiteRT.js langsung dari PyTorch ke LiteRT. Jalur konversi PyTorch ke TensorFlow.js jauh lebih rumit, karena Anda harus melakukan konversi dari PyTorch -> ONNX -> TensorFlow -> TensorFlow.js.
- Alat proses debug: Jalur konversi LiteRT.js dilengkapi dengan alat proses debug.
LiteRT.js dirancang untuk berfungsi dalam pipeline TensorFlow.js, dan kompatibel dengan pra-pemrosesan dan pasca-pemrosesan TensorFlow.js, sehingga satu-satunya hal yang perlu Anda migrasikan adalah model itu sendiri.
Integrasikan LiteRT.js ke dalam pipeline TensorFlow.js dengan langkah-langkah berikut:
- Konversikan model TensorFlow, JAX, atau PyTorch asli Anda ke
.tflite
. Untuk mengetahui detailnya, lihat bagian konversi model. - Instal paket NPM
@litertjs/core
dan@litertjs/tfjs-interop
. - Mengimpor dan menggunakan backend WebGPU TensorFlow.js. Hal ini diperlukan agar LiteRT.js dapat beroperasi dengan TensorFlow.js.
- Ganti pemuatan model TensorFlow.js dengan pemuatan model LiteRT.js.
- Ganti TensorFlow.js
model.predict
(inputs) ataumodel.execute
(inputs) denganrunWithTfjsTensors
(liteRtModel, inputs).runWithTfjsTensors
mengambil tensor input yang sama dengan yang digunakan model TensorFlow.js dan menghasilkan tensor TensorFlow.js. - Uji apakah pipeline model menghasilkan hasil yang Anda harapkan.
Penggunaan LiteRT.js dengan runWithTfjsTensors
juga mungkin memerlukan perubahan berikut pada input model:
- Mengatur ulang input: Bergantung pada cara konverter mengurutkan input dan output model, Anda mungkin perlu mengubah urutannya saat meneruskannya ke dalam.
- Transpos input: Ada kemungkinan juga bahwa konverter mengubah tata letak input dan output model dibandingkan dengan yang digunakan TensorFlow.js. Anda mungkin perlu mentransposisikan input agar sesuai dengan model dan output agar sesuai dengan pipeline lainnya.
- Mengganti nama input: Jika Anda menggunakan input bernama, nama tersebut mungkin juga telah berubah.
Anda bisa mendapatkan informasi selengkapnya tentang input dan output model dengan
model.getInputDetails()
dan model.getOutputDetails()
.