Khám phá cách ONNX tăng cường 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 các mô hình Ultralytics YOLO trên các nền tảng khác nhau.
ONNX (Open Neural Network Exchange) là một định dạng mã nguồn mở để biểu diễn các mô hình học máy (ML). Được đồng phát triển bởi các công ty như Microsoft và Facebook, ONNX hoạt động như một trình dịch phổ quát, cho phép các nhà phát triển di chuyển các mô hình giữa các framework và công cụ ML khác nhau. Khả năng tương tác này rất quan trọng để hợp lý hóa hành trình từ phát triển mô hình đến sản xuất. Thay vì bị khóa vào một hệ sinh thái duy nhất, các nhóm có thể huấn luyện một mô hình trong một framework, như PyTorch, và triển khai nó để suy luận bằng một framework khác, chẳng hạn như TensorFlow hoặc một công cụ suy luận chuyên dụng. Ví dụ: các mô hình Ultralytics YOLO có thể dễ dàng được xuất sang định dạng ONNX, mang lại sự linh hoạt tối đa cho triển khai trên các nền tảng khác nhau.
ONNX cung cấp một định nghĩa tiêu chuẩn cho một đồ thị tính toán, cùng với một danh sách các toán tử tích hợp. Khi bạn chuyển đổi một mô hình sang định dạng ONNX, kiến trúc của nó—bao gồm các lớp và các phép toán học—được ánh xạ tới tiêu chuẩn phổ quát này. Kết quả là .onnx
tệp chứa cả cấu trúc mạng và các tham số đã được huấn luyện trọng số mô hình (model weights).
Tệp tiêu chuẩn hóa này sau đó có thể được tải bởi bất kỳ công cụ nào hỗ trợ đặc tả ONNX. Điều này bao gồm:
Tính linh hoạt của ONNX làm cho nó trở nên vô giá trong nhiều tình huống thị giác máy tính và ML.
Triển khai AI trên các Thiết bị Edge: Một nhà phát triển có thể huấn luyện một mô hình phát hiện đối tượng phức tạp như Ultralytics YOLO11 trên một máy tính để bàn mạnh mẽ với GPU NVIDIA. Để ứng dụng chạy trên một thiết bị edge tiêu thụ điện năng thấp như Raspberry Pi hoặc một camera thông minh được sử dụng trong phân tích bán lẻ, mô hình được xuất sang ONNX. Sau đó, nó có thể được tối ưu hóa bởi một runtime như ONNX Runtime hoặc OpenVINO để có hiệu suất hiệu quả trên phần cứng mục tiêu mà không cần môi trường PyTorch ban đầu.
Tích hợp các mô hình vào các ứng dụng đa dạng: Hãy xem xét một công ty chăm sóc sức khỏe xây dựng một mô hình phân tích hình ảnh y tế bằng Python và TensorFlow. Cơ sở hạ tầng phần mềm hiện có của bệnh viện được xây dựng bằng C# và .NET. Thay vì viết lại mô hình, nhóm xuất nó sang ONNX. Ứng dụng C# sau đó có thể sử dụng ONNX Runtime cho .NET để tích hợp trực tiếp các khả năng của mô hình, giảm đáng kể thời gian và độ phức tạp của quá trình phát triển.
Điều quan trọng là phải phân biệt ONNX với các thuật ngữ liên quan:
.pt
hoặc SavedModel của TensorFlow tương thích với các framework tương ứng của chúng. ONNX đóng vai trò 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 runtime chung. TorchScript là một định dạng khác để tuần tự hóa mô hình PyTorch, đôi khi được sử dụng như một giải pháp thay thế hoặc tiền thân của xuất ONNX.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 vận hành machine learning (MLOps), cho phép các nhà phát triển chọn các công cụ tốt nhất để huấn luyện và triển khai mà không bị giới hạn bởi các hạn chế của framework. 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ế. Để tìm hiểu thêm, hãy truy cập trang web ONNX chính thức và khám phá dự án trên GitHub.