Meet YOLO26: next-gen vision AI.

Link to this sectionXuất TensorRT cho các Model YOLO26#

Việc triển khai các model computer vision trong các môi trường hiệu suất cao có thể đòi hỏi một đị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 của mình trên các 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 để 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 quá 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.

Link to this sectionTensorRT#

NVIDIA TensorRT optimization workflow

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à mang lại các thao tác 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 điều chỉnh kernel. Việc 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 hoàn toàn 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, bao gồm TensorFlow, PyTorch và ONNX, cung cấp cho các 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ừ các framework khác nhau. Sự linh hoạt này cho phép model deployment hiệu quả trên các môi trường phần cứng và phần mềm đa dạng.

Link to this sectionCá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à sự hiệu quả của chúng trong suy luận deep learning tốc độ cao:

  • Hiệu chuẩn độ chính xác (Precision Calibration): TensorRT hỗ trợ hiệu chuẩn độ 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ợ các định dạng độ chính xác giảm 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.

  • Hợp nhất lớp (Layer Fusion): 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 neural network được kết hợp thành một thao tác duy nhất. Điều này giúp 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 quyền truy cập bộ nhớ và tính toán.

TensorRT neural network layer fusion optimization

  • Quản lý bộ nhớ Tensor động: TensorRT quản lý hiệu quả việc sử dụng bộ nhớ tensor 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 sử dụng bộ nhớ GPU hiệu quả hơn.

  • Tự động điều chỉnh Kernel: TensorRT áp dụng tính năng tự động điều chỉnh kernel để chọn kernel GPU tối ưu 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 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 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 đã 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ý các lớp này một cách hiệu quả.

NVIDIA TensorRT optimization workflow

  • 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 suất. 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 ở biên, 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:

Cài đặt
# 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 kiểm tra Hướng dẫn cài đặt YOLO26 của chúng tôi. Trong quá trình 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 đề phổ biến để 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 đảm bảo xem qua các mô hình YOLO26 được cung cấp bởi Ultralytics. Điều này sẽ giúp bạn chọn mô hình phù hợp nhất cho yêu cầu dự án của mình.

Định dạng TensorRT hỗ trợ các chế độ Export, PredictValidate. Suy luận và xác thực yêu cầu 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ó.

Xuất (Export)
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'
Dự đoán (Predict)
from ultralytics import YOLO

# Load the exported TensorRT model
model = YOLO("yolo26n.engine")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Xác thực
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ạiMặc địnhMô tả
formatstr'engine'Định dạng đích cho model được 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.
imgszint hoặc tuple640Kí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ể.
halfboolFalseKích hoạt lượng tử hóa FP16 (độ chính xác bán phần), 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ợ.
int8boolFalseKí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 độ chính xác tối thiểu, chủ yếu cho các thiết bị biên.
dynamicboolFalseCho phép kích thước đầu vào động, tăng tính linh hoạt trong việc xử lý các kích thước hình ảnh khác nhau.
simplifyboolTrueĐơn giản hóa biểu đồ model với onnxslim, có khả năng cải thiện hiệu suất và tính tương thích.
workspacefloat hoặc NoneNoneĐặt kích thước không gian làm việc tối đa tính bằng GiB cho các tối ưu hóa TensorRT, cân bằng việc sử dụng bộ nhớ và hiệu suất; sử dụng None để tự động phân bổ bởi TensorRT lên đến mức tối đa của thiết bị.
nmsboolFalseThêm Non-Maximum Suppression (NMS), rất cần thiết cho việc xử lý hậu kỳ phát hiện chính xác và hiệu quả.
batchint1Chỉ định kích thước batch inference của model khi xuất hoặc số lượng ảnh tối đa mà model đã xuất sẽ xử lý đồng thời ở chế độ predict.
datastr'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.
fractionfloat1.0Chỉ định phân đoạn của dataset để 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 hợp con của toàn bộ dataset, hữu ích cho các thử nghiệm hoặc khi tài nguyên 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.
devicestrNoneChỉ định thiết bị để xuất: GPU (device=0), DLA cho NVIDIA Jetson (device=dla:0 hoặc device=dla:1).
Mẹo

Vui lòng đảm bảo sử dụng GPU có hỗ trợ CUDA khi xuất sang TensorRT.

TensorRT 11.0 và DLA

TensorRT 11.0 không hỗ trợ DLA; hãy sử dụng TensorRT 10.x cho device=dla:0 hoặc device=dla:1, hoặc xuất một engine GPU TensorRT 11.0.

Để biết thêm chi tiết về quy trình xuất, hãy truy cập trang tài liệu của Ultralytics về việc xuất.

Link to this sectionXuất TensorRT với lượng tử hóa INT8#

Xuất các model Ultralytics YOLO bằng TensorRT với precision INT8 thực thi lượng tử hóa sau đào tạo (PTQ). TensorRT sử dụng hiệu chuẩn cho PTQ, đo lường sự phân bổ các kích hoạt trong mỗi tensor kích hoạt khi model YOLO xử lý suy luận trên dữ liệu đầu vào đại diện, và sau đó sử dụng sự phân bổ đó để ước tính các giá trị quy mô cho mỗi tensor. Mỗi tensor kích hoạt là một ứng cử viên cho việc lượng tử hóa đều có một quy mô liên kết được suy ra bởi một quá trình hiệu chuẩn.

Lượng tử hóa TensorRT 11

TensorRT 11 đã loại bỏ lượng tử hóa ngầm định và giao diện IInt8Calibrator. Trên TensorRT 11 trở lên, Ultralytics thực hiện lượng tử hóa INT8 với lượng tử hóa tường minh NVIDIA ModelOpt, chèn các nút Q/DQ vào biểu đồ ONNX trước khi xây dựng một engine kiểu mạnh, và FP16 được áp dụng với chuyển đổi độ chính xác hỗn hợp ModelOpt AutoCast. Các đối số int8=True, half=Truedata hoạt động theo cùng một cách; ModelOpt được cài đặt tự động trong lần sử dụng đầu tiên. Trên TensorRT 7-10, bộ hiệu chuẩn kế thừa được mô tả bên dưới được sử dụng thay thế.

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 trong INT8 và đã gán các quy mô lượng tử hóa trên đầu vào và đầu ra dữ liệu của nó, thì một kernel với độ chính xác INT8 được gán cho lớp đó, nếu không thì TensorRT chọn độ chính xác là FP32 hoặc FP16 cho kernel dựa trên kết quả mang lại thời gian thực thi nhanh hơn cho lớp đó.

Mẹo

Việc đảm bảo cùng một thiết bị sẽ sử dụng trọng số model TensorRT để triển khai được sử dụng để xuất với độ chính xác INT8 là rất quan trọng, vì các kết quả hiệu chuẩn 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 export cho một model Ultralytics YOLO sẽ ảnh hưởng lớn đến hiệu suất 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ị có sẵn, 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" cho các lần xuất 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 các lần xuất 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 phân bổ bộ nhớ thiết bị trong khi chuyển đổi trọng số model.

    • Điều chỉnh giá trị workspace theo nhu cầu hiệu chuẩn và tài nguyên có sẵn của bạn. Mặc dù workspace lớ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 tăng hiệu suất và accuracy của model. Ngược lại, một workspace nhỏ 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 đã lượng tử hóa.

    • 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ó cảnh báo).

    • TensorRT sẽ báo cáo UNSUPPORTED_STATE trong quá trình xuất nếu giá trị cho workspace lớn hơn bộ nhớ có sẵn cho thiết bị, điều này có nghĩa là giá trị cho workspace nên được giảm xuống hoặc đặt thành None.

    • Nếu workspace được đặt thành giá trị tối đa và hiệu chuẩn thất bại/treo, hãy cân nhắc sử dụng None để tự động phân bổ hoặc bằng cách giảm các giá trị cho imgszbatch để giảm yêu cầu bộ nhớ.

    • Hãy nhớ rằng hiệu chuẩn cho INT8 là đặc thù 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 suất kém khi suy luận được chạy trên một 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 những gì được chỉ định.

Lưu ý

Sử dụng batch nhỏ có thể dẫn đến việc thay đổi quy mô không chính xác trong quá trình hiệu chuẩn INT8. Điều này là do quá trình điều chỉnh dựa trên dữ liệu nó nhìn thấy. Batch nhỏ có thể không nắm bắt được toàn bộ phạm vi 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 của NVIDIA đã dẫn họ đến khuyến nghị sử dụng ít nhất 500 hình ảnh hiệu chuẩn đại diện cho dữ liệu cho model của bạn, với hiệu chuẩn lượng tử hóa INT8. Đây là hướng dẫn và không phải là yêu cầu cứng, và bạn sẽ cần thử nghiệm với những gì cần thiết để hoạt động tốt cho tập dữ liệu của mình. Vì dữ liệu hiệu chuẩn là cần thiết 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", sẽ sử dụng các hình ảnh từ validation để hiệu chuẩn. Khi không có giá trị nào được truyền cho data với việc 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 tập dữ liệu ví dụ "nhỏ" dựa trên tác vụ model thay vì đưa ra lỗi.

Ví dụ
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")
  1. Các lần xuất với các trục động, điều này sẽ được kích hoạt theo mặc định khi xuất với int8=True ngay cả khi không được đặt rõ ràng. Xem các đối số xuất để biết thêm thông tin.
  2. Đặt kích thước batch tối đa là 8 cho model được xuất và hiệu chuẩn INT8.
  3. Phân bổ 4 GiB bộ nhớ thay vì phân bổ toàn bộ thiết bị cho quá trình chuyển đổi.
  4. Sử dụng tập dữ liệu COCO để hiệu chuẩn, cụ thể là các hình ảnh được sử dụng cho validation (tổng cộng 5.000).
Bộ nhớ đệm hiệu chuẩn (Calibration Cache)

TensorRT sẽ tạo một .cache hiệu chuẩn có thể được sử dụng lại để tăng tốc việc xuất trọng số model trong tương lai bằ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 rất 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 có nên được đổi tên và 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: Lượng tử hóa từ FP32 sang INT8 có thể giảm kích thước model 4x (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 dấu chân bộ nhớ khi triển khai model.

  • Tiêu thụ điện năng thấp hơn: Các thao tác độ chính xác giảm cho các model YOLO được 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 đố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 cuộc gọi suy luận đầu tiên với một model được xuất sang TensorRT INT8 có thể mất 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 khi 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 đặt làm cấu hình "tối ưu" của TensorRT).

Link to this sectionHạn chế 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, Recall hoặ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ề mAP50mAP50-95 khi 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ử nghiệm đáng kể.

  • Sự phụ thuộc vào phần cứng: Hiệu chuẩn và đạt được hiệu suất 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.

Link to this sectionHiệu suất xuất Ultralytics YOLO TensorRT#

Link to this sectionNVIDIA A100#

Hiệu suất

Được kiểm tra 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 mô hình này đã được huấn luyện trên COCO, bao gồm 80 lớp đã được huấn luyện trước.

Lưu ý

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 thử nghiệm sử dụng trọng số được đào tạo trước yolov8n.engine

PrecisionKiểm tra Evalmean
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchkích thước
(pixel)
FP32Dự đoán (Predict)0.520.51 | 0.568640
FP32COCOval0.520.520.371640
FP16Dự đoán (Predict)0.340.34 | 0.418640
FP16COCOval0.330.520.371640
INT8Dự đoán (Predict)0.280.27 | 0.318640
INT8COCOval0.290.470.331640

Link to this sectionGPU cho người tiêu dùng#

Hiệu suất Phát hiện (COCO)

Đã kiểm tra với Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6

Lưu ý

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 thử nghiệm sử dụng trọng số được đào tạo trước yolov8n.engine

PrecisionKiểm tra Evalmean
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchkích thước
(pixel)
FP32Dự đoán (Predict)1.060.75 | 1.888640
FP32COCOval1.370.520.371640
FP16Dự đoán (Predict)0.620.75 | 1.138640
FP16COCOval0.850.520.371640
INT8Dự đoán (Predict)0.520.38 | 1.008640
INT8COCOval0.740.470.331640

Link to this sectionThiết bị nhúng#

Hiệu suất Phát hiện (COCO)

Đã kiểm tra 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

Lưu ý

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 thử nghiệm sử dụng trọng số được đào tạo trước yolov8n.engine

PrecisionKiểm tra Evalmean
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchkích thước
(pixel)
FP32Dự đoán (Predict)6.116.10 | 6.298640
FP32COCOval6.170.520.371640
FP16Dự đoán (Predict)3.183.18 | 3.208640
FP16COCOval3.190.520.371640
INT8Dự đoán (Predict)2.302.29 | 2.358640
INT8COCOval2.320.460.321640
Thông tin

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.

Thông tin

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 bên dưới để biết thông tin về cách các model này được xuất và kiểm tra.

Cấu hình xuất

Xem chế độ xuất (export mode) để 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 (Predict loop)

Xem chế độ dự đoán (predict mode) để 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 (Validation configuration)

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 Model YOLO26 TensorRT đã xuất#

Sau khi xuất thành công các model Ultralytics YOLO26 của bạn sang định dạng TensorRT, bây giờ bạn đã sẵn sàng để triển khai chúng. Để có hướng dẫn chuyên sâu về việc triển khai các model TensorRT của bạn trong nhiều môi trường khác nhau, hãy xem các tài nguyên sau:

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 model Ultralytics YOLO26 sang định dạng model 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 model 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 khác nhau.

Để 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 hữu ích.

Link to this sectionCâu hỏi thường gặp#

Link to this sectionLàm thế nào để chuyển đổi các model YOLO26 sang định dạng TensorRT?#

Để chuyển đổi các model Ultralytics YOLO26 của bạn sang định dạng TensorRT nhằm mục đích suy luận trên GPU NVIDIA đã được tối ưu hóa, hãy làm theo các bước sau:

  1. Cài đặt gói cần thiết:

    pip install ultralytics
  2. 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 YOLO26tài liệu xuất.

Link to this sectionLợi ích của việc sử dụng TensorRT cho các mô hình YOLO26 là gì?#

Việc 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 của mô hình và sử dụng hiệu chỉnh độ 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 lớp (Layer Fusion): Kết hợp nhiều lớp thành các hoạt động đơn lẻ, giảm độ phức tạp tính toán.
  • Tự động tinh chỉnh nhân (Kernel Auto-Tuning): Tự động chọn các nhân 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ừ NVIDIAtổ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 đào tạo (PTQ) và hiệu chuẩn:

  1. 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")
  2. 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 thế 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:

Những hướng dẫn này sẽ giúp bạn tích hợp các mô hình YOLO26 một cách hiệu quả trong nhiều môi trường triển khai khác nhau.

Link to this sectionNhững cải thiện hiệu suất nào được quan sát thấy với các mô hình YOLO26 được 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 phổ thô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ó cái nhìn toàn diện 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.

Bình luận