LiteRT.js, Google'ın yüksek performanslı WebAI çalışma zamanıdır ve üretim Web uygulamalarını hedefler. LiteRT yığınının devamı niteliğindedir. Çoklu çerçeve desteği sağlar ve temel çalışma zamanımızı tüm platformlarda birleştirir.
LiteRT.js aşağıdaki temel özellikleri destekler:
- LiteRT modelleri için tarayıcı içi destek: WebAssembly (Wasm) üzerinde XNNPack ile hızlandırılmış, CPU'da sınıfının en iyisi performansla modelleri ve WebGPU API'sini kullanarak GPU'da modelleri çalıştırın.
- Çoklu çerçeve uyumluluğu: Tercih ettiğiniz makine öğrenimi çerçevesini (PyTorch, Jax veya TensorFlow) kullanın.
- Mevcut işlem hatlarını temel alma: Giriş ve çıkış olarak TensorFlow.js tensörlerini destekleyerek mevcut TensorFlow.js işlem hatlarıyla entegre olun.
Kurulum
@litertjs/core paketini npm'den yükleyin:
npm install @litertjs/core
Wasm dosyaları node_modules/@litertjs/core/wasm/ konumunda bulunur. Kolaylık sağlamak için wasm/ klasörünün tamamını kopyalayıp yayınlayın. Ardından, paketi içe aktarın
ve Wasm dosyalarını yükleyin:
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/`);
Model dönüştürme
LiteRT.js, Android ve iOS ile aynı .tflite biçimini kullanır ve Kaggle ile Huggingface'teki mevcut modelleri destekler. Yeni bir PyTorch modeliniz varsa bunu dönüştürmeniz gerekir.
PyTorch modelini LiteRT'ye dönüştürme
PyTorch modelini LiteRT'ye dönüştürmek için ai-edge-torch converter'ı kullanın.
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')
Dönüştürülmüş Modeli Çalıştırma
Modeli .tflite dosyasına dönüştürdükten sonra tarayıcıda çalıştırabilirsiniz.
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();
Mevcut TensorFlow.js işlem hatlarına entegre etme
Aşağıdaki nedenlerden dolayı LiteRT.js'yi TensorFlow.js işlem hatlarınıza entegre etmeniz önerilir:
- Sınıfının en iyisi WebGPU performansı: LiteRT.js WebGPU üzerinde çalışan dönüştürülmüş modeller, tarayıcı performansı için optimize edilmiştir ve özellikle Chromium tabanlı tarayıcılarda hızlıdır.
- Daha kolay model dönüşüm yolu: LiteRT.js dönüşüm yolu doğrudan PyTorch'tan LiteRT'ye gider. PyTorch'tan TensorFlow.js'ye dönüşüm yolu çok daha karmaşıktır ve PyTorch -> ONNX -> TensorFlow -> TensorFlow.js şeklinde ilerlemenizi gerektirir.
- Hata ayıklama araçları: LiteRT.js dönüşüm yolu, hata ayıklama araçlarıyla birlikte gelir.
LiteRT.js, TensorFlow.js işlem hatlarında çalışacak şekilde tasarlanmıştır ve TensorFlow.js işleme öncesi ve işleme sonrası ile uyumludur. Bu nedenle, taşımanız gereken tek şey modelin kendisidir.
Aşağıdaki adımları uygulayarak LiteRT.js'yi TensorFlow.js işlem hatlarına entegre edin:
- Orijinal TensorFlow, JAX veya PyTorch modelinizi
.tflite'a dönüştürün. Ayrıntılı bilgi için model dönüşümü bölümüne bakın. @litertjs/coreve@litertjs/tfjs-interopNPM paketlerini yükleyin.- TensorFlow.js WebGPU arka ucunu içe aktarın ve kullanın. Bu, LiteRT.js'nin TensorFlow.js ile birlikte çalışması için gereklidir.
- TensorFlow.js modelini yükleme ifadesini LiteRT.js modelini yükleme ile değiştirin.
- TensorFlow.js
model.predict(girişler) veyamodel.execute(girişler) yerinerunWithTfjsTensors(liteRtModel, girişler) kullanın.runWithTfjsTensors, TensorFlow.js modellerinin kullandığı giriş tensörlerini alır ve TensorFlow.js tensörleri çıkarır. - Model işlem hattının beklediğiniz sonuçları verdiğini test edin.
LiteRT.js'yi runWithTfjsTensors ile kullanmak için model girişlerinde aşağıdaki değişikliklerin yapılması da gerekebilir:
- Girişleri yeniden sıralama: Dönüştürücünün modelin girişlerini ve çıkışlarını nasıl sıraladığına bağlı olarak, bunları iletirken sıralarını değiştirmeniz gerekebilir.
- Girişleri transpoze etme: Dönüştürücünün, TensorFlow.js'in kullandığına kıyasla modelin giriş ve çıkışlarının düzenini değiştirmiş olması da mümkündür. Girişlerinizi modele, çıkışlarınızı da işlem hattının geri kalanına uyacak şekilde transpoze etmeniz gerekebilir.
- Girişleri yeniden adlandırma: Adlandırılmış girişler kullanıyorsanız adlar da değişmiş olabilir.
model.getInputDetails() ve model.getOutputDetails() ile modelin giriş ve çıkışları hakkında daha fazla bilgi edinebilirsiniz.