[모델 계산량] FLOPS, FLOPs 개념 및 차이점
Computer Vision

[모델 계산량] FLOPS, FLOPs 개념 및 차이점

반응형

딥러닝에서 모델 계산량(FLOPS, FLOPs) 은 모델이 얼마나 연산량이 많은지, 얼마나 효율적인지를 나타내는 지표임.

 

 


아래 내용을 한 문장으로 요약하자면,

 

FLOPS is a unit of speed.

FLOPs is a unit of amount.


 

 

 

 

FLOPs  (FLoating point OPerations)


  • 기억하기 위한 키워드 : " 연 산 량 "
  • 실제 계산량을 나타내는 단위
    • ex) 모델 A vs 모델 B 비교 중이라면,
      • FLOPs가 큰 모델일수록 많은 연산량 요구 = 모델의 결과(output) 생성 느릴 가능성 ▲
    •  ex) 클라우드 환경에서 큰 FLOPs의 모델을 계속 학습한다면,
      • 비용 증가 가능성 ▲
  • 모델 전체가 얼마나 많은 floating point(부동 소수점)을 연산하는지를 나타내는 지표

 

 

 

 

 

 

FLOPS  (FLoating point Operation Per Second)


  • 기억하기 위한 키워드 : " 연 산 속 도 "
  • Computing Power를 나타내는 말.
  • 얼마나 빨리 계산을 처리할 수 있는지에 대한 단위
  • 컴퓨터의 성능을 수치로 나타낼 때 주로 사용하는 단위 (위키백과)
  • 1초에 얼마나 많은 floating point(부동 소수점)을 연산하는지를 나타내는 지표

 

 

FLOPS는, 속도의 관점이므로 모델을 생성하고 학습하는 단계에서 본인의 컴퓨터파워에 따라 달라질 수 있음.

  • ex) 임베디드 환경이라면,
    • RTX A7000를 장착한 컴퓨터보다 당연히 FLOPS가 낮을 것임.

 

 

 

 

 

 

 

FLOPS, FLOPs 둘다 Floating point(부동 소수점)에 대해서 이야기하는 것이니,

한번 알아보자.

Floating point (부동 소수점) 이란?


 

개요

컴퓨터는 수를 이진법으로 표현하기 때문에 표현할 수 있는 숫자의 개수가 정해져있음.

  • ex) 4bit = 2^4 = 16개.    즉. 4비트는 16개의 수를 표현할 수 있음.

실수의 개수는 무한하기 때문에 컴퓨터에서 모든 실수를 완벽하게 표현하는 것은 불가능함.

그래서 나온 개념이 Floating point.

 

 

 

맛보기

사람은 십진법을 많이 쓰는데, 이를 이진법으로 바꿔서 표현한 뒤, 정규화 하며 2의 지수를 곱해주는 형태로 변환함.

 

ex) 13.1875를 Floating point로 표현해보자.

이진수로 변환하자면,

소수점 위 부분 : 13 = 8 + 4 + 1 = 1101

소수점 아래 부분 : 0.1875 = 0011 (원리 알고싶다면 클릭)

소수점 아래 부분 2진법으로 바꾸는 과정 (위 링크 클릭)

즉, 13.1875 = 1101.0011

 

이렇게 표현 해 놓으면 컴퓨터에서 실수를 나타내는게 문제가 없어 보인다.

하지만, 소수점 아래 자릿수들이 순환하는 ' 순환소수 ' 일 경우에는 문제가 발생하므로

컴퓨터에서는 '부동 소수점'이라는 것을 사용하여 실수를 표현한다.

그리고 '부동 소수점'을 표현하는 표준화 방식인 ' IEEE 754 ' 가 있다.

 

해당 부분까지 이야기하면 포스팅이 너무 길어지므로 관련 포스팅 링크를 걸어두겠다.

부동 소수점(Floating Point)의 표현(1)
부동 소수점(Floating Point)의 표현(2)
부동 소수점(Floating Point)의 표현(3)

 

위 포스팅을 기반으로

IEEE Floating point 방식을 거쳐 32bit Float로 13.1875를 표현한다면,

" 01000001 01010011 00000000 00000000 " 가 된다.

 

 

 

 

 

 

 

 

 

 

Tip) 현업에서 네트워크 성능평가를 위해 아래 표와 같이 FLOPs를 사용함.

Model FLOPs #Params Accuracy(%) TestDataset
EmoNet 16.94G 14 M 75.89 AffectNet-8
(Partial)

 

 

 

 

 

참고자료

https://hoya012.github.io/blog/Mixed-Precision-Training/

https://roadtodeveloper.tistory.com/29

 

반응형