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, hay Floating Point Operations, là một chỉ số tiêu chuẩn được sử dụng để đo lường độ phức tạp tính toán của một model machine learning. Nó đếm cụ thể số lượng các phép tính toán học—chủ yếu là các phép cộng và nhân liên quan đến số thập phân—mà một neural network phải thực hiện để xử lý một input duy nhất, chẳng hạn như một hình ảnh hoặc một câu. Trong thế giới của deep learning, FLOPs đóng vai trò như một thước đo lý thuyết để ước tính xem một model "nặng" hoặc tốn kém về mặt tính toán đến mức nào. Số lượng FLOPs cao hơn thường cho thấy model đó phức tạp hơn và sẽ đòi hỏi nhiều sức mạnh xử lý cũng như năng lượng để 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ế để đạt hiệu quả cao.
Link to this sectionVai 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ò như một đại diện độc lập với phần cứng cho inference latency, 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 benchmark chúng trên mọi thiết bị có thể. Chỉ số này rất cần thiết để chọn đúng model cho các kịch bản triển khai cụ thể. Ví dụ, một nhà nghiên cứu chạy 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 quả, sử dụng các model có FLOPs cao. Ngược lại, một kỹ sư đang xây 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 giới hạn khắt khe về năng lượng và nhiệt độ.
Link to this sectionCá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.
- Máy bay không người lái tự hành: Trong các lĩnh vực như agricultural robotics, máy bay không người lái được trang bị camera để phân tích sức khỏe cây trồng theo thời gian thực. Vì pin của máy bay không người lái có hạn, mỗi chút tiêu thụ điện năng đều quan trọng. Các kỹ sư chọn lọc các model có FLOPs thấp, chẳng hạn như các biến thể Nano của YOLO26, để giảm thiểu việc tiêu hao 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.
- Thực tế tăng cường trên di động: Các ứng dụng điện thoại thông minh sử dụng facial recognition để bảo mật hoặc áp dụng bộ lọc AR dựa rất nhiều vào quá trình xử lý hiệu quả. Những ứng dụng này phải hoạt động mà không gây nóng thiết bị hoặc bị giật lag. Các nhà phát triển sử dụng ước tính FLOPs để chọn các model nhẹ phù hợp với khả năng của các chipset di động như dòng Snapdragon hoặc A-series chips của Apple.
Link to this sectionFLOPs 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 tất cả). Mặc dù chúng trông gần như giống hệt nhau, chúng đo lường những thứ khác nhau. FLOPs ('s' thường) đề cập đến tổng số lượng các phép toán cần thiết bởi một model—đây là một thước đo tĩnh về độ phức tạp. FLOPS ('S' viết hoa) là viết tắt của Floating Point Operations Per Second và đo lường tốc độ hoặc khả năng hiệu suất của phần cứng, chẳng hạn như một GPU. Bạn có thể coi FLOPs là quãng đường một chiếc xe cần đi (công việc cần hoàn thành), trong khi FLOPS là tốc độ tối đa của xe (khả năng của phần cứng để thực hiện công việc đó).
Link to this sectionĐ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 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 phù hợp với ngân sách phần cứng của mình. Ví dụ sau đây minh họa cách load một model YOLO26 và xác định FLOPs 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")Link to this sectionGiảm FLOPs để đạt hiệu quả#
Để làm cho 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 để 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 trong neural network, làm cho nó trở nên tinh gọn hơn. Một kỹ thuật khác là quantization, giúp giảm độ chính xác của các số được sử dụng trong tính toán (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 hợp lý hóa các quy trình tối ưu hóa 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 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.






