Triton Inference Server với Ultralytics YOLO26
Máy chủ suy luận Triton (trước đây được gọi là...) TensorRT Inference Server (Máy chủ suy luận) 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 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 môi trường sản xuất. Tích hợp Ultralytics YOLO26 với Triton Inference Server cho phép bạn triển khai các khối lượng công việc suy luận học sâu có khả năng mở rộng và 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 quá trình tích hợp.
Xem: Bắt đầu với NVIDIA Triton Inference Server.
Triton Inference Server là gì?
Triton Inference Server được thiết kế để triển khai nhiều mô hình AI khác nhau trong môi trường sản xuất. Nó hỗ trợ một loạt các framework học sâu và học máy , bao gồm PyTorch , TensorFlow , ONNX , OpenVINO , TensorRT và nhiều framework 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ập hợp, cho phép sử dụng nhiều mô hình cùng nhau để đạt được kết quả
- Kiểm soát phiên bản mô hình để thử nghiệm A/B và cập nhật liên tục
Các lợi ích chính của Triton Inference Server
Sử dụng Triton Máy chủ suy luận tích hợp với Ultralytics YOLO26 mang lại một số ưu điểm:
- Tự động gom lô: 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 đá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 cụ thể cho phần cứng: Tận dụng tối đa sức mạnh của GPU NVIDIA để đạt hiệu suất tối đa
- Tính linh hoạt của khung phần mềm : Hỗ trợ nhiều khung phần mềm trí tuệ nhân tạo bao gồm PyTorch , TensorFlow , ONNX , OpenVINO và TensorRT
- Mã nguồn mở và có thể tùy chỉnh: Có thể được sửa đổi để phù hợp với các nhu cầu cụ thể, đảm bảo tính linh hoạt cho các ứng dụng AI khác nhau
Đ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 trước khi tiếp tục:
- Docker hoặc Podman đã được cài đặt trên máy của bạn.
- Cài đặt
ultralytics:pip install ultralytics - Cài đặt
tritonclient:pip install tritonclient[all]
Thiết lập Triton Máy chủ suy luận
Chạy khối thiết lập đầy đủ này để xuất Ultralytics YOLO26 sang ONNX , xây dựng... Triton kho lưu trữ mô hình và bắt đầu Triton Máy chủ suy luận:
Lưu ý
Sử dụng runtime Thêm tùy chọn trong tập lệnh để chọn công cụ container của bạn:
- Thiết lập
runtime = "docker"cho Docker - Thiết lập
runtime = "podman"dành cho Podman
import contextlib
import subprocess
import time
from pathlib import Path
from tritonclient.http import InferenceServerClient
from ultralytics import YOLO
runtime = "docker" # set to "podman" to use Podman
# 1) Exporting YOLO26 to ONNX Format
# Load a model
model = YOLO("yolo26n.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)
# 2) Setting Up Triton Model Repository
# 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)
# 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)
# 3) Running Triton Inference Server
# Define image https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver
tag = "nvcr.io/nvidia/tritonserver:26.02-py3" # 16.17 GB (Compressed Size)
subprocess.call(f"{runtime} pull {tag}", shell=True)
# GPU flags differ between Docker and Podman
gpu_flags = "--device nvidia.com/gpu=all" if runtime == "podman" else "--runtime=nvidia --gpus all"
container_name = "triton_server"
# Note: The :z flag on the volume mount is necessary for systems with SELinux (like Fedora/RHEL)
subprocess.call(
f"{runtime} run -d --rm --name {container_name} {gpu_flags} -v {triton_repo_path.absolute()}:/models:z -p 8000:8000 {tag} tritonserver --model-repository=/models",
shell=True,
)
# Wait for the Triton server to start
triton_client = InferenceServerClient(url="127.0.0.1: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)
Chạy suy luận
Thực hiện 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://127.0.0.1:8000/yolo", task="detect")
# Run inference on the server
results = model("path/to/image.jpg")
Dọn dẹp thùng chứa (runtime và container_name (được định nghĩa trong khối thiết lập ở trên):
import subprocess
runtime = "docker" # set to "podman" to use Podman
container_name = "triton_server" # Kill the named container
subprocess.call(f"{runtime} kill {container_name}", shell=True)
Tối ưu hóa TensorRT (Tùy chọn)
Để có hiệu suất cao hơn nữa, bạn có thể sử dụng TensorRT với Triton Inference Server. 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 GPU NVIDIA, có thể tăng đáng kể tốc độ suy luận.
Những lợi ích chính khi sử dụng TensorRT với Triton bao gồm:
- 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 cụ thể cho phần cứng để sử dụng tối đa GPU
- Hỗ trợ các định dạng giảm độ chính xác (INT8, FP16) trong khi vẫn duy trì độ chính xác
- Hợp nhất lớp để giảm chi phí tính toán
Để sử dụng TensorRT Bạn có thể xuất trực tiếp mô hình Ultralytics YOLO26 của mình sang... TensorRT định dạng:
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo26n.engine'
Để biết thêm thông tin về tối ưu hóa TensorRT, 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 các mô hình Ultralytics YOLO26 một cách hiệu quả trên Triton Máy chủ suy luận (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ắc mắc thêm, hãy tham khảo tài liệu chính thức Triton hoặc liên hệ với chúng tôi. Ultralytics cộng đồng để hỗ trợ.
Câu hỏi thường gặp
Làm cách nào để thiết lập Ultralytics YOLO26 với NVIDIA Triton Inference Server?
Thiết lập Ultralytics YOLO26 với NVIDIA Triton Inference Server bao gồm một vài bước chính:
Xuất YOLO26 sang định dạng ONNX:
from ultralytics import YOLO # Load a model model = YOLO("yolo26n.pt") # load an official model # Export the model to ONNX format onnx_file = model.export(format="onnx", dynamic=True)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 Triton Server:
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:26.02-py3" runtime = "docker" # set to "podman" to use Podman subprocess.call(f"{runtime} pull {tag}", shell=True) # GPU flags differ between Docker and Podman gpu_flags = "--device nvidia.com/gpu=all" if runtime == "podman" else "--runtime=nvidia --gpus all" container_name = "triton_server" subprocess.call( f"{runtime} run -d --rm --name {container_name} {gpu_flags} -v {triton_repo_path.absolute()}:/models:z -p 8000:8000 {tag} tritonserver --model-repository=/models", shell=True, ) triton_client = InferenceServerClient(url="127.0.0.1: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)
Cấu hình này có thể giúp bạn triển khai các mô hình Ultralytics YOLO26 một cách hiệu quả trên quy mô lớn. Triton Máy chủ suy luận dành cho việc suy luận mô hình AI hiệu năng cao.
Việc sử dụng Ultralytics YOLO26 với NVIDIA Triton Inference Server mang lại những lợi ích gì?
Việc tích hợp Ultralytics YOLO26 với NVIDIA Triton Inference Server mang lại một số lợi thế:
- Suy luận AI có khả năng 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 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.
- Tập hợp và kiểm soát phiên bản mô hình: Chế độ tập hợp của Triton cho phép kết hợp nhiều mô hình để cải thiện kết quả và tính năng kiểm soát phiên bản mô hình của nó hỗ trợ thử nghiệm A/B và cập nhật luân phiên.
- Tự động gom lô: 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 Hóa: Tối ưu hóa dần dần các quy trình làm việc AI mà không yêu cầu đại tu toàn bộ hệ thống, giúp dễ dàng mở rộng quy mô một cách hiệu quả.
Để biết hướng dẫn chi tiết về cách thiết lập và chạy Ultralytics YOLO26, hãy tham khảo tài liệu hướng dẫn. Triton Vui lòng tham khảo phần Thiết lập máy chủ suy luận Triton và Chạy suy luận .
Tại sao tôi nên xuất mô hình YOLO26 của mình sang định dạng ONNX trước khi sử dụng Triton Inference Server?
Sử dụng ONNX Việc sử dụng định dạng (Open Neural Network Exchange) cho mô hình Ultralytics YOLO26 của bạn 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: Định dạng ONNX hỗ trợ truyền dữ liệu giữa các framework deep learning 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 cả 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 các framework và nền tảng, đơn giản hóa quy trình triển khai trên nhiều hệ điều hành và cấu hình phần cứng khác nhau.
- Tính độc lập của Framework: Sau khi được chuyển đổi sang ONNX, mô hình của bạn sẽ không còn bị ràng buộc với framework ban đầu, giúp mô hình trở nên dễ dàng di chuyển hơn.
- Tiêu chuẩn hóa: ONNX cung cấp một biểu diễn tiêu chuẩn giúp khắc phục các vấn đề về khả năng tương thích giữa các framework AI khác nhau.
Để xuất mô hình của bạn, hãy sử dụng:
from ultralytics import YOLO
model = YOLO("yolo26n.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 mô hình Ultralytics YOLO26 trên Triton Inference Server không?
Có, bạn có thể chạy suy luận bằng mô hình Ultralytics YOLO26 trên NVIDIA Triton Inference Server . Sau khi mô hình của bạn được thiết lập trong... Triton Kho lưu trữ mô hình và máy chủ đang hoạt động, 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://127.0.0.1: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 các tối ưu hóa của 's trong khi sử dụng quen thuộc Ultralytics YOLO giao diện.
Ultralytics YOLO26 so sánh như thế nào với các mô hình TensorFlow và PyTorch khi triển khai?
Ultralytics YOLO26 mang lại một số lợi thế độc đáo so với các mô hình TensorFlow và PyTorch khi triển khai:
- Hiệu năng thời gian thực : Được tối ưu hóa cho các tác vụ phát hiện đối tượng trong thời gian thực, Ultralytics YOLO26 cung cấp độ chính xác và tốc độ hàng đầu, 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 : Ultralytics YOLO26 tích hợp liền mạch với Triton Máy chủ suy luận hỗ trợ nhiều định dạng xuất khác nhau ( ONNX , TensorRT ), giúp nó linh hoạt cho nhiều kịch bản triển khai khác nhau.
- Các tính năng nâng cao : Ultralytics YOLO26 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 kết 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 một giao diện nhất quán trên các mục tiêu triển khai khác nhau, giảm thời gian học và thời gian phát triển.
- Tối ưu hóa tại biên : Các mẫu Ultralytics YOLO26 được thiết kế dành riêng cho việc triển khai tại biên, mang lại hiệu năng tuyệt vời ngay cả trên các thiết bị có tài nguyên 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.