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

FLOPs

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.

FLOPs, hay Floating-Point Operations (Số phép toán dấu phẩy động), là một chỉ số cơ bản được sử dụng trong Machine Learning (ML) để đo lường độ phức tạp tính toán của một mô hình. 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—như cộng, trừ, nhân hoặc chia—liên quan đến các số có dấu thập phân, đây là tiêu chuẩn trong mạng nơ-ron. Mặc dù thuật ngữ này về mặt kỹ thuật có thể đề cập đến số lượng phép toán trên giây, nhưng trong bối cảnh của deep learning, FLOPs thường định lượng tổng số các phép toán này cần thiết cho một lần forward pass (duyệt xuôi) của mô hình. Chỉ số này cung cấp một cách thức độc lập với phần cứng để ước tính mức độ tốn kém về mặt tính toán của một mô hình trong quá trình suy luận (inference). Các con số thường rất lớn đến mức chúng được biểu thị bằng GigaFLOPs (GFLOPs), là hàng tỷ phép toán, hoặc TeraFLOPs (TFLOPs), hàng nghìn tỷ phép toán.

Tại sao FLOP lại quan trọng trong Machine Learning?

FLOP là một chỉ số quan trọng về hiệu quả của mô hình. Số lượng FLOP thấp hơn thường cho thấy rằng một mô hình sẽ nhanh hơn và yêu cầu ít sức mạnh tính toán hơn để chạy. Điều này đặc biệt quan trọng đối với các ứng dụng mà tài nguyên bị hạn chế, chẳng hạn như trong AI biên và trên các thiết bị di động. Bằng cách phân tích FLOP, các nhà phát triển có thể:

  • So Sánh Kiến Trúc Mô Hình: Khi lựa chọn giữa các mô hình khác nhau, chẳng hạn như các mô hình được tìm thấy trong các trang so sánh mô hình của chúng tôi, FLOP cung cấp một cách tiêu chuẩn để đánh giá hiệu quả tính toán cùng với độ chính xác.
  • Tối ưu hóa để triển khai: Đối với triển khai mô hình trên phần cứng như Raspberry Pi hoặc NVIDIA Jetson, việc chọn một mô hình có số lượng FLOP phù hợp là điều cần thiết để đạt được mức hiệu suất mong muốn.
  • Hướng dẫn Thiết kế Mô hình: Các nhà nghiên cứu phát triển các kiến trúc mới, như trong dòng Ultralytics YOLO, thường coi việc giảm thiểu FLOPs là một ràng buộc thiết kế quan trọng. Các kỹ thuật được khám phá trong các mô hình như EfficientNet tập trung vào việc giảm chi phí tính toán mà không làm giảm hiệu suất.

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

FLOPs là một chỉ số thiết thực được sử dụng hàng ngày trong quá trình phát triển và triển khai các giải pháp AI.

  1. Ứng dụng thị giác trên thiết bị di động: Một nhà phát triển tạo ra một tính năng phát hiện đối tượng theo thời gian thực cho một ứng dụng điện thoại thông minh phải chọn một mô hình có thể chạy nhanh mà không làm hao pin. Bằng cách so sánh FLOPs của các mô hình nhẹ như một biến thể Ultralytics YOLO11 nhỏ với các mô hình khác, họ có thể chọn một mô hình cung cấp sự cân bằng tốt giữa tốc độ và độ chính xác cho CPU hoặc GPU của thiết bị.

  2. Xe tự hành: Trong lái xe tự động, các mô hình nhận thức phải xử lý các nguồn cấp dữ liệu camera với độ trễ cực thấp. Các kỹ sư thiết kế các hệ thống này phân tích FLOP của các mô hình khác nhau để đảm bảo kiến trúc đã chọn có thể chạy trên phần cứng chuyên dụng của xe. Một mô hình như YOLO11 có thể được chọn thay vì một mô hình phức tạp hơn nếu FLOP thấp hơn của nó cho phép nó đáp ứng các yêu cầu về thời gian nghiêm ngặt để vận hành an toàn.

So sánh FLOPs với các chỉ số liên quan

Điều quan trọng là phải phân biệt FLOPs với các số liệu phổ biến khác:

  • Tham số so với FLOPs (Parameters vs. FLOPs): Số lượng trọng số mô hình (tham số) cho biết kích thước của một mô hình về mặt lưu trữ bộ nhớ. Mặt khác, FLOPs đo lường khối lượng công việc tính toán. Một mô hình có thể có một số lượng nhỏ tham số nhưng số lượng FLOP cao nếu các tham số đó được sử dụng lại nhiều lần trong các hoạt động tính toán chuyên sâu.
  • MACs so với FLOPs: MACs, hay các phép toán Nhân-Tích lũy, là một phép toán phổ biến trong mạng nơ-ron. Một MAC duy nhất thường được coi là tương đương với hai FLOPs (một phép nhân và một phép cộng). Một số bài báo nghiên cứu và framework có thể báo cáo chi phí tính toán bằng MACs, bằng khoảng một nửa giá trị FLOPs. Bạn có thể thấy sự khác biệt này trong các tài liệu như Papers with Code.
  • Độ trễ so với FLOPs (Latency vs. FLOPs): Độ trễ suy luận (Inference latency) là thời gian thực tế mà một mô hình cần để đưa ra dự đoán. Mặc dù FLOPs cung cấp một ước tính lý thuyết tốt, nhưng độ trễ trong thế giới thực bị ảnh hưởng bởi các yếu tố mà FLOPs không nắm bắt được, chẳng hạn như băng thông bộ nhớ, tính song song của phần cứng và hiệu quả của các thư viện phần mềm như PyTorch.

Các giới hạn

Mặc dù hữu ích, FLOP có những hạn chế:

  • Chúng không tính đến chi phí truy cập bộ nhớ, đây có thể là một nút thắt cổ chai đá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 nhiều vào các tối ưu hóa dành riêng cho phần cứng 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 nhất định (ví dụ: các 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, tham số và điểm chuẩn thực tế khác để có được bức tranh đầy đủ về hiệu quả của mô hình. Các công cụ như Ultralytics HUB có thể giúp quản lý mô hình và theo dõi các khía cạnh hiệu suất khác nhau trong quá trình phát triển và triển khai.

Tham gia cộng đồng Ultralytics

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
Đã sao chép liên kết vào clipboard