본문 바로가기
DL/modules

FLOPs

by hits_gold 2024. 1. 25.
반응형

FLOPs는 다양한 딥러닝 모델들의 논문을 볼 때 연산량을 나타내는 지표로써 많이 사용된다.

 

FLOPs를 포함한 연산량과 관련된 지표를 간단히 정리하면 다음과 같다.

  1.  FLOPs는 FLoating point Operations의 약자로, 부동소수점 연산을 의미한다. FLOPs의 연산은 산칙연산을 포함해 Root, log, exp 등의 연산도 포함되며, 각각을 1회의 연산으로 계산한다.
  2.  FLOPS는 Floating point Operations Per Second로, 초당 부동소수점 연산을 의미함으로, 하드웨어의 퍼포먼스 측면을 확인하는 지표이다.
  3. MAC은 현대 하드웨어들이 tensor의 연산을 할 때 사용되는 명령어 셋인 FMA가 a*x+b를 하나의 연산으로 처리하여 이 연산이 몇 번 실행되었는지 세는 것이다. 따라서 1MAC = 2FLOPs이다.

 

딥러닝 모델 내에서 주로 사용되는 연산들의 FLOPs는 다음과 같다.

 

Dot product

Dot product는 벡터의 내적으로, 길이가 n인 두 벡터를 내적할 때 곱셈이 n번, 덧셈이 n-1번 실행되어 총 FLOPs는 2n-1이다.

 

Fully connected layer

  FC layer는 말 그대로 input과 output이 완전히 연결되어 있다. input이 n개, output이 m개라면 input에 대한 내적이 output 개수 만큼 계산되기 때문에 총 FLOPs는 (2n-1)xm이다.

 

Convolution 연산

 1. Standard convolution

 

 batch size를 제외한 conv 연산의 input은 CxHxW의 3차원 tensor일 때 kerner_size가 KxK라면 총 FLOPs는 아래와 같다.

 위 수식에서 여기서 K*K*Cin까지는 KxK 사이즈의 kernel이 한 번 사용될 때 input의 channel개수 만큼 연산됨을 의미한다. 뒤의 C_out, H_out, W_out이 전부 output의 차원으로 계산되는 이유는, stride와 padding의 결과물로 output의 개수가 정해지고, 결국 앞의 K*K*Cin의 연산의 횟수가 output feature map의 크기만큼 이루어지기 때문이다.

 위 수식에서 kernel이 적용될 때의 덧셈이 제외되었는데, 전체 연산에 비해 이 횟수는 매우 적기 때문에 보통 생략한다고 한다.

 

2. Depth-wise Seperable Convolution

 

  Standard convolution의 연산이 상당히 많기 때문에, 많은 연구들에서 이런 연산을 줄이고자 노력했고, 대표적인 방법이 Depthwise seperable convolution이다.

 

 

 

 위 그림은 Depth-wise Convolution을 나타낸 것으로, KxK 사이즈의 kernel이 output feature map의 크기만큼 연산되어 FLOPs가 같아 아래와 같다.

 

 

 

 

 Seperable convolution은 Point-wise convolution으로, Point-wise convolution은 1x1 convolution이다. 따라서 총 FLOP는 아래와 같다.

 

따라서 총 Depth-wise Seperable Convolution의 FLOPs는 다음과 같다.

 따라서  Standard convolution과 비교해 총 FLOPs가 1/Cin배 줄어드는 효과가 있다.

 

 

Activation function

  1. ReLU는 x->y를 일대일 대응시키기 때문에 길이가 n인 input이라면 FLOPs는 n이다.
  2. Sigmoid는 한 번의 연산인 y = 1/(1+exp(-x))에서 연산이 4번 일어나기 때문에 길이가 n인 input이라면 FLOPs는 4n이다.

 

반응형

'DL > modules' 카테고리의 다른 글

BPE(Byte Pair Encoding), WordPiece Tokenization  (2) 2024.01.25
Loss function  (1) 2024.01.22
Normalization의 종류  (0) 2024.01.16