Deep Learning/Optimization (Hardware)

Efficient Processing of Deep Neural Networks:from Algorithms to Hardware Architectures - 1 : 딥러닝 가속기 평가 척도

jhson989 2022. 4. 21. 20:02

NeurIPS 2019에서 소개된 자료 [1]은 딥러닝 가속기에 대하여 잘 정리해 놓았는데 특히 어떤 기준으로 딥러닝 가속기가 효율적인지를 평가할 수 있는 지, 그 척도에 대하여 잘 정리하여 제안한다. 

성능 평가 척도는 그것의 주사용 목적, 앞으로의 챌린지, 설계 방향성을 가르쳐준다고 생각하여, 자료 [1]을 바탕으로 딥러닝 가속기의 평가 척도 및 설계 시 고려사항을 정리해보고자 한다.

 

 

 

Efficient Processing of DNNs

이 튜토리얼 [1]은 DNN의 효율적인 processing에 대하여 논의하고자 한다. 단순히 빠르게 계산하는 것이 아닌, 좀 더 실사용에 효율적인 계산을 목표로 무엇이 고려되어야 하는 지에 대하여 정리하였다.

빠른 계산은 매우 중요한 processing의 평가 척도이다. 계산이 빨라야 빠르게 학습할 수 있고, 추론도 빠르게 할 수 있다. 그러나 단순히 빠른 계산이라고 한다면 매우 모호한 성능 평가 척도이다. 계산의 속도는 throughput 혹은 latency 둘다를 의미할 수 있다. throughput은 정해진 시간동안 얼마나 많은 계산을 할 수 있는 지이며, latency는 한 계산을 얼마나 빠르게 할 수 있는 지를 나타낸다. 버스와 스포츠카를 비교한다면 스포츠카가 목적지까지는 빨리 도착하겠지만(latency가 짧다), 정해진 시간동안 수송할 수 있는 사람의 수는 버스가 훨씬 많을 것(throughput이 크다)이다. 딥러닝 학습의 경우 throughput이 큰게 더 중요할 것이다. 자율주행차에서의 딥러닝 추론 시에는 latency(1초에 30번은 무조건 차선 검출을 해야 한다 등)는 꼭 지켜져야 할 성능 중 하나일 것이다.

전력이 제한되는 임베디드 환경에서는 계산속도보다는 전력 당 얼마만큼의 계산을 할 수 있는지가 중요할 것이다. 스마트폰이나 드론 등 제한된 작은 배터리로 동작할 경우, 전력 효율적으로 계산하는 것이 중요할 것이다. 이처럼 다양한 환경에서 딥러닝이 사용될 수 있고, 상황에 따라서 중요한 성능 척도가 달라질 것이다. 

Fig 1. 다양한 환경, 다양한 목적으로 딥러닝 애플리케이션은 사용되고, 그에 따라 네트워크가 설계됨 [1]

이 논문은 이렇게 다양한 딥러닝 사용 환경뿐만 아니라 딥러닝 레이어들의 계산 특성, 딥러닝 레이어들의 최적화 기법  등을 종합적으로 분석하여, 딥러닝 프로세서 개발 시 무엇을 고려해야 하는 지를 정리한다. 나아가 어떻게 그 프로세서가 효율적인지를 평가하는 척도를 제안한다. 이를 통해 다음 3가지에 대하여 답하고자 한다.

 

  • 평가 척도 : What are the key metrics that should be measured and compared?
  • 앞으로의 도전 과제 : What are the challenges towards achieving these metrics?
  • 디자인 고려 사항 : What are the design considerations and tradeoffs?

 

 

 

Key Metrics

이 논문이 제안하는 평가 척도는 다음과 같다.

 

  • Accuracy
    • 추론 정확도 (딥러닝 task를 잘 처리할 수 있는가?)
    • 딥러닝 task와 데이터셋에 따라서 추론 정확도는 달라질 수 있음
    • 해당 하드웨어가 복잡한 딥러닝 네트워크도 효율적으로 처리할 수 있는가를 보여야 함
    • 성능 평가 시 전반적인 task와 데이터셋에 대한 테스트를 진행해보아야 함
  • Throughput
    • 계산 속도 (초당 얼마나 많은 계산을 할 수 있는가?) 
    • 성능 평가 시 큰 데이터를 사용하여 테스트를 진행해보아야 함
  • Latency
    • 계산 속도 (하나의 계산을 얼마나 빠르게 할 수 있는가?)
    • Interactive task에 필수 (즉각적인 반응이 가능해야 함)
  • Energy and Power
    • 전력 사용량
    • off-chip memory access가 전력 사용에 가장 많은 영향을 끼침. off-chip memory access를 제외하고 분석하면 안됨
    • 성능 평가 시 off-chip memory access에 대한 분석이 필요 
  • Hardware Cost
    • 가격
    • on-chip memory storage, ALU이 개수, chip 사이즈 등이 영향을 끼침
    • on-chip memory를 많이 사용하여 계산 속도는 빠르지만 상용화할 수 없는 가격으로 제작될 수 있음
  • Flexibility
    • 탄력성? (다양한 딥러닝 기법과 네트워크 모두를 효율적으로 계산할 수 있는가?)
    • 성능 평가 시 일반적인 딥러닝 네트워크 전반에 걸친 성능 테스트를 진행해보아야 함
  • Scalability
    • 확장성 (추가 리소스를 투입하면 성능을 증가시킬 수 있는가?)

[1]은 하드웨어 디자인 및 그것의 tradeoff에 대한 공정한 평가를 위해서는, 위의 7가지 평가 척도 모두 고려되어야 한다고 주장한다. Accuracy에 대하여 고려하지 않고 쉬운 딥러닝 task만을 선택하여 성능 평가를 진행할 경우, 실제 task 해결에 딥러닝 모델 및 해당 하드웨어를 사용할 수 있는 지 알 수 없다. Off-chip memory access를 고려하지 않고 on-chip 전력 사용량만 고려할 경우, 실제 사용 환경에서의 전력사용량을 알 수 없다.

 

 

Key Design Objectives of DNN Processor

위 7가지 척도는, 그것들을 만족시키기 위해 DNN 프로세서 디자인 시 무엇이 고려되어야 하는 지를 잘 보여준다. 

[1]은 다음 3가지 고려 사항들을 예시로 설명한다.

 

  • Increase Throughput and Reduce Latency
    • 계산 속도 향상을 위해서 무엇을 고려해야 하는가?
    • 연산(특히 multiply and accumulate)의 latency를 줄이자
    • 병렬성을 높이자 (병렬로 처리될 수 있는 ALU의 개수를 늘리자)
    • Utilization을 높이자 (모든 ALU가 쉬지 않고 일하게 하자)
  • Reduce Energy and Power Consumption
    • 에너지 사용량을 줄이기 위해서 무엇을 고려해야 하는가?
    • 데이터 재사용성을 높이자 (불필요한 데이터 이동을 줄이자. 앞선 결과를 다시 DRAM에 저장할 필요없이 바로 다음 연산에 사용하자)
    • 연산에 사용되는 에너지를 줄이자 (ALU를 효율적으로 설계하자)
  • Reduce overhead of supporting flexibility
    • 일반적인 네트워크 모델 모두를 효율적으로 처리하기 위해서는 무엇을 고려해야 하는가?
    • 다양한 layer shape, data type, precision, sparsity를 모두 고려하여 설계하자

 

 

 

Reference

[1] Sze, Vivienne. Efficient Processing of Deep Neural Networks: from Algorithms to Hardware Architectures. NeurIPS 2019 tutorial.