सामग्री पर जाएं

Triton अनुमान सर्वर के साथ Ultralytics YOLOv8

The Triton Inference Server (formerly known as TensorRT Inference Server) is an open-source software solution developed by NVIDIA. It provides a cloud inference solution optimized for NVIDIA GPUs. Triton simplifies the deployment of AI models at scale in production. Integrating Ultralytics YOLOv8 with Triton Inference Server allows you to deploy scalable, high-performance deep learning inference workloads. This guide provides steps to set up and test the integration.



सतर्कता: Getting Started with NVIDIA Triton Inference Server.

क्या है Triton अनुमान सर्वर?

Triton अनुमान सर्वर को उत्पादन में विभिन्न प्रकार के AI मॉडल तैनात करने के लिए डिज़ाइन किया गया है। यह गहरी शिक्षा और मशीन लर्निंग फ्रेमवर्क की एक विस्तृत श्रृंखला का समर्थन करता है, जिसमें शामिल हैं TensorFlow, PyTorch, ONNX रनटाइम, और कई अन्य। इसके प्राथमिक उपयोग के मामले हैं:

  • एकल सर्वर इंस्टेंस से कई मॉडलों की सेवा।
  • सर्वर पुनरारंभ किए बिना गतिशील मॉडल लोडिंग और अनलोडिंग।
  • अनुमान, परिणाम प्राप्त करने के लिए कई मॉडलों को एक साथ उपयोग करने की अनुमति देता है।
  • A/B परीक्षण और रोलिंग अपडेट के लिए मॉडल संस्करण।

आवश्यकताएँ

सुनिश्चित करें कि आगे बढ़ने से पहले आपके पास निम्नलिखित पूर्वापेक्षाएँ हैं:

  • आपकी मशीन पर डॉकर स्थापित है।
  • पदासीन करना tritonclient:
    pip install tritonclient[all]
    

निर्यात YOLOv8 तक ONNX प्रारूप

मॉडल को चालू करने से पहले Triton, इसे निर्यात किया जाना चाहिए ONNX प्रारूप। ONNX (ओपन न्यूरल नेटवर्क एक्सचेंज) एक प्रारूप है जो मॉडल को विभिन्न गहन शिक्षण ढांचे के बीच स्थानांतरित करने की अनुमति देता है। का उपयोग करें export फ़ंक्शन से YOLO कक्षा:

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 मॉडल रिपोजिटरी

वही Triton मॉडल रिपोजिटरी एक भंडारण स्थान है जहां Triton मॉडल तक पहुंच और लोड कर सकते हैं।

  1. आवश्यक निर्देशिका संरचना बनाएँ:

    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)
    
  2. निर्यात किए गए को स्थानांतरित करें ONNX के लिए मॉडल Triton कोष:

    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 अनुमान सर्वर

चलाएँ Triton डॉकर का उपयोग कर अनुमान सर्वर:

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: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)

फिर का उपयोग करके अनुमान चलाएं Triton सर्वर मॉडल:

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")

कंटेनर को साफ करें:

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

उपरोक्त चरणों का पालन करके, आप परिनियोजित और चला सकते हैं Ultralytics YOLOv8 मॉडल कुशलता से चालू Triton अनुमान सर्वर, गहन शिक्षण अनुमान कार्यों के लिए एक स्केलेबल और उच्च-प्रदर्शन समाधान प्रदान करता है। यदि आप किसी समस्या का सामना करते हैं या आपके और प्रश्न हैं, तो देखें अफ़सर Triton दस्तावेज़ीकरण या तक पहुंचें Ultralytics समर्थन के लिए समुदाय।

अक्सर पूछे जाने वाले प्रश्न

मैं कैसे सेट अप करूँ Ultralytics YOLOv8 के साथ NVIDIA Triton अनुमान सर्वर?

Setting up Ultralytics YOLOv8 with NVIDIA Triton Inference Server involves a few key steps:

  1. निर्यातित माल YOLOv8 तक ONNX प्रारूप:

    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolov8n.pt")  # load an official model
    
    # Export the model to ONNX format
    onnx_file = model.export(format="onnx", dynamic=True)
    
  2. तैयार करना Triton मॉडल भंडार:

    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()
    
  3. चलाएँ Triton सर्वर:

    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:23.09-py3"
    
    subprocess.call(f"docker pull {tag}", shell=True)
    
    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()
    )
    
    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)
    

यह सेटअप आपको कुशलता से परिनियोजित करने में मदद कर सकता है YOLOv8 पैमाने पर मॉडल Triton उच्च प्रदर्शन एआई मॉडल अनुमान के लिए अनुमान सर्वर।

उपयोग करने से क्या लाभ होता है Ultralytics YOLOv8 के साथ NVIDIA Triton अनुमान सर्वर प्रस्ताव?

Integrating Ultralytics YOLOv8 with NVIDIA Triton Inference Server provides several advantages:

  • स्केलेबल AI अनुमान: Triton एक एकल सर्वर इंस्टेंस से कई मॉडलों की सेवा करने की अनुमति देता है, गतिशील मॉडल लोडिंग और अनलोडिंग का समर्थन करता है, जिससे यह विविध एआई वर्कलोड के लिए अत्यधिक स्केलेबल हो जाता है।
  • High Performance: Optimized for NVIDIA GPUs, Triton Inference Server ensures high-speed inference operations, perfect for real-time applications such as object detection.
  • पहनावा और मॉडल संस्करण: Tritonपहनावा मोड परिणामों को बेहतर बनाने के लिए कई मॉडलों के संयोजन को सक्षम बनाता है, और इसका मॉडल संस्करण A/B परीक्षण और रोलिंग अपडेट का समर्थन करता है।

स्थापित करने और चलाने के बारे में विस्तृत निर्देशों के लिए YOLOv8 के साथ Triton, आप सेटअप गाइड का उल्लेख कर सकते हैं।

मुझे अपना निर्यात क्यों करना चाहिए YOLOv8 करने के लिए मॉडल ONNX उपयोग करने से पहले प्रारूप Triton अनुमान सर्वर?

Using ONNX (Open Neural Network Exchange) format for your Ultralytics YOLOv8 model before deploying it on NVIDIA Triton Inference Server offers several key benefits:

  • इंटरऑपरेबिलिटी: ONNX प्रारूप विभिन्न गहन शिक्षण ढांचे के बीच स्थानांतरण का समर्थन करता है (जैसे PyTorch, TensorFlow), व्यापक संगतता सुनिश्चित करना।
  • ऑप्टिमाइज़ेशन: कई परिनियोजन परिवेश, जिनमें शामिल हैं Triton, के लिए ऑप्टिमाइज़ करें ONNX, तेजी से अनुमान और बेहतर प्रदर्शन को सक्षम करना।
  • तैनाती में आसानी: ONNX विभिन्न ऑपरेटिंग सिस्टम और हार्डवेयर कॉन्फ़िगरेशन में तैनाती प्रक्रिया को सरल बनाते हुए, फ्रेमवर्क और प्लेटफार्मों में व्यापक रूप से समर्थित है।

अपने मॉडल को निर्यात करने के लिए, उपयोग करें:

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
onnx_file = model.export(format="onnx", dynamic=True)

प्रक्रिया को पूरा करने के लिए आप निर्यात मार्गदर्शिका में दिए गए चरणों का पालन कर सकते हैं।

क्या मैं Ultralytics YOLOv8 मॉडल ऑन Triton अनुमान सर्वर?

Yes, you can run inference using the Ultralytics YOLOv8 model on NVIDIA Triton Inference Server. Once your model is set up in the Triton Model Repository and the server is running, you can load and run inference on your model as follows:

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")

स्थापित करने और चलाने के बारे में गहन मार्गदर्शिका के लिए Triton सर्वर के साथ YOLOv8, का संदर्भ लें भागना triton अनुमान सर्वर अनुभाग।

कैसे करता है Ultralytics YOLOv8 से तुलना करें TensorFlow और PyTorch तैनाती के लिए मॉडल?

Ultralytics YOLOv8 की तुलना में कई अद्वितीय लाभ प्रदान करता है TensorFlow और PyTorch तैनाती के लिए मॉडल:

  • वास्तविक समय प्रदर्शन: वास्तविक समय वस्तु का पता लगाने के कार्यों के लिए अनुकूलित, YOLOv8 अत्याधुनिक सटीकता और गति प्रदान करता है, जो इसे लाइव वीडियो एनालिटिक्स की आवश्यकता वाले अनुप्रयोगों के लिए आदर्श बनाता है।
  • उपयोग में आसानी: YOLOv8 के साथ मूल रूप से एकीकृत करता है Triton Inference Server और विविध निर्यात स्वरूपों का समर्थन करता है (ONNX, TensorRT, CoreML), इसे विभिन्न परिनियोजन परिदृश्यों के लिए लचीला बनाता है।
  • उन्नत सुविधाएँ: YOLOv8 डायनेमिक मॉडल लोडिंग, मॉडल वर्जनिंग और एनसेंबल इनफरेंस जैसी विशेषताएं शामिल हैं, जो स्केलेबल और विश्वसनीय एआई परिनियोजन के लिए महत्वपूर्ण हैं।

अधिक विवरण के लिए, मॉडल परिनियोजन मार्गदर्शिका में परिनियोजन विकल्पों की तुलना करें.



बनाया गया 2023-11-12, अपडेट किया गया 2024-07-05
लेखक: ग्लेन-जोचर (10)

टिप्पणियाँ