LiteRT CLI 101: Sınır yapay zeka iş akışlarınızı kolaylaştırın

1. 🏁 Giriş ve KSA'ya genel bakış

LiteRT KSA 101 uygulamalı codelab'ine hoş geldiniz. Bu kılavuz, sıfır ortam kurulumundan optimize edilmiş uç yapay zeka dağıtımına kadar adım adım ilerlemeniz için tasarlanmıştır.

🌟 Arka plan

Edge AI, karmaşık sinir ağlarını doğrudan cep telefonlarına, giyilebilir cihazlara ve gömülü donanımlara getirmeyi gerektirir.

  • LiteRT (eski adıyla TensorFlow Lite / TFLite), verimli dönüştürme, çalışma zamanı ve optimizasyon yoluyla sınır platformlarında yüksek performanslı makine öğrenimi ve üretken yapay zeka dağıtımı için Google'ın cihaz üzerinde çerçevesidir.
  • LiteRT KSA, Google AI Edge yığınlarını bağımsız bir kabuk komutuna (litert) entegre ederek platformlar (masaüstü, mobil veya bulut) genelinde çeşitli donanımlarda (CPU / GPU / NPU) LiteRT (TFLite) modellerini dönüştürme, nicelleştirme, derleme, çalıştırma, karşılaştırma ve görselleştirme gibi LiteRT ile ilgili geliştirme iş akışlarını kolaylaştırır.

2. 🔄 Temel iş akışları: dönüştürme, nicelendirme ve çalıştırma

Bu bölümde, LiteRT CLI ile eksiksiz bir Edge AI modelleme yaşam döngüsü gerçekleştirelim: PyTorch modeli sarmalayıcı ➔ izleme dönüşümü ➔ model nicelendirme ➔ masaüstü çıkarımı ➔ performans karşılaştırmaları.

LiteRT KSA 101 İş Akışı

📝 1. Aşama: PyTorch modeli sarmalayıcı komut dosyası hazırlama

Geçerli dizininizde resnet18.py dosyasını oluşturun. Grafik oluşturucunun şekilleri yakalayabilmesi için dinamik izleme kancaları sunar:

import torch
import torchvision

def get_model(batch_size: int = 1) -> torch.nn.Module:
  model = torchvision.models.resnet18(
      weights=torchvision.models.ResNet18_Weights.IMAGENET1K_V1
  )
  model.eval()
  return model

def get_args(batch_size: int = 1) -> tuple[torch.Tensor, ...]:
  return (torch.randn(batch_size, 3, 224, 224),)

🔄 2. aşama: LiteRT Torch'u kullanarak PyTorch modelini LiteRT'ye dönüştürme

Standart bir Float32 .tflite hedef modeli oluşturmak için LiteRT Torch dönüştürücüsünü çağırın:

# Convert PyTorch source to LiteRT
litert convert resnet18.py --output resnet18

# Verify target was exported
ls -lh resnet18/resnet18.tflite

📉 3. Aşama: Ağırlıkları INT8'e nicelendirin

Boyutları yaklaşık 4 kat küçültmek için dinamik ve yalnızca ağırlık içeren yemek tarifi kartları uygulayın:

# 1. Dynamic Range Quantization (Dynamic activations + static INT8 weights)
litert quantize resnet18/resnet18.tflite \
  --recipe dynamic_wi8_afp32 \
  --output resnet18/resnet18_int8_dynamic.tflite

# 2. Weight-Only Quantization (Float32 activations + static INT8 weights)
litert quantize resnet18/resnet18.tflite \
  --recipe weight_only_wi8_afp32 \
  --output resnet18/resnet18_int8_weight_only.tflite

🚀 4. Aşama: Yerel olarak çıkarım çalıştırma

Performans engellemelerini doğrulamak için sahte giriş parametreleriyle test işlemleri yürütün:

# Run original Float32 model inference
litert run resnet18/resnet18.tflite --desktop --cpu

# Run optimized Dynamic INT8 model inference
litert run resnet18/resnet18_int8_dynamic.tflite --cpu --iterations 1

📊 5. aşama: Model performansını karşılaştırma

Ortalama gecikme, başlatma maliyetleri, CPU yürütme işleme hızı ve dinamik etkin bellek ayak izleri gibi yüksek hassasiyetli metrikleri ölçün:

# Benchmark original Float32 model
litert benchmark resnet18/resnet18.tflite --desktop --cpu

# Benchmark optimized Dynamic range INT8 model
litert benchmark resnet18/resnet18_int8_dynamic.tflite --desktop --cpu

3. 🔌 Yerel ortam kurulumu ve doğrulama

İş istasyonunuzda (macOS veya Linux) izole edilmiş, temiz bir korumalı alan oluşturalım

🔌 A seçeneği: Ultra hızlı kurulum (uv)

uv kullanarak kitaplıkları saniyeler içinde izole edebilir ve ortam önbelleği çakışmalarını temizleyebilirsiniz.

# Create active workspace sandbox
uv venv --clear --python=3.13 --seed
source .venv/bin/activate

# Install litert-cli from pypi
uv pip install litert-cli-nightly

🐍 B seçeneği: Standart kurulum (pip)

uv yoksa standart Python sanal ortam yapılandırmalarını kullanın:

# Create active workspace sandbox
python3 -m venv .venv
source .venv/bin/activate

# Install litert-cli from pypi
pip install --upgrade pip setuptools wheel
pip install litert-cli-nightly

🛠️ C seçeneği: Düzenlenebilir yerel kurulum

Doğrudan depo kaynak dizini klonunda geliştirme veya test yapıyorsanız:

# Create active workspace sandbox
uv venv --clear --python=3.13 --seed
source .venv/bin/activate

# Install from local directory root
uv pip install -e .

🔍 Kurulum doğrulaması

Yolunuzun litert komutunu doğru şekilde yönlendirdiğini doğrulayın:

litert --help

💡 Merkezi Model Referans kataloğu (model-ref)

LiteRT KSA, komut dosyalarının ve geliştirme sürecinin sağlam kalması için merkezi bir Model Kataloğu uygular:

Model Kataloğu Yönlendirme Şeması

  • Biçim: İndirilen veya içe aktarılan bir modele mobilenet gibi benzersiz bir ad (takma ad) atayın.
  • Varyantlar: mobilenet:int8 veya mobilenet:gpu gibi optimize edilmiş varyasyonlara atıfta bulunmak için hedef iki nokta üst üste işaretini kullanın.
  • Basitlik: Tüm KSA komutları bu yolsuz takma adını doğrudan kabul eder ve fiziksel dosya depolama alanını anında otomatik olarak çözer.

4. 📲 Cihaz dağıtımı ve profilleme

Yüksek hassasiyetli yerel karşılaştırmalar yaparak, gerçek USB donanım hedeflerine dağıtım yaparak, donanım temsilcilerini uygulayarak, Ahead-of-Time derlemesi yaparak ve bulut karşılaştırması yaparak optimizasyonu daha da ileriye taşıyalım.

Hedef dağıtım ve hızlandırma seçenekleri

📊 Yerel profil oluşturma metrikleri

EfficientNet-B1'i indirin ve masaüstü ana makinenizde performans istatistiklerini profillendirin:

# Download and register model alias in central catalog
litert download litert-community/efficientnet_b1 --file "*.tflite" --output efficientnet
litert import efficientnet/efficientnet_b1.tflite --model-ref efficientnet_b1

# Run high-precision benchmark on desktop CPU
litert benchmark efficientnet_b1 --desktop --cpu

Karşılaştırma günlüğündeki temel performans başlıklarını inceleyin:

  • Model initialization: Yapısal ağların başlatılma süresi.
  • Warmup (avg): Derleme ek yükü zamanlamaları.
  • Inference (avg): Ham matematiksel işlem süresi.
  • Overall footprint: Yürütme sırasında tüketilen en yüksek RAM.

📲 Hedef A: Mobil CPU (USB bağlantısı)

USB hata ayıklama özelliği etkinleştirilmiş bir Android cihazı bağlayın ve şunları dağıtın:

# 1. Confirm device connection
adb devices

# 2. Push and execute model on mobile CPU
litert run efficientnet_b1 --android --cpu

CLI, modeli otomatik olarak hedef cihaza gönderir, çıkarım döngüsünü yürütür ve çıkışları geri yönlendirir.

🎮 Hedef B: Mobil GPU

OpenCL veya WebGPU kullanarak ağır iş yüklerini dinamik olarak GPU'ya boşaltma:

# Benchmark model performance on mobile GPU
litert benchmark efficientnet_b1 --android --gpu

# Run inference with GPU acceleration and CPU fallback
litert run efficientnet_b1 --android --accelerator gpu,cpu

⚙️ Hedef C: JIT Android NPU

Yürütme parametrelerini doğrudan modern yonga setlerindeki NPU'ya boşaltma:

# Run with on-device JIT NPU acceleration
litert run efficientnet_b1 --android --accelerator npu,cpu
  • Uyarı: Cihaz üzerinde çalışma zamanı içinde oluşturulan dinamik grafikler, önemli başlatma JIT ısınma gecikmelerine neden olur.

🚀 Hedef D: AOT derlenmiş NPU

Çalışma zamanı JIT ek yüklerini atlamak ve maksimum hızlanma elde etmek için çevrimdışı olarak önceden derleyin:

# 1. Offline compile for Qualcomm SM8750 NPU (Linux host)
litert compile efficientnet/efficientnet_b1.tflite --target sm8750

# 2. Execute compiled AOT binary with zero JIT warmup latency
litert run efficientnet_b1_Qualcomm_SM8750.tflite --android --npu

☁️ Cloud Profiling (Google AI Edge Portal)

Testleri Google Cloud'un cihaz çiftliklerindeki uzak donanım profillerine aktarın.

# Log in to your Google Cloud project
gcloud auth login

# Push benchmark metrics to Pixel 7 CPU
litert benchmark efficientnet_b1 --gcp --device "pixel 7" --cpu --gcp-project "your-project-id"

# Push benchmark metrics to Snapdragon GPU targets
litert benchmark efficientnet_b1 --gcp --devices "pixel 7, sm-s931u1" --gpu --gcp-project "your-project-id"

5. 🧠 İleri düzey konular: Büyük dil modelleri ve konuşma tanıma

Büyük dil modellerini (LLM'ler) ve otomatik konuşma tanıma (ASR) modellerini dönüştürüp çalıştırarak gelişmiş modelleri inceleyelim.

💬 Üretken yapay zeka (LLM'ler)

Edge LLM'ler bellek sınırlıdır. Bu sorunu, Weight-Only INT4/INT8 nicemleme uygulayarak, yürütme kanallarını Float32'de tutarken ağırlıkları sıkıştırarak çözüyoruz:

# 1. Automated download & conversion from Hugging Face
litert convert Qwen/Qwen1.5-0.5B-Chat --output models/qwen

# 2. Quantize model weights to INT4
litert convert Qwen/Qwen1.5-0.5B-Chat \
  --quantize-recipe weight_only_wi4_afp32 \
  --output models/qwen_w4

# 3. Generation once
litert lm run models/qwen/model.litertlm --prompt "Introduce San Francisco."

# 4. Interactive chat
litert lm run models/qwen/model.litertlm

🎙️ Konuşma işleme (ASR)

Whisper veya Parakeet gibi ASR modellerinde hem kodlayıcı hem de kod çözücü modülü bulunur. İmza Anahtarları'nı kullanarak belirli modüller için karşılaştırma yapabiliriz:

# 1. Download prepackaged Whisper-Tiny
litert download litert-community/whisper-tiny --file "whisper_tiny_30s_f32.tflite" --output "models/whisper_tiny"

# 2. Profile audio encoding
litert benchmark models/whisper_tiny/whisper_tiny_30s_f32.tflite --android --gpu --signature-key "encode"

# 3. Profile text token decoding loop
litert benchmark models/whisper_tiny/whisper_tiny_30s_f32.tflite --android --cpu --signature-key "decode"

6. 🤖 Ajan tabanlı kodlamada kullanma

LiteRT CLI, aracı dostudur ve doğrudan kodlama aracılarıyla entegre edilebilir.

Aşağıda birkaç örnek verilmiştir. LiteRT CLI becerisini SKILL.md kodlama aracınıza (ör. Google Antigravity) ekleyin ve aşağıdaki gibi istemleri deneyin.

7. 🚀 Tebrikler ve sonraki adımlar

🎉 Olağanüstü! LiteRT CLI 101 codelab'ini tamamladınız.

Artık uçta makine öğrenimi geliştirmede ustalaşmak için gereken becerilere sahipsiniz:

  • PyTorch modellerini LiteRT modellerine dönüştürme
  • Model ağırlıklarını INT4/INT8'e nicelendirin.
  • Modelleri mobil CPU/GPU/NPU'da çalıştırma
  • NPU için derleyin.
  • Masaüstü, mobil ve bulut ortamlarında karşılaştırma yapın.
  • LLM modellerini dönüştürün ve çalıştırın.
  • Ajan tabanlı kodlamada kullanma

🔗 Kaynaklar

  • LiteRT CLI: https://github.com/google-ai-edge/LiteRT-CLI
  • LiteRT: https://ai.google.dev/edge/litert
  • Örnekler: https://github.com/google-ai-edge/LiteRT-CLI/tree/main/examples