2편에서는 아래 구성에서의 3을 다루었고, 이번 3편에서는 4.performance에 대해 설명을 해볼 것이다.
1. TPU origin : TPU 왜 만들게 되었는지
2. TPU architecture : TPU의 구성 및 동작 원리
3. CPU, GPU, TPU 연산량, 구조 비교
4. performance : CPU, GPU와 비교한 TPU의 성능
Performance
benchmark를 위해 datacenter의 95%의 workload를 나타내는 오늘날(당시에) 유명한 NN(nueral network, 인공신경망)의 3종류를 2개씩 총 6개의 NN모델을 예시로 들었다. 3종류의 NN은 MLP, LSTM(RNN의 일종), CNN이고, 각 모델의 정보는 다음과 같다. 당시에 CNN의 연산을 가속하는 것에 대한 연구가 인기가 있었는데, 실제로 CNN은 전체 datacenter의 5%의 workload만을 차지하였다. (weight mean으로 계산했을때 CNN의 영향은 매우 미미하다고 볼 수 있다)
performance의 bottleneck(성능에 제한을 주는 것)의 원인을 파악할 수 있는 HPC(high-performance computing)의 roofline performance model을 사용하여 performance를 측정하였다. 모델이 on-chip caches에 맞지 않아, computation이나 memory에 제한을 받는 다는 것을 가정하여 둘 중 어느 bottleneck에 영향을 받는 것인지 파악하는 것이다.
위 그림은 TPU의 6개의 모델의 성능값과 TPU의 roofline model의 그래프이다.
roofline model의 x축과 y축이 의미하는 바를 보면 y축은 throughput(처리량)을 말하고 x축은 연산강도, 쉽게 말하면 데이터 재사용 정도를 말한다.
그래프의 모양은 두 가지로 나뉠 수 있는데, 편평한 부분과 경사진 부분이다. 편평한 부분의 y값은 TPU가 낼 수 있는 최고 성능을 의미하고, 편평한 부분은 낼 수 있는 최고 성능을 내고 있는 부분이라고 볼 수 있다. 반면 경사진 부분의 y값은 편평한 부분의 값보다 작은 값을 가지므로, 최고의 성능을 내지 못하는 부분이라고 볼 수 있다. 이 부분은 데이터 재사용 정도가 낮아서 memory bandwidth가 작기 때문에 성능에 제한을 받는다. 데이터를 거의 재사용하지 않으므로 연산에 필요한 데이터를 한번에 가져올 수 없어서 성능에 제한을 주는 것이다. 경사진 부분은 memory bound라고 하고, 편평한 부분은 computation bound라고 한다(하드웨어의 연산 성능에 의해 throughput 제한을 받는 부분이므로 compuation bound라고 한다). 경사진 부분과 편평한 부분이 이어진 것이 꼭 지붕의 모양과 같다고 해서 roofline model이라고 한다.경사진 부분이 길수록 memory bandwidth의 제한을 많이 받는다는 것을 의미한다.
위의 TPU의 roofline model을 살펴보자면 convolution연산에 의해 데이터 재사용량이 많은 CNN이 computation bound에 속하고, 재사용량이 적은 MLP와 LSTM이 memory bound에 위치한다. 또한 TPU 성능 측정에 사용된 6개의 DNN 모델 대부분이 roofline에 걸쳐있는데, 이는 대부분의 모델이 낼 수 있는 최고의 성능으로 측정되었음을 알 수 있다. CNN1만 roofline보다 밑에 위치하였는데, CNN1은 얕은 feature를 가지기 때문에 256x256개의 MACs의 절반만 사용하게 된다. 그래서 한 clock cycle에 절반의 performing matrix operation을 갖게 되어서 낮은 utilization을 가지게 된다.
이제는 TPU 뿐만아니라 CPU, GPU, TPU의 roofline model을 보겠다. 파란색 roofline과 별모양 점들이 TPU의, 빨간색 roofline과 삼각형 점들이 GPU의, 그리고 주황색 roofline과 동그라미 점들이 CPU의 roofline model이다.
그래프의 모양을 보면 TPU가 CPU, GPU보다 높은 최고의 성능을 내지만 memory bandwidth의 제한을 훨씬 많이 받는 것을 알 수 있다. TPU의 6개의 모델은 roofline에 걸쳐있는 반면, CPU와 GPU의 6개의 모델은 roofline보다 밑에 위치한다. 이는 CPU와 GPU로 DNN 모델을 실행했을때 최고의 성능을 내지 못하는, 즉 낮은 utilization을 보인다고 할 수 있다. 이런 결과가 나온 이유는 CPU, GPU, TPU에 대해 response time을 제한해서 성능을 측정했기 때문이다. response time은 모델에 input을 넣고 output을 내는데까지 걸리는 시간을 의미하는데, DNN을 사용할때 사용자가 불편하지 않게 하기 위하여 response time이 너무 오래걸리지 않도록 7ms정도의 시간만 걸리도록 제한하여 측정하였다. TPU는 연산처리 속도가 빠르기 때문에 response time을 제한하여도 높은 성능을 보인다. 실제로 CPU와 GPU를 response time을 제한했을때는 제한하지 않았을때보다 2.3배에서 2.7배정도 느리고, TPU의 경우 1.2배 정도 느리다고 한다.
위 그래프는 energy proportionality(에너지 비례성)를 나타내주는 그래프인데, energy proportionality는 서버가 일(workload)의 양과 소비하는 전력의 관계가 비례할 수록 energy proportionality를 만족하고 있다고 한다. Haswell은 CPU의 일종, K80은 GPU의 일종을 말한다. CPU, GPU, TPU순으로 energy proportionality를 잘 만족하고 있다. energy proportionality를 만족하면 많은 에너지 절약을 위한 방법을 사용할 수 있다. 예를 들어 에너지를 적게 소모하는 CPU를 만들고 싶다면, workload를 100%에서 10%로 줄였을때 원래의 에너지의 56%로 소모량을 줄일 수 있다. 그러나 TPU의 경우 workload를 10%로 줄여도 원래보다 사용하는 에너지량이 88%로 조금 줄어들어서 에너지를 비교적 적게 사용하는 모델을 만들기 쉽지 않다. 위 그래프는 CNN0을 통해 측정한 것인데, 다른 모델로 측정하여도 비슷한 energy proportionality를 보인다.
이 논문은 구글사에서 발표한 TPU version1의 구조 및 동작과 CPU, GPU와 비교한 성능을 설명하였다. TPU가 CPU, GPU보다 월등히 좋은 점은 에너지를 적게 소모하여 많은 양의 DNN연산을 처리할 수 있다는 것이다. version1을 고안한 당시에는 간단한 DNN 모델들을 위하여 칩을 설계하였지만, version4까지 고안된 현재에는 보다 복잡한 DNN 모델을 사용하는 경우가 많아서, TPU 구조에도 조금 변화가 생겼다고 한다.
※ 공부하고 있는 단계라 내용에 부족한 부분이 많습니다. 조언이나 지적은 감사히 받아들이고 수정하겠습니다.
[TPU 논문 리뷰]
(1) TPU architecture : TPU의 구성 및 동작 원리
(2) CPU, GPU, TPU 연산량, 구조 비교