Tìm hiểu về FLOPs trong machine learning! Tìm hiểu cách nó đo lường độ phức tạp của mô hình, tác động đến hiệu quả và hỗ trợ lựa chọn phần cứng.
FLOP, hay Phép toán Dấu phẩy động, đóng vai trò là một thước đo cơ bản để định lượng độ phức tạp tính toán của các mô hình học máy , đặc biệt trong lĩnh vực học sâu. Phép đo này tính toán tổng số phép toán—chẳng hạn như cộng, trừ, nhân và chia liên quan đến số thập phân—cần thiết để hoàn thành một lần duyệt thuận của mạng nơ-ron . Bằng cách xác định số lượng FLOP, các kỹ sư có thể ước tính công suất xử lý cần thiết để thực thi một mô hình, khiến nó trở thành một thống kê quan trọng cho việc lựa chọn và tối ưu hóa phần cứng. Mặc dù khác với kích thước tệp hoặc số lượng tham số, FLOP cung cấp một cơ sở lý thuyết về mức độ "nặng" của một mô hình, điều này liên quan trực tiếp đến mức tiêu thụ năng lượng và tốc độ thực thi trên các bộ xử lý như CPU hoặc GPU .
Việc hiểu rõ chi phí tính toán của một mô hình là điều cần thiết để phát triển AI hiệu quả. Số FLOPs thấp hơn thường cho thấy mô hình cần ít phép tính hơn để đưa ra dự đoán, điều này rất quan trọng đối với các môi trường có nguồn lực hạn chế.
Tác động thực tế của FLOP dễ thấy nhất khi các mô hình chuyển từ môi trường nghiên cứu sang môi trường sản xuất, nơi độ trễ và công suất bị hạn chế.
Bạn có thể xác định độ phức tạp tính toán của một Ultralytics mô hình bằng các công cụ lập hồ sơ tích hợp. Đoạn mã sau đây tải một mô hình và tính toán FLOP cần thiết cho một kích thước đầu vào cụ thể.
from ultralytics import YOLO
# Load the YOLO11 nano model
model = YOLO("yolo11n.pt")
# Profile the model to see FLOPs, parameters, and speed
# The 'imgsz' argument defines the input resolution (e.g., 640x640)
model.profile(imgsz=640)
Phương pháp này đưa ra bảng tóm tắt bao gồm số lượng tham số, độ dốc và GFLOP (GigaFLOP hoặc hàng tỷ phép tính), giúp bạn đánh giá xem mô hình có phù hợp với các ràng buộc triển khai của bạn hay không.
Điều quan trọng là phải phân biệt FLOP với các số liệu khác mô tả kích thước và tốc độ của mô hình vì chúng đo lường các khía cạnh khác nhau của hiệu suất.
Mặc dù FLOP cung cấp một đường cơ sở hữu ích, nhưng chúng không phản ánh toàn bộ hiệu suất của mô hình. Chúng không tính đến chi phí truy cập bộ nhớ (năng lượng và thời gian để truyền dữ liệu đến bộ xử lý), vốn thường là điểm nghẽn trong các hệ thống học sâu hiện đại. Ngoài ra, các phép toán như hàm kích hoạt (ví dụ: ReLU ) hoặc các lớp chuẩn hóa có số lượng FLOP thấp nhưng vẫn tiêu tốn thời gian. Do đó, FLOP nên được sử dụng kết hợp với việc đánh giá hiệu suất thực tế trên phần cứng mục tiêu, chẳng hạn như Raspberry Pi , để có được bức tranh chính xác về hiệu suất.