Tìm hiểu cách FLOPs đo lường độ phức tạp tính toán của các mô hình AI. Khám phá cách tính toán FLOPs cho... Ultralytics YOLO26 và tối ưu hóa hiệu năng cho AI biên.
FLOPs, hay Số phép toán dấu phẩy động, là một thước đo tiêu chuẩn được sử dụng để đánh giá độ phức tạp tính toán của một mô hình học máy . Cụ thể, nó đếm số lượng các phép tính toán học—chủ yếu là phép cộng và phép nhân liên quan đến số thập phân—mà mạng nơ-ron phải thực hiện để xử lý một đầu vào duy nhất, chẳng hạn như hình ảnh hoặc câu văn. Trong thế giới học sâu , FLOPs đóng vai trò là thước đo lý thuyết để ước tính mức độ "nặng nề" hay tốn kém về mặt tính toán của một mô hình. Số lượng FLOPs cao hơn thường cho thấy một mô hình phức tạp hơn và sẽ yêu cầu nhiều sức mạnh xử lý và năng lượng hơn để thực thi, trong khi số lượng thấp hơn cho thấy một kiến trúc nhẹ được thiết kế để tiết kiệm năng lượng.
Khi phát triển các ứng dụng trí tuệ nhân tạo , các kỹ sư thường phải đối mặt với sự đánh đổi giữa độ chính xác và tốc độ. FLOPs đóng vai trò như một thước đo độc lập với phần cứng cho độ trễ suy luận , cho phép các nhà phát triển so sánh các kiến trúc khác nhau mà không cần phải đo hiệu năng trên mọi thiết bị có thể. Chỉ số này rất cần thiết để lựa chọn mô hình phù hợp cho các kịch bản triển khai cụ thể. Ví dụ, một nhà nghiên cứu thực hiện các thí nghiệm trên các máy chủ điện toán đám mây mạnh mẽ có thể ưu tiên độ chính xác hơn hiệu quả, sử dụng các mô hình có FLOPs cao. Ngược lại, một kỹ sư xây dựng cho các thiết bị AI biên phải ưu tiên FLOPs thấp để đảm bảo ứng dụng chạy trơn tru trong giới hạn nghiêm ngặt về điện năng và nhiệt độ.
Ý nghĩa thực tiễn của FLOPs thể hiện rõ ràng trong nhiều ngành công nghiệp khác nhau, nơi mà tài nguyên tính toán là một yếu tố quan trọng.
Điều quan trọng là phải phân biệt giữa "FLOPs" (số nhiều của FLOP) và "FLOPS" (viết hoa). Mặc dù chúng trông gần giống nhau, nhưng chúng đo lường những thứ khác nhau. FLOPs (chữ 's' thường) đề cập đến tổng số phép toán cần thiết cho một mô hình — đó là một thước đo tĩnh về độ phức tạp. FLOPS (chữ 'S' viết hoa) là viết tắt của Floating Point Operations Per Second (Số phép toán dấu phẩy động mỗi giây) và đo tốc độ hoặc khả năng hiệu năng của phần cứng, chẳng hạn như GPU . Bạn có thể coi FLOPs như quãng đường mà một chiếc xe cần đi (công việc cần thực hiện), trong khi FLOPS là tốc độ tối đa của chiếc xe (khả năng thực hiện công việc của phần cứng).
Bạn có thể dễ dàng tính toán chi phí tính toán của một Ultralytics mô hình sử dụng Python Điều này đặc biệt hữu ích trong giai đoạn tối ưu hóa mô hình để đảm bảo mạng nơ-ron của bạn phù hợp với ngân sách phần cứng. Ví dụ sau đây minh họa cách tải mô hình YOLO26 và xác định số phép tính FLOP của nó.
from ultralytics import YOLO
from ultralytics.utils.torch_utils import get_flops
# Load a lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Calculate and print the model's FLOPs (Billions of operations)
# This gives you a hardware-independent complexity metric
flops = get_flops(model)
print(f"Model FLOPs: {flops:.2f} Billion")
Để làm cho các mô hình dễ triển khai hơn, các nhà nghiên cứu sử dụng một số kỹ thuật để giảm số phép tính FLOP mà không làm giảm đáng kể độ chính xác. Việc cắt tỉa mô hình bao gồm loại bỏ các kết nối ít quan trọng hơn trong mạng nơ-ron, về cơ bản là làm mỏng mạng. Một kỹ thuật khác là lượng tử hóa , làm giảm độ chính xác của các số được sử dụng trong các phép tính (ví dụ: từ số thực dấu phẩy động 32 bit xuống số nguyên 8 bit). Các công cụ có sẵn trên Nền tảng Ultralytics giúp đơn giản hóa các quy trình tối ưu hóa này, giúp dễ dàng triển khai các mô hình hiệu quả đến các mục tiêu như TensorRT hoặc OpenVINO . Bằng cách hiểu và tối ưu hóa FLOP, các nhà phát triển có thể xây dựng các hệ thống AI vừa mạnh mẽ vừa bền vững.