Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay
Bảng chú giải thuật ngữ

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

Khám phá cách ONNX nâng cao tính 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 các mô hình trên nhiều nền tảng khác nhau.

Trao đổi mạng nơ-ron mở ( ONNX ) là một tiêu chuẩn nguồn mở được thiết kế để biểu diễn các mô hình học máy (ML) theo cách đảm bảo tính di động trên các khuôn khổ và phần cứng khác nhau. Ban đầu được phát triển bởi các công ty như Microsoft và Facebook, ONNX đóng vai trò là "trình biên dịch đa năng" cho AI. Nó cho phép các nhà phát triển huấn luyện một mô hình trong một hệ sinh thái, chẳng hạn như PyTorch , và triển khai liền mạch trong một hệ sinh thái khác, chẳng hạn như TensorFlow hoặc một công cụ suy luận chuyên dụng. Khả năng tương tác này giúp loại bỏ nhu cầu xây dựng lại hoặc đào tạo lại mạng khi chuyển từ môi trường nghiên cứu sang ứng dụng sản xuất, giúp đơn giản hóa đáng kể quy trình triển khai mô hình .

Làm sao ONNX Tác phẩm

Về bản chất, ONNX định nghĩa một tập hợp các toán tử chung—các khối xây dựng của mô hình học sâu (DL) và học máy—và một định dạng tệp chuẩn. Khi một mô hình được chuyển đổi thành ONNX Cấu trúc tính toán của nó được ánh xạ thành một đồ thị tính toán tĩnh. Trong đồ thị này, các nút biểu diễn các phép toán (như tích chập hoặc hàm kích hoạt), và các cạnh biểu diễn luồng dữ liệu tenxơ giữa chúng.

Bởi vì biểu diễn đồ thị này được chuẩn hóa, các nhà sản xuất phần cứng có thể xây dựng các nhà cung cấp thực thi được tối ưu hóa cho ONNX . Điều này có nghĩa là một .onnx tập tin có thể được tăng tốc trên nhiều phần cứng khác nhau, bao gồm CPU, GPU (Bộ xử lý đồ họa), hoặc chuyên ngành TPU ( Tensor Đơn vị xử lý), thường sử dụng hiệu suất cao ONNX Thời gian chạy.

Xuất mô hình sang ONNX

Đối với người dùng ultralytics gói, chuyển đổi một mô hình được đào tạo thành ONNX Định dạng là một quá trình đơn giản. Thư viện xử lý việc ánh xạ phức tạp các lớp vào ONNX tự động chuẩn. Đoạn mã sau đây minh họa cách xuất YOLO11 mô hình, chuẩn bị cho việc triển khai rộng rãi hơn.

from ultralytics import YOLO

# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
# This creates 'yolo11n.onnx' in the current directory
model.export(format="onnx")

Các Ứng dụng Thực tế

Sự linh hoạt của ONNX khiến nó trở thành một thành phần quan trọng trong cơ sở hạ tầng AI hiện đại, đặc biệt là đối với các tác vụ thị giác máy tính (CV) .

  1. Triển khai di động đa nền tảng: Nhà phát triển có thể đào tạo mô hình phát hiện đối tượng bằng cách sử dụng PyTorch trên một máy trạm mạnh mẽ. Tuy nhiên, ứng dụng cuối cùng cần phải chạy trên cả hai iOS Và Android thiết bị. Bằng cách xuất mô hình sang ONNX , nhà phát triển có thể tích hợp cùng một tệp mô hình vào các ứng dụng di động bằng cách sử dụng ONNX Runtime for Mobile , đảm bảo hành vi nhất quán trên các hệ điều hành khác nhau mà không cần duy trì các cơ sở mã riêng biệt.
  2. Tích hợp với các hệ thống cũ: Nhiều ứng dụng công nghiệp được xây dựng bằng các ngôn ngữ như C++ hoặc C# để đạt hiệu suất và tính ổn định. Trong khi Python là tiêu chuẩn cho việc đào tạo, tích hợp một Python -mô hình dựa trên C++ vào môi trường sản xuất có thể chậm và dễ xảy ra lỗi. ONNX thu hẹp khoảng cách này. Một cơ sở sản xuất sử dụng thị giác máy tính trong robot có thể đào tạo một mô hình trong Python , xuất nó sang ONNX và sau đó tải trực tiếp vào phần mềm điều khiển C++ để suy luận tốc độ cao theo thời gian thực tại nhà máy.

ONNX so với các khái niệm liên quan

Hiểu cách ONNX tương tác với các công cụ khác giúp lựa chọn chiến lược triển khai phù hợp.

  • ONNX so với TensorRT : Trong khi ONNX là một định dạng tệp để biểu diễn các mô hình, TensorRT là một SDK tối ưu hóa hiệu suất cao được phát triển bởi NVIDIA cụ thể cho NVIDIA GPU. Hai thứ này thường hoạt động cùng nhau; các nhà phát triển xuất mô hình sang ONNX và sau đó sử dụng TensorRT để tiêu thụ thứ đó ONNX tập tin, áp dụng các kỹ thuật tối ưu hóa mô hình tích cực như hợp nhất lớp và hiệu chuẩn để có tốc độ tối đa trên NVIDIA phần cứng.
  • ONNX so với Định dạng Khung (ví dụ: .pt, .h5): Các định dạng gốc như PyTorch 'S .pt hoặc Keras .h5 rất tuyệt vời cho việc đào tạo và tiết kiệm trọng số mô hình (model weights) trong hệ sinh thái cụ thể của chúng. Tuy nhiên, chúng thường yêu cầu phải cài đặt khuôn khổ gốc để chạy mô hình. ONNX tách mô hình khỏi khuôn khổ đào tạo, giúp thực hiện dễ dàng hơn AI cạnh các lần triển khai mà việc cài đặt toàn bộ thư viện đào tạo là không thực tế do hạn chế về bộ nhớ hoặc lưu trữ.
  • ONNX so với Lượng tử hóa: ONNX là một định dạng, trong khi lượng tử hóa mô hình là một kỹ thuật để giảm kích thước mô hình và tăng tốc độ bằng cách giảm độ chính xác (ví dụ: từ float32 xuống int8). ONNX tiêu chuẩn hỗ trợ các toán tử lượng tử, cho phép các nhà phát triển lưu trữ và chạy các mô hình lượng tử một cách hiệu quả.

Tham gia Ultralytics cộng đồng

Tham gia vào tương lai của AI. Kết nối, hợp tác và phát triển cùng với những nhà đổi mới toàn cầu

Tham gia ngay