Yolo 비전 선전
선전
지금 참여하기
용어집

FLOPs

머신러닝에서 FLOPs를 이해하세요! 모델 복잡성을 측정하고, 효율성에 영향을 미치며, 하드웨어 선택을 지원하는 방법을 알아보세요.

FLOPs(부동소수점 연산)은 머신러닝 모델의 계산 복잡성을 측정하는 표준 지표입니다. 이는 특히 신경망이 이미지나 문장과 같은 단일 입력을 처리하기 위해 수행해야 하는 수학적 계산(주로 소수점 숫자를 포함한 덧셈과 곱셈)의 횟수를 측정합니다. 딥 러닝 분야에서 FLOPs는 모델의 '무게' 또는 계산적 비용을 추정하는 이론적 척도 역할을 합니다. 일반적으로 FLOPs 값이 높을수록 모델이 더 복잡하며 실행에 더 많은 처리 능력과 에너지가 필요함을 시사합니다. 반대로 낮은 값은 효율성을 위해 설계된 경량 아키텍처를 나타냅니다.

모델 선택에서 FLOPs의 역할

인공지능 애플리케이션을 개발할 때 엔지니어들은 종종 정확도와 속도 사이의 상충 관계에 직면합니다. FLOPs는 추론 지연 시간을 하드웨어 독립적인 대리 지표로 작용하여 개발자가 모든 가능한 장치에서 벤치마킹할 필요 없이 서로 다른 아키텍처를 비교할 수 있게 합니다. 이 지표는 특정 배포 시나리오에 적합한 모델을 선택하는 데 필수적입니다. 예를 들어, 강력한 클라우드 컴퓨팅 서버에서 실험을 수행하는 연구원은 효율성보다 정확성을 우선시하여 높은 FLOPs를 가진 모델을 활용할 수 있습니다. 반대로, 에지 AI 기기를 위한 애플리케이션을 구축하는 엔지니어는 엄격한 전력 및 열 제한 내에서 애플리케이션이 원활하게 실행되도록 낮은 FLOPs를 우선시해야 합니다.

실제 애플리케이션

FLOPs의 실질적 영향은 계산 자원이 핵심 요소인 다양한 산업 전반에 걸쳐 명백히 드러난다.

  • 자율 드론: 농업 로봇공학 같은 분야에서는 카메라가 장착된 드론이 작물의 건강 상태를 실시간으로 분석합니다. 드론 배터리는 제한적이기 때문에 전력 소비의 모든 부분이 중요합니다. 엔지니어들은 기내 프로세서의 전력 소모를 최소화하기 위해 YOLO26의 Nano 변형과 같이 FLOPs가 낮은 모델을 특별히 선택하여 비행 시간과 작전 범위를 극대화합니다.
  • 모바일 증강 현실: 보안 목적으로 얼굴 인식 기능을 사용하거나 AR 필터를 적용하는 스마트폰 애플리케이션은 효율적인 처리에 크게 의존합니다. 이러한 앱들은 기기가 과열되거나 지연 현상을 일으키지 않도록 작동해야 합니다. 개발자들은 FLOPs 추정치를 활용하여 스냅드래곤 시리즈나 애플의 A 시리즈 칩과 같은 모바일 칩셋의 성능 범위 내에서 원활하게 작동하는 경량 모델을 선택합니다.

FLOPs 대 FLOPS (초당 부동소수점 연산 횟수)

"FLOPs"(FLOP의 복수형)와 "FLOPS"(대문자)를 구분하는 것이 중요합니다. 비슷해 보이지만 서로 다른 것을 측정합니다. FLOPs (소문자 's')는 모델에 필요한 전체 연산량을 의미하며, 복잡성의 정적 측정값입니다. FLOPS (대문자 'S') 초당 부동소수점 연산 횟수(Floating Point Operations Per Second )를 의미하며, 하드웨어의 속도나 성능 능력을 측정합니다. 예를 들어 GPUFLOPs는 자동차가 이동해야 할 거리(수행해야 할 작업)로, FLOPS는 자동차의 최고 속도(하드웨어의 작업 수행 능력)로 생각할 수 있습니다.

Python으로 FLOPs 측정하기

Python 사용하여 Ultralytics 계산 비용을 쉽게 계산할 수 있습니다. 이는 특히 모델 최적화 단계에서 신경망이 하드웨어 예산 범위 내에 맞는지 확인하는 데 유용합니다. 다음 예제는 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를 줄이는 여러 기법을 사용합니다. 모델 프루닝은 신경망에서 덜 중요한 연결을 제거하여 효과적으로 간소화하는 과정입니다. 또 다른 기법은 계산에 사용되는 숫자의 정밀도를 낮추는 양자화입니다(예: 32비트 부동소수점에서 8비트 정수로). Ultralytics 제공하는 도구는 이러한 최적화 프로세스를 간소화하여 효율적인 모델을 다음과 같은 대상에 더 쉽게 배포할 수 있도록 합니다. TensorRT 또는 OpenVINO과 같은 대상에 효율적인 모델을 배포하는 것을 용이하게 합니다. FLOPs를 이해하고 최적화함으로써 개발자는 강력하면서도 지속 가능한 AI 시스템을 구축할 수 있습니다.

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기