Ultralytics YOLO26 ile Triton Inference Server#
Triton Inference Server (önceki adı TensorRT Inference Server), NVIDIA tarafından geliştirilen açık kaynaklı bir yazılım çözümüdür. NVIDIA GPU'ları için optimize edilmiş bir bulut çıkarım çözümü sunar. Triton, üretim ortamlarında yapay zekâ modellerinin ölçekli dağıtımını kolaylaştırır. Ultralytics YOLO26 ile Triton Inference Server'ı entegre ederek ölçeklenebilir, yüksek performanslı derin öğrenme çıkarım iş yüklerini dağıtabilirsin. Bu kılavuzda entegrasyonu kurup test etmek için gereken adımlar açıklanır.
İzle: NVIDIA Triton Inference Server'ı kullanmaya başlama.
Triton Inference Server nedir?#
Triton Inference Server, çeşitli yapay zekâ modellerini üretim ortamında dağıtmak için tasarlanmıştır. PyTorch, TensorFlow, ONNX, OpenVINO, TensorRT ve diğerleri dâhil olmak üzere çok çeşitli derin öğrenme ve makine öğrenimi çerçevelerini destekler. Başlıca kullanım alanları şunlardır:
- Bir sunucu örneğinden birden fazla model sunma
- Sunucuyu yeniden başlatmadan modelleri dinamik olarak yükleyip kaldırma
- Sonuç elde etmek için birden fazla modelin birlikte kullanılmasını sağlayan topluluk çıkarımı
- A/B testi ve aşamalı güncellemeler için model sürümleme
Triton Inference Server'ın Temel Avantajları#
Triton Inference Server'ı Ultralytics YOLO26 ile kullanmak çeşitli avantajlar sağlar:
- Otomatik gruplama: İşlemeden önce birden fazla yapay zekâ isteğini birlikte gruplandırarak gecikmeyi azaltır ve çıkarım hızını artırır
- Kubernetes entegrasyonu: Bulut tabanlı tasarımı, yapay zekâ uygulamalarını yönetmek ve ölçeklendirmek için Kubernetes ile sorunsuz çalışır
- Donanıma özel optimizasyonlar: En yüksek performans için NVIDIA GPU'larından tam olarak yararlanır
- Çerçeve esnekliği: PyTorch, TensorFlow, ONNX, OpenVINO ve TensorRT dâhil olmak üzere birden fazla yapay zekâ çerçevesini destekler
- Açık kaynaklı ve özelleştirilebilir: Çeşitli yapay zekâ uygulamalarında esneklik sağlayarak özel gereksinimlere uyacak şekilde değiştirilebilir
Ön koşullar#
Devam etmeden önce aşağıdaki ön koşulların karşılandığından emin ol:
- Bilgisayarında Docker (>= 28.2.0, CDI GPU erişimi için NVIDIA Container Toolkit >= 1.18 ile) veya Podman yüklü olmalı
ultralyticsyükle:pip install ultralyticstritonclientyükle:pip install tritonclient[all]
Triton Inference Server'ı Kurma#
Ultralytics YOLO26 modelini ONNX biçiminde dışa aktarmak, Triton model deposunu oluşturmak ve Triton Inference Server'ı başlatmak için bu eksiksiz kurulum bloğunu çalıştır:
Kullanacağın kapsayıcı altyapısını seçmek için betikteki runtime anahtarını kullan:
- Docker için
runtime = "docker"değerini ayarla - Podman için
runtime = "podman"değerini ayarla
import contextlib
import subprocess
import time
from pathlib import Path
from tritonclient.http import InferenceServerClient
from ultralytics import YOLO
runtime = "docker" # set to "podman" to use Podman
# 1) Exporting YOLO26 to ONNX Format
# Load a model
model = YOLO("yolo26n.pt") # load an official model
# Retrieve metadata during export. Metadata needs to be added to config.pbtxt. See next section.
metadata = []
def export_cb(exporter):
metadata.append(exporter.metadata)
model.add_callback("on_export_end", export_cb)
# Export the model
onnx_file = model.export(format="onnx", dynamic=True)
# 2) Setting Up Triton Model Repository
# Define paths
model_name = "yolo"
triton_repo_path = Path("tmp") / "triton_repo"
triton_model_path = triton_repo_path / model_name
# Create directories
(triton_model_path / "1").mkdir(parents=True, exist_ok=True)
# Move ONNX model to Triton Model path
Path(onnx_file).rename(triton_model_path / "1" / "model.onnx")
# Create config file
(triton_model_path / "config.pbtxt").touch()
data = """
# Add metadata
parameters {
key: "metadata"
value {
string_value: "%s"
}
}
# Enable TensorRT acceleration (requires a GPU and TensorRT-enabled Triton; remove this block for CPU-only serving)
# The first run will be slow due to TensorRT engine conversion
optimization {
execution_accelerators {
gpu_execution_accelerator {
name: "tensorrt"
parameters {
key: "precision_mode"
value: "FP16"
}
parameters {
key: "max_workspace_size_bytes"
value: "3221225472"
}
parameters {
key: "trt_engine_cache_enable"
value: "1"
}
parameters {
key: "trt_engine_cache_path"
value: "/models/yolo/1"
}
}
}
}
""" % metadata[0] # noqa
with open(triton_model_path / "config.pbtxt", "w") as f:
f.write(data)
# 3) Running Triton Inference Server
# Define image https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver
tag = "nvcr.io/nvidia/tritonserver:26.02-py3" # 16.17 GB (Compressed Size)
subprocess.call(f"{runtime} pull {tag}", shell=True)
# CDI GPU request works identically on Docker and Podman
gpu_flags = "--device nvidia.com/gpu=all"
container_name = "triton_server"
# Note: The :z flag on the volume mount is necessary for systems with SELinux (like Fedora/RHEL)
subprocess.call(
f"{runtime} run -d --rm --name {container_name} {gpu_flags} -v {triton_repo_path.absolute()}:/models:z -p 8000:8000 {tag} tritonserver --model-repository=/models",
shell=True,
)
# Wait for the Triton server to start
triton_client = InferenceServerClient(url="127.0.0.1:8000", verbose=False, ssl=False)
# Wait until model is ready
for _ in range(10):
with contextlib.suppress(Exception):
assert triton_client.is_model_ready(model_name)
break
time.sleep(1)Çıkarımı Çalıştırma#
Triton Server modelini kullanarak çıkarımı çalıştır:
from ultralytics import YOLO
# Triton Server modelini yükle
model = YOLO("http://127.0.0.1:8000/yolo", task="detect")
# Sunucuda çıkarımı çalıştır
results = model("path/to/image.jpg")Kapsayıcıyı temizle:
import subprocess
runtime = "docker" # set to "podman" to use Podman
container_name = "triton_server" # Kill the named container
subprocess.call(f"{runtime} kill {container_name}", shell=True)TensorRT Optimizasyonu (İsteğe Bağlı)#
Daha da yüksek performans için Triton Inference Server ile TensorRT kullanabilirsin. TensorRT, NVIDIA GPU'ları için özel olarak geliştirilmiş yüksek performanslı bir derin öğrenme iyileştiricisidir ve çıkarım hızını önemli ölçüde artırabilir.
TensorRT'yi Triton ile kullanmanın temel avantajları şunlardır:
- Optimize edilmemiş modellere kıyasla 36 kata kadar daha hızlı çıkarım
- GPU kullanımını en üst düzeye çıkarmak için donanıma özel optimizasyonlar
- Doğruluğu korurken azaltılmış hassasiyet biçimlerini (INT8, FP16) destekleme
- Hesaplama yükünü azaltmak için katmanları birleştirme
Yukarıdaki config.pbtxt, Triton'ın ONNX modeli için TensorRT hızlandırıcısını zaten etkinleştirir. Bunun yerine TensorRT'yi doğrudan Ultralytics ile çalıştırmak için Ultralytics YOLO26 modelini TensorRT biçiminde dışa aktar:
from ultralytics import YOLO
# YOLO26 modelini yükle
model = YOLO("yolo26n.pt")
# Modeli TensorRT biçimine aktar
model.export(format="engine") # 'yolo26n.engine' oluştururTensorRT optimizasyonu hakkında daha fazla bilgi için TensorRT entegrasyon kılavuzuna göz at.
Artık ölçeklenebilir, yüksek performanslı çıkarım için Ultralytics YOLO26 modellerini Triton Inference Server'da dağıtıp çalıştırabilirsin. Daha fazla bilgi için resmî Triton belgelerine göz at veya yardım almak için Ultralytics topluluğuna danış.
Sık Sorulan Sorular#
Ultralytics YOLO26 modelini NVIDIA Triton Inference Server ile kurmak birkaç temel adımdan oluşur:
-
YOLO26'yı ONNX biçiminde dışa aktar:
from ultralytics import YOLO # Bir model yükle model = YOLO("yolo26n.pt") # Resmî bir modeli yükle # Modeli ONNX biçimine aktar onnx_file = model.export(format="onnx", dynamic=True) -
Triton Model Deposunu kur:
from pathlib import Path # Yolları tanımla model_name = "yolo" triton_repo_path = Path("tmp") / "triton_repo" triton_model_path = triton_repo_path / model_name # Dizinleri oluştur (triton_model_path / "1").mkdir(parents=True, exist_ok=True) Path(onnx_file).rename(triton_model_path / "1" / "model.onnx") (triton_model_path / "config.pbtxt").touch() -
Triton Server'ı çalıştır:
import contextlib import subprocess import time from tritonclient.http import InferenceServerClient # Define image https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver tag = "nvcr.io/nvidia/tritonserver:26.02-py3" runtime = "docker" # set to "podman" to use Podman subprocess.call(f"{runtime} pull {tag}", shell=True) # CDI GPU request works identically on Docker and Podman gpu_flags = "--device nvidia.com/gpu=all" container_name = "triton_server" subprocess.call( f"{runtime} run -d --rm --name {container_name} {gpu_flags} -v {triton_repo_path.absolute()}:/models:z -p 8000:8000 {tag} tritonserver --model-repository=/models", shell=True, ) triton_client = InferenceServerClient(url="127.0.0.1:8000", verbose=False, ssl=False) for _ in range(10): with contextlib.suppress(Exception): assert triton_client.is_model_ready(model_name) break time.sleep(1)
Bu kurulum, yüksek performanslı yapay zekâ modeli çıkarımı için Ultralytics YOLO26 modellerini Triton Inference Server'da ölçekli bir şekilde verimli olarak dağıtmana yardımcı olabilir.
-
Ultralytics YOLO26 modelini NVIDIA Triton Inference Server ile entegre etmek çeşitli avantajlar sağlar:
- Ölçeklenebilir yapay zekâ çıkarımı: Triton, tek bir sunucu örneğinden birden fazla modelin sunulmasına olanak tanır. Modellerin dinamik olarak yüklenip kaldırılmasını desteklediğinden farklı yapay zekâ iş yükleri için yüksek ölçeklenebilirlik sağlar.
- Yüksek performans: NVIDIA GPU'ları için optimize edilen Triton Inference Server, nesne algılama gibi gerçek zamanlı uygulamalar için ideal, yüksek hızlı çıkarım işlemleri sağlar.
- Topluluk ve model sürümleme: Triton'ın topluluk modu, sonuçları iyileştirmek için birden fazla modeli birleştirmeyi sağlar; model sürümleme özelliği ise A/B testlerini ve aşamalı güncellemeleri destekler.
- Otomatik gruplama: Triton, birden fazla çıkarım isteğini otomatik olarak gruplandırarak iş hacmini önemli ölçüde artırır ve gecikmeyi azaltır.
- Basitleştirilmiş dağıtım: Yapay zekâ iş akışlarını tüm sistemi baştan sona yenilemeyi gerektirmeden kademeli olarak optimize ederek verimli ölçeklendirmeyi kolaylaştırır.
Ultralytics YOLO26 modelini Triton ile kurma ve çalıştırma hakkında ayrıntılı talimatlar için Triton Inference Server'ı Kurma ve Çıkarımı Çalıştırma bölümlerine göz at.
Ultralytics YOLO26 modelini NVIDIA Triton Inference Server üzerinde dağıtmadan önce ONNX (Açık Sinir Ağı Değişimi) biçimini kullanmak çeşitli temel avantajlar sağlar:
- Birlikte çalışabilirlik: ONNX biçimi, farklı derin öğrenme çerçeveleri (PyTorch, TensorFlow gibi) arasında aktarımı destekleyerek daha geniş uyumluluk sağlar.
- Optimizasyon: Triton dâhil olmak üzere birçok dağıtım ortamı ONNX için optimizasyon yaparak daha hızlı çıkarım ve daha iyi performans sağlar.
- Kolay dağıtım: ONNX, çeşitli işletim sistemlerinde ve donanım yapılandırmalarında dağıtım sürecini basitleştirerek çerçeveler ve platformlar genelinde yaygın biçimde desteklenir.
- Çerçeveden bağımsızlık: ONNX'e dönüştürüldükten sonra modelin orijinal çerçevesine bağlı kalmaz ve daha taşınabilir hâle gelir.
- Standartlaştırma: ONNX, farklı AI çerçeveleri arasındaki uyumluluk sorunlarının aşılmasına yardımcı olan standartlaştırılmış bir gösterim sunar.
Modelini dışa aktarmak için şunu kullan:
from ultralytics import YOLO model = YOLO("yolo26n.pt") onnx_file = model.export(format="onnx", dynamic=True)İşlemi tamamlamak için ONNX entegrasyon kılavuzundaki adımları izleyebilirsin.
Evet, Ultralytics YOLO26 modeliyle NVIDIA Triton Inference Server üzerinde çıkarım yapabilirsin. Modelini Triton Model Repository'ye ekleyip sunucuyu çalıştırdıktan sonra modelini aşağıdaki gibi yükleyebilir ve çıkarım yapabilirsin:
from ultralytics import YOLO # Triton Server modelini yükle model = YOLO("http://127.0.0.1:8000/yolo", task="detect") # Sunucuda çıkarımı çalıştır results = model("path/to/image.jpg")Bu yaklaşım, tanıdık Ultralytics YOLO arayüzünü kullanırken Triton'un optimizasyonlarından yararlanmanı sağlar.
Ultralytics YOLO26, dağıtım için TensorFlow ve PyTorch modellerine kıyasla çeşitli benzersiz avantajlar sunar:
- Gerçek Zamanlı Performans: Gerçek zamanlı nesne algılama görevleri için optimize edilen Ultralytics YOLO26, en gelişmiş doğruluk ve hızı sunarak canlı video analitiği gerektiren uygulamalar için idealdir.
- Kullanım Kolaylığı: Ultralytics YOLO26, Triton Inference Server ile sorunsuz biçimde entegre olur ve çeşitli dışa aktarma biçimlerini (ONNX, TensorRT) destekleyerek farklı dağıtım senaryolarında esneklik sağlar.
- Gelişmiş Özellikler: Triton üzerinden sunum; ölçeklenebilir ve güvenilir AI dağıtımları için kritik olan dinamik model yükleme, model sürümleme ve toplu çıkarım özelliklerini ekler.
- Basitleştirilmiş API: Ultralytics API, farklı dağıtım hedeflerinde tutarlı bir arayüz sunarak öğrenme süresini ve geliştirme süresini kısaltır.
- Uçta Optimizasyon: Ultralytics YOLO26 modelleri uçta dağıtım düşünülerek tasarlanmıştır ve kaynakları kısıtlı cihazlarda bile mükemmel performans sunar.
Daha fazla bilgi için dağıtım seçeneklerini model dışa aktarma kılavuzunda karşılaştır.