Link to this sectionYOLO26 Modelleri için TensorRT Dışa Aktarımı#
Bilgisayarlı görü modellerini yüksek performanslı ortamlarda devreye almak, hızı ve verimliliği en üst düzeye çıkaran bir format gerektirebilir. Bu durum, özellikle modelini NVIDIA GPU'larında çalıştırırken geçerlidir.
TensorRT dışa aktarma formatını kullanarak, Ultralytics YOLO26 modellerini NVIDIA donanımı üzerinde hızlı ve verimli çıkarım için geliştirebilirsin. Bu kılavuz, dönüştürme süreci için takip etmesi kolay adımlar sunacak ve derin öğrenme projelerinde NVIDIA'nın ileri teknolojisinden en iyi şekilde yararlanmana yardımcı olacaktır.
Link to this sectionTensorRT#
NVIDIA tarafından geliştirilen TensorRT, yüksek hızlı derin öğrenme çıkarımı için tasarlanmış gelişmiş bir yazılım geliştirme kitidir (SDK). Nesne tespiti gibi gerçek zamanlı uygulamalar için oldukça uygundur.
Bu araç seti, derin öğrenme modellerini NVIDIA GPU'ları için optimize eder ve daha hızlı, daha verimli işlemler sağlar. TensorRT modelleri; katman birleştirme, hassasiyet kalibrasyonu (INT8 ve FP16), dinamik tensör bellek yönetimi ve çekirdek otomatik ayarlama gibi teknikleri içeren TensorRT optimizasyonundan geçer. Derin öğrenme modellerini TensorRT formatına dönüştürmek, geliştiricilerin NVIDIA GPU'larının potansiyelini tam olarak kullanmalarını sağlar.
TensorRT; TensorFlow, PyTorch ve ONNX dahil olmak üzere çeşitli model formatlarıyla uyumluluğuyla bilinir ve geliştiricilere farklı çerçevelerden gelen modelleri entegre etmek ve optimize etmek için esnek bir çözüm sunar. Bu çok yönlülük, çeşitli donanım ve yazılım ortamlarında verimli model dağıtımı sağlar.
Link to this sectionTensorRT Modellerinin Temel Özellikleri#
TensorRT modelleri, yüksek hızlı derin öğrenme çıkarımında verimliliklerine ve etkinliklerine katkıda bulunan bir dizi temel özellik sunar:
-
Hassasiyet Kalibrasyonu: TensorRT, modellerin belirli doğruluk gereksinimlerine göre ince ayar yapılmasına olanak tanıyan hassasiyet kalibrasyonunu destekler. Buna, çıkarım hızını artırırken kabul edilebilir doğruluk seviyelerini koruyabilen INT8 ve FP16 gibi düşük hassasiyetli formatlar için destek dahildir.
-
Katman Birleştirme: TensorRT optimizasyon süreci, bir sinir ağının birden fazla katmanının tek bir işlemde birleştirildiği katman birleştirmeyi içerir. Bu, bellek erişimini ve hesaplamayı en aza indirerek işlem yükünü azaltır ve çıkarım hızını artırır.
-
Dinamik Tensör Bellek Yönetimi: TensorRT, çıkarım sırasında tensör bellek kullanımını verimli bir şekilde yöneterek bellek yükünü azaltır ve bellek tahsisini optimize eder. Bu, daha verimli GPU bellek kullanımı sağlar.
-
Otomatik Çekirdek Ayarlama: TensorRT, modelin her katmanı için en optimize GPU çekirdeğini seçmek üzere otomatik çekirdek ayarlamayı uygular. Bu uyarlanabilir yaklaşım, modelin GPU'nun hesaplama gücünden tam olarak yararlanmasını sağlar.
Link to this sectionTensorRT'de Dağıtım Seçenekleri#
YOLO26 modellerini TensorRT formatına aktarmak için koda bakmadan önce, TensorRT modellerinin normalde nerede kullanıldığını anlayalım.
TensorRT birkaç dağıtım seçeneği sunar ve her seçenek entegrasyon kolaylığını, performans optimizasyonunu ve esnekliği farklı şekillerde dengeler:
- TensorFlow içinde Dağıtım: Bu yöntem, TensorRT'yi TensorFlow ile bütünleştirerek optimize edilmiş modellerin tanıdık bir TensorFlow ortamında çalışmasını sağlar. TF-TRT bunları verimli bir şekilde işleyebildiğinden, desteklenen ve desteklenmeyen katmanların karışımına sahip modeller için kullanışlıdır.
-
Bağımsız TensorRT Runtime API: Performans açısından kritik uygulamalar için ideal olan ayrıntılı kontrol sunar. Daha karmaşıktır ancak desteklenmeyen operatörlerin özel olarak uygulanmasına olanak tanır.
-
NVIDIA Triton Inference Server: Çeşitli çerçevelerden gelen modelleri destekleyen bir seçenektir. Özellikle bulut veya uç çıkarımı için uygundur; eşzamanlı model yürütme ve model analizi gibi özellikler sağlar.
Link to this sectionYOLO26 Modellerini TensorRT'ye Aktarma#
YOLO26 modellerini TensorRT formatına dönüştürerek yürütme verimliliğini artırabilir ve performansı optimize edebilirsin.
Link to this sectionKurulum#
Gerekli paketi yüklemek için şunu çalıştır:
# Install the required package for YOLO26
pip install ultralyticsKurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için YOLO26 Kurulum kılavuzumuza göz atın. YOLO26 için gerekli paketleri kurarken herhangi bir zorlukla karşılaşırsanız, çözümler ve ipuçları için Yaygın Sorunlar kılavuzumuza başvurun.
Link to this sectionKullanım#
Kullanım talimatlarına geçmeden önce, Ultralytics tarafından sunulan YOLO26 modelleri yelpazesine göz attığından emin ol. Bu, proje gereksinimlerin için en uygun modeli seçmene yardımcı olacaktır.
TensorRT formatı; Export, Predict ve Validate modlarını destekler. Çıkarım ve doğrulama için bir NVIDIA GPU gerekir. Modelini dışa aktar, ardından çıkarım çalıştırmak veya doğruluğunu test etmek için dışa aktarılan modeli yükle.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo26n.engine'from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Link to this sectionDışa Aktarma Argümanları#
| Argüman | Tip | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'engine' | Çeşitli dağıtım ortamlarıyla uyumluluğu tanımlayan, dışa aktarılan model için hedef format. |
imgsz | int veya tuple | 640 | Model girişi için istenen görüntü boyutu. Kare görüntüler için bir tamsayı veya belirli boyutlar için (height, width) şeklinde bir demet olabilir. |
half | bool | False | FP16 (yarı hassasiyet) nicemlemeyi etkinleştirerek model boyutunu küçültür ve desteklenen donanımlarda çıkarımı hızlandırabilir. |
int8 | bool | False | INT8 kuantizasyonunu etkinleştirir; modeli daha da sıkıştırarak ve minimum doğruluk kaybıyla çıkarımı hızlandırır, temel olarak uç cihazlar için kullanılır. |
dynamic | bool | False | Dinamik giriş boyutlarına izin vererek farklı görüntü boyutlarını işlemede esnekliği artırır. |
simplify | bool | True | Model grafiğini onnxslim ile basitleştirerek performansı ve uyumluluğu potansiyel olarak iyileştirir. |
workspace | float veya None | None | TensorRT optimizasyonları için maksimum çalışma alanı boyutunu GiB cinsinden ayarlar, bellek kullanımı ve performans arasında denge kurar; TensorRT tarafından cihaz maksimumuna kadar otomatik tahsis için None kullan. |
nms | bool | False | Doğru ve verimli tespit sonrası işleme için gerekli olan Non-Maximum Suppression (NMS) ekler. |
batch | int | 1 | Dışa aktarılan modelin toplu çıkarım boyutunu veya dışa aktarılan modelin predict modunda eşzamanlı olarak işleyeceği maksimum görüntü sayısını belirtir. |
data | str | 'coco8.yaml' | Kuantizasyon için gerekli olan veri kümesi yapılandırma dosyasının yolu (varsayılan: coco8.yaml). |
fraction | float | 1.0 | INT8 nicemleme kalibrasyonu için kullanılacak veri kümesi oranını belirtir. Deneyler veya kaynakların sınırlı olduğu durumlar için yararlı olan tam veri kümesinin bir alt kümesinde kalibrasyona izin verir. INT8 etkinleştirildiğinde belirtilmezse, veri kümesinin tamamı kullanılır. |
device | str | None | Dışa aktarma için cihazı belirler: GPU (device=0), NVIDIA Jetson için DLA (device=dla:0 veya device=dla:1). |
Lütfen TensorRT'ye aktarırken CUDA destekli bir GPU kullandığından emin ol.
TensorRT 11.0, DLA'yı desteklemez; device=dla:0 veya device=dla:1 için TensorRT 10.x kullan veya bir TensorRT 11.0 GPU motoru dışa aktar.
Dışa aktarma süreci hakkında daha fazla ayrıntı için dışa aktarma hakkındaki Ultralytics dokümantasyon sayfasına git.
Link to this sectionINT8 Nicemleme ile TensorRT Dışa Aktarımı#
Ultralytics YOLO modellerini INT8 hassasiyeti ile TensorRT kullanarak dışa aktarmak, eğitim sonrası nicemleme (PTQ) gerçekleştirir. TensorRT, PTQ için kalibrasyon kullanır; bu, YOLO modeli temsilci girdi verileri üzerinde çıkarım yaparken her aktivasyon tensörü içindeki aktivasyonların dağılımını ölçer ve ardından her tensör için ölçek değerlerini tahmin etmek üzere bu dağılımı kullanır. Nicemleme için aday olan her aktivasyon tensörünün, bir kalibrasyon süreci tarafından türetilen ilişkili bir ölçeği vardır.
TensorRT 11, örtük nicemlemeyi ve IInt8Calibrator arayüzünü kaldırdı. TensorRT 11 ve daha yeni sürümlerde Ultralytics, INT8 nicemlemeyi NVIDIA ModelOpt açık nicemleme ile gerçekleştirir; bu, güçlü bir şekilde yazılmış bir motor oluşturmadan önce ONNX grafiğine Q/DQ düğümleri ekler ve FP16, ModelOpt AutoCast karışık hassasiyet dönüşümü ile uygulanır. int8=True, half=True ve data bağımsız değişkenleri aynı şekilde çalışır; ModelOpt ilk kullanımda otomatik olarak kurulur. TensorRT 7-10 sürümlerinde bunun yerine aşağıda açıklanan eski kalibratör kullanılır.
Örtük olarak nicemlenmiş ağları işlerken TensorRT, katman yürütme süresini optimize etmek için INT8'i fırsatçı bir şekilde kullanır. Bir katman INT8'de daha hızlı çalışıyorsa ve veri girişlerinde ve çıkışlarında atanmış nicemleme ölçeklerine sahipse, o katmana INT8 hassasiyetine sahip bir çekirdek atanır, aksi takdirde TensorRT o katman için daha hızlı yürütme süresi sağlayan hangisi ise, FP32 veya FP16 hassasiyetinden birini seçer.
Kalibrasyon sonuçları cihazlar arasında değişiklik gösterebileceğinden, dağıtım için TensorRT model ağırlıklarını kullanacak aynı cihazın INT8 hassasiyetiyle dışa aktarma için kullanıldığından emin olmak kritiktir.
Link to this sectionINT8 Dışa Aktarımını Yapılandırma#
Bir Ultralytics YOLO modeli için export kullanılırken sağlanan bağımsız değişkenler, dışa aktarılan modelin performansını büyük ölçüde etkileyecektir. Ayrıca mevcut cihaz kaynaklarına göre seçilmeleri gerekecektir, ancak varsayılan bağımsız değişkenler çoğu Ampere (veya daha yeni) NVIDIA ayrık GPU için çalışmalıdır. Kullanılan kalibrasyon algoritması GPU dışa aktarımları için "MINMAX_CALIBRATION" iken, NVIDIA Jetson üzerindeki DLA dışa aktarımları "ENTROPY_CALIBRATION_2" kullanır. Mevcut seçenekler hakkında daha fazla bilgiyi TensorRT Geliştirici Kılavuzu'nda okuyabilirsin. Ultralytics testleri, GPU dışa aktarımları için "MINMAX_CALIBRATION" seçeneğinin en iyi seçim olduğunu bulmuştur ve algoritma dışa aktarma cihazına göre otomatik olarak seçilir.
-
workspace: Model ağırlıklarını dönüştürürken cihaz belleği tahsisinin boyutunu (GiB cinsinden) kontrol eder.-
workspacedeğerini kalibrasyon ihtiyaçlarına ve kaynak kullanılabilirliğine göre ayarla. Daha büyük birworkspacekalibrasyon süresini artırabilse de, TensorRT'nin daha geniş bir optimizasyon taktikleri yelpazesini keşfetmesine olanak tanıyarak model performansını ve doğruluğunu potansiyel olarak artırabilir. Tersine, daha küçük birworkspacekalibrasyon süresini kısaltabilir ancak optimizasyon stratejilerini sınırlayarak nicemlenmiş modelin kalitesini etkileyebilir. -
Varsayılan
workspace=Nonedeğeridir, bu da TensorRT'nin otomatik olarak bellek tahsis etmesine olanak tanır; manuel yapılandırma yaparken, kalibrasyon çökerse (uyarı vermeden çıkarsa) bu değerin artırılması gerekebilir. -
TensorRT will report
UNSUPPORTED_STATEduring export if the value forworkspaceis larger than the memory available to the device, which means the value forworkspaceshould be lowered or set toNone. -
Eğer
workspacemaksimum değere ayarlanmışsa ve kalibrasyon başarısız olursa/çökerse, otomatik tahsis içinNonekullanmayı veya bellek gereksinimlerini azaltmak içinimgszvebatchdeğerlerini düşürmeyi düşün. -
Unutma, INT8 için kalibrasyon her cihaza özeldir; kalibrasyon için "üst düzey" bir GPU ödünç almak, çıkarım başka bir cihazda çalıştırıldığında kötü performansa neden olabilir.
-
-
batch: Çıkarım için kullanılacak maksimum yığın boyutudur. Çıkarım sırasında daha küçük yığınlar kullanılabilir, ancak çıkarım belirtilenden daha büyük yığınları kabul etmeyecektir.
Küçük yığınlar kullanmak, INT8 kalibrasyonu sırasında yanlış ölçeklendirmeye yol açabilir. Bunun nedeni, sürecin gördüğü verilere göre ayar yapmasıdır. Küçük yığınlar değerlerin tam aralığını yakalayamayabilir ve bu da nihai kalibrasyonla ilgili sorunlara yol açabilir. Daha büyük bir yığın boyutu kullanmak, daha temsili kalibrasyon sonuçları sağlamaya yardımcı olur.
Experimentation by NVIDIA led them to recommend using at least 500 calibration images that are representative of the data for your model, with INT8 quantization calibration. This is a guideline and not a hard requirement, and you will need to experiment with what is required to perform well for your dataset. Since the calibration data is required for INT8 calibration with TensorRT, make certain to use the data argument when int8=True for TensorRT and use data="my_dataset.yaml", which will use the images from validation to calibrate with. When no value is passed for data with export to TensorRT with INT8 quantization, the default will be to use one of the "small" example datasets based on the model task instead of throwing an error.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(
format="engine",
dynamic=True, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
int8=True,
data="coco.yaml", # (4)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolo26n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")- Dinamik eksenlerle dışa aktarır; bu, açıkça ayarlanmasa bile
int8=Trueile dışa aktarırken varsayılan olarak etkinleştirilecektir. Ek bilgi için dışa aktarma bağımsız değişkenlerine bak. - Dışa aktarılan model ve INT8 kalibrasyonu için 8'lik maksimum yığın boyutu ayarlar.
- Dönüştürme işlemi için cihazın tamamını tahsis etmek yerine 4 GiB bellek ayırır.
- Kalibrasyon için COCO veri kümesini, özellikle doğrulama için kullanılan görüntüleri (toplam 5.000) kullanır.
Kalibrasyon Önbelleği
TensorRT, aynı verileri kullanarak gelecekteki model ağırlıklarının dışa aktarımını hızlandırmak için yeniden kullanılabilen bir kalibrasyon .cache dosyası oluşturacaktır, ancak veriler çok farklıysa veya batch değeri büyük ölçüde değiştirilirse bu durum kötü kalibrasyona neden olabilir. Bu durumlarda, mevcut .cache dosyası yeniden adlandırılmalı ve farklı bir dizine taşınmalı veya tamamen silinmelidir.
Link to this sectionYOLO'yu TensorRT INT8 ile kullanmanın avantajları#
-
Azaltılmış model boyutu: FP32'den INT8'e nicemleme, model boyutunu 4 kat azaltabilir (disk üzerinde veya bellekte), bu da daha hızlı indirme süreleri, daha düşük depolama gereksinimleri ve bir model dağıtılırken daha düşük bellek alanı kullanımı sağlar.
-
Daha düşük güç tüketimi: INT8 dışa aktarılan YOLO modelleri için düşük hassasiyetli işlemler, özellikle pille çalışan cihazlar için FP32 modellerine kıyasla daha az güç tüketebilir.
-
İyileştirilmiş çıkarım hızları: TensorRT, modeli hedef donanım için optimize eder ve bu da GPU'larda, gömülü cihazlarda ve hızlandırıcılarda daha hızlı çıkarım hızlarına yol açabilir.
Çıkarım Hızları Üzerine Not
TensorRT INT8'e aktarılan bir modelle yapılan ilk birkaç çıkarım çağrısının, normalden daha uzun ön işleme, çıkarım ve/veya son işleme sürelerine sahip olması beklenebilir. Bu durum, özellikle imgsz dışa aktarma sırasında belirtilenden farklı olduğunda (dışa aktarma imgsz TensorRT "optimal" profili olarak ayarlanır) çıkarım sırasında imgsz değiştirilirken de meydana gelebilir.
Link to this sectionYOLO'yu TensorRT INT8 ile kullanmanın dezavantajları#
-
Decreases in evaluation metrics: Using a lower precision will mean that
mAP,Precision,Recallor any other metric used to evaluate model performance is likely to be somewhat worse. See the Performance results section to compare the differences inmAP50andmAP50-95when exporting with INT8 on small sample of various devices. -
Artan geliştirme süreleri: Veri kümesi ve cihaz için INT8 kalibrasyonu için "optimal" ayarları bulmak önemli miktarda test gerektirebilir.
-
Donanım bağımlılığı: Kalibrasyon ve performans kazanımları yüksek oranda donanıma bağlı olabilir ve model ağırlıkları daha az taşınabilir durumdadır.
Link to this sectionUltralytics YOLO TensorRT Dışa Aktarım Performansı#
Link to this sectionNVIDIA A100#
Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1 ile test edilmiştir
See Detection Docs for usage examples with these models trained on COCO, which include 80 pretrained classes.
Inference times shown for mean, min (fastest), and max (slowest) for each test using pretrained weights yolov8n.engine
| Precision | Değerlendirme testi | ortalama (ms) | min | maks (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | boyut (piksel) |
|---|---|---|---|---|---|---|---|
| FP32 | Tahmin Et (Predict) | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Tahmin Et (Predict) | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Tahmin Et (Predict) | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCOval | 0.29 | 0.47 | 0.33 | 1 | 640 |
Link to this sectionTüketici GPU'ları#
Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6 ile test edildi
Inference times shown for mean, min (fastest), and max (slowest) for each test using pretrained weights yolov8n.engine
| Precision | Değerlendirme testi | ortalama (ms) | min | maks (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | boyut (piksel) |
|---|---|---|---|---|---|---|---|
| FP32 | Tahmin Et (Predict) | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Tahmin Et (Predict) | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Tahmin Et (Predict) | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCOval | 0.74 | 0.47 | 0.33 | 1 | 640 |
Link to this sectionGömülü Cihazlar#
JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1 ile test edildi
Inference times shown for mean, min (fastest), and max (slowest) for each test using pretrained weights yolov8n.engine
| Precision | Değerlendirme testi | ortalama (ms) | min | maks (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | boyut (piksel) |
|---|---|---|---|---|---|---|---|
| FP32 | Tahmin Et (Predict) | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Tahmin Et (Predict) | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Tahmin Et (Predict) | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCOval | 2.32 | 0.46 | 0.32 | 1 | 640 |
Kurulum ve yapılandırma hakkında daha fazla bilgi edinmek için Ultralytics YOLO ile NVIDIA Jetson hızlı başlangıç kılavuzumuza göz at.
Kurulum ve yapılandırma hakkında daha fazla bilgi edinmek için Ultralytics YOLO ile NVIDIA DGX Spark hızlı başlangıç kılavuzumuza göz at.
Link to this sectionDeğerlendirme yöntemleri#
Bu modellerin nasıl dışa aktarıldığı ve test edildiğiyle ilgili bilgi için aşağıdaki bölümleri genişlet.
Dışa aktarma yapılandırmaları
Dışa aktarma yapılandırma argümanlarıyla ilgili ayrıntılar için dışa aktarma moduna göz at.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)
# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, half=True)
# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, int8=True, data="coco8.yaml"
)Tahmin döngüsü
Ek bilgi için tahmin moduna göz at.
import cv2
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
img = cv2.imread("path/to/image.jpg")
for _ in range(100):
result = model.predict(
[img] * 8, # batch=8 of the same image
verbose=False,
device="cuda",
)Doğrulama yapılandırması
Doğrulama yapılandırma argümanları hakkında daha fazla bilgi edinmek için val moduna göz at.
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
results = model.val(
data="data.yaml", # COCO, ImageNet, or DOTAv1 for appropriate model task
batch=1,
imgsz=640,
verbose=False,
device="cuda",
)Link to this sectionDışa Aktarılan YOLO26 TensorRT Modellerini Dağıtma#
Ultralytics YOLO26 modellerini başarıyla TensorRT formatına dışa aktardığına göre, artık onları dağıtmaya hazırsın. TensorRT modellerini çeşitli ortamlarda dağıtmakla ilgili derinlemesine talimatlar için aşağıdaki kaynaklara bir göz at:
-
Ultralytics'i Triton Sunucusu ile Dağıt: Ultralytics YOLO modelleriyle özel olarak kullanmak üzere NVIDIA'nın Triton Inference (eski adıyla TensorRT Inference) Sunucusunun nasıl kullanılacağına dair kılavuzumuz.
-
NVIDIA TensorRT ile Derin Sinir Ağlarını Dağıtma: Bu makale, derin sinir ağlarını GPU tabanlı dağıtım platformlarında verimli bir şekilde dağıtmak için NVIDIA TensorRT'nin nasıl kullanılacağını açıklar.
-
NVIDIA Tabanlı PC'ler için Uçtan Uca Yapay Zeka: NVIDIA TensorRT Dağıtımı: Bu blog yazısı, NVIDIA tabanlı PC'lerde yapay zeka modellerini optimize etmek ve dağıtmak için NVIDIA TensorRT'nin kullanımını açıklar.
-
NVIDIA TensorRT için GitHub Deposu:: Bu, NVIDIA TensorRT için kaynak kodunu ve belgeleri içeren resmi GitHub deposudur.
Link to this sectionÖzet#
Bu kılavuzda, Ultralytics YOLO26 modellerini NVIDIA'nın TensorRT model formatına dönüştürmeye odaklandık. Bu dönüştürme adımı, YOLO26 modellerinin verimliliğini ve hızını artırmak, onları çeşitli dağıtım ortamları için daha etkili ve uygun hale getirmek adına çok önemlidir.
Kullanım detayları hakkında daha fazla bilgi için resmi TensorRT belgelerine bir göz at.
Ek Ultralytics YOLO26 entegrasyonlarını merak ediyorsan, entegrasyon kılavuzu sayfamız çok çeşitli bilgilendirici kaynaklar ve içgörüler sunar.
Link to this sectionSSS#
Link to this sectionYOLO26 modellerini nasıl TensorRT formatına dönüştürürüm?#
Ultralytics YOLO26 modellerini optimize edilmiş NVIDIA GPU çıkarımı için TensorRT formatına dönüştürmek üzere şu adımları izle:
-
Gerekli paketi yükle:
pip install ultralytics -
YOLO26 modelini dışa aktar:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine") # creates 'yolo26n.engine' # Run inference model = YOLO("yolo26n.engine") results = model("https://ultralytics.com/images/bus.jpg")
Daha fazla ayrıntı için YOLO26 Kurulum kılavuzunu ve dışa aktarma belgelerini ziyaret et.
Link to this sectionYOLO26 modelleri için TensorRT kullanmanın avantajları nelerdir?#
YOLO26 modellerini optimize etmek için TensorRT kullanmak çeşitli avantajlar sunar:
- Daha Hızlı Çıkarım Hızı: TensorRT, model katmanlarını optimize eder ve doğruluktan önemli ölçüde ödün vermeden çıkarımı hızlandırmak için hassasiyet kalibrasyonu (INT8 ve FP16) kullanır.
- Bellek Verimliliği: TensorRT, tensör belleğini dinamik olarak yöneterek yükü azaltır ve GPU bellek kullanımını iyileştirir.
- Katman Birleştirme (Layer Fusion): Birden çok katmanı tek işlemlerde birleştirerek hesaplama karmaşıklığını azaltır.
- Çekirdek Otomatik Ayarlama (Kernel Auto-Tuning): Her model katmanı için optimize edilmiş GPU çekirdeklerini otomatik olarak seçerek maksimum performansı sağlar.
Daha fazla bilgi edinmek için NVIDIA'nın resmi TensorRT belgelerini ve kapsamlı TensorRT genel bakışımızı keşfet.
Link to this sectionYOLO26 modelleri için TensorRT ile INT8 nicemleme (quantization) kullanabilir miyim?#
Evet, YOLO26 modellerini TensorRT ile INT8 nicemleme kullanarak dışa aktarabilirsin. Bu süreç, eğitim sonrası nicemleme (PTQ) ve kalibrasyonu içerir:
-
INT8 ile dışa aktar:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine", batch=8, workspace=4, int8=True, data="coco.yaml") -
Çıkarımı çalıştır:
from ultralytics import YOLO model = YOLO("yolo26n.engine", task="detect") result = model.predict("https://ultralytics.com/images/bus.jpg")
Daha fazla ayrıntı için INT8 nicemleme ile TensorRT dışa aktarma bölümüne başvur.
Link to this sectionYOLO26 TensorRT modellerini NVIDIA Triton Inference Server üzerinde nasıl dağıtırım?#
YOLO26 TensorRT modellerini bir NVIDIA Triton Inference Server üzerinde dağıtmak için aşağıdaki kaynaklar kullanılabilir:
- Triton Server ile Ultralytics YOLO26 Dağıtımı: Triton Inference Server'ı kurma ve kullanma konusunda adım adım kılavuz.
- NVIDIA TensorRT ile Derin Sinir Ağlarının Dağıtımı: Ayrıntılı dağıtım seçenekleri ve yapılandırmalar için TensorRT ile derin öğrenme modellerini dağıtmaya yönelik NVIDIA kılavuzu.
Bu kılavuzlar, YOLO26 modellerini çeşitli dağıtım ortamlarında verimli bir şekilde entegre etmene yardımcı olacaktır.
Link to this sectionTensorRT'ye aktarılan YOLO26 modellerinde gözlemlenen performans iyileştirmeleri nelerdir?#
TensorRT ile performans iyileştirmeleri, kullanılan donanıma bağlı olarak değişebilir. İşte bazı tipik kıyaslamalar:
-
NVIDIA A100:
- FP32 Çıkarım: ~0.52 ms / görüntü
- FP16 Çıkarım: ~0.34 ms / görüntü
- INT8 Çıkarım: ~0.28 ms / görüntü
- INT8 hassasiyeti ile mAP değerinde hafif bir düşüş olur ancak hızda önemli bir iyileşme sağlanır.
-
Tüketici GPU'ları (örneğin, RTX 3080):
- FP32 Çıkarım: ~1.06 ms / görüntü
- FP16 Çıkarım: ~0.62 ms / görüntü
- INT8 Çıkarım: ~0.52 ms / görüntü
Farklı donanım yapılandırmaları için ayrıntılı performans kıyaslamaları, performans bölümünde bulunabilir.
TensorRT performansı hakkında daha kapsamlı içgörüler için Ultralytics belgelerine ve performans analizi raporlarımıza başvur.