Xuất TensorRT cho các model YOLO26
Triển khai các model computer vision trong môi trường hiệu năng cao có thể yêu cầu định dạng tối đa hóa tốc độ và hiệu quả. Điều này đặc biệt đúng khi bạn triển khai model trên các GPU NVIDIA.
Bằng cách sử dụng định dạng xuất TensorRT, bạn có thể nâng cao các model Ultralytics YOLO26 để đạt hiệu quả suy luận nhanh chóng trên phần cứng NVIDIA. Hướng dẫn này sẽ cung cấp các bước dễ thực hiện cho quy trình chuyển đổi và giúp bạn tận dụng tối đa công nghệ tiên tiến của NVIDIA trong các dự án deep learning của mình.
TensorRT
TensorRT, được phát triển bởi NVIDIA, là một bộ công cụ phát triển phần mềm (SDK) tiên tiến được thiết kế cho suy luận deep learning tốc độ cao. Nó rất phù hợp cho các ứng dụng thời gian thực như object detection.
Bộ công cụ này tối ưu hóa các model deep learning cho GPU NVIDIA và giúp các hoạt động diễn ra nhanh hơn và hiệu quả hơn. Các model TensorRT trải qua quá trình tối ưu hóa TensorRT, bao gồm các kỹ thuật như hợp nhất lớp (layer fusion), hiệu chuẩn độ chính xác (INT8 và FP16), quản lý bộ nhớ tensor động và tự động tinh chỉnh nhân (kernel auto-tuning). Chuyển đổi các model deep learning sang định dạng TensorRT cho phép các nhà phát triển khai thác tối đa tiềm năng của GPU NVIDIA.
TensorRT nổi tiếng với khả năng tương thích với nhiều định dạng model khác nhau, bao gồm TensorFlow, PyTorch và ONNX, mang đến cho nhà phát triển giải pháp linh hoạt để tích hợp và tối ưu hóa các model từ nhiều framework khác nhau. Sự đa năng này cho phép model deployment hiệu quả trên nhiều môi trường phần cứng và phần mềm khác nhau.
Các tính năng chính của model TensorRT
Các model TensorRT cung cấp một loạt các tính năng chính góp phần vào hiệu quả và độ hiệu quả trong suy luận deep learning tốc độ cao:
-
Precision Calibration: TensorRT hỗ trợ hiệu chuẩn độ chính xác, cho phép các model được tinh chỉnh theo yêu cầu độ chính xác cụ thể. Điều này bao gồm việc hỗ trợ các định dạng giảm độ chính xác như INT8 và FP16, có thể tăng tốc độ suy luận hơn nữa trong khi vẫn duy trì các mức độ chính xác chấp nhận được.
-
Layer Fusion: Quy trình tối ưu hóa TensorRT bao gồm hợp nhất lớp, trong đó nhiều lớp của một neural network được kết hợp thành một hoạt động duy nhất. Điều này giảm bớt chi phí tính toán và cải thiện tốc độ suy luận bằng cách giảm thiểu truy cập bộ nhớ và tính toán.
-
Dynamic Tensor Memory Management: TensorRT quản lý việc sử dụng bộ nhớ tensor hiệu quả trong quá trình suy luận, giảm chi phí bộ nhớ và tối ưu hóa việc phân bổ bộ nhớ. Điều này dẫn đến việc tận dụng bộ nhớ GPU hiệu quả hơn.
-
Automatic Kernel Tuning: TensorRT áp dụng tự động tinh chỉnh nhân để chọn GPU kernel tối ưu nhất cho mỗi lớp của model. Cách tiếp cận thích ứng này đảm bảo rằng model tận dụng tối đa sức mạnh tính toán của GPU.
Các tùy chọn triển khai trong TensorRT
Trước khi xem code để xuất các model YOLO26 sang định dạng TensorRT, hãy cùng tìm hiểu nơi các model TensorRT thường được sử dụng.
TensorRT cung cấp một số tùy chọn triển khai, và mỗi tùy chọn cân bằng sự dễ dàng tích hợp, tối ưu hóa hiệu năng và tính linh hoạt theo các cách khác nhau:
- Triển khai trong TensorFlow: Phương pháp này tích hợp TensorRT vào TensorFlow, cho phép các model đã tối ưu hóa chạy trong môi trường TensorFlow quen thuộc. Nó hữu ích cho các model có sự kết hợp giữa các lớp được hỗ trợ và không được hỗ trợ, vì TF-TRT có thể xử lý các lớp này một cách hiệu quả.
-
Standalone TensorRT Runtime API: Cung cấp quyền kiểm soát chi tiết, lý tưởng cho các ứng dụng ưu tiên hiệu năng. Nó phức tạp hơn nhưng cho phép triển khai tùy chỉnh các toán tử không được hỗ trợ.
-
NVIDIA Triton Inference Server: Một tùy chọn hỗ trợ các model từ nhiều framework khác nhau. Đặc biệt phù hợp cho suy luận trên đám mây hoặc ở rìa (edge), nó cung cấp các tính năng như thực thi model đồng thời và phân tích model.
Xuất các model YOLO26 sang TensorRT
Bạn có thể cải thiện hiệu quả thực thi và tối ưu hóa hiệu năng bằng cách chuyển đổi các model YOLO26 sang định dạng TensorRT.
Cài đặt
Để cài đặt gói yêu cầu, hãy chạy:
# Install the required package for YOLO26
pip install ultralyticsĐể biết hướng dẫn chi tiết và các phương pháp tốt nhất liên quan đến quy trình cài đặt, hãy xem hướng dẫn cài đặt YOLO26 của chúng tôi. Trong khi cài đặt các gói cần thiết cho YOLO26, nếu bạn gặp bất kỳ khó khăn nào, hãy tham khảo hướng dẫn các vấn đề thường gặp của chúng tôi để tìm giải pháp và mẹo.
Cách sử dụng
Trước khi đi sâu vào hướng dẫn sử dụng, hãy nhớ xem qua loạt mô hình YOLO26 được Ultralytics cung cấp. Điều này sẽ giúp bạn chọn mô hình phù hợp nhất cho các yêu cầu dự án của mình.
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'
# Load the exported TensorRT model
tensorrt_model = YOLO("yolo26n.engine")
# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")Các đối số Xuất
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
format | str | 'engine' | Định dạng mục tiêu cho model đã xuất, xác định khả năng tương thích với các môi trường triển khai khác nhau. |
imgsz | int hoặc tuple | 640 | Kích thước hình ảnh mong muốn cho đầu vào của model. Có thể là một số nguyên cho hình ảnh vuông hoặc một tuple (height, width) cho các kích thước cụ thể. |
half | bool | False | Kích hoạt lượng tử hóa FP16 (độ chính xác một nửa), giảm kích thước model và có khả năng tăng tốc suy luận trên phần cứng được hỗ trợ. |
int8 | bool | False | Kích hoạt lượng tử hóa INT8, nén model thêm nữa và tăng tốc suy luận với mức giảm độ chính xác tối thiểu, chủ yếu cho các thiết bị biên. |
dynamic | bool | False | Cho phép các kích thước đầu vào động, tăng cường tính linh hoạt trong việc xử lý các kích thước hình ảnh khác nhau. |
simplify | bool | True | Đơn giản hóa đồ thị model bằng onnxslim, có khả năng cải thiện hiệu suất và khả năng tương thích. |
workspace | float hoặc None | None | Thiết lập kích thước workspace tối đa tính bằng GiB cho các tối ưu hóa TensorRT, cân bằng giữa việc sử dụng bộ nhớ và hiệu năng; sử dụng None để TensorRT tự động phân bổ đến mức tối đa của thiết bị. |
nms | bool | False | Thêm Non-Maximum Suppression (NMS), cần thiết cho việc hậu xử lý phát hiện chính xác và hiệu quả. |
batch | int | 1 | Chỉ định kích thước suy luận batch của model xuất hoặc số lượng ảnh tối đa mà model xuất sẽ xử lý đồng thời ở chế độ predict. |
data | str | 'coco8.yaml' | Đường dẫn đến tệp cấu hình dataset (mặc định: coco8.yaml), rất cần thiết cho việc lượng tử hóa (quantization). |
fraction | float | 1.0 | Chỉ định phần trăm dataset cần sử dụng cho hiệu chuẩn lượng tử hóa INT8. Cho phép hiệu chuẩn trên một tập con của toàn bộ dataset, hữu ích cho các thử nghiệm hoặc khi tài nguyên bị hạn chế. Nếu không được chỉ định trong khi INT8 đã được bật, toàn bộ dataset sẽ được sử dụng. |
device | str | None | Chỉ định thiết bị để xuất: GPU (device=0), DLA cho NVIDIA Jetson (device=dla:0 hoặc device=dla:1). |
Vui lòng đảm bảo sử dụng GPU có hỗ trợ CUDA khi xuất sang TensorRT.
Để biết thêm chi tiết về quy trình xuất, hãy truy cập trang tài liệu Ultralytics về xuất model.
Xuất TensorRT với định lượng INT8
Việc xuất các model Ultralytics YOLO bằng TensorRT với precision INT8 thực hiện định lượng sau huấn luyện (PTQ). TensorRT sử dụng hiệu chuẩn cho PTQ, đo lường sự phân bổ của các kích hoạt trong mỗi tensor kích hoạt khi model YOLO thực hiện suy luận trên dữ liệu đầu vào đại diện, sau đó sử dụng sự phân bổ đó để ước tính các giá trị tỷ lệ cho mỗi tensor. Mỗi tensor kích hoạt là một ứng viên cho việc định lượng đều có một tỷ lệ liên quan được suy ra bởi quy trình hiệu chuẩn.
Khi xử lý các mạng được định lượng ngầm, TensorRT sử dụng INT8 một cách cơ hội để tối ưu hóa thời gian thực thi lớp. Nếu một lớp chạy nhanh hơn ở INT8 và đã gán các tỷ lệ định lượng cho dữ liệu đầu vào và đầu ra của nó, thì một kernel với độ chính xác INT8 sẽ được gán cho lớp đó, nếu không, TensorRT sẽ chọn độ chính xác FP32 hoặc FP16 cho kernel dựa trên kết quả nào mang lại thời gian thực thi nhanh hơn cho lớp đó.
Điều quan trọng là phải đảm bảo rằng cùng một thiết bị sẽ sử dụng trọng số model TensorRT để triển khai cũng được sử dụng cho việc xuất với độ chính xác INT8, vì kết quả hiệu chuẩn có thể thay đổi giữa các thiết bị.
Cấu hình xuất INT8
Các đối số được cung cấp khi sử dụng export cho một model Ultralytics YOLO sẽ ảnh hưởng rất lớn đến hiệu năng của model được xuất. Chúng cũng sẽ cần được chọn dựa trên tài nguyên thiết bị sẵn có, tuy nhiên các đối số mặc định nên hoạt động cho hầu hết các GPU rời NVIDIA Ampere (hoặc mới hơn). Thuật toán hiệu chuẩn được sử dụng là "MINMAX_CALIBRATION" và bạn có thể đọc thêm thông tin chi tiết về các tùy chọn sẵn có trong TensorRT Developer Guide. Ultralytics đã thử nghiệm và nhận thấy rằng "MINMAX_CALIBRATION" là lựa chọn tốt nhất và các bản xuất được cố định để sử dụng thuật toán này.
-
workspace: Kiểm soát kích thước (tính bằng GiB) của phân bổ bộ nhớ thiết bị trong khi chuyển đổi trọng số model.-
Điều chỉnh giá trị
workspacetheo nhu cầu hiệu chuẩn và tài nguyên sẵn có của bạn. Mặc dùworkspacelớn hơn có thể làm tăng thời gian hiệu chuẩn, nó cho phép TensorRT khám phá phạm vi chiến thuật tối ưu hóa rộng hơn, có khả năng nâng cao hiệu năng và accuracy của model. Ngược lại, mộtworkspacenhỏ hơn có thể giảm thời gian hiệu chuẩn nhưng có thể giới hạn các chiến lược tối ưu hóa, ảnh hưởng đến chất lượng của model được định lượng. -
Mặc định là
workspace=None, cho phép TensorRT tự động phân bổ bộ nhớ, khi cấu hình thủ công, giá trị này có thể cần được tăng lên nếu quá trình hiệu chuẩn bị treo (thoát mà không cảnh báo). -
TensorRT sẽ báo cáo
UNSUPPORTED_STATEtrong quá trình xuất nếu giá trị củaworkspacelớn hơn bộ nhớ sẵn có của thiết bị, nghĩa là giá trị củaworkspacenên được giảm xuống hoặc đặt thànhNone. -
Nếu
workspaceđược đặt ở giá trị tối đa và quá trình hiệu chuẩn thất bại/bị treo, hãy cân nhắc sử dụngNoneđể tự động phân bổ hoặc bằng cách giảm các giá trị choimgszvàbatchđể giảm yêu cầu bộ nhớ. -
Ghi nhớ hiệu chuẩn cho INT8 là dành riêng cho từng thiết bị, việc mượn một GPU "cao cấp" để hiệu chuẩn có thể dẫn đến hiệu năng kém khi suy luận được chạy trên thiết bị khác.
-
-
batch: Kích thước batch tối đa sẽ được sử dụng cho suy luận. Trong quá trình suy luận, các batch nhỏ hơn có thể được sử dụng, nhưng suy luận sẽ không chấp nhận các batch lớn hơn mức đã chỉ định.
Sử dụng các batch nhỏ có thể dẫn đến việc chia tỷ lệ không chính xác trong quá trình hiệu chuẩn INT8. Điều này là do quy trình điều chỉnh dựa trên dữ liệu nó nhìn thấy. Các batch nhỏ có thể không nắm bắt được toàn bộ dải giá trị, dẫn đến các vấn đề với hiệu chuẩn cuối cùng. Sử dụng batch size lớn hơn giúp đảm bảo kết quả hiệu chuẩn mang tính đại diện hơn.
Thử nghiệm từ NVIDIA dẫn đến việc họ khuyến nghị sử dụng ít nhất 500 ảnh hiệu chuẩn đại diện cho dữ liệu của model của bạn, với hiệu chuẩn định lượng INT8. Đây là một hướng dẫn chứ không phải là yêu cầu cứng nhắc, và bạn sẽ cần thử nghiệm xem những gì là cần thiết để đạt hiệu quả cho tập dữ liệu của bạn. Vì dữ liệu hiệu chuẩn là bắt buộc cho hiệu chuẩn INT8 với TensorRT, hãy chắc chắn sử dụng đối số data khi int8=True cho TensorRT và sử dụng data="my_dataset.yaml", việc này sẽ sử dụng các ảnh từ validation để hiệu chuẩn. Khi không có giá trị nào được truyền cho data khi xuất sang TensorRT với định lượng INT8, mặc định sẽ là sử dụng một trong các "small" example datasets based on the model task thay vì đưa ra lỗi.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(
format="engine",
dynamic=True, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
int8=True,
data="coco.yaml", # (4)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolo26n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")- Các bản xuất với trục động, tính năng này sẽ được bật mặc định khi xuất với
int8=Truengay cả khi không được thiết lập rõ ràng. Xem export arguments để biết thêm thông tin. - Thiết lập kích thước batch tối đa là 8 cho model được xuất và hiệu chuẩn INT8.
- Phân bổ 4 GiB bộ nhớ thay vì phân bổ toàn bộ thiết bị cho quy trình chuyển đổi.
- Sử dụng COCO dataset để hiệu chuẩn, cụ thể là các ảnh được sử dụng cho validation (tổng cộng 5.000).
Bộ nhớ đệm hiệu chuẩn
TensorRT sẽ tạo ra một .cache hiệu chuẩn, có thể được tái sử dụng để tăng tốc độ xuất các trọng số model trong tương lai sử dụng cùng dữ liệu, nhưng điều này có thể dẫn đến hiệu chuẩn kém khi dữ liệu khác biệt đáng kể hoặc nếu giá trị batch bị thay đổi đáng kể. Trong những trường hợp này, .cache hiện có nên được đổi tên và di chuyển sang một thư mục khác hoặc xóa hoàn toàn.
Ưu điểm của việc sử dụng YOLO với TensorRT INT8
-
Giảm kích thước model: Định lượng từ FP32 xuống INT8 có thể giảm kích thước model gấp 4 lần (trên đĩa hoặc trong bộ nhớ), dẫn đến thời gian tải xuống nhanh hơn, yêu cầu lưu trữ thấp hơn và giảm mức tiêu thụ bộ nhớ khi triển khai model.
-
Tiêu thụ điện năng thấp hơn: Các hoạt động độ chính xác giảm cho các model YOLO được xuất INT8 có thể tiêu thụ ít điện năng hơn so với các model FP32, đặc biệt là đối với các thiết bị chạy bằng pin.
-
Tốc độ suy luận được cải thiện: TensorRT tối ưu hóa model cho phần cứng mục tiêu, có khả năng dẫn đến tốc độ suy luận nhanh hơn trên các GPU, thiết bị nhúng và các bộ tăng tốc.
Lưu ý về tốc độ suy luận
Vài lần gọi suy luận đầu tiên với model được xuất sang TensorRT INT8 có thể có thời gian tiền xử lý, suy luận và/hoặc hậu xử lý lâu hơn bình thường. Điều này cũng có thể xảy ra khi thay đổi imgsz trong quá trình suy luận, đặc biệt là khi imgsz không giống như những gì đã được chỉ định trong quá trình xuất (export imgsz được thiết lập là cấu hình "tối ưu" của TensorRT).
Nhược điểm của việc sử dụng YOLO với TensorRT INT8
-
Giảm các chỉ số đánh giá: Sử dụng độ chính xác thấp hơn có nghĩa là
mAP,Precision,Recallhoặc bất kỳ chỉ số nào khác được sử dụng để đánh giá hiệu năng model có khả năng sẽ tệ hơn đôi chút. Xem phần Performance results để so sánh sự khác biệt trongmAP50vàmAP50-95khi xuất với INT8 trên một mẫu nhỏ của các thiết bị khác nhau. -
Tăng thời gian phát triển: Việc tìm kiếm các cài đặt "tối ưu" cho hiệu chuẩn INT8 cho tập dữ liệu và thiết bị có thể tốn một lượng thời gian thử nghiệm đáng kể.
-
Sự phụ thuộc vào phần cứng: Hiệu chuẩn và mức tăng hiệu năng có thể phụ thuộc rất nhiều vào phần cứng và trọng số model ít có khả năng chuyển đổi hơn.
Hiệu năng xuất Ultralytics YOLO TensorRT
NVIDIA A100
Được thử nghiệm với Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1
Xem Tài liệu Detection để biết các ví dụ sử dụng với các model này đã được đào tạo trên COCO, bao gồm 80 lớp được đào tạo trước.
Thời gian suy luận được hiển thị cho mean, min (nhanh nhất) và max (chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số đã huấn luyện trước yolov8n.engine
| Precision | Kiểm tra Eval | trung bình (ms) | tối thiểu | tối đa (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | kích thước (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Dự đoán (Predict) | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Dự đoán (Predict) | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Dự đoán (Predict) | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCOval | 0.29 | 0.47 | 0.33 | 1 | 640 |
GPU người dùng
Đã kiểm thử với Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6
Thời gian suy luận được hiển thị cho mean, min (nhanh nhất) và max (chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số đã huấn luyện trước yolov8n.engine
| Precision | Kiểm tra Eval | trung bình (ms) | tối thiểu | tối đa (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | kích thước (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Dự đoán (Predict) | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Dự đoán (Predict) | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Dự đoán (Predict) | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCOval | 0.74 | 0.47 | 0.33 | 1 | 640 |
Thiết bị nhúng
Đã kiểm thử với JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1
Thời gian suy luận được hiển thị cho mean, min (nhanh nhất) và max (chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số đã huấn luyện trước yolov8n.engine
| Precision | Kiểm tra Eval | trung bình (ms) | tối thiểu | tối đa (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | kích thước (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Dự đoán (Predict) | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Dự đoán (Predict) | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Dự đoán (Predict) | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCOval | 2.32 | 0.46 | 0.32 | 1 | 640 |
Xem hướng dẫn khởi động nhanh trên NVIDIA Jetson với Ultralytics YOLO để tìm hiểu thêm về thiết lập và cấu hình.
Xem hướng dẫn khởi động nhanh trên NVIDIA DGX Spark với Ultralytics YOLO để tìm hiểu thêm về thiết lập và cấu hình.
Phương pháp đánh giá
Mở rộng các phần bên dưới để biết thông tin về cách các mô hình này được xuất và kiểm thử.
Cấu hình xuất
Xem chế độ export để biết chi tiết về các đối số cấu hình xuất.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)
# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, half=True)
# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, int8=True, data="coco8.yaml"
)Vòng lặp dự đoán
Xem chế độ predict để biết thêm thông tin.
import cv2
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
img = cv2.imread("path/to/image.jpg")
for _ in range(100):
result = model.predict(
[img] * 8, # batch=8 of the same image
verbose=False,
device="cuda",
)Cấu hình xác thực
See val mode to learn more about validation configuration arguments.
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
results = model.val(
data="data.yaml", # COCO, ImageNet, or DOTAv1 for appropriate model task
batch=1,
imgsz=640,
verbose=False,
device="cuda",
)Triển khai các mô hình YOLO26 TensorRT đã xuất
Sau khi đã xuất thành công các mô hình Ultralytics YOLO26 của bạn sang định dạng TensorRT, giờ đây bạn đã sẵn sàng triển khai chúng. Để biết hướng dẫn chi tiết về việc triển khai các mô hình TensorRT của bạn trong nhiều môi trường khác nhau, hãy tham khảo các tài nguyên sau:
-
Triển khai Ultralytics với Triton Server: Hướng dẫn của chúng tôi về cách sử dụng Triton Inference (trước đây là TensorRT Inference) Server của NVIDIA dành riêng cho các mô hình Ultralytics YOLO.
-
Triển khai các mạng thần kinh sâu với NVIDIA TensorRT: Bài viết này giải thích cách sử dụng NVIDIA TensorRT để triển khai các mạng thần kinh sâu một cách hiệu quả trên các nền tảng dựa trên GPU.
-
AI toàn diện cho PC dựa trên NVIDIA: Triển khai NVIDIA TensorRT: Bài viết này giải thích việc sử dụng NVIDIA TensorRT để tối ưu hóa và triển khai các mô hình AI trên PC dựa trên NVIDIA.
-
Kho lưu trữ GitHub cho NVIDIA TensorRT:: Đây là kho lưu trữ GitHub chính thức chứa mã nguồn và tài liệu cho NVIDIA TensorRT.
Tóm tắt
Trong hướng dẫn này, chúng tôi đã tập trung vào việc chuyển đổi các mô hình Ultralytics YOLO26 sang định dạng mô hình TensorRT của NVIDIA. Bước chuyển đổi này rất quan trọng để cải thiện hiệu quả và tốc độ của các mô hình YOLO26, giúp chúng trở nên hiệu quả và phù hợp hơn cho nhiều môi trường triển khai đa dạng.
Để biết thêm thông tin về chi tiết sử dụng, hãy xem tài liệu chính thức của TensorRT.
Nếu bạn tò mò về các tích hợp Ultralytics YOLO26 bổ sung, trang hướng dẫn tích hợp của chúng tôi cung cấp nhiều lựa chọn phong phú về tài nguyên và thông tin chi tiết.
Câu hỏi thường gặp (FAQ)
Làm thế nào để tôi chuyển đổi các mô hình YOLO26 sang định dạng TensorRT?
Để chuyển đổi các mô hình Ultralytics YOLO26 của bạn sang định dạng TensorRT nhằm tối ưu hóa suy luận trên GPU NVIDIA, hãy làm theo các bước sau:
-
Cài đặt gói bắt buộc:
pip install ultralytics -
Xuất mô hình YOLO26 của bạn:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine") # creates 'yolo26n.engine' # Run inference model = YOLO("yolo26n.engine") results = model("https://ultralytics.com/images/bus.jpg")
Để biết thêm chi tiết, hãy truy cập hướng dẫn Cài đặt YOLO26 và tài liệu xuất.
Sử dụng TensorRT cho các mô hình YOLO26 có những lợi ích gì?
Sử dụng TensorRT để tối ưu hóa các mô hình YOLO26 mang lại nhiều lợi ích:
- Tốc độ suy luận nhanh hơn: TensorRT tối ưu hóa các lớp mô hình và sử dụng hiệu chuẩn độ chính xác (INT8 và FP16) để tăng tốc suy luận mà không làm giảm đáng kể độ chính xác.
- Hiệu quả bộ nhớ: TensorRT quản lý bộ nhớ tensor một cách linh hoạt, giảm chi phí vận hành và cải thiện việc sử dụng bộ nhớ GPU.
- Hợp nhất các lớp (Layer Fusion): Kết hợp nhiều lớp thành các thao tác đơn lẻ, giảm độ phức tạp tính toán.
- Tự động điều chỉnh Kernel: Tự động chọn các kernel GPU được tối ưu hóa cho từng lớp mô hình, đảm bảo hiệu suất tối đa.
Để tìm hiểu thêm, hãy khám phá tài liệu TensorRT chính thức từ NVIDIA và tổng quan chuyên sâu về TensorRT của chúng tôi.
Tôi có thể sử dụng lượng tử hóa INT8 với TensorRT cho các mô hình YOLO26 không?
Có, bạn có thể xuất các mô hình YOLO26 bằng TensorRT với lượng tử hóa INT8. Quá trình này bao gồm lượng tử hóa sau huấn luyện (PTQ) và hiệu chuẩn:
-
Xuất với INT8:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine", batch=8, workspace=4, int8=True, data="coco.yaml") -
Chạy suy luận:
from ultralytics import YOLO model = YOLO("yolo26n.engine", task="detect") result = model.predict("https://ultralytics.com/images/bus.jpg")
Để biết thêm chi tiết, hãy tham khảo phần xuất TensorRT với lượng tử hóa INT8.
Làm thế nào để tôi triển khai các mô hình YOLO26 TensorRT trên NVIDIA Triton Inference Server?
Việc triển khai các mô hình YOLO26 TensorRT trên NVIDIA Triton Inference Server có thể được thực hiện bằng cách sử dụng các tài nguyên sau:
- Triển khai Ultralytics YOLO26 với Triton Server: Hướng dẫn từng bước về cách thiết lập và sử dụng Triton Inference Server.
- Tài liệu NVIDIA Triton Inference Server: Tài liệu chính thức của NVIDIA về các tùy chọn và cấu hình triển khai chi tiết.
Các hướng dẫn này sẽ giúp bạn tích hợp các model YOLO26 một cách hiệu quả trong nhiều môi trường triển khai khác nhau.
Những cải thiện hiệu suất nào đã được ghi nhận đối với các model YOLO26 khi xuất sang TensorRT?
Các cải thiện hiệu suất với TensorRT có thể thay đổi tùy theo phần cứng được sử dụng. Dưới đây là một số benchmark điển hình:
-
NVIDIA A100:
- Suy luận FP32: ~0.52 ms / ảnh
- Suy luận FP16: ~0.34 ms / ảnh
- Suy luận INT8: ~0.28 ms / ảnh
- Giảm nhẹ mAP với độ chính xác INT8, nhưng cải thiện đáng kể về tốc độ.
-
GPU tiêu dùng (ví dụ: RTX 3080):
- Suy luận FP32: ~1.06 ms / ảnh
- Suy luận FP16: ~0.62 ms / ảnh
- Suy luận INT8: ~0.52 ms / ảnh
Các benchmark hiệu suất chi tiết cho các cấu hình phần cứng khác nhau có thể được tìm thấy trong phần hiệu suất.
Để có những thông tin chuyên sâu hơn về hiệu suất TensorRT, hãy tham khảo tài liệu Ultralytics và các báo cáo phân tích hiệu suất của chúng tôi.