Bỏ để qua phần nội dung

Triton Máy chủ suy luận với Ultralytics YOLOv8

Các Triton Inference Server (trước đây gọi là TensorRT Inference Server) là một giải pháp phần mềm mã nguồn mở được phát triển bởi NVIDIA. Nó cung cấp một giải pháp suy luận đám mây được tối ưu hóa cho NVIDIA GPU. Triton đơn giản hóa việc triển khai các mô hình AI ở quy mô lớn trong sản xuất. Tích hợp Ultralytics YOLOv8 với Triton Inference Server cho phép bạn triển khai khối lượng công việc suy luận deep learning có quy mô linh hoạt, hiệu năng cao. Hướng dẫn này cung cấp các bước để thiết lập và kiểm tra tích hợp.



Xem: Bắt đầu với NVIDIA Triton Máy chủ suy luận.

Là gì Triton Máy chủ suy luận?

Triton Inference Server được thiết kế để triển khai nhiều mô hình AI khác nhau trong sản xuất. Nó hỗ trợ một loạt các khung học sâu và học máy, bao gồm TensorFlow, PyTorch, ONNX Thời gian chạy, và nhiều người khác. Các trường hợp sử dụng chính của nó là:

  • Phục vụ nhiều mô hình từ một phiên bản máy chủ duy nhất.
  • Tải và dỡ mô hình động mà không cần khởi động lại máy chủ.
  • Suy luận tổng hợp, cho phép nhiều mô hình được sử dụng cùng nhau để đạt được kết quả.
  • Lập phiên bản mô hình cho thử nghiệm A / B và cập nhật luân phiên.

Điều kiện tiên quyết

Đảm bảo bạn có các điều kiện tiên quyết sau đây trước khi tiếp tục:

  • Docker được cài đặt trên máy của bạn.
  • Cài đặt tritonclient:
    pip install tritonclient[all]
    

Xuất khẩu YOLOv8 đến ONNX Định dạng

Trước khi triển khai mô hình trên Triton, nó phải được xuất sang ONNX định dạng. ONNX (Open Neural Network Exchange) là một định dạng cho phép các mô hình được chuyển giữa các khung học tập sâu khác nhau. Sử dụng export hàm từ YOLO lớp:

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)

Thiết lập Triton Kho lưu trữ mô hình

Các Triton Model Repository là một vị trí lưu trữ trong đó Triton có thể truy cập và tải các mô hình.

  1. Tạo cấu trúc thư mục cần thiết:

    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. Di chuyển đã xuất ONNX mô hình cho Triton Kho:

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

Chạy Triton Máy chủ suy luận

Chạy Triton Inference Server sử dụng Docker:

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)

Sau đó chạy suy luận bằng cách sử dụng Triton Mô hình máy chủ:

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

Dọn dẹp container:

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

Bằng cách làm theo các bước trên, bạn có thể triển khai và chạy Ultralytics YOLOv8 Mô hình hiệu quả trên Triton Inference Server, cung cấp giải pháp có thể mở rộng và hiệu suất cao cho các tác vụ suy luận deep learning. Nếu bạn gặp bất kỳ vấn đề nào hoặc có thêm thắc mắc, hãy tham khảo chính thức Triton tài liệu hoặc liên hệ với Ultralytics cộng đồng để được hỗ trợ.

FAQ

Làm cách nào để thiết lập Ultralytics YOLOv8 với NVIDIA Triton Máy chủ suy luận?

Thiết lập Ultralytics YOLOv8 với NVIDIA Triton Inference Server bao gồm một vài bước chính:

  1. Xuất khẩu YOLOv8 đến ONNX Định dạng:

    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. Dựng Triton Kho lưu trữ mô hình:

    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. Chạy Triton Máy chủ:

    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)
    

Thiết lập này có thể giúp bạn triển khai hiệu quả YOLOv8 Mô hình ở quy mô lớn trên Triton Máy chủ suy luận để suy luận mô hình AI hiệu suất cao.

Sử dụng có lợi ích gì Ultralytics YOLOv8 với NVIDIA Triton Máy chủ suy luận cung cấp?

Tích hợp Ultralytics YOLOv8 với NVIDIA Triton Inference Server cung cấp một số lợi thế:

  • Suy luận AI có thể mở rộng: Triton cho phép phục vụ nhiều mô hình từ một phiên bản máy chủ duy nhất, hỗ trợ tải và dỡ mô hình động, giúp nó có khả năng mở rộng cao cho các khối lượng công việc AI đa dạng.
  • Hiệu suất cao: Tối ưu hóa cho NVIDIA GPU, Triton Inference Server đảm bảo các hoạt động suy luận tốc độ cao, hoàn hảo cho các ứng dụng thời gian thực như phát hiện đối tượng.
  • Phiên bản hòa tấu và mô hình: TritonChế độ hòa tấu của nó cho phép kết hợp nhiều mô hình để cải thiện kết quả và phiên bản mô hình của nó hỗ trợ thử nghiệm A / B và cập nhật cán.

Để biết hướng dẫn chi tiết về cách thiết lập và chạy YOLOv8 với Triton, bạn có thể tham khảo hướng dẫn thiết lập.

Tại sao tôi nên xuất khẩu YOLOv8 Mô hình để ONNX Định dạng trước khi sử dụng Triton Máy chủ suy luận?

Sử dụng ONNX (Mở Trao đổi mạng nơ-ron) cho Ultralytics YOLOv8 Mô hình trước khi triển khai trên NVIDIA Triton Inference Server cung cấp một số lợi ích chính:

  • Khả năng tương tác: ONNX Định dạng hỗ trợ chuyển giữa các khung học tập sâu khác nhau (chẳng hạn như PyTorch, TensorFlow), đảm bảo khả năng tương thích rộng hơn.
  • Tối ưu hóa: Nhiều môi trường triển khai, bao gồm Triton, tối ưu hóa cho ONNX, cho phép suy luận nhanh hơn và hiệu suất tốt hơn.
  • Dễ triển khai: ONNX được hỗ trợ rộng rãi trên các framework và nền tảng, đơn giản hóa quá trình triển khai trong các hệ điều hành và cấu hình phần cứng khác nhau.

Để xuất mô hình của bạn, hãy sử dụng:

from ultralytics import YOLO

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

Bạn có thể làm theo các bước trong hướng dẫn xuất để hoàn tất quá trình.

Tôi có thể chạy suy luận bằng cách sử dụng không Ultralytics YOLOv8 Mô hình trên Triton Máy chủ suy luận?

Có, bạn có thể chạy suy luận bằng cách sử dụng Ultralytics YOLOv8 Mô hình trên NVIDIA Triton Máy chủ suy luận. Sau khi mô hình của bạn được thiết lập trong Triton Model Repository và server đang chạy, các bạn có thể load và chạy inference trên model của mình như sau:

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

Để có hướng dẫn chuyên sâu về cách thiết lập và chạy Triton Máy chủ với YOLOv8, tham khảo Chạy triton Phần máy chủ suy luận .

Làm thế nào Ultralytics YOLOv8 So sánh với TensorFlow và PyTorch Mô hình triển khai?

Ultralytics YOLOv8 Cung cấp một số lợi thế độc đáo so với TensorFlow và PyTorch Mô hình triển khai:

  • Hiệu suất thời gian thực: Tối ưu hóa cho các tác vụ phát hiện đối tượng theo thời gian thực, YOLOv8 Cung cấp độ chính xác và tốc độ hiện đại, lý tưởng cho các ứng dụng yêu cầu phân tích video trực tiếp.
  • Dễ sử dụng: YOLOv8 Tích hợp liền mạch với Triton Inference Server và hỗ trợ các định dạng xuất khẩu đa dạng (ONNX, TensorRT, CoreML), làm cho nó linh hoạt cho các kịch bản triển khai khác nhau.
  • Các tính năng nâng cao: YOLOv8 bao gồm các tính năng như tải mô hình động, lập phiên bản mô hình và suy luận tổng hợp, rất quan trọng để triển khai AI có thể mở rộng và đáng tin cậy.

Để biết thêm chi tiết, hãy so sánh các tùy chọn triển khai trong hướng dẫn triển khai mô hình.



Đã tạo 2023-11-12, Cập nhật 2024-07-05
Tác giả: glenn-jocher (10)

Ý kiến