업무외시간 2020. 11. 19. 14:13

모델의 efficiency를 설명할 때 주로 사용되는 metric인 FLOPs (floating point operations)는 다음과 같이 계산될 수 있다.

 

matrix A의 shape이 (m, p)이고 matrix B의 shape이 (p, q) 일 때 dot(A, B)의 FLOPs는 mq(2p-1)이다. dot operation이 row vector와 column vector사이의 곱하기와 더하기 연산으로 수행되는 것을 생각해보면 곱하기에 대해서는 mqp번, 더하기 연산은 mq(p-1)번 수행된다. (n개 elements를 더하려면 n-1번을 수행) 그러므로 총 FLOPs는 mqp + mq(p-1) = mq(2p-1)이 된다.

 

Tensorflow에서 제공하는 profiler는 2mqp로 계산되는데 여러 사람의 의견을 종합해보면 더하기가 in-place로 수행되는 경우에는 2mqp가 맞는 것으로 추측된다.

 

count = 0

for i in range(10):

    count += i # 더하기가 10번 수행됨

 

References

[1] Stack Overflow