Ultralytics YOLO11 ile Triton Inference Server
Triton Inference Server (eski adıyla 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ü sağlar. Triton, yapay zeka modellerinin üretimde ölçekli olarak dağıtımını basitleştirir. Ultralytics YOLO11'i Triton Inference Server ile entegre etmek, ölçeklenebilir, yüksek performanslı derin öğrenme çıkarım iş yüklerini dağıtmanıza olanak tanır. Bu kılavuz, entegrasyonu kurmak ve test etmek için adımlar sağlar.
İzle: NVIDIA Triton Çıkarım Sunucusu'nu Kullanmaya Başlama.
Triton Inference Server nedir?
Triton Inference Server, çeşitli AI modellerini üretimde dağıtmak için tasarlanmıştır. TensorFlow, PyTorch, ONNX Runtime ve diğerleri dahil olmak üzere çok çeşitli derin öğrenme ve makine öğrenimi çerçevelerini destekler. Başlıca kullanım alanları şunlardır:
- Tek bir sunucu örneğinden birden fazla model sunma
- Sunucuyu yeniden başlatmadan dinamik model yükleme ve kaldırma
- Sonuçlara ulaşmak için birden fazla modelin birlikte kullanılmasına olanak tanıyan ensemble çıkarımı
- A/B testi ve aşamalı güncellemeler için model versiyonlama
Triton Inference Server'ın Temel Faydaları
Ultralytics YOLO11 ile Triton Inference Server kullanmak çeşitli avantajlar sağlar:
- Otomatik toplu işleme: Birden fazla yapay zeka isteğini işlemeden önce gruplandırarak gecikmeyi azaltır ve çıkarım hızını artırır.
- Kubernetes entegrasyonu: Bulut tabanlı tasarım, AI uygulamalarını yönetmek ve ölçeklendirmek için Kubernetes ile sorunsuz çalışır
- Donanıma özel optimizasyonlar: Maksimum performans için NVIDIA GPU'lardan tam olarak yararlanır
- Çerçeve esnekliği: TensorFlow, PyTorch, ONNX ve TensorRT dahil olmak üzere birden fazla AI çerçevesini destekler
- Açık kaynaklı ve özelleştirilebilir: Belirli ihtiyaçlara uyacak şekilde değiştirilebilir, çeşitli yapay zeka uygulamaları için esneklik sağlar
Ön koşullar
Devam etmeden önce aşağıdaki ön koşullara sahip olduğunuzdan emin olun:
- Makinenize Docker'ın kurulu olması
- Kurulum
tritonclient
:pip install tritonclient[all]
YOLO11'i ONNX Formatına Aktarma
Modeli Triton'da dağıtmadan önce, ONNX formatına aktarılması gerekir. ONNX (Açık Nöral Ağ Değişimi), modellerin farklı derin öğrenme çerçeveleri arasında aktarılmasına olanak tanıyan bir formattır. Şunu kullanın: export
işlevini YOLO
sınıf:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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)
Triton Model Deposu Kurulumu
Triton Model Deposu, Triton'un modellere erişebileceği ve yükleyebileceği bir depolama konumudur.
-
Gerekli dizin yapısını oluşturun:
from pathlib import Path # 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)
-
Dışa aktarılan ONNX modelini Triton deposuna taşıyın:
from pathlib import Path # 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" } } # (Optional) Enable TensorRT for GPU inference # 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)
Triton Inference Sunucusunu Çalıştırma
Docker kullanarak Triton Inference Sunucusunu Çalıştırın:
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:24.09-py3" # 8.57 GB
# Pull the image
subprocess.call(f"docker pull {tag}", shell=True)
# Run the Triton server and capture the container ID
container_id = (
subprocess.check_output(
f"docker run -d --rm --gpus 0 -v {triton_repo_path}:/models -p 8000:8000 {tag} tritonserver --model-repository=/models",
shell=True,
)
.decode("utf-8")
.strip()
)
# Wait for the Triton server to start
triton_client = InferenceServerClient(url="localhost: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)
Ardından, Triton Sunucu modelini kullanarak çıkarım çalıştırın:
from ultralytics import YOLO
# Load the Triton Server model
model = YOLO("http://localhost:8000/yolo", task="detect")
# Run inference on the server
results = model("path/to/image.jpg")
Konteyneri temizle:
# Kill and remove the container at the end of the test
subprocess.call(f"docker kill {container_id}", shell=True)
TensorRT Optimizasyonu (İsteğe Bağlı)
Daha da yüksek performans için, Triton Inference Server ile TensorRT kullanabilirsiniz. TensorRT, çıkarım hızını önemli ölçüde artırabilen, NVIDIA GPU'lar için özel olarak oluşturulmuş yüksek performanslı bir derin öğrenme optimize edicisidir.
Triton ile TensorRT kullanmanın temel faydaları şunlardır:
- Optimize edilmemiş modellere kıyasla 36 kata kadar daha hızlı çıkarım
- Maksimum GPU kullanımı için donanıma özel optimizasyonlar
- Doğruluğu korurken azaltılmış hassasiyet formatları (INT8, FP16) için destek
- Hesaplama yükünü azaltmak için katman birleştirme
TensorRT'yi doğrudan kullanmak için, YOLO11 modelinizi TensorRT formatına aktarabilirsiniz:
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo11n.engine'
TensorRT optimizasyonu hakkında daha fazla bilgi için TensorRT entegrasyon kılavuzuna bakın.
Yukarıdaki adımları izleyerek, derin öğrenme çıkarım görevleri için ölçeklenebilir ve yüksek performanslı bir çözüm sağlayarak, Ultralytics YOLO11 modellerini Triton Inference Server üzerinde verimli bir şekilde dağıtabilir ve çalıştırabilirsiniz. Herhangi bir sorunla karşılaşırsanız veya başka sorularınız varsa, resmi Triton belgelerine bakın veya destek için Ultralytics topluluğuna ulaşın.
SSS
Ultralytics YOLO11'i NVIDIA Triton Inference Server ile nasıl kurarım?
NVIDIA Triton Inference Server ile Ultralytics YOLO11'i kurmak birkaç temel adım içerir:
-
YOLO11'i ONNX formatına aktarma:
from ultralytics import YOLO # Load a model model = YOLO("yolo11n.pt") # load an official model # Export the model to ONNX format onnx_file = model.export(format="onnx", dynamic=True)
-
Triton Model Deposu Kurun:
from pathlib import Path # 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) Path(onnx_file).rename(triton_model_path / "1" / "model.onnx") (triton_model_path / "config.pbtxt").touch()
-
Triton Sunucusunu Ç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:24.09-py3" subprocess.call(f"docker pull {tag}", shell=True) container_id = ( subprocess.check_output( f"docker run -d --rm --gpus 0 -v {triton_repo_path}:/models -p 8000:8000 {tag} tritonserver --model-repository=/models", shell=True, ) .decode("utf-8") .strip() ) triton_client = InferenceServerClient(url="localhost: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 zeka modeli çıkarımı için YOLO11 modellerini Triton Inference Server üzerinde ölçeklenebilir bir şekilde verimli bir şekilde dağıtmanıza yardımcı olabilir.
Ultralytics YOLO11'i NVIDIA Triton Inference Server ile kullanmanın ne gibi faydaları vardır?
Ultralytics YOLO11'i NVIDIA Triton Inference Server ile entegre etmek çeşitli avantajlar sağlar:
- Ölçeklenebilir Yapay Zeka Çıkarımı: Triton, dinamik model yükleme ve boşaltmayı destekleyerek tek bir sunucu örneğinden birden çok modele hizmet verilmesine olanak tanır ve bu da onu çeşitli yapay zeka iş yükleri için son derece ölçeklenebilir hale getirir.
- Yüksek Performans: NVIDIA GPU'lar için optimize edilmiş Triton Inference Server, nesne algılama gibi gerçek zamanlı uygulamalar için mükemmel olan yüksek hızlı çıkarım işlemleri sağlar.
- Ensemble ve Model Sürümleme: Triton'un ensemble modu, sonuçları iyileştirmek için birden çok modeli birleştirmeyi sağlar ve model sürümlemesi, A/B testini ve aşamalı güncellemeleri destekler.
- Otomatik Toplu İşleme: Triton, birden fazla çıkarım isteğini otomatik olarak gruplandırarak verimi önemli ölçüde artırır ve gecikmeyi azaltır.
- Basitleştirilmiş Dağıtım: Tam sistem revizyonları gerektirmeden yapay zeka iş akışlarının kademeli optimizasyonu, verimli bir şekilde ölçeklendirmeyi kolaylaştırır.
YOLO11'i Triton ile kurma ve çalıştırma hakkında ayrıntılı talimatlar için kurulum kılavuzuna başvurabilirsiniz.
Triton Inference Server'ı kullanmadan önce YOLO11 modelimi neden ONNX formatına aktarmalıyım?
Ultralytics YOLO11 modelinizi NVIDIA Triton Inference Server'a dağıtmadan önce ONNX (Open Neural Network Exchange) formatını kullanmak çeşitli önemli avantajlar sunar:
- Birlikte Çalışabilirlik: ONNX formatı, farklı derin öğrenme çerçeveleri (PyTorch, TensorFlow gibi) arasında aktarımı destekleyerek daha geniş uyumluluk sağlar.
- Optimizasyon: Triton dahil olmak üzere birçok dağıtım ortamı, daha hızlı çıkarım ve daha iyi performans sağlayarak ONNX için optimizasyon yapar.
- Dağıtım Kolaylığı: ONNX, çeşitli çerçeveler ve platformlar arasında yaygın olarak desteklenir ve çeşitli işletim sistemlerinde ve donanım yapılandırmalarında dağıtım sürecini basitleştirir.
- Çerçeve Bağımsızlığı: ONNX'e dönüştürüldükten sonra, modeliniz artık orijinal çerçevesine bağlı değildir ve bu da onu daha taşınabilir hale getirir.
- Standardizasyon: ONNX, farklı yapay zeka çerçeveleri arasındaki uyumluluk sorunlarının üstesinden gelmeye yardımcı olan standartlaştırılmış bir temsil sağlar.
Modelinizi dışa aktarmak için şunu kullanın:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
onnx_file = model.export(format="onnx", dynamic=True)
İşlemi tamamlamak için ONNX entegrasyon kılavuzundaki adımları izleyebilirsiniz.
Ultralytics YOLO11 modelini Triton Inference Server üzerinde kullanarak çıkarım çalıştırabilir miyim?
Evet, NVIDIA Triton Inference Server üzerinde Ultralytics YOLO11 modelini kullanarak çıkarım çalıştırabilirsiniz. Modeliniz Triton Model Repository'de ayarlandıktan ve sunucu çalışır duruma geldikten sonra, modelinizi aşağıdaki gibi yükleyip çıkarım yapabilirsiniz:
from ultralytics import YOLO
# Load the Triton Server model
model = YOLO("http://localhost:8000/yolo", task="detect")
# Run inference on the server
results = model("path/to/image.jpg")
Bu yaklaşım, tanıdık Ultralytics YOLO arayüzünü kullanırken Triton'un optimizasyonlarından yararlanmanızı sağlar. YOLO11 ile Triton Server'ı kurma ve çalıştırma hakkında ayrıntılı bir kılavuz için triton çıkarım sunucusunu çalıştırma bölümüne bakın.
Ultralytics YOLO11'in dağıtım için TensorFlow ve PyTorch modelleriyle karşılaştırması nasıldır?
Ultralytics YOLO11, 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 YOLO11, en son teknoloji doğruluğu ve hızı sunarak canlı video analitiği gerektiren uygulamalar için idealdir.
- Kullanım Kolaylığı: YOLO11, Triton Inference Server ile sorunsuz bir şekilde entegre olur ve çeşitli dışa aktarma formatlarını (ONNX, TensorRT, CoreML) destekleyerek çeşitli dağıtım senaryoları için esnek hale getirir.
- Gelişmiş Özellikler: YOLO11, ölçeklenebilir ve güvenilir yapay zeka dağıtımları için çok önemli olan dinamik model yükleme, model sürümleme ve topluluk çıkarımı gibi özellikler içerir.
- Basitleştirilmiş API: Ultralytics API, farklı dağıtım hedefleri arasında tutarlı bir arayüz sağlayarak öğrenme eğrisini ve geliştirme süresini azaltır.
- Uç Optimizasyonu: YOLO11 modelleri, uç dağıtımı düşünülerek tasarlanmıştır ve kaynakları kısıtlı cihazlarda bile mükemmel performans sunar.
Daha fazla ayrıntı için, model dışa aktarma kılavuzundaki dağıtım seçeneklerini karşılaştırın.