Bỏ để qua phần nội dung

Tối ưu hóa OpenVINO Suy luận cho Ultralytics YOLO Mô hình: Hướng dẫn toàn diện

OpenVINO Hệ sinh thái

Giới thiệu

Khi triển khai các mô hình học sâu, đặc biệt là các mô hình để phát hiện đối tượng như Ultralytics YOLO Các mô hình, đạt được hiệu suất tối ưu là rất quan trọng. Hướng dẫn này đi sâu vào việc tận dụng Intel OpenVINO Bộ công cụ để tối ưu hóa suy luận, tập trung vào độ trễ và thông lượng. Cho dù bạn đang làm việc trên các ứng dụng cấp tiêu dùng hay triển khai quy mô lớn, việc hiểu và áp dụng các chiến lược tối ưu hóa này sẽ đảm bảo mô hình của bạn chạy hiệu quả trên các thiết bị khác nhau.

Tối ưu hóa độ trễ

Tối ưu hóa độ trễ là rất quan trọng đối với các ứng dụng yêu cầu phản hồi ngay lập tức từ một mô hình duy nhất cho một đầu vào duy nhất, điển hình trong các tình huống của người tiêu dùng. Mục đích là để giảm thiểu độ trễ giữa đầu vào và kết quả suy luận. Tuy nhiên, việc đạt được độ trễ thấp đòi hỏi phải cân nhắc cẩn thận, đặc biệt là khi chạy các suy luận đồng thời hoặc quản lý nhiều mô hình.

Các chiến lược chính để tối ưu hóa độ trễ:

  • Suy luận duy nhất trên mỗi thiết bị: Cách đơn giản nhất để đạt được độ trễ thấp là giới hạn ở một suy luận tại một thời điểm trên mỗi thiết bị. Tính đồng thời bổ sung thường dẫn đến tăng độ trễ.
  • Tận dụng các thiết bị phụ: Các thiết bị như CPU đa ổ cắm hoặc GPU đa ô có thể thực hiện nhiều yêu cầu với độ trễ tối thiểu bằng cách sử dụng các thiết bị phụ bên trong của chúng.
  • OpenVINO Gợi ý hiệu suất: Sử dụng OpenVINO's ov::hint::PerformanceMode::LATENCY Đối với ov::hint::performance_mode Thuộc tính trong quá trình biên dịch mô hình đơn giản hóa việc điều chỉnh hiệu suất, cung cấp cách tiếp cận bất khả tri về thiết bị và chứng minh trong tương lai.

Quản lý độ trễ suy luận đầu tiên:

  • Bộ nhớ đệm mô hình: Để giảm thiểu tải mô hình và biên dịch thời gian ảnh hưởng đến độ trễ, hãy sử dụng bộ nhớ đệm mô hình nếu có thể. Đối với các tình huống mà bộ nhớ đệm không khả thi, CPU thường cung cấp thời gian tải mô hình nhanh nhất.
  • Lập bản đồ mô hình so với đọc: Để giảm thời gian tải, OpenVINO Thay thế đọc mô hình bằng ánh xạ. Tuy nhiên, nếu kiểu máy nằm trên ổ đĩa di động hoặc ổ đĩa mạng, hãy cân nhắc sử dụng ov::enable_mmap(false) để chuyển về chế độ đọc.
  • Lựa chọn thiết bị AUTO: Chế độ này bắt đầu suy luận trên CPU, chuyển sang máy gia tốc khi đã sẵn sàng, giảm liền mạch độ trễ suy luận đầu tiên.

Tối ưu hóa cho thông lượng

Tối ưu hóa thông lượng là rất quan trọng đối với các kịch bản phục vụ đồng thời nhiều yêu cầu suy luận, tối đa hóa việc sử dụng tài nguyên mà không phải hy sinh đáng kể hiệu suất yêu cầu riêng lẻ.

Phương pháp tiếp cận tối ưu hóa thông lượng:

  1. OpenVINO Gợi ý hiệu suất: Một phương pháp cấp cao, được chứng minh trong tương lai để tăng cường thông lượng trên các thiết bị bằng cách sử dụng gợi ý hiệu suất.
import openvino.properties as props
import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)
  1. Phân luồng và phân luồng rõ ràng: Một cách tiếp cận chi tiết hơn liên quan đến việc phân lô rõ ràng và sử dụng các luồng để điều chỉnh hiệu suất nâng cao.

Thiết kế các ứng dụng định hướng thông lượng:

Để tối đa hóa thông lượng, các ứng dụng nên:

  • Xử lý đầu vào song song, tận dụng tối đa các khả năng của thiết bị.
  • Phân tách luồng dữ liệu thành các yêu cầu suy luận đồng thời, được lên lịch để thực thi song song.
  • Sử dụng API Async với callback để duy trì hiệu quả và tránh tình trạng thiếu thiết bị.

Thực thi đa thiết bị:

OpenVINOChế độ đa thiết bị của đơn giản hóa việc thay đổi quy mô thông lượng bằng cách tự động cân bằng các yêu cầu suy luận trên các thiết bị mà không yêu cầu quản lý thiết bị cấp ứng dụng.

Kết thúc

Tối ưu hóa Ultralytics YOLO Mô hình cho độ trễ và thông lượng với OpenVINO có thể nâng cao đáng kể hiệu suất ứng dụng của bạn. Bằng cách áp dụng cẩn thận các chiến lược được nêu trong hướng dẫn này, các nhà phát triển có thể đảm bảo các mô hình của họ chạy hiệu quả, đáp ứng nhu cầu của các kịch bản triển khai khác nhau. Hãy nhớ rằng, việc lựa chọn giữa tối ưu hóa độ trễ hoặc thông lượng phụ thuộc vào nhu cầu ứng dụng cụ thể của bạn và đặc điểm của môi trường triển khai.

Để biết thêm thông tin kỹ thuật chi tiết và các bản cập nhật mới nhất, hãy tham khảo OpenVINO tài liệuUltralytics YOLO kho lưu trữ. Các tài nguyên này cung cấp hướng dẫn chuyên sâu, hướng dẫn và hỗ trợ cộng đồng để giúp bạn tận dụng tối đa các mô hình deep learning của mình.


Đảm bảo các mô hình của bạn đạt được hiệu suất tối ưu không chỉ là tinh chỉnh cấu hình; Đó là về việc hiểu nhu cầu ứng dụng của bạn và đưa ra quyết định sáng suốt. Cho dù bạn đang tối ưu hóa cho phản hồi theo thời gian thực hay tối đa hóa thông lượng để xử lý quy mô lớn, sự kết hợp của Ultralytics YOLO mô hình và OpenVINO cung cấp một bộ công cụ mạnh mẽ cho các nhà phát triển để triển khai các giải pháp AI hiệu suất cao.



Đã tạo 2024-03-17, Cập nhật 2024-03-17
Tác giả: glenn-jocher (1)

Ý kiến