CNN 은 7개의 중첩된 반복문으로 표현될 수 있다 (그림 a). 그러나 이를 SPM 기반 매니코어 환경에서 수행할 때에는 데이터 이동의 단위나 루프 수행 순서에 따라 매우 많은 방법으로 수행할 수 있으며, 이를 수행 방법 (Execution Method) 라고 한다. 구체적으로 다음과 같은 세 가지 요소에 의해 CNN 의 수행 방법이 결정되며, 그림은 최종적인 representation 을 설명하고 있다.
N_DRAM
, N_SPM
, N_RF
로 루프를 분할한 것을 볼 수 있으며 각 단계가 지날 때마다 dma()
, access_SPM_and_comm_NoC()
함수를 통해 데이터를 상위 메모리로 전달하는 것을 볼 수 있다.N_SPATIAL
, ...
루프로 표현되어 있으며 각 코어에 분배된 코드는 동시에 병렬적으로 수행되게 된다.위와 같은 방법으로 하나의 CNN 응용의 수행 방법을 찾게 되면 탐색 공간은 수십억 개 이상의 넓은 공간이 된다. 따라서 최적의 수행 방법을 찾기 위해서는 이러한 탐색 공간을 급격하게 줄일 수 있는 방법이 필요한데, 본 연구에서는 휴리스틱을 포함한 다양한 pruning 기법을 제안하여 탐색 공간을 압축하였다.
아래의 표는 Loop Reordering 을 통하여 만들 수 있는 5040 개의 수행 방법이 가장 안쪽에 있는 루프 변수 (innermost loop variable) 에 따라 15개의 class 중 하나에 포함됨을 나타내고 있다. 매 iteration 이 끝날 때마다 어떤 데이터는 재사용이 가능하고 어떤 데이터는 새로 하위 메모리에서 가져와야 하는데, 본 연구에서는 이 데이터 재사용 패턴이 innermost loop variable 에 의존하며 그 재사용 횟수는 얼마나 되는지를 밝혔다.
이 외에도 Resource Utilization 에 따른 pruning, 지나치게 많은 메모리, DMA access 를 요구하는 수행 방법 제외, 자주 사용되는 데이터를 캐싱하고 병렬화를 구현하는 등 소프트웨어 구현 최적화를 통하여 탐색에 걸리는 시간을 감소시켰다.
Pruning 기법을 통해 탐색 공간을 압축한 후, 남은 수행 방법들을 평가하기 위하여 Execution Model 을 개발하였다. 이 모델은 수행 방법을 결정하는 세 가지 요소 (tiling, spatial ordering and loop reordering) 을 입력으로 받아 에너지와 수행 시간을 예측하는 모델로써 빠른 속도로 수행될 뿐만 아니라 다양한 corner-case 를 고려한 정확한 수치를 제공한다.
기존 유명한 dataflow 알고리즘과 EDP 를 비교하는 방식으로 성능을 평가하였다. 응용으로는 ImageNet 분류를 위해 학습된 ResNet 이 사용되었다. 아래 그래프는 Output stationary (Oy / Ox), Weight Stationary (Fy / Fx), Row Stationary (Oy / Fy) 및 TPU style (M / C) 과의 EDP 및 수행시간 차이를 나타내고 있다.
본 기법은 휴리스틱에 의존하지 않고 대부분의 탐색 공간을 확인함으로써 평균 9.16 배의 EDP 향상 및 5.83 배의 수행시간 향상을 달성하였다.
아래 그래프의 경우 본 연구의 pruning 성능을 나타낸 것이다. 그래프에서 확인할 수 있듯이, 아무런 pruning 을 적용하지 않았을 때에는 수 일의 시간이 걸리는 탐색을 2.56% 의 성능 loss 만으로 초 단위로 감소시킨 것을 볼 수 있다 (9020 배 감소).
향후 계획으로 본 연구에 사용된 Execution Model 을 시뮬레이터로 발전시켜 더욱 다양한 최적화 기법을 적용하고 정밀한 성능 측정을 하려고 한다. 정확한 timing 을 평가할 수 있는 시뮬레이터를 기반으로 최적에 수행 방법을 찾는 것 뿐만 아니라 이 수행 방법에 적용할 수 있는 다양한 최적화 기법을 개발하려고 한다.