Triton Máy chủ suy luận với Ultralytics YOLO11
Máy chủ suy luận Triton (trước đây gọi là TensorRT Inference Server) là một giải pháp phần mềm nguồn mở được phát triển bởi NVIDIA . Nó cung cấp 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 YOLO11 với Triton Inference Server cho phép bạn triển khai khối lượng công việc suy luận học sâu có thể mở rộng và hiệu suất 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.
Đồng hồ: 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ợ nhiều khuôn khổ học sâu và học máy , bao gồm TensorFlow , PyTorch , ONNX Runtime và nhiều thứ 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ả
- Phiên bản mô hình cho thử nghiệm A/B và cập nhật liên tục
Lợi ích chính của Triton Máy chủ suy luận
Sử dụng Triton Máy chủ suy luận với Ultralytics YOLO11 mang lại một số lợi thế:
- Tự động xử lý hàng loạt : Nhóm nhiều yêu cầu AI lại với nhau trước khi xử lý chúng, giảm độ trễ và cải thiện tốc độ suy luận
- Tích hợp Kubernetes : Thiết kế gốc trên nền tảng đám mây hoạt động liền mạch với Kubernetes để quản lý và mở rộng quy mô các ứng dụng AI
- Tối ưu hóa phần cứng cụ thể : Tận dụng tối đa NVIDIA GPU cho hiệu suất tối đa
- Tính linh hoạt của khung : Hỗ trợ nhiều khung AI bao gồm TensorFlow , PyTorch , ONNX , Và TensorRT
- Mã nguồn mở và có thể tùy chỉnh : Có thể sửa đổi để phù hợp với nhu cầu cụ thể, đảm bảo tính linh hoạt cho nhiều ứng dụng AI khác nhau
Điều kiện tiên quyết
Hãy đảm bảo bạn có đủ các điều kiện tiên quyết sau trước khi tiếp tục:
- Docker được cài đặt trên máy của bạn
- Cài đặt
tritonclient
:
Xuất khẩu YOLO11 ĐẾN ONNX Định dạng
Trước khi triển khai mô hình trên Triton , nó phải được xuất khẩu 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 giao giữa các khuôn khổ học sâu khác nhau. Sử dụng export
chức năng từ YOLO
lớp học:
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)
Thiết lập Triton Kho lưu trữ mô hình
Các Triton Kho lưu trữ mô hình là một vị trí lưu trữ nơi Triton có thể truy cập và tải mô hình.
-
Tạo cấu trúc thư mục cần thiết:
-
Di chuyển xuất khẩu ONNX mô hình cho Triton kho lưu trữ:
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)
Đang chạy Triton Máy chủ suy luận
Chạy Triton Máy chủ suy luận 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: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)
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 thùng chứa:
# Kill and remove the container at the end of the test
subprocess.call(f"docker kill {container_id}", shell=True)
TensorRT Tối ưu hóa (Tùy chọn)
Để có hiệu suất thậm chí còn cao hơn, bạn có thể sử dụng TensorRT với Triton Máy chủ suy luận. TensorRT là một trình tối ưu hóa học sâu hiệu suất cao được xây dựng đặc biệt cho NVIDIA GPU có thể tăng đáng kể tốc độ suy luận.
Lợi ích chính của việc sử dụng TensorRT với Triton bao gồm:
- Tốc độ suy luận nhanh hơn tới 36 lần so với các mô hình chưa được tối ưu hóa
- Tối ưu hóa phần cứng cụ thể để đạt hiệu suất tối đa GPU sử dụng
- Hỗ trợ các định dạng có độ chính xác giảm (INT8, FP16) trong khi vẫn duy trì độ chính xác
- Kết hợp lớp để giảm chi phí tính toán
Để sử dụng TensorRT trực tiếp, bạn có thể xuất khẩu YOLO11 mô hình để TensorRT định dạng:
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'
Để biết thêm thông tin về TensorRT tối ưu hóa, hãy xem hướng dẫn tích hợp TensorRT .
Bằng cách làm theo các bước trên, bạn có thể triển khai và chạy Ultralytics YOLO11 mô hình hiệu quả trên Triton Inference Server, cung cấp giải pháp có khả năng mở rộng và hiệu suất cao cho các tác vụ suy luận học sâu. Nếu bạn gặp bất kỳ sự cố nào hoặc có thêm thắc mắc, hãy tham khảo tài liệu chính thức Triton hoặc liên hệ với Ultralytics cộng đồng để được hỗ trợ.
CÂU HỎI THƯỜNG GẶP
Làm thế nào để tôi thiết lập Ultralytics YOLO11 với NVIDIA Triton Máy chủ suy luận?
Việc thiết lập Ultralytics YOLO11 với NVIDIA Triton Inference Server bao gồm một số bước chính:
-
Xuất YOLO11 sang định dạng ONNX :
-
Thiết lập kho lưu trữ mô hình 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()
-
Chạy máy chủ 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: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)
Thiết lập này có thể giúp bạn triển khai hiệu quả YOLO11 mô hình ở quy mô trên Triton Máy chủ suy luận cho phép suy luận mô hình AI hiệu suất cao.
Lợi ích của việc sử dụng Ultralytics YOLO11 với NVIDIA Triton Inference Server cung cấp những gì?
Tích hợp Ultralytics YOLO11 với NVIDIA Triton Inference Server mang lại 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 có khả năng mở rộng cao cho nhiều khối lượng công việc AI khác nhau.
- Hiệu suất cao : Được 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 tổng hợp và mô hình : Triton Chế độ tổng hợp 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 liên tục.
- Phân lô tự động : Triton tự động nhóm nhiều yêu cầu suy luận lại với nhau, cải thiện đáng kể thông lượng và giảm độ trễ.
- Triển khai đơn giản : Tối ưu hóa dần dần quy trình làm việc AI mà không cần phải đại tu toàn bộ hệ thống, giúp mở rộng quy mô hiệu quả dễ dàng hơn.
Để biết hướng dẫn chi tiết về cách thiết lập và chạy YOLO11 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 của tôi YOLO11 mô hình để ONNX định dạng trước khi sử dụng Triton Máy chủ suy luận?
Sử dụng ONNX (Trao đổi mạng nơ-ron mở) định dạng cho bạn Ultralytics YOLO11 mô hình trước khi triển khai trên NVIDIA Triton Inference Server mang lại một số lợi ích chính:
- Khả năng tương tác : ONNX định dạng hỗ trợ chuyển đổi giữa các khuôn khổ học 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ễ dàng triển khai : ONNX được hỗ trợ rộng rãi trên nhiều khuôn khổ và nền tảng, giúp đơn giản hóa quá trình triển khai trong nhiều hệ điều hành và cấu hình phần cứng khác nhau.
- Độc lập khung : Sau khi chuyển đổi thành ONNX , mô hình của bạn không còn bị ràng buộc với khuôn khổ ban đầu, khiến nó trở nên di động hơn.
- Chuẩn hóa : ONNX cung cấp một biểu diễn chuẩn hóa giúp khắc phục các vấn đề về khả năng tương thích giữa các khuôn khổ AI khác nhau.
Để xuất mô hình của bạn, hãy sử dụng:
from ultralytics import YOLO
model = YOLO("yolo11n.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 tích hợp ONNX để hoàn tất quy trình.
Tôi có thể chạy suy luận bằng cách sử dụng Ultralytics YOLO11 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 YOLO11 mô hình trên NVIDIA Triton Inference Server . Sau khi mô hình của bạn được thiết lập trong Triton Khi Model Repository và máy chủ đang chạy, bạn có thể tải và chạy suy luận trên mô hình 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ách tiếp cận này cho phép bạn tận dụng Triton 's tối ưu hóa trong khi sử dụng quen thuộc Ultralytics YOLO giao diện. Để có hướng dẫn chi tiết về cách thiết lập và chạy Triton Máy chủ với YOLO11 , tham khảo phần máy chủ suy luận triton đang chạy .
Làm thế nào Ultralytics YOLO11 so sánh với TensorFlow Và PyTorch mô hình triển khai?
Ultralytics YOLO11 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 : Được tối ưu hóa cho các tác vụ phát hiện đối tượng thời gian thực, YOLO11 cung cấp độ chính xác và tốc độ tiên tiến, 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 : YOLO11 tích hợp liền mạch với Triton Máy chủ suy luận và hỗ trợ nhiều định dạng xuất khác nhau ( ONNX , TensorRT , CoreML ), giúp linh hoạt cho nhiều tình huống triển khai khác nhau.
- Tính năng nâng cao : YOLO11 bao gồm các tính năng như tải mô hình động, quản lý phiên bản mô hình và suy luận tổng hợp, rất quan trọng cho việc triển khai AI có khả năng mở rộng và đáng tin cậy.
- API đơn giản hóa : Ultralytics API cung cấp giao diện nhất quán trên nhiều mục tiêu triển khai khác nhau, giúp giảm thời gian học tập và phát triển.
- Tối ưu hóa cạnh : YOLO11 Các mô hình được thiết kế có tính đến việc triển khai ở biên, mang lại hiệu suất tuyệt vời ngay cả trên các thiết bị có nguồn lực hạn chế.
Để 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 xuất mô hình .