머신러닝에서 FLOPs를 이해하세요! 모델 복잡성을 측정하고, 효율성에 영향을 미치며, 하드웨어 선택을 지원하는 방법을 알아보세요.
부동 소수점 연산, 즉 플롭은 머신 러닝 모델의 계산 복잡성을 정량화하는 기본 지표로서 머신 러닝 모델, 특히 계산 복잡성을 정량화하는 기본 지표입니다. 이 측정은 더하기, 빼기, 곱하기와 같은 수학 연산의 총 수를 계산합니다, 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 10진수를 포함하는 수학 연산의 총 수를 계산합니다. 신경망. FLOPs 수를 결정함으로써 엔지니어는 모델을 실행하는 데 필요한 처리 능력을 예측할 수 있으며, 이는 하드웨어 선택 및 최적화에 중요한 통계입니다. 파일 크기나 매개변수 수와는 구별되지만, FLOPs는 모델이 얼마나 "무거운"지에 대한 이론적 기준을 제공합니다. 모델이 얼마나 "무거운지", 즉 프로세서의 에너지 소비 및 실행 속도와 직접적인 상관관계가 있습니다. 프로세서 CPU 또는 GPU.
효율적인 AI 개발을 위해서는 모델의 계산 비용을 이해하는 것이 필수적입니다. 필수적입니다. 낮은 FLOPs 수가 낮다는 것은 일반적으로 모델이 예측을 생성하는 데 필요한 계산 횟수가 적다는 것을 의미하며, 이는 리소스가 제한된 환경에서는 리소스가 제한된 환경에서 중요합니다.
FLOP의 실질적인 영향은 모델이 연구 환경에서 지연 시간과 전력이 제한적인 프로덕션 환경으로 이동할 때 및 전력이 제한적인 프로덕션 환경으로 이동할 때 가장 두드러집니다.
기본 제공 프로파일링 도구를 사용하여 Ultralytics 모델의 계산 복잡도를 확인할 수 있습니다. 다음 다음 스니펫은 모델을 로드하고 특정 입력 크기에 필요한 FLOP을 계산합니다.
from ultralytics import YOLO
# Load the YOLO11 nano model
model = YOLO("yolo11n.pt")
# Profile the model to see FLOPs, parameters, and speed
# The 'imgsz' argument defines the input resolution (e.g., 640x640)
model.profile(imgsz=640)
이 메서드는 매개 변수 수, 기울기 및 GFLOP(기가플롭, 또는 수십억 회 연산)을 포함한 요약 테이블을 출력하여 모델이 배포 제약 조건에 맞는지 평가하는 데 도움이 됩니다. 배포 제약 조건에 맞는지 평가하는 데 도움이 됩니다.
FLOP은 모델 크기와 속도를 설명하는 다른 메트릭과 구별하는 것이 중요합니다. 성능의 다른 측면을 측정하기 때문입니다.
FLOP은 유용한 기준선을 제공하지만 모델 성능의 모든 것을 알려주지는 않습니다. 다음 사항을 고려하지 않습니다. 메모리 액세스 비용(데이터를 프로세서로 이동하는 데 드는 에너지와 시간)은 고려하지 않습니다. 메모리 액세스 비용을 고려하지 않습니다. 또한, 작업 활성화 함수(예: ReLU)와 같은 연산 또는 정규화 레이어와 같은 연산은 FLOP 수가 적지만 여전히 시간을 소모합니다. 따라서 FLOP은 실제 벤치마킹과 함께 다음과 같은 대상 하드웨어에서 실제 벤치마킹과 함께 사용해야 합니다. 라즈베리 파이와 같은 대상 하드웨어에서 실제 벤치마킹과 함께 사용해야 정확한 성능.