Thuật ngữ

ONNX (Trao đổi mạng nơ-ron mở)

Khám phá cách ONNX nâng cao khả năng di động và khả năng tương tác của mô hình AI, cho phép triển khai liền mạch Ultralytics YOLO mô hình trên nhiều nền tảng khác nhau.

Xe lửa YOLO mô hình đơn giản
với Ultralytics TRUNG TÂM

Tìm hiểu thêm

Trong lĩnh vực trí tuệ nhân tạo (AI)máy học (ML) đang phát triển nhanh chóng, việc di chuyển các mô hình giữa các công cụ và nền tảng khác nhau một cách hiệu quả là rất quan trọng. ONNX (Open Neural Network Exchange) giải quyết thách thức này bằng cách cung cấp một định dạng mã nguồn mở được thiết kế riêng cho các mô hình AI. Định dạng này hoạt động như một trình biên dịch phổ quát, cho phép các nhà phát triển đào tạo một mô hình trong một khuôn khổ, như PyTorch , sau đó triển khai mô hình đó bằng một khuôn khổ hoặc công cụ suy luận khác, như TensorFlow hoặc các thời gian chạy chuyên biệt. Khả năng tương tác này hợp lý hóa con đường từ nghiên cứu đến sản xuất.

Sự liên quan của ONNX

Giá trị cốt lõi của ONNX nằm ở việc thúc đẩy tính di động và khả năng tương tác trong hệ sinh thái AI. Thay vì bị khóa trong hệ sinh thái của một khuôn khổ cụ thể, các nhà phát triển có thể tận dụng ONNX để di chuyển các mô hình một cách tự do. Bằng cách xác định một tập hợp chung các toán tử và một định dạng tệp chuẩn, ONNX đảm bảo rằng cấu trúc của mô hình và các tham số đã học ( trọng số ) được thể hiện một cách nhất quán. Điều này đặc biệt có lợi cho người dùng các mô hình YOLO Ultralytics , vì Ultralytics cung cấp các phương pháp trực tiếp để xuất mô hình sang định dạng ONNX . Khả năng xuất này cho phép người dùng lấy các mô hình như YOLOv8 hoặc YOLO11 và triển khai chúng trên nhiều nền tảng phần cứng và phần mềm khác nhau, thường sử dụng các công cụ suy luận được tối ưu hóa để nâng cao hiệu suất.

Làm sao ONNX Tác phẩm

ONNX đạt được khả năng tương tác thông qua một số tính năng chính:

  • Biểu diễn mô hình chung: Nó xác định một tập hợp chuẩn các toán tử (như các lớp tích chập hoặc các hàm kích hoạt ) và các kiểu dữ liệu. Khi một mô hình được chuyển đổi thành ONNX , kiến trúc của nó được dịch sang ngôn ngữ chung này.
  • Cấu trúc dựa trên đồ thị: Các mô hình được biểu diễn dưới dạng đồ thị tính toán, trong đó các nút là các phép toán và các cạnh biểu diễn luồng dữ liệu (tenxơ). Đây là cấu trúc phổ biến được sử dụng bởi hầu hết các khuôn khổ học sâu .
  • Khả năng mở rộng: Trong khi ONNX xác định một tập hợp các toán tử cốt lõi, cho phép sử dụng các toán tử tùy chỉnh, hỗ trợ các kiến trúc mô hình mới.
  • Phiên bản: ONNX duy trì các phiên bản của nhà điều hành để đảm bảo khả năng tương thích ngược, nghĩa là các mô hình được tạo bằng phiên bản cũ hơn vẫn có thể được sử dụng khi tiêu chuẩn phát triển.

Ứng dụng của ONNX

ONNX được sử dụng rộng rãi để thu hẹp khoảng cách giữa môi trường đào tạo mô hình và mục tiêu triển khai. Sau đây là hai ví dụ:

  1. Triển khai được tối ưu hóa trên các thiết bị Edge: Một nhà phát triển đào tạo mô hình phát hiện đối tượng bằng cách sử dụng Ultralytics YOLO trên một máy chủ mạnh mẽ với GPU. Để triển khai mô hình này trên các thiết bị biên giới hạn tài nguyên, họ xuất mô hình sang ONNX . ONNX mô hình sau đó có thể được tối ưu hóa bằng cách sử dụng các công cụ như NVIDIA TensorRT cho NVIDIA phần cứng hoặc OpenVINO của Intel cho Intel CPU/VPU, đạt được suy luận thời gian thực nhanh hơn và hiệu quả hơn. Xem hướng dẫn của chúng tôi về các tùy chọn triển khai mô hình để biết thêm chi tiết.
  2. Hợp tác xuyên khung: Một nhóm nghiên cứu phát triển một thành phần mô hình mới trong PyTorch . Một nhóm khác chịu trách nhiệm tích hợp thành phần này vào một ứng dụng lớn hơn được xây dựng bằng TensorFlow , có thể nhận được thành phần như một ONNX tệp. Điều này giúp tránh nhu cầu dịch mã phức tạp hoặc duy trì các phiên bản mô hình riêng biệt cho các khuôn khổ khác nhau, thúc đẩy sự cộng tác dễ dàng hơn trong các tổ chức như những tổ chức được liệt kê trên trang khách hàng của chúng tôi.

Các khái niệm liên quan

Hiểu biết ONNX thường liên quan đến các công nghệ liên quan:

  • ONNX Runtime : Đây là một công cụ suy luận hiệu suất cao được thiết kế riêng để thực thi ONNX mô hình hiệu quả trên nhiều phần cứng khác nhau ( CPU , GPU , v.v.). Trong khi ONNX định nghĩa định dạng , ONNX Thời gian chạy cung cấp môi trường thực thi .
  • TensorRT : Một SDK từ NVIDIA để suy luận học sâu hiệu suất cao, có thể nhập ONNX mô hình để tối ưu hóa NVIDIA GPU. Ultralytics cung cấp tích hợp TensorRT .
  • OpenVINO : Một Intel bộ công cụ để tối ưu hóa và triển khai suy luận AI, hỗ trợ ONNX các mô hình thực hiện trên Intel phần cứng.
  • Xuất mô hình : Quá trình chuyển đổi một mô hình đã được đào tạo từ định dạng khung ban đầu của nó (ví dụ: PyTorch .pt) thành một định dạng chuẩn như ONNX .
  • Triển khai mô hình : Toàn bộ quá trình lấy một mô hình đã được đào tạo và đưa vào sử dụng trong môi trường sản xuất, trong đó ONNX đóng vai trò quan trọng trong việc đơn giản hóa khả năng tương thích đa nền tảng. Bạn có thể quản lý việc triển khai ONNX các mô hình sử dụng nền tảng như Ultralytics HUB .

Bằng cách tạo điều kiện trao đổi và triển khai mô hình, ONNX đóng vai trò quan trọng trong việc làm cho vòng đời phát triển AI linh hoạt và hiệu quả hơn.

Đọc tất cả