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 nguồn mở được thiết kế riêng cho các mô hình AI. Nó 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 , và sau đó triển khai nó 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 như ONNX Runtime . 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, thúc đẩy sự hợp tác và tính linh hoạt trong hệ sinh thái AI . ONNX ban đầu được phát triển bởi Facebook AI ResearchMicrosoft Research và hiện là một dự án cộng đồng đang phát triển mạnh mẽ.

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 vòng đời phát triển 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 giữa các công cụ và nền tảng phần cứng khác nhau. Bằng cách xác định một tập hợp chung các toán tử (các khối xây dựng của mạng lưới nơ-ron) và một định dạng tập tin chuẩn (.onnx), ONNX đảm bảo rằng cấu trúc của mô hình và các tham số đã học (trọng lượng) đượ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 Ultralytics YOLO các mô hình, như Ultralytics cung cấp các phương pháp trực tiếp cho xuất khẩu mô hình sang ONNX định dạng. 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 mới nhất 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 nghệ được tối ưu hóa công cụ suy luận để nâng cao hiệu suất và tăng tốc phần cứng.

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 kỹ thuật chính:

  • Biểu diễn mô hình chung: ONNX định nghĩa một tập hợp chuẩn các toán tử đồ thị tính toán, chẳng hạn như hàm tích chập hoặc kích hoạt và một hệ thống kiểu dữ liệu chung. Khi một mô hình học sâu được chuyển đổi thành ONNX , kiến trúc và các tham số của nó được dịch thành biểu diễn chung này.
  • Cấu trúc dựa trên đồ thị: Các mô hình trong ONNX được biểu diễn dưới dạng đồ thị tính toán . Các nút trong đồ thị biểu diễn các phép toán (như phép nhân ma trận hoặc áp dụng hàm ReLU), trong khi các cạnh biểu diễn luồng dữ liệu (tenxơ) giữa các phép toán này. Cấu trúc đồ thị này phổ biến trên nhiều khuôn khổ ML, giúp chuyển đổi dễ dàng hơn.
  • Hệ thống quản lý phiên bản: ONNX duy trì các phiên bản cho các bộ toán tử của nó (opset). Điều này đảm bảo khả năng tương thích ngược , cho phép các mô hình được tạo bằng opset cũ hơn vẫn chạy trên các thời gian chạy mới hơn hỗ trợ các phiên bản đó.
  • 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, nó cũng cho phép các toán tử tùy chỉnh, cho phép các nhà cung cấp phần cứng và khuôn khổ hỗ trợ các chức năng chuyên biệt.
  • Hệ sinh thái và công cụ: Một hệ sinh thái phong phú bao quanh ONNX , bao gồm các thư viện để chuyển đổi các mô hình từ nhiều khuôn khổ khác nhau (như PyTorch hoặc TensorFlow ), các công cụ để trực quan hóa và gỡ lỗi ONNX đồ thị và thời gian chạy như ONNX Runtime được tối ưu hóa cho suy luận hiệu suất cao trên nhiều phần cứng khác nhau ( CPU , GPU , bộ tăng tốc chuyên dụng).

Ứng dụng của ONNX

ONNX đóng vai trò là cầu nối quan trọng giữa môi trường đào tạo mô hình và các mục tiêu triển khai đa dạng. Sau đây là hai ví dụ cụ thể:

  1. Triển khai các mô hình thị giác máy tính trên các thiết bị Edge: Một nhà phát triển đào tạo một mô hình phát hiện đối tượng , chẳng hạn như Ultralytics YOLO mô hình, sử dụng PyTorch trên máy chủ mạnh mẽ với GPU. Để triển khai trên các thiết bị biên giới hạn tài nguyên (như máy ảnh thông minh hoặc máy bay không người lái), họ xuất mô hình sang định dạng ONNX . Điều này ONNX sau đó, tệp có thể được tối ưu hóa bằng các công cụ như NVIDIA TensorRT hoặc OpenVINO của Intel và triển khai để suy luận hiệu quả, thời gian thực trực tiếp trên thiết bị. Tính linh hoạt này được nêu bật trong nhiều tùy chọn triển khai mô hình khác nhau. Bạn có thể khám phá các giải pháp Ultralytics để biết ví dụ trong các ngành công nghiệp khác nhau.
  2. Hợp tác và triển khai xuyên khung: Một nhóm nghiên cứu phát triển một kiến trúc mô hình mới bằng cách sử dụng TensorFlow . Một nhóm khác muốn tích hợp mô hình này vào một ứng dụng hiện có được xây dựng bằng PyTorch . Bằng cách xuất TensorFlow mô hình để ONNX , đội thứ hai có thể dễ dàng tải và sử dụng nó trong phạm vi của họ PyTorch môi trường hoặc triển khai nó bằng cách sử dụng ONNX Runtime được chuẩn hóa trên các cấu hình máy chủ khác nhau ( đám mây hoặc tại chỗ) mà không cần bản gốc TensorFlow khung. Điều này thúc đẩy việc phục vụ và tích hợp mô hình dễ dàng hơn.

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

Điều quan trọng là phải phân biệt ONNX từ các thuật ngữ liên quan:

  • Định dạng dành riêng cho từng khung: Các định dạng như PyTorch 'S .pt/.pth hoặc TensorFlow 'S SavedModel có nguồn gốc từ khuôn khổ tương ứng của chúng. ONNX hoạt động như một trung gian, cho phép chuyển đổi giữa các định dạng này hoặc triển khai thông qua một thời gian chạy chung. TorchScript là một định dạng khác cho PyTorch mô hình tuần tự hóa, đôi khi được sử dụng như một giải pháp thay thế hoặc tiền thân cho ONNX xuất khẩu.
  • Công cụ suy luận/Thời gian chạy: Các công cụ như ONNX Runtime , TensorRTOpenVINO là các thư viện phần mềm được thiết kế để thực hiện các mô hình ML một cách hiệu quả. Nhiều công cụ trong số này có thể sử dụng ONNX các mô hình, thường áp dụng các tối ưu hóa sâu hơn (như lượng tử hóa hoặc hợp nhất đồ thị) cho các mục tiêu phần cứng cụ thể. ONNX cung cấp đầu vào mô hình chuẩn hóa cho các động cơ này.

Tóm lại, ONNX là một tiêu chuẩn quan trọng để đảm bảo tính linh hoạt và khả năng tương tác trong quy trình hoạt động học máy (MLOps) , cho phép các nhà phát triển lựa chọn các công cụ tốt nhất để đào tạo và triển khai mà không bị hạn chế bởi các giới hạn của khuôn khổ. Các nền tảng như Ultralytics HUB tận dụng các định dạng như vậy để đơn giản hóa hành trình từ phát triển mô hình đến ứng dụng thực tế.

Đọc tất cả