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 GPU NVIDIA. 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
:
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.
-
Tạo cấu trúc thư mục cần thiết:
-
Di chuyển đã xuất ONNX mô hình cho Triton Kho:
Chạy Triton Máy chủ suy luận
Chạy Triton Inference Server sử dụng Docker:
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(f'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ợ.