FLOPs
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 FLOPs cho Ultralytics YOLO26 và tối ưu hóa hiệu suất cho Edge AI.
FLOPs, hoặc Floating Point Operations (Phép toán dấu phẩy động), là một số đo tiêu chuẩn được sử dụng để đánh giá độ phức tạp tính toán của một machine learning model. Số đo này đếm cụ thể số lượng phép tính toán học—chủ yếu là các phép cộng và nhân với số thập phân—mà một neural network phải thực hiện để xử lý một đầu vào đơn lẻ, chẳng hạn như một hình ảnh hoặc một câu văn. Trong thế giới của deep learning, FLOPs đóng vai trò là một thước đo lý thuyết để ước tính mức độ "nặng" hoặc tốn kém tài nguyên tính toán của một model. Số lượng FLOPs cao thường cho thấy model đó phức tạp hơn và sẽ đòi hỏi nhiều công suất xử lý cũng như năng lượng hơn để chạy, trong khi số lượng thấp hơn cho thấy một kiến trúc nhẹ được thiết kế nhằm tối ưu hiệu suất.
Vai trò của FLOPs trong lựa chọn Model#
Khi phát triển các ứng dụng artificial intelligence, 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ò là một thước đo độc lập về phần cứng đối với inference latency, cho phép các developer so sánh các kiến trúc khác nhau mà không cần phải benchmark chúng trên mọi thiết bị có thể. Số đo này rất cần thiết để lựa chọn model phù hợp cho các kịch bản triển khai cụ thể. Ví dụ, một nhà nghiên cứu chạy các thí nghiệm trên các máy chủ cloud computing mạnh mẽ có thể ưu tiên độ chính xác hơn hiệu suất, sử dụng các model có FLOPs cao. Ngược lại, một kỹ sư xây dựng ứng dụng cho các thiết bị edge AI phải ưu tiên FLOPs thấp để đảm bảo ứng dụng chạy mượt mà trong các giới hạn nghiêm ngặt về năng lượng và nhiệt độ.
Các ứng dụng trong thực tế#
Ý nghĩa thực tiễn của FLOPs được thể hiện rõ ràng trong nhiều ngành công nghiệp nơi tài nguyên tính toán là yếu tố quan trọng.
- Autonomous Drones: Trong các lĩnh vực như agricultural robotics, các drone được trang bị camera sẽ phân tích sức khỏe cây trồng theo thời gian thực. Do pin của drone có hạn, từng chút tiêu thụ năng lượng đều quan trọng. Các kỹ sư chọn cụ thể các model có FLOPs thấp, chẳng hạn như các biến thể Nano của YOLO26, nhằm giảm thiểu mức tiêu thụ năng lượng trên bộ xử lý tích hợp, từ đó tối đa hóa thời gian bay và phạm vi hoạt động.
- Mobile Augmented Reality: Các ứng dụng trên smartphone sử dụng facial recognition cho bảo mật hoặc áp dụng các bộ lọc AR phụ thuộc rất nhiều vào quá trình xử lý hiệu quả. Các ứng dụng này phải hoạt động mà không làm thiết bị quá nóng hoặc giật lag. Các developer sử dụng ước tính FLOPs để lựa chọn các model nhẹ phù hợp hoàn toàn với năng lực của các chipset di động như dòng Snapdragon hoặc A-series chips của Apple.
FLOPs so với FLOPS (Floating Point Operations Per Second)#
Đ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 toàn bộ). Mặc dù trông gần như giống hệt nhau, chúng đo lường những yếu tố khác nhau. FLOPs (chữ 's' thường) chỉ tổng số lượng các phép toán mà một model yêu cầu—đây là một số đo tĩnh về độ phức tạp. FLOPS (chữ 'S' hoa) là viết tắt của Floating Point Operations Per Second (Phép toán dấu phẩy động mỗi giây) và đo lường tốc độ hoặc khả năng hiệu năng của phần cứng, chẳng hạn như một GPU. Bạn có thể hình dung FLOPs giống như quãng đường mà một chiếc xe cần di chuyển (khối lượng công việc cần hoàn thành), trong khi FLOPS là tốc độ tối đa của chiếc xe đó (khả năng của phần cứng trong việc thực hiện công việc).
Đo lường FLOPs bằng Python#
Bạn có thể dễ dàng tính toán chi phí tính toán của một model Ultralytics bằng cách sử dụng Python. Điều này đặc biệt hữu ích trong giai đoạn model optimization để đảm bảo neural network của bạn nằm trong ngân sách phần cứng của mình. Ví dụ sau đây minh họa cách tải một model YOLO26 và xác định số lượng FLOPs của model đó.
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")Giảm FLOPs để đạt hiệu quả#
Để giúp các model dễ triển khai hơn, các nhà nghiên cứu sử dụng một số kỹ thuật nhằm giảm FLOPs mà không làm giảm đáng kể độ chính xác. Model pruning liên quan đến việc loại bỏ các kết nối ít quan trọng hơn trong neural network, giúp làm gọn cấu trúc này một cách hiệu quả. Một kỹ thuật khác là quantization, giúp giảm độ chính xác của các con số được sử dụng trong các phép tính (ví dụ: từ số dấu phẩy động 32-bit xuống số nguyên 8-bit). Các công cụ có sẵn trên Ultralytics Platform giúp tối ưu hóa các quy trình này, giúp việc triển khai các model hiệu quả lên các mục tiêu như TensorRT hoặc OpenVINO trở nên dễ dàng hơn. Bằng cách hiểu và tối ưu hóa FLOPs, các developer có thể xây dựng các hệ thống AI vừa mạnh mẽ vừa bền vững.






