FLOPs
FLOPs가 AI 모델의 계산 복잡도를 어떻게 측정하는지 학습하십시오. Ultralytics YOLO26의 FLOPs를 계산하고 Edge AI를 위한 성능을 최적화하는 방법을 알아보십시오.
FLOPs(Floating Point Operations, 부동소수점 연산)는 machine learning 모델의 연산 복잡도를 측정하는 데 사용되는 표준 지표입니다. 이는 이미지나 문장 같은 단일 입력을 처리하기 위해 neural network가 수행해야 하는 수학적 계산(주로 소수점 숫자가 포함된 덧셈과 곱셈)의 횟수를 구체적으로 셉니다. deep learning의 세계에서 FLOPs는 모델이 얼마나 "무겁거나" 연산 비용이 많이 드는지를 추정하기 위한 이론적 기준점으로 작용합니다. FLOPs 수치가 높을수록 일반적으로 모델이 더 복잡하며 실행에 더 많은 처리 능력과 에너지가 필요함을 시사하고, 수치가 낮을수록 효율성을 위해 설계된 경량 아키텍처임을 나타냅니다.
모델 선택에서 FLOPs의 역할#
artificial intelligence 애플리케이션을 개발할 때 엔지니어들은 종종 정확도와 속도 사이의 트레이드오프에 직면합니다. FLOPs는 하드웨어와 무관한 inference latency의 대리 지표 역할을 하여, 개발자가 모든 가능한 장치에서 벤치마킹을 수행할 필요 없이 서로 다른 아키텍처를 비교할 수 있도록 합니다. 이 지표는 특정 배포 시나리오에 적합한 모델을 선택하는 데 필수적입니다. 예를 들어, 강력한 cloud computing 서버에서 실험을 실행하는 연구원은 효율성보다 정확도를 우선시하여 높은 FLOPs를 가진 모델을 활용할 수 있습니다. 반대로 edge AI 장치용 제품을 빌드하는 엔지니어는 애플리케이션이 엄격한 전력 및 발열 제한 내에서 원활하게 실행되도록 낮은 FLOPs를 우선시해야 합니다.
실제 애플리케이션 사례#
FLOPs의 실질적인 의미는 연산 자원이 중요한 요소인 다양한 산업 전반에서 명확하게 드러납니다.
- 자율주행 드론: agricultural robotics 같은 분야에서 카메라를 탑재한 드론은 실시간으로 작물 상태를 분석합니다. 드론 배터리는 한정되어 있으므로 모든 전력 소비가 중요합니다. 엔지니어는 온보드 프로세서의 전력 소모를 최소화하여 비행 시간과 작전 반경을 극대화하기 위해 YOLO26의 Nano 변형과 같이 FLOPs가 낮은 모델을 특별히 선택합니다.
- 모바일 증강 현실: 보안을 위해 facial recognition을 사용하거나 AR 필터를 적용하는 스마트폰 애플리케이션은 효율적인 처리에 크게 의존합니다. 이러한 앱은 기기가 과열되거나 렉이 걸리지 않도록 작동해야 합니다. 개발자는 FLOPs 추정치를 사용하여 Snapdragon 시리즈나 Apple의 A-series chips 같은 모바일 칩셋의 역량 내에 알맞게 들어맞는 경량 모델을 선택합니다.
FLOPs와 FLOPS(Floating Point Operations Per Second) 비교#
"FLOPs"(FLOP의 복수형)와 "FLOPS"(모두 대문자)를 구분하는 것은 중요합니다. 모양이 거의 비슷하지만 측정하는 대상이 다릅니다. FLOPs(소문자 's')는 모델에 필요한 연산의 총 수량을 의미하며, 복잡도의 정적 측정값입니다. FLOPS(대문자 'S')는 Floating Point Operations Per Second(초당 부동소수점 연산)를 나타내며 GPU와 같은 하드웨어의 속도 또는 성능 역량을 측정합니다. FLOPs를 자동차가 이동해야 하는 거리(완수해야 할 작업)로 생각할 수 있고, FLOPS는 자동차의 최고 속도(작업을 수행하는 하드웨어의 능력)로 생각할 수 있습니다.
Python으로 FLOPs 측정하기#
Python을 사용하여 Ultralytics 모델의 연산 비용을 쉽게 계산할 수 있습니다. 이는 model optimization 단계에서 신경망이 하드웨어 예산 내에 들어가도록 보장하는 데 특히 유용합니다. 다음 예제는 YOLO26 모델을 로드하고 그 FLOPs를 결정하는 방법을 보여줍니다.
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")효율성을 위한 FLOPs 감소#
모델을 더 쉽게 배포할 수 있도록 연구원들은 정확도를 크게 희생하지 않으면서 FLOPs를 줄이기 위해 여러 가지 기술을 사용합니다. Model pruning은 신경망에서 중요도가 낮은 연결을 제거하여 효과적으로 슬림화하는 과정을 포함합니다. 또 다른 기술은 quantization으로, 계산에 사용되는 숫자의 정밀도를 낮춥니다(예: 32비트 부동소수점에서 8비트 정수로). Ultralytics Platform에서 사용할 수 있는 도구들은 이러한 최적화 프로세스를 간소화하여 TensorRT나 OpenVINO 같은 타겟에 효율적인 모델을 더 쉽게 배포할 수 있도록 돕습니다. FLOPs를 이해하고 최적화함으로써 개발자는 강력하면서도 지속 가능한 AI 시스템을 구축할 수 있습니다.






