Link to this sectionXuất TensorRT cho các model YOLO26#
Việc triển khai các model thị giác máy tính trong các môi trường hiệu năng cao có thể yêu cầu một định dạng giúp 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 của mình trên GPU NVIDIA.
Bằng cách sử dụng định dạng xuất TensorRT, bạn có thể tăng cường các model Ultralytics YOLO26 của mình để thực hiện suy luận nhanh chóng và hiệu quả 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 học sâu của mình.
Link to this sectionTensorRT#
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 học sâu tốc độ cao. Nó rất phù hợp cho các ứng dụng thời gian thực như phát hiện đối tượng.
Bộ công cụ này tối ưu hóa các model học sâu cho GPU NVIDIA và mang lại các hoạt động 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, hiệu chỉnh độ chính xác (INT8 và FP16), quản lý bộ nhớ tensor động và tự động điều chỉnh nhân. Việc chuyển đổi các model học sâu 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 được biết đến 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, cung cấp cho nhà phát triển một 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ự linh hoạt này cho phép triển khai model hiệu quả trên nhiều môi trường phần cứng và phần mềm khác nhau.
Link to this sectionCác tính năng chính của các 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 suất của chúng trong việc suy luận học sâu tốc độ cao:
-
Hiệu chỉnh độ chính xác: TensorRT hỗ trợ hiệu chỉnh độ chính xác, cho phép các model được tinh chỉnh theo các yêu cầu độ chính xác cụ thể. Điều này bao gồm hỗ trợ cho các định dạng độ chính xác thấp hơn như INT8 và FP16, giúp tăng tốc độ suy luận trong khi vẫn duy trì mức độ chính xác chấp nhận được.
-
Hợp nhất lớp: Quá 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 mạng nơ-ron được kết hợp thành một hoạt động duy nhất. Điều này làm giảm chi phí tính toán và cải thiện tốc độ suy luận bằng cách giảm thiểu việc truy cập bộ nhớ và tính toán.
-
Quản lý bộ nhớ Tensor động: TensorRT quản lý việc sử dụng bộ nhớ tensor một cách hiệu quả trong quá trình suy luận, giúp giảm chi phí bộ nhớ và tối ưu hóa việc cấp phát bộ nhớ. Kết quả là việc sử dụng bộ nhớ GPU hiệu quả hơn.
-
Tự động điều chỉnh nhân: TensorRT áp dụng tính năng tự động điều chỉnh nhân để chọn nhân GPU được tối ưu hóa nhất cho từng lớp của model. Phương pháp 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.
Link to this sectionCác tùy chọn triển khai trong TensorRT#
Trước khi xem mã nguồn để 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 trong tích hợp, tối ưu hóa hiệu suất 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 được 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 của các lớp được hỗ trợ và không được hỗ trợ, vì TF-TRT có thể xử lý chúng một cách hiệu quả.
-
Standalone TensorRT Runtime API: Cung cấp khả năng kiểm soát chi tiết, lý tưởng cho các ứng dụng đòi hỏi hiệu suất cao. 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 thiết bị cạnh (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.
Link to this sectionXuấ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 suất bằng cách chuyển đổi các model YOLO26 sang định dạng TensorRT.
Link to this sectionCài đặt#
Để cài đặt gói cần thiết, hãy chạy lệnh sau:
# 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 để tìm giải pháp và mẹo.
Link to this sectionCách sử dụng#
Trước khi đi sâu vào hướng dẫn sử dụng, hãy chắc chắn xem qua các model YOLO26 được cung cấp bởi Ultralytics. Điều này sẽ giúp bạn chọn model phù hợp nhất cho các yêu cầu dự án của mình.
Định dạng TensorRT hỗ trợ các chế độ Xuất, Suy luận (Predict) và Xác thực (Validate). Việc suy luận và xác thực yêu cầu một GPU NVIDIA. Hãy xuất model của bạn, sau đó tải model đã xuất để chạy suy luận hoặc xác thực độ chính xác của nó.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo26n.engine'from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Link to this sectionĐối số xuất#
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
format | str | 'engine' | Định dạng đích cho model được xuất, xác định khả năng tương thích với nhiều 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úp giảm kích thước model và có khả năng tăng tốc độ suy luận trên các phần cứng được hỗ trợ. |
int8 | bool | False | Kích hoạt lượng tử hóa INT8, giúp nén model thêm nữa và tăng tốc độ suy luận với mức giảm accuracy tối thiểu, chủ yếu dành cho các thiết bị biên (edge devices). |
dynamic | bool | False | Cho phép các kích thước đầu vào linh hoạt, tăng cường khả năng xử lý các kích thước hình ảnh thay đổi. |
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à tính 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 của TensorRT, cân bằng giữa việc sử dụng bộ nhớ và hiệu suất; sử dụng None để TensorRT tự động cấp phát lên đến mức tối đa của thiết bị. |
nms | bool | False | Thêm Non-Maximum Suppression (NMS), rất quan trọng cho việc hậu xử lý phát hiện chính xác và hiệu quả. |
batch | int | 1 | Xác định kích thước suy luận batch của mô hình xuất hoặc số lượng ảnh tối đa mà mô hình 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. |
fraction | float | 1.0 | Chỉ định tỷ lệ phần trăm của dataset được sử dụng để 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 khi đã bật INT8, 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 dữ liệu.
Link to this sectionXuất TensorRT với lượng tử hóa INT8#
Việc xuất các model Ultralytics YOLO bằng TensorRT với độ chính xác INT8 thực hiện lượng tử hóa sau huấn luyện (PTQ). TensorRT sử dụng hiệu chỉnh cho PTQ, đo lường sự phân phối 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 phân phối đó để ước tính các giá trị tỷ lệ cho từng tensor. Mỗi tensor kích hoạt là một ứng cử viên cho việc lượng tử hóa có một tỷ lệ liên kết được suy ra bởi quy trình hiệu chỉnh.
Khi xử lý các mạng được lượng tử hóa ngầm định, 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 ở định dạng INT8 và đã gán tỷ lệ lượng tử hóa cho đầu vào và đầu ra dữ liệu của nó, thì một kernel với độ chính xác INT8 sẽ được gán cho lớp đó, ngược lại TensorRT sẽ chọn độ chính xác là FP32 hoặc FP16 cho kernel dựa trên cái nào mang lại thời gian thực thi nhanh hơn cho lớp đó.
Việc đả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 để xuất với độ chính xác INT8 là rất quan trọng, vì kết quả hiệu chỉnh có thể khác nhau giữa các thiết bị.
Link to this sectionCấu hình xuất INT8#
Các đối số được cung cấp khi sử dụng xuất cho một model Ultralytics YOLO sẽ ảnh hưởng lớn đến hiệu suất của model đã xuất. Chúng cũng cần được chọn dựa trên tài nguyên thiết bị có sẵn, tuy nhiên các đối số mặc định nên hoạt động với hầu hết các GPU rời NVIDIA Ampere (hoặc mới hơn). Thuật toán hiệu chỉnh được sử dụng là "MINMAX_CALIBRATION" cho các lần xuất trên GPU, trong khi các lần xuất DLA trên NVIDIA Jetson sử dụng "ENTROPY_CALIBRATION_2". Bạn có thể đọc thêm chi tiết về các tùy chọn có sẵn trong Hướng dẫn dành cho nhà phát triển TensorRT. Các thử nghiệm của Ultralytics cho thấy "MINMAX_CALIBRATION" là lựa chọn tốt nhất cho việc xuất trên GPU, và thuật toán được chọn tự động dựa trên thiết bị xuất.
-
workspace: Kiểm soát kích thước (tính bằng GiB) của việc cấp phát 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 chỉnh và tài nguyên sẵn có của bạn. Trong khi mộtworkspacelớn hơn có thể tăng thời gian hiệu chỉnh, nó cho phép TensorRT khám phá một phạm vi chiến lược tối ưu hóa rộng hơn, có khả năng nâng cao hiệu suất và độ chính xác của model. Ngược lại, mộtworkspacenhỏ hơn có thể giảm thời gian hiệu chỉnh nhưng có thể hạn chế các chiến lược tối ưu hóa, ảnh hưởng đến chất lượng của model đã lượng tử hóa. -
Giá trị mặc định là
workspace=None, cho phép TensorRT tự động cấp phát 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 chỉnh bị treo (thoát mà không có cảnh báo). -
TensorRT sẽ báo
UNSUPPORTED_STATEtrong quá trình xuất nếu giá trị choworkspacelớn hơn bộ nhớ khả dụng cho thiết bị, điều đó có nghĩa là giá trị choworkspacecần được giảm xuống hoặc đặt làNone. -
Nếu
workspaceđược đặt ở giá trị tối đa và quá trình hiệu chỉnh thất bại/bị treo, hãy cân nhắc sử dụngNoneđể tự động cấp phát hoặc giảm các giá trị choimgszvàbatchđể giảm yêu cầu bộ nhớ. -
Hãy nhớ rằng hiệu chỉnh 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 chỉnh có thể dẫn đến hiệu suất kém khi suy luận trên một thiết bị khác.
-
-
batch: Kích thước batch tối đa sẽ được sử dụng để 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 chỉnh INT8. Điều này là do quy trình điều chỉnh dựa trên dữ liệu mà 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 quá trình hiệu chỉnh cuối cùng. Việc sử dụng kích thước batch lớn hơn giúp đảm bảo kết quả hiệu chỉnh mang tính đại diện hơn.
Các thử nghiệm của NVIDIA dẫn đến khuyến nghị sử dụng ít nhất 500 hình ảnh hiệu chỉnh đại diện cho dữ liệu của model, với quá trình hiệu chỉnh lượng tử hóa INT8. Đây là một hướng dẫn chứ không phải là một yêu cầu bắt buộc, và bạn sẽ cần thử nghiệm những gì cần thiết để đạt hiệu suất tốt cho bộ dữ liệu của mình. Vì dữ liệu hiệu chỉnh là bắt buộc cho hiệu chỉnh 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", điều này sẽ sử dụng các hình ảnh từ xác thực để hiệu chỉnh. Khi không có giá trị nào được truyền cho data khi xuất sang TensorRT với lượng tử hóa INT8, mặc định sẽ là sử dụng một trong các bộ dữ liệu ví dụ "nhỏ" dựa trên tác vụ của model 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")- Xuất với các trục động, điều này sẽ được bật theo mặc định khi xuất với
int8=Truengay cả khi không được đặt rõ ràng. Xem các đối số xuất để biết thêm thông tin. - Đặt kích thước batch tối đa là 8 cho model đã xuất và hiệu chỉnh INT8.
- Cấp phát 4 GiB bộ nhớ thay vì cấp phát toàn bộ thiết bị cho quy trình chuyển đổi.
- Sử dụng bộ dữ liệu COCO để hiệu chỉnh, cụ thể là các hình ảnh được sử dụng để xác thực (tổng cộng 5.000).
Bộ nhớ đệm hiệu chỉnh (Calibration Cache)
TensorRT sẽ tạo một .cache hiệu chỉnh có thể được tái sử dụng để tăng tốc độ xuất các trọng số model trong tương lai bằng cách sử dụng cùng dữ liệu, nhưng điều này có thể dẫn đến hiệu chỉnh kém khi dữ liệu khác biệt quá lớn hoặc nếu giá trị batch bị thay đổi đáng kể. Trong những trường hợp này, .cache hiện tại nên được đổi tên và di chuyển sang thư mục khác hoặc xóa hoàn toàn.
Link to this sectionƯu điểm của việc sử dụng YOLO với TensorRT INT8#
-
Giảm kích thước model: Việc lượng tử hóa từ FP32 xuống INT8 có thể giảm kích thước model tới 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 dung lượng bộ nhớ khi triển khai model.
-
Tiêu thụ điện năng thấp hơn: Các hoạt động với độ chính xác giảm cho các model YOLO đã xuất INT8 có thể tiêu thụ ít năng lượ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.
-
Cải thiện tốc độ suy luậ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 GPU, thiết bị nhúng và bộ tăng tốc.
Lưu ý về tốc độ suy luận
Các lệnh gọi suy luận đầu tiên với một model đã 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 (xuất imgsz được đặt làm cấu hình "tối ưu" cho TensorRT).
Link to this sectionNhượ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 sẽ 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 suất model có khả năng sẽ tệ hơn một chút. Xem phần kết quả Hiệu suất để so sánh sự khác biệt vềmAP50vàmAP50-95khi xuất với INT8 trên một mẫu nhỏ của các thiết bị khác nhau. -
Thời gian phát triển tăng: Việc tìm ra các cài đặt "tối ưu" cho hiệu chỉnh INT8 cho bộ dữ liệu và thiết bị có thể tốn một lượng thử nghiệm đáng kể.
-
Phụ thuộc phần cứng: Việc hiệu chỉnh và đạt được hiệu suất tăng cường có thể phụ thuộc nhiều vào phần cứng và các trọng số model sẽ ít khả năng chuyển đổi hơn.
Link to this sectionHiệu suất xuất Ultralytics YOLO TensorRT#
Link to this sectionNVIDIA A100#
Đã 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 Phát hiện để biết các ví dụ sử dụng với các model này được huấn luyện trên COCO, bao gồm 80 lớp được huấn luyện trước.
Thời gian suy luận hiển thị cho mean, min (nhanh nhất) và max (chậm nhất) cho mỗi thử nghiệm sử dụng trọng số được huấn luyện trước yolov8n.engine
| Độ chính xác (Precision) | Eval test | mean (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | size (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Predict | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Predict | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Predict | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCOval | 0.29 | 0.47 | 0.33 | 1 | 640 |
Link to this sectionGPU Người dùng#
Được 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 hiển thị cho mean, min (nhanh nhất) và max (chậm nhất) cho mỗi thử nghiệm sử dụng trọng số được huấn luyện trước yolov8n.engine
| Độ chính xác (Precision) | Eval test | mean (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | size (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Predict | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Predict | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Predict | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCOval | 0.74 | 0.47 | 0.33 | 1 | 640 |
Link to this sectionThiết bị Nhúng#
Được 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 hiển thị cho mean, min (nhanh nhất) và max (chậm nhất) cho mỗi thử nghiệm sử dụng trọng số được huấn luyện trước yolov8n.engine
| Độ chính xác (Precision) | Eval test | mean (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | size (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Predict | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Predict | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | 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.
Link to this sectionPhương pháp đánh giá#
Mở rộng các phần dưới đây để biết thông tin về cách các model này được xuất và kiểm thử.
Cấu hình xuất
Xem chế độ xuất để 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ế độ dự đoán để 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
Xem chế độ val để tìm hiểu thêm về các đối số cấu hình xác thực.
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",
)Link to this sectionTriể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 sang định dạng TensorRT, bạn đã sẵn sàng để triển khai chúng. Để có hướng dẫn chi tiết về cách 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 Server của NVIDIA (trước đây là TensorRT Inference Server) dành riêng cho các mô hình Ultralytics YOLO.
-
Triển khai Deep Neural Networks 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 triển khai dựa trên GPU.
-
AI End-to-End cho PC chạy NVIDIA: Triển khai NVIDIA TensorRT: Bài đăng trên blog 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 các PC chạy 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.
Link to this sectionTó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 suất 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 với 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 một loạt các tài nguyên và thông tin hữu ích.
Link to this sectionCâu hỏi thường gặp (FAQ)#
Link to this sectionLàm cách nào để chuyển đổi các mô hình YOLO26 sang định dạng TensorRT?#
Để chuyển đổi các mô hình Ultralytics YOLO26 sang định dạng TensorRT nhằm tăng tốc suy luận trên GPU NVIDIA, hãy làm theo các bước sau:
-
Cài đặt gói cần thiết:
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 về xuất mô hình.
Link to this sectionSử dụng TensorRT cho các mô hình YOLO26 mang lại lợi ích gì?#
Sử dụng TensorRT để tối ưu hóa các mô hình YOLO26 mang lại một số 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 bớt chi phí chung và cải thiện việc sử dụng bộ nhớ GPU.
- Hợp nhất lớp (Layer Fusion): Kết hợp nhiều lớp thành các hoạt động đơn lẻ, giúp 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 chính thức về TensorRT từ NVIDIA và tổng quan chuyên sâu về TensorRT của chúng tôi.
Link to this sectionTô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.
Link to this sectionLàm cách nào để 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.
- Triển khai Deep Neural Networks với NVIDIA TensorRT: Hướng dẫn của NVIDIA về cách triển khai các mô hình học sâu với TensorRT để có 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 hiệu quả các mô hình YOLO26 vào nhiều môi trường triển khai khác nhau.
Link to this sectionNhững cải thiện về hiệu suất nào được ghi nhận với các mô hình YOLO26 đã xuất sang TensorRT?#
Những cải thiện về hiệu suất với TensorRT có thể khác nhau tùy thuộc vào phần cứng được sử dụng. Dưới đây là một số điểm chuẩn đ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 điểm chuẩn 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ó thêm thông tin chi tiết toàn diện về hiệu suất TensorRT, hãy tham khảo tài liệu của Ultralytics và các báo cáo phân tích hiệu suất của chúng tôi.