본문 바로가기
개발/🦾 머신러닝, 딥러닝

[모델 성능 평가 지표] - FLOPs vs MACs, FLOPS

by 썸머뮤트 2024. 5. 13.
📌 요약
모델 성능 평가 지표
  - FLOPs: 부동소수점 연산(사칙연산, log, 지수 연산 등)의 개수
  - MAC: 곱셈 후 덧셈 연산의 개수
하드웨어 성능 평가 지표
  - FLOPS: 초당 수행할 수 있는 부동소수점 연산의 횟수 

 

논문을 읽다보면 제안하는 모델의 심플함을 주장하면서 모델의 연산량을 보여주는 경우가 많은데,

오늘은 이 연산량 측정에 사용되는 지표인 FLOPs  MAC에 대해 알아보고,

FLOPs와 거의 같은 이름을 가지고 있는 FLOPS에 대해서도 알아보도록 하겠습니다.

 

1. FLOPs 

FLOPs는 FLoating point OPerations 즉 부동소수점 연산의 약자로,

사칙연산, log, 지수 연산 등을 각각 1회 연산으로 계산하는 방법입니다.

예를 들어 $ax+b$ 의 FLOPs를 측정한다고 하면 $a \times x$ 와 $+ b$ 두 번의 사칙연산이 포함되므로 FLOPs는 2가 됩니다.

 

2. MAC 

MAC은 Multiply-ACcumulate의 약자로,

이름에서 알 수 있다시피 곱하고 더하는 연산이 몇 번 시행되었는지를 측정하는 지표입니다.

 

하드웨어에는 보통 FMAC-Unit이나 MAC-Unit이라는 $ax+b$ 와 같은 곱셈 후 덧셈 연산을 한 번에 수행할 수 있는 유닛이 있는데, 이 유닛을 몇 번 사용했는지를 나타내는 지표가 MAC이라고 할 수 있습니다.


FLOPs와 달리 곱셈 후 덧셈을 한 번의 연산으로 치기 때문에 $ax+b$의 MAC은 1이 됩니다.

 

3. FLOPS 

마지막으로 FLOPS는 FLOPs와 비슷하지만 의미하는 바가 상당히 다릅니다.

FLOPS는 FLoating point Operation Per Second 의 약자로,  FLOPs가 모델의 연산량인 소프트웨어의 성능 측정에 주로 사용되는 지표인 반면, FLOPS는 GPU와 같은 하드웨어적의 성능 측정에 주로 사용되는 지표로, 1초에 수행할 수 있는 FLOPs를 의미합니다.

Titan RTX s RTX 3090 FLOPS

보통 위와 같은 GPU 성능 비교 사이트에서 찾아볼 수 있고, 위와 같은 표를 보면 해당 하드웨어로 1초에 몇 FLOPs의 연산을 수행할 수 있는지를 알 수 있습니다.

 

대소문자 하나로 FLOPs와 FLOPS의 의미가 상당히 달라지니 주의해서 보고 다녀야겠네요 😂