히비스서커스의 블로그

[Python] model의 FLOPs 계산하기 (feat.calflops) 본문

Programming/Python

[Python] model의 FLOPs 계산하기 (feat.calflops)

HibisCircus 2024. 11. 8. 11:39
728x90

딥러닝 논문을 보다보면 model의 FLOPs에 관해서 비교하는 것을 심심치 않게 볼 수 있다.

 

(Li et al. 2018)

 

 

FLOPs와 비슷한 개념으로 MACs , FLOPS가 존재하는데 이들의 차이 간단한 차이는 다음과 같다.

 

FLOPs는 FLoating point OPerations 의 약자로 딥러닝 model의 연산량을 나타낸다.

MACs는 Multipl-Accumulate Computations의 약자로 딥러닝 모델에서 FMA가 몇 번 연산되었는지 나타낸다.

(FMA는 Floating point Multiply and Add operation의 약자로 A*x + B를 하나의 연산으로 처리한다.)

FLOPS는 FLOating point Operations per Second의 약자로 GPU의 성능을 나타낸다.

 

참조: https://hoya9802.github.io/deep-learning/flops/

 

따라서, FLOPS는 높을수록 GPU의 성능이 좋은 것이고, FLOPs는 (동일한 성능일 가지는 model일 경우) 낮을수록 최적화된 모델인 것이다. FLOPS는 GPU의 성능을 직접 검색해서 알아볼 수 있는데 내가 custom한 혹은 내가 사용하고 있는 model의 FLOPs는 어떻게 계산할 수 있을까?

 

https://github.com/MrYxJ/calculate-flops.pytorch

 

GitHub - MrYxJ/calculate-flops.pytorch: The calflops is designed to calculate FLOPs、MACs and Parameters in all various neural

The calflops is designed to calculate FLOPs、MACs and Parameters in all various neural networks, such as Linear、 CNN、 RNN、 GCN、Transformer(Bert、LlaMA etc Large Language Model) - MrYxJ/calculate-flop...

github.com

 

위의 깃헙 링크는 model의 FLOPs를 계산할 수 있도록 만든 라이브러리다. 간단하게 model의 입력 tensor의 shape과 모델을 넣어주면 FLOPs 뿐 아니라 MACs, parameter 등도 같이 구해준다. torchvision, timm 뿐 아니라 hugging face의 model들도 연산을 구할 수 있으니 매우 편리한다. 또한, custom하여 만든 model에도 적용가능하므로 내가 사용한 model의 효율을 논문 작성할 때나 보고서를 작성할 때 기입하여 더욱 설득력을 높일 수 있다.

 

 

728x90