ExecuTorch ile YOLO26'yı Mobil ve Uç Cihazlarda Dağıtma#
Akıllı telefonlar, tabletler ve gömülü sistemler gibi uç cihazlarda bilgisayarlı görü modellerini dağıtmak, performans ile kaynak kısıtlamalarını dengeleyen optimize edilmiş bir çalışma zamanı gerektirir. PyTorch'un uç bilişim çözümü ExecuTorch, Ultralytics YOLO modelleri için cihaz üzerinde verimli çıkarım yapılmasını sağlar.
Bu kılavuzda, Ultralytics YOLO modellerini ExecuTorch biçimine nasıl aktaracağını ve böylece modellerini optimize edilmiş performansla mobil ve uç cihazlarda nasıl dağıtacağını açıklıyoruz.
Neden ExecuTorch'a aktarmalısın?#
ExecuTorch, mobil ve uç cihazlarda cihaz üzerinde çıkarım özellikleri sunan, PyTorch'un uçtan uca çözümüdür. Taşınabilir ve verimli olacak şekilde tasarlanan ExecuTorch, PyTorch programlarını çok çeşitli bilgi işlem platformlarında çalıştırmak için kullanılabilir.
ExecuTorch'un Temel Özellikleri#
ExecuTorch, Ultralytics YOLO modellerini uç cihazlarda dağıtmak için çeşitli güçlü özellikler sunar:
-
Taşınabilir Model Biçimi: ExecuTorch, kaynakları kısıtlı cihazlarda dosya boyutu ve yükleme hızı için optimize edilmiş
.pte(PyTorch ExecuTorch) biçimini kullanır. -
XNNPACK Arka Ucu: XNNPACK ile varsayılan entegrasyon, mobil CPU'larda yüksek düzeyde optimize edilmiş çıkarım sağlar ve özel donanım gerektirmeden üstün performans sunar.
-
Nicemlemeye Hazır: ExecuTorch ekosistemi, model boyutunu küçültmek ve çıkarım hızını artırmak için nicemleme tekniklerini destekler; Ultralytics şu anda XNNPACK arka ucu üzerinden FP32 modelleri dışa aktarır.
-
Bellek Verimliliği: Optimize edilmiş bellek yönetimi, çalışma zamanı bellek kullanımını azaltarak sınırlı RAM'e sahip cihazlar için uygun olmasını sağlar.
-
Model Meta Verileri: Dışa aktarılan modeller, kolay entegrasyon için meta verileri (görüntü boyutu, sınıf adları vb.) ayrı bir YAML dosyasında içerir.
ExecuTorch ile Dağıtım Seçenekleri#
ExecuTorch modelleri çeşitli uç ve mobil platformlarda dağıtılabilir:
-
Mobil Uygulamalar: Gerçek zamanlı nesne algılamayı mümkün kılmak için iOS ve Android uygulamalarında yerel performansla dağıt.
-
Gömülü Sistemler: Optimize edilmiş performansla Raspberry Pi, NVIDIA Jetson ve ARM tabanlı diğer sistemler gibi gömülü Linux cihazlarında çalıştır.
-
Uç Yapay Zekâ Cihazları: Hızlandırılmış çıkarım için özel temsilcilerle, uç yapay zekâya yönelik özel donanımlarda dağıt.
-
IoT Cihazları: Bulut bağlantısı gerektirmeden cihaz üzerinde çıkarım için IoT cihazlarına entegre et.
Desteklenen Görevler#
ExecuTorch dışa aktarımı, yedi Ultralytics görevinin tümünü destekler. Anlamsal segmentasyon ve derinlik tahmini yalnızca bu başlıkları içeren tek aile olan YOLO26'da kullanılabilir.
| Görev | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Algılama | ✅ | ✅ | ✅ |
| Segmentasyon | ✅ | ✅ | ✅ |
| Anlamsal | ❌ | ❌ | ✅ |
| Derinlik | ❌ | ❌ | ✅ |
| Sınıflandırma | ✅ | ✅ | ✅ |
| Poz | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Ultralytics YOLO26 Modellerini ExecuTorch'a Aktarma#
Ultralytics YOLO26 modellerini ExecuTorch biçimine dönüştürmek, mobil ve uç cihazlarda verimli dağıtım olanağı sağlar.
Kurulum#
ExecuTorch dışa aktarma işlemi Python 3.10-3.14 ve PyTorch >= 2.9.0 gerektirir. Ultralytics, ExecuTorch modelini dışa aktarırken veya yüklerken uyumlu bir executorch paketi yükler; PyTorch 2.13'ten eski sürümlerde bu paket executorch<1.5 sürümüne sabitlenir, bu nedenle paketi elle yükseltme.
# Install Ultralytics package
pip install ultralyticsKurulum sürecine ilişkin ayrıntılı talimatlar ve en iyi uygulamalar için YOLO26 Kurulum kılavuzumuza göz at. YOLO26 için gerekli paketleri yüklerken sorun yaşarsan çözüm ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.
Kullanım#
YOLO26 modellerini ExecuTorch'a aktarmak oldukça kolaydır:
ExecuTorch biçimi Dışa Aktar, Tahmin Et ve Doğrula modlarını destekler. Modelini dışa aktar, ardından çıkarım yapmak veya doğruluğunu doğrulamak için dışa aktarılan modeli yükle.
from ultralytics import YOLO
# YOLO26 modelini yükle
model = YOLO("yolo26n.pt")
# Modeli ExecuTorch biçimine aktar
model.export(format="executorch") # creates 'yolo26n_executorch_model'from ultralytics import YOLO
# Dışa aktarılan ExecuTorch modelini yükle
model = YOLO("yolo26n_executorch_model")
# Çıkarımı çalıştır
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Dışa aktarılan ExecuTorch modelini yükle
model = YOLO("yolo26n_executorch_model")
# COCO8 veri kümesinde doğruluğu doğrula
metrics = model.val(data="coco8.yaml")ExecuTorch dışa aktarımı, bir .pte dosyası ve meta verileri içeren bir dizin oluşturur. .pte modelini yüklemek ve çıkarım yapmak için mobil veya gömülü uygulamanda ExecuTorch çalışma zamanını kullan.
Dışa Aktarma Bağımsız Değişkenleri#
ExecuTorch biçimine dışa aktarırken aşağıdaki bağımsız değişkenleri belirtebilirsin:
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'executorch' | Dışa aktarılan modelin hedef biçimi; çeşitli dağıtım ortamlarıyla uyumluluğu tanımlar. |
imgsz | int veya tuple | 640 | Model girişi için istenen görüntü boyutu. Kare görüntüler için bir tam sayı, belirli boyutlar içinse (height, width) demeti kullanılabilir. |
quantize | int veya str | None | FP32 biçiminde sabit dışa aktarım. ExecuTorch dışa aktarımı, dışa aktarım sırasında FP16, INT8 veya W8A16 hassasiyet dönüşümünü desteklemez. |
batch | int | 1 | Dışa aktarılan modelin toplu çıkarım boyutunu veya predict kipinde eşzamanlı işleyeceği en fazla görüntü sayısını belirtir. |
device | str | None | Dışa aktarma aygıtını belirtir: GPU (device=0), CPU (device=cpu), Apple silikon için MPS (device=mps). |
Çıktı Yapısı#
ExecuTorch dışa aktarımı, model ve meta verileri içeren bir dizin oluşturur:
yolo26n_executorch_model/
├── model.pte # ExecuTorch model file
└── metadata.yaml # Model metadata (classes, image size, etc.)Dışa Aktarılan ExecuTorch Modellerini Kullanma#
Modelini dışa aktardıktan sonra ExecuTorch çalışma zamanını kullanarak hedef uygulamana entegre etmen gerekir.
Mobil Entegrasyon#
Mobil uygulamalar (iOS/Android) için şunları yapman gerekir:
- ExecuTorch Çalışma Zamanını Ekle: ExecuTorch çalışma zamanı kitaplığını mobil projenize ekle
- Modeli Yükle: Uygulamana
.ptedosyasını yükle - Çıkarım Yap: Görüntüleri işle ve tahminleri al
iOS#
Örnek iOS entegrasyonu (Objective-C/C++):
// iOS uses C++ APIs for model loading and inference
// See https://pytorch.org/executorch/stable/using-executorch-ios.html for complete examples
#include <executorch/extension/module/module.h>
using namespace ::executorch::extension;
// Load the model
Module module("/path/to/model.pte");
// Create input tensor
float input[1 * 3 * 640 * 640];
auto tensor = from_blob(input, {1, 3, 640, 640});
// Run inference
const auto result = module.forward(tensor);Android#
Maven Central'dan ExecuTorch Android AAR ekle:
dependencies {
implementation("org.pytorch:executorch-android:<version>")
}Örnek Android entegrasyonu (Kotlin):
import org.pytorch.executorch.EValue
import org.pytorch.executorch.Module
import org.pytorch.executorch.Tensor
// Load the model
val module = Module.load("/path/to/model.pte")
// Prepare input tensor
val inputTensor = Tensor.fromBlob(floatData, longArrayOf(1, 3, 640, 640))
val inputEValue = EValue.from(inputTensor)
// Run inference
val outputs = module.forward(inputEValue)
val scores = outputs[0].toTensor().dataAsFloatArrayGömülü Linux#
Gömülü Linux sistemlerinde ExecuTorch C++ API'sini kullan:
#include <executorch/extension/module/module.h>
#include <executorch/extension/tensor/tensor.h>
using namespace ::executorch::extension;
// Load model
Module module("model.pte");
// Prepare input
std::vector<float> input_data = preprocessImage(image);
auto input_tensor = from_blob(input_data.data(), {1, 3, 640, 640});
// Run inference
const auto outputs = module.forward(input_tensor);ExecuTorch'u uygulamalarına entegre etme hakkında daha fazla bilgi için ExecuTorch Belgeleri sayfasını ziyaret et.
Performans Optimizasyonu#
Model Boyutu Optimizasyonu#
Dağıtım için model boyutunu küçültmek üzere:
- Daha Küçük Modeller Kullan: En küçük boyut için YOLO26n (nano) ile başla
- Giriş Çözünürlüğünü Düşür: Daha küçük görüntü boyutları kullan (ör.
imgsz=320veyaimgsz=416) - Nicemleme: ExecuTorch nicemleme tekniklerini Ultralytics dışında uygula (Ultralytics ExecuTorch dışa aktarımı yalnızca FP32 destekler)
Çıkarım Hızı Optimizasyonu#
Daha hızlı çıkarım için:
- XNNPACK Arka Ucu: Varsayılan XNNPACK arka ucu, optimize edilmiş CPU çıkarımı sağlar
- Donanım Hızlandırma: Platforma özgü delege edicileri kullan (ör. iOS için CoreML)
- Toplu İşleme: Mümkün olduğunda birden fazla görüntüyü işle
Kıyaslamalar#
Ultralytics ekibi, PyTorch ve ExecuTorch arasındaki hızı ve doğruluğu karşılaştırarak YOLO26 modellerini kıyasladı.
| Model | Biçim | Durum | Boyut (MB) | metrics/mAP50-95(B) | Çıkarım süresi (ms/im) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.4790 | 314.80 |
| YOLO26n | ExecuTorch | ✅ | 9.4 | 0.4800 | 142 |
| YOLO26s | PyTorch | ✅ | 19.5 | 0.5730 | 930.90 |
| YOLO26s | ExecuTorch | ✅ | 36.5 | 0.5780 | 376.1 |
Çıkarım süresine ön/son işleme dahil değildir.
Sorun Giderme#
Sık Karşılaşılan Sorunlar#
Sorun: Python version error
Çözüm: ExecuTorch, Python 3.10 ile 3.14 arasında bir sürüm gerektirir. Desteklenen bir sürümü kullanarak ortam oluştur:
# Using conda
conda create -n executorch python=3.14
conda activate executorchDaha fazla sorun giderme yardımı için Ultralytics GitHub Sorunları veya ExecuTorch Belgeleri sayfasını ziyaret et.
Özet#
YOLO26 modellerini ExecuTorch biçimine aktarmak, mobil ve uç cihazlarda verimli dağıtım sağlar. PyTorch yerel entegrasyonu, platformlar arası desteği ve optimize edilmiş performansıyla ExecuTorch, uç AI uygulamaları için mükemmel bir seçimdir.
Önemli çıkarımlar:
- ExecuTorch, mükemmel performansla PyTorch yerel uç dağıtımı sağlar
- Dışa aktarım,
format='executorch'parametresiyle kolaydır - Modeller, XNNPACK arka ucu sayesinde mobil CPU'lar için optimize edilir
- iOS, Android ve gömülü Linux platformlarını destekler
- Python 3.10-3.14 ve PyTorch >= 2.9.0 gerektirir
Sık Sorulan Sorular#
Bir YOLO26 modelini Python veya CLI kullanarak ExecuTorch'a aktar:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="executorch")veya
yolo export model=yolo26n.pt format=executorchExecuTorch dışa aktarımı şunları gerektirir:
- Python 3.10 ile 3.14 arası
- Otomatik yüklenen
executorchpaketi (PyTorch 2.13'ten eskiyseexecutorch<1.5; daha yeni ExecuTorch çalışma zamanları bu sürümleri desteklemez) - PyTorch (ultralytics ile otomatik yüklenir)
Not:
executorchpaketi önceden derlenmiş wheel'ler (XNNPACK arka ucuyla) içerir; bu nedenle dışa aktarım sırasında ek bir derleme adımı gerekmez.ExecuTorch modelleri, Python'da çıkarım ve doğrulama için doğrudan
YOLO()ile yüklenebilir (yukarıdaki Tahmin/Doğrulama örneklerine bak) ve ExecuTorch çalışma zamanı kitaplıkları kullanılarak mobil ve uç cihazlara da dağıtılabilir.ExecuTorch şunları destekler:
- Mobil: iOS ve Android
- Gömülü Linux: Raspberry Pi, NVIDIA Jetson ve diğer ARM cihazları
- Masaüstü: Linux, macOS ve Windows (geliştirme için)
Hem ExecuTorch hem de LiteRT mobil dağıtım için mükemmel seçeneklerdir:
- ExecuTorch: Daha iyi PyTorch entegrasyonu, yerel PyTorch iş akışı ve büyüyen ekosistem
- LiteRT: Daha olgun, daha geniş donanım desteğine sahip, daha fazla dağıtım örneği sunuyor ve aynı modeli Android, iOS ve tarayıcıda çalıştırıyor
Zaten PyTorch kullanıyorsan ve yerel bir dağıtım yolu istiyorsan ExecuTorch'u seç. En yüksek uyumluluk ve olgun araçlar için LiteRT'yi seç.
Evet! ExecuTorch, çeşitli arka uçlar üzerinden donanım hızlandırmayı destekler:
- Mobil GPU: Vulkan, Metal veya OpenCL delege edicileri aracılığıyla
- NPU/DSP: Platforma özgü delege ediciler aracılığıyla
- Varsayılan: Optimize edilmiş CPU çıkarımı için XNNPACK
Arka uca özgü kurulum için ExecuTorch Belgeleri sayfasına bak.