İçeriğe geç

Triton Çıkarım Sunucusu ile Ultralytics YOLOv8

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ü sunar. Triton , yapay zeka modellerinin üretimde geniş ölçekte dağıtımını basitleştirir. Ultralytics YOLOv8 adresini 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 ayarlamak ve test etmek için adımlar sağlar.



İzle: NVIDIA Triton Inference Server ile Başlarken.

Triton Çıkarım Sunucusu nedir?

Triton Inference Server, üretimde çeşitli yapay zeka modellerini 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. Birincil kullanım alanları şunlardır:

  • Tek bir sunucu örneğinden birden fazla model sunma.
  • Sunucu yeniden başlatılmadan dinamik model yükleme ve boşaltma.
  • Ensemble çıkarımı, sonuçlara ulaşmak için birden fazla modelin birlikte kullanılmasına izin verir.
  • A/B testi ve sürekli güncellemeler için model versiyonlama.

Ön Koşullar

Devam etmeden önce aşağıdaki ön koşullara sahip olduğunuzdan emin olun:

  • Makinenizde Docker yüklü.
  • Kurulum tritonclient:
    pip install tritonclient[all]
    

YOLOv8 adresini ONNX biçimine aktarma

Modeli Triton adresine yerleştirmeden önce ONNX formatına aktarılması gerekir. ONNX (Open Neural Network Exchange), modellerin farklı derin öğrenme çerçeveleri arasında aktarılmasını sağlayan bir formattır. Kullanın export fonksiyonundan YOLO Sınıf:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official model

# Export the model
onnx_file = model.export(format='onnx', dynamic=True)

Triton Model Deposunun Kurulması

Triton Model Deposu, Triton adresinin modellere erişebileceği ve yükleyebileceği bir depolama yeridir.

  1. Gerekli dizin yapısını oluşturun:

    from pathlib import Path
    
    # Define paths
    triton_repo_path = Path('tmp') / 'triton_repo'
    triton_model_path = triton_repo_path / 'yolo'
    
    # Create directories
    (triton_model_path / '1').mkdir(parents=True, exist_ok=True)
    
  2. 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()
    

Triton Çıkarım Sunucusunu Çalıştırma

Docker kullanarak Triton Çıkarım Sunucusunu çalıştırın:

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:23.09-py3'  # 6.4 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 -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 Server modelini kullanarak çıkarımı çalıştırın:

from ultralytics import YOLO

# Load the Triton Server model
model = YOLO(f'http://localhost:8000/yolo', task='detect')

# Run inference on the server
results = model('path/to/image.jpg')

Konteyneri temizleyin:

# Kill and remove the container at the end of the test
subprocess.call(f'docker kill {container_id}', shell=True)

Yukarıdaki adımları izleyerek, derin öğrenme çıkarım görevleri için ölçeklenebilir ve yüksek performanslı bir çözüm sağlayan Triton Inference Server üzerinde Ultralytics YOLOv8 modellerini 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.



Oluşturma 2023-11-12, Güncelleme 2024-02-03
Yazarlar: glenn-jocher (5)

Yorumlar