FLOP, hay Floating-Point Operations, là một phép đo cơ bản về độ phức tạp tính toán của mô hình học máy (ML) , đặc biệt là trong học sâu . Nó định lượng tổng số phép tính dấu phẩy động (như phép cộng, phép trừ, phép nhân, phép chia) cần thiết cho một lần chuyển tiếp duy nhất của mô hình, thường là trong quá trình suy luận. Hiểu về FLOP rất quan trọng để đánh giá hiệu quả của mô hình, so sánh các kiến trúc khác nhau và xác định tính phù hợp của mô hình đối với nhiều nền tảng phần cứng khác nhau, từ máy chủ đám mây mạnh mẽ đến các thiết bị biên hạn chế về tài nguyên.
FLOP là gì?
Một phép toán dấu phẩy động là bất kỳ phép tính toán học nào liên quan đến các số có dấu thập phân (số dấu phẩy động). Trong mạng nơ-ron (NN) , các phép toán này diễn ra rộng rãi trong các lớp như tích chập và các lớp được kết nối đầy đủ. FLOP đo tổng số các phép toán này cần thiết để xử lý một đầu vào duy nhất (ví dụ: một hình ảnh).
Vì các mô hình học sâu hiện đại liên quan đến hàng tỷ phép toán như vậy, nên FLOP thường được biểu thị bằng GigaFLOP (GFLOP, hàng tỷ FLOP) hoặc TeraFLOP (TFLOP, hàng nghìn tỷ FLOP). Điều quan trọng là không được nhầm lẫn giữa FLOP (tổng số phép toán, thước đo khối lượng công việc tính toán) với FLOPS (Số phép toán dấu phẩy động trên giây, thước đo tốc độ xử lý phần cứng, như khả năng của GPU ). Trong bối cảnh đánh giá độ phức tạp của mô hình, "FLOP" hầu như luôn đề cập đến tổng số phép toán.
Sự liên quan trong AI và Học máy
FLOP đóng vai trò là số liệu quan trọng, không phụ thuộc vào phần cứng để ước tính chi phí tính toán của mô hình AI. Các khía cạnh chính về sự liên quan của nó bao gồm:
- So sánh hiệu quả: FLOP cho phép các nhà nghiên cứu và học viên so sánh nhu cầu tính toán của các kiến trúc mô hình khác nhau độc lập với các tối ưu hóa phần cứng hoặc phần mềm cụ thể. Ví dụ, khi so sánh các mô hình như Ultralytics YOLO11 so với YOLOv10 , FLOP cung cấp thông tin chi tiết về hiệu quả tính toán tương đối của chúng cùng với các số liệu về độ chính xác .
- Tính phù hợp của phần cứng: Các mô hình có FLOP thấp hơn thường yêu cầu ít sức mạnh tính toán hơn, khiến chúng phù hợp hơn để triển khai trên các thiết bị có tài nguyên hạn chế, chẳng hạn như điện thoại thông minh, Raspberry Pi hoặc nền tảng NVIDIA Jetson phổ biến trong điện toán biên .
- Ước tính tốc độ suy luận: Mặc dù không phải là thước đo trực tiếp về tốc độ, FLOP thấp hơn thường tương quan với độ trễ suy luận nhanh hơn. Tuy nhiên, tốc độ thực tế phụ thuộc vào các yếu tố như mẫu truy cập bộ nhớ, tính song song của phần cứng ( CPU so với GPU so với TPU ) và các thư viện phần mềm được tối ưu hóa như TensorRT hoặc OpenVINO .
- Thiết kế và tối ưu hóa mô hình: FLOP là một cân nhắc quan trọng trong quá trình thiết kế mô hình, tìm kiếm kiến trúc nơ-ron (NAS) và các kỹ thuật tối ưu hóa như cắt tỉa mô hình , nhằm mục đích giảm chi phí tính toán trong khi vẫn duy trì hiệu suất.
FLOP so với các khái niệm liên quan
Sẽ rất hữu ích khi phân biệt FLOP với các số liệu phổ biến khác:
- FLOP so với Tham số: Số lượng tham số (hoặc trọng số mô hình ) biểu thị kích thước của mô hình về mặt lưu trữ bộ nhớ. FLOP đo chi phí tính toán để chạy mô hình. Một mô hình có thể có nhiều tham số nhưng FLOP thấp (ví dụ, nếu trọng số được sử dụng thưa thớt) hoặc ít tham số nhưng FLOP cao (ví dụ, liên quan đến nhiều thao tác trên mỗi tham số). Cả hai số liệu đều quan trọng để đánh giá hiệu quả. Ví dụ, YOLOv9 đã giới thiệu các kỹ thuật để đạt được độ chính xác cao với tương đối ít tham số và FLOP so với một số phiên bản trước.
- FLOP so với Tốc độ suy luận: FLOP biểu thị công việc tính toán lý thuyết, trong khi tốc độ suy luận (thường được đo bằng Khung hình trên giây (FPS) hoặc mili giây cho mỗi lần suy luận) là hiệu suất thực tế được đo trên phần cứng cụ thể. Các yếu tố như băng thông bộ nhớ , ngăn xếp phần mềm ( PyTorch , TensorFlow ), lượng tử hóa và kích thước lô ảnh hưởng đáng kể đến tốc độ thực tế. Tối ưu hóa độ trễ so với thông lượng cho thấy hiệu suất thực tế có thể được điều chỉnh như thế nào ngoài FLOP.
- FLOP so với MAC/MACC: Các phép toán tích lũy nhân (MAC hoặc MACC) đếm số phép toán nhân và cộng hợp nhất, phổ biến trong mạng nơ-ron tích chập (CNN) . Vì một MAC thường bao gồm một phép nhân và một phép cộng, nên nó thường được tính gần đúng là 2 FLOP. Một số bài báo nghiên cứu hoặc thẻ mô hình báo cáo MAC thay vì FLOP. Điều quan trọng là phải kiểm tra số liệu nào đang được sử dụng, vì chúng khác nhau khoảng hai lần. Hiểu được sự khác biệt này là chìa khóa khi so sánh các mô hình dựa trên chi phí tính toán đã báo cáo.
Ứng dụng và Ví dụ
FLOP được sử dụng rộng rãi trong nhiều bối cảnh AI và ML khác nhau:
- Lựa chọn mô hình để triển khai Edge: Một công ty phát triển camera an ninh thông minh cần một mô hình phát hiện đối tượng có thể chạy hiệu quả trên thiết bị Edge có công suất xử lý hạn chế. Họ so sánh một số mô hình, bao gồm các kích thước khác nhau Ultralytics YOLO (ví dụ: YOLO11n so với YOLO11s). Bằng cách kiểm tra các FLOP được báo cáo cho từng mô hình (như những mô hình được tìm thấy trong tài liệu YOLO11 Ultralytics ), họ có thể chọn mô hình lớn nhất đáp ứng các yêu cầu về độ trễ của họ dựa trên ngân sách tính toán của thiết bị (được đo bằng FLOPS phần cứng). Các mô hình FLOP thấp hơn như YOLO11n là ứng cử viên hàng đầu.
- Đánh giá chuẩn kiến trúc mới: Các nhà nghiên cứu phát triển kiến trúc thị giác máy tính mới cần chứng minh hiệu quả của nó. Họ so sánh độ chính xác của mô hình (ví dụ: mAP ) với GFLOP của nó trên các tập dữ liệu chuẩn như COCO . Họ vẽ mô hình của mình trên đồ thị độ chính xác so với FLOP cùng với các mô hình tiên tiến hiện có (như EfficientNet hoặc nhiều YOLO phiên bản) để hiển thị các sự đánh đổi được cải thiện. Nhiều trang so sánh mô hình, chẳng hạn như YOLOv9 so với YOLOX , sử dụng FLOP làm điểm so sánh chính.
Tính toán và ước tính FLOP
FLOP thường được tính toán bằng cách phân tích từng lớp kiến trúc của mô hình và tổng hợp các hoạt động cần thiết cho từng lớp dựa trên kích thước đầu vào/đầu ra và loại lớp ( tích chập , kết nối đầy đủ, v.v.). Nhiều công cụ và thư viện khác nhau, chẳng hạn như fvcore hoặc trình tạo hồ sơ tích hợp trong các khuôn khổ học sâu, có thể giúp tự động hóa phép tính này hoặc cung cấp ước tính. Độ phân giải đầu vào ảnh hưởng đáng kể đến số lượng FLOP đối với nhiều mô hình thị giác.
Hạn chế
Mặc dù hữu ích, FLOP cũng có những hạn chế:
- Chúng không tính đến chi phí truy cập bộ nhớ (MAC), đây có thể là một điểm nghẽn đáng kể.
- Chúng không nắm bắt được mức độ song song có thể có trong các hoạt động.
- Hiệu suất thực tế phụ thuộc rất nhiều vào khả năng tối ưu hóa phần cứng cụ thể và hiệu quả của các thư viện phần mềm cơ bản ( cuDNN , Intel MKL ).
- Một số hoạt động (ví dụ: hàm kích hoạt như ReLU ) có số lượng FLOP thấp nhưng vẫn có thể ảnh hưởng đến độ trễ.
Do đó, FLOPs nên được xem xét cùng với các số liệu hiệu suất , thông số và chuẩn mực thực tế khác để có bức tranh toàn cảnh về hiệu quả của mô hình. Các công cụ như Ultralytics HUB có thể giúp quản lý các mô hình và theo dõi nhiều khía cạnh hiệu suất khác nhau trong quá trình phát triển và triển khai .