Source-linked AI summary

High-Throughput CNN Inference on Embedded ARM big.LITTLE Multi-Core Processors

Siqi Wang, Gayathri Ananthanarayanan, Yifan Zeng, Neeraj Goel, Anuj Pathania, Tulika Mitra

arXiv:1903.05898v3cs.LGcs.DCcs.PF

TL;DR

ARM big.LITTLE 프로세서에서 효율적인 CNN 추론은 이기종 클러스터 간에 kernel을 병렬화할 때 발생하는 클러스터 간 통신 오버헤드로 인해 제약된다. Pipe-it은 layer-level pipelining, 성능 예측, design-space exploration을 활용해 stage를 균형화하며, baseline 대비 평균 39% throughput 향상을 달성한다.

  • 문제

    이기종 ARM big.LITTLE core가 클러스터 간 convolution kernel을 병렬화하면 클러스터 간 통신 오버헤드가 CNN 추론 throughput을 제한한다.

  • 방법

    Pipe-it은 core configuration별 layer 실행 시간을 예측하고 heuristic design-space exploration을 사용해 CNN layer를 균형 잡힌 pipeline stage에 할당한다.

  • 결과

    Pipe-it은 동종 고성능 Big cluster만 사용하는 경우보다 평균 throughput을 39% 향상한다.

  • 시사점 및 한계

    Layer-level splitting은 CNN 추론 throughput을 위해 kernel-level splitting보다 이기종 multi-core 자원을 더 효과적으로 활용할 수 있다.

Abstract

from arXiv · show

IoT Edge intelligence requires Convolutional Neural Network (CNN) inference to take place in the edge devices itself. ARM big.LITTLE architecture is at the heart of prevalent commercial edge devices. It comprises of single-ISA heterogeneous cores grouped into multiple homogeneous clusters that enable power and performance trade-offs. All cores are expected to be simultaneously employed in inference to attain maximal throughput. However, high communication overhead involved in parallelization of computations from convolution kernels across clusters is detrimental to throughput. We present an alternative framework called Pipe-it that employs pipelined design to split convolutional layers across clusters while limiting parallelization of their respective kernels to the assigned cluster. We develop a performance-prediction model that utilizes only the convolutional layer descriptors to predict the execution time of each layer individually on all permitted core configurations (type and count). Pipe-it then exploits the predictions to create a balanced pipeline using an efficient design space exploration algorithm. Pipe-it on average results in a 39% higher throughput than the highest antecedent throughput.

I. 서론

CNN inference는 실시간 edge 애플리케이션에서 점점 중요해지고 있지만, ARM big.LITTLE 프로세서에서 kernel 수준 병렬화는 클러스터 간 통신 오버헤드로 어려움을 겪는다. Pipe-it은 성능 예측과 design-space exploration을 활용해 동종 코어 클러스터 간에 CNN layer를 pipeline으로 구성함으로써 이 한계를 해결하고, throughput을 39% 향상한다.

  • I. 서론: 전용 accelerator의 적용 범위가 제한적이므로 CPU는 여전히 실용적인 edge-inference 플랫폼이며, CNN 애플리케이션은 가용 자원의 동시 사용을 점점 더 요구한다.동기에는 ADAS, VR, AR과 같은 실시간 vision workload와 smart classroom 및 autonomous drone과 같은 multi-task 시스템이 포함된다.
  • I. 서론: 다른 클러스터의 Small core를 추가하면 클러스터 간 통신 오버헤드 때문에 kernel 수준 Heterogeneous Multi-Processing throughput이 급격히 감소한다.이 한계는 구현 품질이 아니라 kernel 수준 전략에서 비롯된다.
  • I. 서론: Pipe-it은 CNN layer를 이종 코어 클러스터에 분할하여 각 동종 코어 그룹이 pipeline stage로 고정된 layer 집합을 처리하게 한다.이 layer 수준 전략은 동일 layer의 kernel을 클러스터 간에 할당하는 것을 피하지만, network depth에 따라 mapping space는 지수적으로 증가한다.
  • I. 서론: Pipe-it을 사용해 전체 이종 multi-core를 활용하면 고성능 동종 Big cluster만 사용하는 경우보다 39% 평균 throughput 향상을 달성한다.Pipe-it은 예측된 convolutional-layer 성능과 design-space exploration을 결합해 pipeline 구성과 layer 할당을 선택한다.
  • I. 서론: Pipe-it은 network structure descriptor로부터 허용된 코어 유형과 개수에서의 convolutional-layer 성능을 예측한 뒤, 그 예측을 사용해 균형 잡힌 pipeline 구성을 찾는다.이 framework는 CNN layer의 다양한 자원 요구를 대상으로 하며, kernel 병렬화를 할당된 동종 클러스터로 제한한다.

II. 배경 · III. 서로 다른 수준에서의 공동 실행 · A. 커널 수준 분할

배경에서는 graph node가 코어 전반에서 convolution kernel을 실행하는 최적화 ARM CNN framework인 ARM-CL을 소개한다. 이기종 클러스터 간 kernel-level splitting은 cache 관련 통신 비용 때문에 대부분의 CNN에서 Big-cluster-only 실행보다 throughput을 높이지 못한다.

  • II. 배경: ARM-CL, Tencent NCNN, TVM [6]은 서로 경쟁하는 ARM CNN-inference framework이며, ARM-CL과 NCNN은 intensive convolution kernel을 위한 NEON acceleration을 지원한다.비교는 ARM-CL version 18.05를 사용한 Big cluster의 multi-threaded inference를 대상으로 기술된다.
  • II. 배경: ARM-CL은 CNN workload를 순차적으로 연결된 graph node로 표현하며, frontend가 graph construction을 담당하고 backend가 execution을 관리한다.graph API는 complex network를 지원하며, convolutional layer와 fully connected layer 같은 weighted layer를 Table I에 요약된 implementation으로 매핑한다.
  • II. 배경: 각 ARM-CL node에서 convolution은 NEON-accelerated im2col 및 GEMM kernel을 사용하며, 해당 연산은 여러 코어에 분산될 수 있다.runtime scheduler는 execution 중 kernel을 processing unit으로 dispatch한다.
  • II. 배경: 확장된 implementation은 여러 independent image graph를 동시에 실행하면서 graph 간 read-only weight와 bias를 공유한다.execution은 thread pinning과 minimal migration을 적용해 코어당 하나의 thread를 사용한다.
  • III. 서로 다른 수준에서의 공동 실행 · A. 커널 수준 분할: 하나의 cluster 내부에서 코어를 추가하면 kernel parallelization이 향상되지만, 이기종 cluster로 kernel splitting을 확장해도 throughput은 향상되지 않는다.이러한 한계는 ARM-CL thread-pool execution에서 관찰되며 Figure 3에 요약되어 있다.
  • A. 커널 수준 분할: 대부분의 CNN에서 kernel을 Big cluster에서만 실행하는 것보다 통계적으로 더 높은 throughput을 제공하는 Big/Small kernel-workload split은 없다.이 결론은 workload ratio에 대한 exhaustive search에서 도출되며 normalized throughput 비교로 설명된다.
  • A. 커널 수준 분할: cluster 간 execution은 평균 on-chip L2 access latency를 증가시킨다. cache conflict miss가 interconnect를 통해 다른 cluster의 L2 cache에서 처리될 수 있기 때문이다.cluster 내부의 parallel L2 access는 cluster의 SCU가 과부하 없이 처리하지만, working set을 cluster 간에 분할하면 추가적인 cache interaction이 발생한다.

B. 레이어 수준 분할 · IV. 설계 공간 · A. Convolutional Layer의 분할 지점

Pipe-it은 convolution이 CNN inference를 지배하고 더 깊은 layer일수록 일반적으로 필요한 processing이 적기 때문에 convolutional layer를 pipeline stage에 할당한다. 최적 split point는 network와 pipeline configuration에 따라 크게 달라지며, three-stage ResNet50 pipeline은 5.6 Img/s에 도달해 best two-stage pipeline보다 7% 높은 성능을 보인다.

  • B. 레이어 수준 분할: 평가한 모든 network에서 AlexNet을 제외하면 convolutional processing이 전체 forward-pass 시간을 지배하며, AlexNet에서는 fully connected layer가 지배적이다.따라서 대부분의 network에서 convolutional-layer allocation이 주요 초점이 된다.
  • B. 레이어 수준 분할: Convolutional-layer processing은 filtering이 intermediate data의 spatial size와 dimensionality를 줄이기 때문에 일반적으로 network depth가 깊어질수록 감소한다.초기 layer는 가장 큰 original input을 처리하는 반면, 후속 layer는 더 작은 feature map을 입력으로 받는다.
  • B. 레이어 수준 분할: Pipe-it은 intensive initial layer를 고성능 Big core에, 덜 intensive한 deeper layer를 저성능 Small core에 할당해 heterogeneous cluster의 부하를 균형화할 수 있다.할당된 layer 내부의 kernel은 각 cluster의 homogeneous core 사이에서 여전히 분할할 수 있으며, non-convolutional layer는 선행 convolutional layer와 연결된다.
  • B. 레이어 수준 분할: Layer-level splitting은 의존하는 layer를 함께 유지해 inter-cluster L2 conflict miss와 CCI load를 줄이는 동시에, 서로 다른 image가 cluster 전반에서 concurrently 실행되도록 한다.예를 들어 Big cluster가 image Z+1을 처리하는 동안 Small cluster는 image Z를 처리할 수 있다.
  • IV. 설계 공간: Convolutional-layer structure와 cluster performance가 크게 달라지므로 split point 선택은 non-trivial한 Pipe-it design-space 결정이다.Two-stage B4-s4 pipeline은 W−1개의 가능한 위치 중 하나의 split point X를 선택해야 하며, three-stage pipeline은 두 개의 split point를 선택해야 한다.
  • A. Convolutional Layer의 분할 지점: 최적의 ResNet50 B4-s2-s2 pipeline은 Layer 33과 45에 split point를 두어 5.6 Img/s를 달성하며, 이에 대응하는 최적 two-stage pipeline보다 7% 높은 throughput을 제공한다.첫 번째 split은 Big과 Small cluster를 분리하고, 두 번째 split은 두 Small-core stage를 분리한다.

B. 파이프라인 단계

Pipe-it은 파이프라인 단계를 동종 코어 유형으로 제한하고, 초기 convolutional layer에는 Big 코어를, 이후 layer에는 Small 코어를 할당한다. 이러한 제약하에서도 layer-level splitting 설계 공간은 너무 커서 전수 탐색이 불가능하다.

  • 파이프라인 설계 제약: 파이프라인 단계는 동종 코어 유형을 사용하며, 초기 convolutional layer에는 Big 코어를, 후속 layer에는 Small 코어를 할당한다.이 설계에서는 클러스터 간 kernel-level splitting이 유용하지 않으므로 한 단계 내 이종 코어 유형을 배제한다.
  • 파이프라인 설계 공간: pB와 ps의 실행 가능한 범위 제약하에서 Big 단계와 Small 단계의 수를 변화시켜 파이프라인 수를 열거한다.Equation (1)은 파이프라인 구성을 세고, Equation (2)는 W개의 convolutional layer를 갖는 CNN의 layer-level 설계 지점을 센다.
  • 파이프라인 설계 공간: 2개에서 8개까지의 단계를 사용할 때 8코어 프로토타입 보드에서는 64개의 파이프라인이 가능하다.이 개수는 Equation (1)로 계산된다.
  • 파이프라인 설계 공간: layer-level splitting을 적용하면 MobileNet의 28개 convolutional layer에 대해 5,379,616개의 서로 다른 설계 지점이 존재한다.GoogLeNet과 ResNet50 같은 더 큰 CNN에서는 설계 공간이 더욱 커져 전수 탐색이 불가능해진다.

C. Pipe-it 프레임워크 · V. 레이어별 성능 추정 · A. GEMM으로서의 convolution

Pipe-it은 정적 convolution descriptor에서 레이어별 실행 시간을 예측하고, 휴리스틱 design-space exploration을 수행해 준최적 pipelined configuration과 workload allocation을 찾는다. 추정의 기반은 GEMM 기반 convolution이며, 그 차원이 연산량을 결정하지만 실행 시간은 memory access와 parallelism에도 좌우된다.

  • C. Pipe-it 프레임워크: Pipe-it은 가능한 core configuration 전반에서 각 레이어의 실행 시간을 예측한 뒤, 준최적 pipeline과 workload allocation을 위해 design space를 휴리스틱하게 탐색한다.이 두 부분으로 구성된 프레임워크는 예측에 정적 network-layer configuration descriptor를 사용하고, configuration search에는 예측된 timing 정보를 사용한다.
  • V. 레이어별 성능 추정: Convolutional layer는 광범위한 tensor-filter 계산을 수행하고 hardware-dependent optimization이 필요하므로 CNN 실행 시간을 지배한다.각 convolution은 후속 레이어로 전달되는 output tensor를 생성한다.
  • V. 레이어별 성능 추정: ARM-CL은 Im2col, GEMM, Col2Im으로 convolution을 구현하며, 선행 연구 [22]는 convolution 실행 시간이 matrix dimension에 선형적으로 연관됨을 보였다.Pipe-it은 정적으로 이용 가능한 convolution-layer descriptor와 레이어 실행 시간 간의 상관관계를 기반으로 한다.
  • A. GEMM으로서의 convolution: Convolution layer는 input tensor와 filter를 output tensor로 매핑하며, input과 filter depth의 일치, padding, stride 조건을 따른다.또한 input tensor와 output tensor는 대개 정사각형이라는 점을 언급한다.
  • A. GEMM으로서의 convolution: ARM-CL은 input patch를 행으로, filter를 열로 재배열하여 convolution을 [N×K] image matrix와 [K×M] filter matrix 간의 GEMM으로 변환한다.그 결과 matrix는 이후 output tensor의 형태로 다시 크기가 조정된다.
  • A. GEMM으로서의 convolution: GEMM 변환은 각 convolution마다 N × K × M회의 산술 연산을 수행한다.이 연산 횟수는 input, filter, result matrix의 차원에서 도출된다.
  • A. GEMM으로서의 convolution: GEMM 실행 시간은 memory access, arithmetic computation, convolution kernel에서 활용 가능한 parallelism에 함께 좌우된다.따라서 matrix dimension만으로는 GEMM 성능을 결정하는 요인을 모두 설명할 수 없다.

B. 단일 코어 추정 · C. 멀티코어 추정

이 프레임워크는 먼저 단일 코어 구성에서, 이어서 멀티코어 할당에서 GEMM 동작으로부터 convolutional layer 실행 시간을 추정한다. 5개 benchmark CNN에서 이 모델은 layer 실행 시간을 정확하게 예측하며, 평균 오차는 Big 코어에서 13.2%, Small 코어에서 11.4%다.

  • B. 단일 코어 추정: Micro-benchmark는 무작위로 생성한 입력과 filter parameter를 사용해 대표적인 convolutional layer와 GEMM 구성을 측정한다.측정에는 ARM-CL을 사용하며 입력 크기, filter 크기 및 기타 구성 지점을 변화시킨다.
  • B. 단일 코어 추정: 단일 코어 모델은 GEMM 행렬 차원 N, K, M에 선형 회귀를 적용해 convolutional layer 시간을 예측한다.회귀 계수는 측정값으로 fitting하며, 상호작용 항은 NK, KM, NM과 같은 행렬 크기 곱을 나타낸다.
  • C. 멀티코어 추정: ARM-CL은 이미지 행렬의 행을 iteration으로 나누어 tiled GEMM 작업을 H개 thread에 할당하며, niter = N/ts가 된다.tile size ts는 cache 크기에 따라 선택하고, thread들이 모든 iteration을 공동으로 처리한다.
  • C. 멀티코어 추정: single-threaded 실행에서는 모든 iteration을 순차적으로 처리하므로 각 iteration의 시간을 추정할 수 있는 기반이 마련된다.단일 코어 추정값을 확장할 때 모델은 iteration마다 처리 시간이 동일하다고 가정한다.
  • C. 멀티코어 추정: multi-threaded 실행에서는 전체 시간이 가장 느린 thread에 의해 결정되며, 계수는 선형 회귀로 fitting한다.모델은 H개 thread에 걸친 workload 분포로부터 multi-threaded 실행 시간을 추정한다.
  • C. 멀티코어 추정: 멀티코어 모델은 균등 workload 분할을 사용해 iteration 시간을 행렬 크기 N, tile size ts, 코어 수 H와 결합한다.동종 코어의 경우 예상 할당은 itert = niter/H = N/(ts ∗ H)다.
  • C. 멀티코어 추정: 13.2%와 11.4%는 5개 benchmark CNN의 모든 동종 코어 할당에 대한 Big 및 Small 코어의 전체 평균 예측 오차다.Table III은 가능한 각 동종 할당에 대해 모든 convolutional layer에서 평균한 예측 오차를 보고한다.

D. 완전연결 계층 … B. 워크플로 분할 결정

Pipe-it은 convolution과 함께 완전연결 계층을 모델링하고, throughput을 최대화하기 위해 heterogeneous pipeline 구성을 탐색한다. 이 workflow-splitting heuristic은 코어 성능이 순서대로 정렬된다는 가정하에 계층을 더 깊은 stage로 이동시켜 인접 stage의 latency를 균형화한다.

  • D. 완전연결 계층: Pipe-it은 AlexNet이 상당한 실행 시간을 완전연결 계층에 소비하고, 많은 parameter로 인해 과도한 memory transfer가 발생하므로 완전연결 계층을 주요 구성요소로 취급한다.최신 CNN은 일반적으로 완전연결 계층을 생략하거나 classifier 계층 하나만 유지한다.
  • D. 완전연결 계층: Micro-benchmark는 고정된 neuron 수에서 input tensor 크기에 따라 실행 시간이 선형적으로 변함을 보여주며, 이에 따라 regression 기반으로 완전연결 계층을 예측할 수 있다.평가한 neuron 수는 4096과 1000이다.
  • VI. 설계 공간 탐색: Pipe-it은 pipeline stage 수, 코어 조합, 계층 할당으로 인해 가능한 heterogeneous pipeline 구성이 많아지므로 heuristic design-space search를 사용한다.목표는 계층 수준의 고성능 분할을 신속하게 얻는 것이다.
  • A. 정의: Pipeline은 코어 type과 count로 정의된 stage로 표현되며, 각 stage에는 convolutional layer의 순서가 유지된 부분집합이 할당된다.개별 stage 내부에서는 homogeneous Big 또는 Small 코어만 사용한다.
  • B. 워크플로 분할 결정: Pipe-it은 초기 CNN 계층이 더 깊은 계층보다 더 많은 processing power를 요구한다는 가정에 따라 stage를 연산 능력이 높은 순서에서 낮은 순서로 정렬한다.이 정렬은 더 깊은 stage로 갈수록 layer-processing time이 증가하도록 하며 one-way workload flow를 지원한다.
  • B. 워크플로 분할 결정: 가장 느린 pipeline stage가 throughput을 결정하므로, Pipe-it은 최대 stage latency를 최소화하여 stage workload의 균형을 추구한다.계층 실행 시간 행렬은 각 계층과 코어 구성에 대한 예측 시간을 제공한다.
  • B. 워크플로 분할 결정: 인접한 stage에 대해 Pipe-it은 먼저 모든 계층을 더 빠른 stage에 배치하고, 다음 stage가 bottleneck이 될 때까지 후행 계층을 더 깊은 stage로 이동시킨다.할당이 안정화될 때까지 연속적인 stage 사이에서 이러한 pairwise balancing을 반복한다.

C. Pipeline Stage 병합

Pipe-it은 병목을 완화하는 동시에 stage 크기를 layer별 multi-threading speedup에 맞추기 위해 pipeline stage를 병합한다. 병합은 동일한 유형의 core로 제한되며, 성능이 향상될 때만 수용된다. 이후 유익한 병합이 더 이상 남지 않을 때까지 workload를 재할당한다.

  • C. Pipeline Stage 병합: 서로 다른 layer는 multi-threading의 혜택을 불균등하게 받으며, TLP가 포화되면 core 할당이 증가할수록 speedup gain은 오목해진다.따라서 stage 크기는 할당된 layer의 speedup 특성에 맞춰야 한다.
  • C. Pipeline Stage 병합: Algorithm 3은 초기 one-core-per-stage pipeline에서 병목을 일으키는 layer를 위해 더 많은 연산을 수행할 수 있는 stage를 만들도록 pipeline stage를 병합한다.이 과정은 (H_B + H_s)-stage pipeline에서 시작하며, 병합 전에 workload split을 탐색하기 위해 Algorithm 2를 사용한다.
  • C. Pipeline Stage 병합: 병합은 동일한 core type을 사용하는 인접 stage만 결합하며, 두 입력의 core 수 합과 같은 core 수를 갖는 stage를 생성한다.Stage P_i와 P_i+1은 count_i + count_i+1개의 core를 갖는 P_i′가 되며, 원래 할당된 layer set을 유지한다.
  • C. Pipeline Stage 병합: 결합된 stage가 적어도 하나의 입력 stage보다 높은 성능을 낼 때만 병합을 계속한다. 그렇지 않으면 오목성에 따라 추가 병합은 유용하지 않다.각 성공적인 병합 후 Algorithm 2는 layer allocation을 재최적화하며, Algorithm 3은 유익한 병합이 더 이상 남지 않을 때까지 반복한다.

D. 예시

이 예시는 8코어 heterogeneous processor에서 ResNet50에 Pipe-it을 적용하고, 예측한 layer time을 사용해 pipeline stage를 반복적으로 균형화하고 병합한다. 이 절차는 최종적으로 Big 코어 4개와 Small 코어 4개에 걸친 3-stage configuration을 선택한다.

  • 예시 설정: 이 예시는 8개의 가능한 core combination에 대해 ResNet50의 54개 layer 실행 시간을 예측하여, 크기 (54,8)의 time matrix T를 구성한다.Architecture는 Big 코어 4개와 Small 코어 4개로 구성되며, 8가지 서로 다른 pipeline-stage core combination을 지원한다.
  • Pipeline 구성: Algorithm 3은 8개의 single-core stage를 초기화하고 Algorithm 2를 호출하여 stage 간 workload를 분할하고 균형화한다.Algorithm 2는 처음에 모든 layer를 P1에 할당한 다음, workload가 균형을 이룰 때까지 Algorithm 1을 사용해 layer를 연속된 stage로 이동한다.
  • Stage 병합: 인접 stage를 균형화한 후 Algorithm 3은 Equation (12)가 성립하면 병합을 테스트하고, allocation을 다시 계산한 뒤 병합이 유용하지 않으면 추가 병합을 중단한다.이 예시에서 병합은 처음 두 Big-core stage에서 시작하며 이후 Small cluster로 진행된다.
  • 최종 configuration: Pipe-it은 최종적으로 P = {(B, 4), (s, 2), (s, 2)}와 workload allocation L = {l1−35, l36−44, l45−54}를 선택한다.Algorithm은 각 stage update 후 workload allocation을 다시 계산하고, Big cluster의 stage를 병합한 뒤 Small cluster에도 유사한 규칙을 적용한다.

VII. 실험적 평가 · A. 결과 구성

HiKey 970에서 Pipe-it은 예측한 레이어 실행 시간을 사용해 균형 잡힌 heterogeneous pipeline을 구성하고, four-Big-core baseline보다 CNN inference throughput을 향상시킨다. 평가는 50-image stream을 사용하는 5개 CNN을 대상으로 하며, 비교를 위해 resultant pipeline configuration과 레이어 할당을 제시한다.

  • VII. 실험적 평가: 실험은 HiKey 970의 ARM big.LITTLE octa-core CPU에서 수행되며, 2.4 GHz의 four A73 Big cores와 1.8 GHz의 four A53 Small cores로 구성된다.평가에는 해당 플랫폼의 최대 core frequency와 Table I에 명시된 5개 CNN model이 사용된다.
  • VII. 실험적 평가: 각 data point는 50 images의 연속 stream에서 throughput을 평균한 값이며, 실행 간 cooling 후 약 10초 동안 실행한다.평균적인 CNN을 exhaustive search하려면 약 5 million points와 수백 일이 필요하므로, 이 runtime에서는 optimal configuration에 대한 exhaustive search가 비현실적이다.
  • VII. 실험적 평가: baseline은 4개의 homogeneous Big cores에서 수행하는 kernel-level splitting이다. 8개의 heterogeneous cores 전체에 걸쳐 splitting하면 성능이 더 낮고, default ARM-CL도 이 구성에서 가장 높은 throughput을 달성하기 때문이다.이 baseline은 보고된 throughput 비교에 사용된다.
  • A. 결과 구성: Pipe-it의 best configuration은 pipeline stage와 layer allocation으로 보고되며, ResNet50의 layers 1–35, 36–44, 45–54에 대한 B4-s2-s2가 그 예다.이 예에서는 각각 four Big cores, two Small cores, two Small cores를 포함하는 3개 stage를 사용한다.
  • A. 결과 구성: homogeneous execution과 measured and predicted layer execution times를 사용하는 Pipe-it heterogeneous pipeline의 throughput을 비교한다.Table IV는 각 pipeline의 throughput을 제시하고, Tables V와 VI는 predicted 및 measured timing에서 도출된 configuration을 요약한다.
  • A. 결과 구성: baseline 대비 39% average throughput improvement는 Pipe-it의 전반적 이점을 보여주며, LeNet도 3-stage pipeline을 통해 20.6%의 향상을 얻는다.이러한 이점은 주요 레이어를 stage에 분산하는 깊고 균형 잡힌 pipeline에 기인한다.

B. Layer 성능 예측 모델 … E. 양자화 고려사항

Pipe-it은 layer-time 예측을 사용해 heterogeneous cluster 간 pipeline의 균형을 맞추고, 비표준 big.LITTLE 구성으로 일반화되며, quantized MobileNet throughput을 향상한다. 이점은 예측 정확도, 구현에 따라 달라지는 quantization overhead, 그리고 추가된 inter-cluster memory-coherency power의 영향을 받는다.

  • C. 일반 적용 가능성: Pipe-it은 최소 두 개의 cluster를 갖는 heterogeneous multi-core에 적용되며, simulated three-Big/two-Small 구성에서 두 cluster를 모두 사용하는 pipeline을 식별한다.이 구성은 HiKey 970에서 Big core 하나와 Small core 두 개를 비활성화해 만들었으며, 그 이점은 standard platform보다 덜 유의미했다.
  • D. Power 효율: 개발 보드에 개별 CPU component sensor가 없으므로 power 측정에는 whole-board socket power를 사용하며, homogeneous run 중에는 사용하지 않는 cluster를 끈다.측정된 socket power에는 non-CPU board component가 포함되며, active memory power는 CPU power와 분리할 수 없다.
  • D. Power 효율: AlexNet과 같은 memory-intensive CNN에서 Small-cluster power 효율이 예상보다 낮은 것은 memory power 때문으로 보이며, Pipe-it은 coherency-related memory consumption을 추가한다.이 한계는 측정에서 active memory power를 CPU power와 분리할 수 없기 때문에 발생한다.
  • E. 양자화 고려사항: Quantization은 Pipe-it과 orthogonal하지만, de-quantization 및 re-quantization overhead가 이점을 줄일 수 있으며, ARM-CL은 8-bit asymmetric integers (QASYMM8)를 지원한다.ARM-CL을 사용하면 보고된 비교에서 quantized MobileNet convolutional-layer execution이 14% 향상된다.
  • E. 양자화 고려사항: ARM-CL v18.11에서 MobileNet quantization을 사용하면 해당 F32 implementation 대비 convolutional layer는 24% faster, overall execution은 19% faster해진다.F32 MobileNet 자체도 v18.05보다 v18.11에서 20% faster하게 실행되므로, quantization 이점이 implementation version에 따라 달라짐을 보여준다.
  • E. 양자화 고려사항: ARM-CL v18.11에서 Pipe-it을 적용한 quantized MobileNet은 31 Img/sec를 달성하며, 평가한 모든 implementation에서 성능을 향상한다.비교에는 throughput의 역수인 effective per-frame latency를 사용하며, ARM-CL version 전반의 original 및 quantized MobileNet을 포함한다.

F. 다른 Framework와의 비교 · VIII. 관련 연구 · IX. 결론

Pipe-it은 비교된 Framework 중 MobileNet 성능이 가장 높으며, 훨씬 높은 throughput에서 DeepX와 비슷한 energy-efficiency를 달성한다. 이 논문은 CPU·accelerator·resource-aware CNN deployment 연구의 맥락에서 이 결과를 제시하고, layer-level splitting이 heterogeneous multi-core inference throughput을 향상한다고 결론짓는다.

  • F. 다른 Framework와의 비교: Pipe-it은 실험과 선행 연구, [13]의 대략적인 platform-scaled 결과를 바탕으로, 비교된 CNN Framework 중 가장 높은 MobileNet 성능을 제공한다.Figure 15는 실험을 통해 TVM, NCNN, Pipe-it, Pipe-it**을 비교하며, 나머지 Framework 값은 다른 출처에서 가져와 platform 차이를 고려해 대략적으로 scaling했다.
  • F. 다른 Framework와의 비교: Pipe-it은 AlexNet에서 DeepX의 2.2 Img/J에 비해 1.8 Img/J를 달성하면서, 보고된 비교 조건에서 훨씬 높은 throughput을 제공한다.DeepX의 2.2 Img/J는 Qualcomm Snapdragon 800 four-core CPU에서 500 ms latency requirement와 444 mJ, 즉 2 Img/s를 사용한다.
  • VIII. 관련 연구: CNN deployment 연구는 점점 더 compact한 model을 지향하며, accuracy를 유지하면서 model size가 AlexNet의 250MB 에서 SqueezeNet의 under 0.5MB [13]로 감소했다.이러한 발전은 computational 및 memory resource가 제한된 mobile platform에 deployment할 수 있게 한다.
  • VIII. 관련 연구: Accelerator 중심 접근법은 embedded GPU와 heterogeneous processor를 사용하며, DeepX 는 runtime layer compression과 processor 간 workload decomposition을 결합한다.DeepX는 CPU, GPU, low-power processor에서 co-execution을 수행해 edge neural-network execution을 목표로 한다.
  • VIII. 관련 연구: 기타 연구는 CNN resource requirement를 분석하고, [22], efficient edge library를 개발하며,, [6], [19], platform-specific C 또는 GPU code를 자동 생성한다.이러한 접근법은 resource constraint, implementation support, hardware-specific optimization requirement를 다룬다.
  • VIII. 관련 연구: GPU나 accelerator의 성능이 충분하지 않은 platform에서는 CPU-only 접근법이 여전히 중요하며, Graphi [30]는 independent neural-network layer를 동시에 scheduling해 layer-level parallelism을 활용한다.Graphi는 layer-level parallelism이 높은 LSTM 및 GoogLeNet과 같은 network에서 특히 유용하다.
  • IX. 결론: 결론은 heterogeneous core type 간 kernel-level splitting이 throughput을 저해한다고 지적하고, cross-cluster coherency를 최소화하는 방법으로 Pipe-it의 layer-level splitting을 제시한다.Pipe-it은 전체 heterogeneous multi-core를 효율적으로 사용해 CNN inference throughput을 향상한다.
Loading 1903.05898v3…