Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Pioneer

논문 리뷰) SCALE-Sim: Systolic CNN Accelerator Simulator 본문

문헌 리뷰/논문

논문 리뷰) SCALE-Sim: Systolic CNN Accelerator Simulator

hwkang 2024. 11. 1. 15:01

ABSTRACT 요약

  1. Systolic Arrays는 현재(2018년 기준) 밀집 행렬 곱셈 실행에 제공하는 효율성으로 인기가 높은 연산 기질(substrates) 중 하나이다.
  2. 그러나 이에 대해 원리에 입각한 인사이트를 제공하기 위한 도구가 부족하다.
  3. 본 연구는 SCALE-SIM을 제안하며, 이는 조작 가능하며 다양한 기능을 제공한다.

I. INTRODUCTION

(생략)


II. MOTIVATION AND BACKGROUND

  1. DNN이 다양한 분야에 적용되면서, 그에 따른 설계의 선택폭도 넓어졌다(e.g. 엣지 디바이스부터 데이터센터까지).
  2. 중요한 것은 실용성으로, 각 설계에는 목적과 제약이 존재한다.
  3. CNN을 예로 들면, CNN의 레이어는 multi-dimensional kernel이기 때문에 이를 하드웨어에 매핑하는 여러 가지 방법이 있다.
  4. 반대로 하드웨어에서도 고수준 연산을 다양한 방법으로 스케줄링할 수 있다.
  5. 그보다 앞서서 시스템 설계 시 고려할 수 있는 요소가 굉장히 많은데, 이것들은 복잡하게 얽혀 최적의 설계를 어렵게 한다.

A. Mapping dataflows to the architecture

  1. MAC(Multiply-Accumulate) 연산을 하드웨어에 매핑하는 것을 data-flow라고 부른다.
  2. 현재 대부분의 DNN 가속기들은 하나의 data-flow를 구현한 뒤, 이를 중심으로 최적화시킨다.
  3. 그런데 data-flow는 주어진 CNN의 모든 레이어에 똑같이 효율적이지 않다.
  4. 제일 이상적인 것은 다양한 data-flows를 지원하는 가속기인데, 이는 오버헤드가 수반되고 실현은 대게 어렵다.

B. Hardware optimizations

  1. 최적의 data-flow가 존재하고 이에 대해 합의가 어느 정도 됐다고 가정해도, 최종 설계 결정을 위한 여러 first and second order trade-off*에 대한 선택이 존재한다.

=의역=

현재까지 분석 및 경험을 통해 DNN의 최적의 data-flow가 결정됐어도, 여전히 탐색 공간은 넓기 때문에 그걸 시뮬레이션 할 수 있는 도구는 필요하다.

 

*first and second order trade-off

더보기

first order: 시스템의 성능을 좌우하는 근본적인 설계 요소 (e.g. 컴퓨팅 유닛의 배치(layout))

second order: 여전히 성능에 큰 영향을 주지만 first order보다 부차적인 설계 요소 (e.g. 메모리 크기)


C. Simulators for DNN acceleration

  1. AI 알고리즘 배포를 가능케하는 데 주요 요구 사항은 DNN 가속기의 효율적 설계이다.
  2. 그럼에도 공적인 영역에서 simulation-emulation 인프라는 놀랄 정도로 부족하다.
  3. 이는 systolic arrays에 대해서도 마찬가지다.

III. SCALE-SIM: CNN ACCELERATOR SIMULATOR

A. Modeling Compute

  1. 기본적으로 convolutions와 MM(matrix-matrix) 곱셈을 시뮬레이션할 수 있다.
    • MV(matrix-vector)와 VV(vector-vector)는 MM의 특수 케이스로 지원된다.
  2. CNN에서 사용되는 다양한 연산(e.g. Residual connection, Normalization) 중 1.의 연산만 지원하는 이유는 그것들이 네트워크의 90% 이상을 차지하기 때문이다.
  3. SCALE-SIM은 가속기의 연산 유닛을 systolic array*로 모델링한다.
  4. 일반적으로 systolic array는 정사각형 구성이지만 더 나은 형태가 존재할 수 있으므로 사용자의 입력에 따라 길이와 너비를 조절할 수 있도록 했다.

*systolic array

더보기

효율적이지만  행렬 곱셈 및 하드웨어에서 유사한 동작을 구현하기 쉬운 디자인

 

많은 DNN 가속기들이 systolic array에 기반한다.

 

systolic array는 MAC(Multiply-and-Accumulate) 또는 PE(Processing Elements)라 불리는 유닛이 2차원 구조로 함께 연결되어 있다.

 

출처: Wei, Xuechao et al.. (2017). Automated Systolic Array Architecture Synthesis for High Throughput CNN Inference on FPGAs. 

 

각 PE들은 내부 레지스터에 현재 사이클의 값을 저장한다.

 

그와 동시에 데이터는 일반적으로 상단과 좌측, 즉 가장자리로부터 들어오며 입력된 방향으로 전파된다.

 

이러한 방식은 SRAM read bandwidth를 상당히 절약하고, 효율적으로 convolution 연산이 제공하는 재사용 기회를 활용할 수 있게 한다.

 


B. Modeling Dataflow

  1. Dataflow라는 명칭은 Eyeriss에서 한 것을 따왔으며 다른 명칭에 대한 명명법도 유지했다.
  2. Eyeriss는 Dataflow에 대해 다음 요소들을 언급했다.
    1. Output Stationary* (OS)
    2. Weight Stationary (WS)
    3. Input Stationary (IS)
    4. Row Stationary (RS)
    5. No Local Reuse (NLR)

*논문에 쓰인 Stationary의 의미

더보기

=원문=

The stationary term in the name of the dataflow indicates the matrix which is "pinned" to a given PE.

 

=의역=

dataflow에서 stationary란, 주어진 PE에 pinned된 matrix를 가리킨다.

Output Stationary (OS)

  1. 출력 피처 맵의 각 픽셀은 각각의 PE에 할당되어 있다.
  2. 각 행은 한 채널의 인접 출력 픽셀을 생성
  3. 각 열은 여러 채널 별 픽셀 생성
  4. SCALE-SIM의 dataflow는 생성된 출력이 array로부터 연산 도중 stall 없이 전송될 수 있다 가정
  5. 실제로는 그렇지 않을 가능성이 높음
  6. 그럼에도 그렇게 구현한 이유는 다른 어떠한 의존성은 배제하고, dataflow 자체만의 성능만을 평가하기 위함

Fig. 2. (a). Output Stationary

Weight Stationary (WS)

  1. 가중치 매트릭스의 각 요소는 MAC unit에 고유하게 매핑된다.
  2. 한 번 매핑된 뒤에는 해당 매트릭스가 쓰이는 연산이 끝날 때까지 교체될 수 없다.
  3. 매핑 과정은 두 단계를 거친다
    1. 각 필터마다 열을 할당한다; 채널을 할당한다
    2. 주어진 열의 모든 PE가 하나의 가중치 요소를 가질 때까지 하나씩 내려 보낸다.
  4. 이후 좌측 edge로부터 입력이 매 사이클마다 들어오고 partial sum이 계산된다.
  5. 이 구현을 지원하기 위한 SRAM banks의 수는 지정된 array 수의 output stationary보다 적다.
  6. 그러나 다중 출력 픽셀과 일치하는 partial sum은 reduced될 때까지 array 내에서 유지될 필요가 있고 이는 구현 비용을 높이게 된다.

Fig. 2. (b). Weight Stationary

Input Stationary (IS)

  1. WS와 동일한 특성을 가지되, 고정되는 쪽이 IFMAP(Input Feature MAP)이다.

Fig. 2. (c). Input Stationary

 

WS와 IS는 OS에 비해 SRAM bank의 수, 즉 메모리 자원이 적게 필요하다는 이점이 있다.

 

대신 WS와 IS가 사용이 끝날 때까지 고정되어 있어서 교체에 드는 시간이 병목으로 작용할 수 있다.


C. Modeling Memory

  1. CNNs은 메모리 집약적이므로 메모리 계층을 설계하는 것이 가속기의 성능을 좌우한다.
  2. 그러나 최적 메모리 시스템 설계는 compute array도 함께 고려해야 해서 쉽지 않다.
  3. SCALE-SIM은 메모리 계층을 parameterizable*하게 모델링하고 computer unit과 메모리 계층 간 공동 최적화를 가능케 한다.
  4. 한편 CNN은 추론 시 데이터의 spatial, temporal, spatio-temporal 재사용 패턴이 존재한다.
  5. 메모리 시스템 설계 시 이상적으로 working set operands를 DNN 가속기 내 compute elements의 근처에 유지시키려고 한다.
  6. 자연스럽게 거의 모든 가속기는 scratchpad memory 제공을 디자인한다.
  7. 그러나 이 scratchpad memory의 크기 결정은 쉽지 않다.
  8. SCALE-SIM에서는 메모리를 세 개의 논리적 파티션으로 모델링 했다.
    1. IFMAP
    2. filter matrices
    3. generated OFMAP
  9. SCALE-SIM의 모든 메모리는 SRAM 액세스 지연 시간을 숨기기 위해 이중 버퍼(double buffer)로 모델링 된다.
    1. working set: 여기에 담길 경우 연산에 사용됨
    2. idle set: 여기에 담길 경우 DMA나 memory controller를 통해 off-chip 메모리로 보내짐

*parameterizable

더보기

contigurable과 비슷한 맥락으로, 메모리 계층 구조와 그 내부 요소를 설정할 수 있다는 말


D. Modeling System Interface

  1. DNN 가속기를 시스템에 통합하는 것도 중요한 일이나 일부 연구에서는 간과되는 측면이 있다.
  2. 예를 들어, 가속기는 병렬화를 위한 다중 처리 요소를 가지더라도 각 요소에 데이터를 전달해 매 순간 모든 연산 유닛이 busy 상태이게 하는 것은 현실에선 어려울 수 있다.
  3. SCALE-SIM에서는 DNN 가속기가 main processor에 종속*되는 전형적인 모델 구조를 취한다.

Fig. 3: Schematic showing the integration model of accelerator in a systems context

 

*main processor에 종속

더보기

Fig. 3.에서 Systolic CNN Accelerator로 나타난 부분은 독자적인 프로세서가 아니다.

 

즉, Main Processor가 명령을 전달하면 그때 동작하기 시작하는 연산 장치이다.

 

그 과정을 논문에 나타난대로 쓰자면

 

  1. Main Processor는 가속기의 Memory Mapped Register에 Task Descriptor를 작성한다.
  2. 이렇게 작업이 하달되면 Main Processor는 Context Switch를 통해 다른 작업을 수행
  3. 가속기는 독립적으로 메모리 장치와 통신하면서 연산 및 결과 생성
  4. 처리 종료 후 메모리에 결과 저장 및 Main Processor에 Interrupt 신호를 통해 알림

즉, CPU가 일을 주면 이 가속기가 일을 시작하고 그동안 CPU는 다른 작업을 처리한다.

이어서 가속기가 일이 끝나면 CPU에게 끝났다고 알리는 방식


E. Implementation

(생략)


F. User Interface

  • 시뮬레이션 수행을 위해 2가지 입력이 필요

config file (Tbl. I)

  1. 구조에 대한 파라미터 명세 (e.g. array 크기, 메모리 크기, topology file 경로, etc.)

topology file (Tbl. II)

  1. DNN의 각 레이어에 대한 하이퍼파라미터
  2. CSV 파일 포맷
  3. 각 행은 각 레이어의 하이퍼파라미터를 의미
  4. 최근 모델 중에는 convolution이 병렬화된 레이어가 있는데, 이 경우에도 topology file에 적힌 순서대로 실행된다.

outputs

  1. 두 가지의 출력이 산출된다.
    1. SRAM과 DRAM의 read, write에 대한 cycle accurate traces → CSV 파일 포맷
    2. metrics: traces의 정보를 분석해 요약 (e.g. cycle counts, utilization, bandwidth requirements, total data transfers, etc)

IV. DESIGN INSIGHTS USING SCALE-SIM

  1. Systolic array는 행렬 곱셈과 기타 선형 대수 커널을 하드웨어로 구현한 것으로 잘 알려져있다.
  2. array 내 데이터의 통신은 인접한 요소 사이에서만 전파되며, global communication 또한 필요 없다.
  3. 주소 생성과 대치 작업 역시 필요치 않다.
  4. 예시) Google TPU, Xilinx xDNN

A. Methodology

  1. SCALE-SIM은 사용자가 micro-architectural parameters를 고를 수 있게 한다.
  2. 후술할 실험들에서는 각 parameters가 어떤 영향을 미치는지 조명할 것이다.
  3. 달리 명시되지 않는 한, 계산 단위의 수는 TPUv3와 동일하게 (128x128 MAC)이다.
  4. 단, 데이터 크기는 DNN 추론의 표준인 1바이트로 가정한다.
  5. operand를 위한 scratchpad memory 기본 크기는 1024 KB이며, 필터와 IFMAP 버퍼에 각 512 KB가 할당되었다.
  6. 워크로드로는 MLPerf를 사용했다.

B. Effect of dataflow

실험을 통해 확인하고자 한 것

  1. 배열 크기가 dataflow의 선택을 결정하는가? (즉, Systolic array 크기에 따른 최적 dataflow가 존재하는가?)
  2. 워크로드의 얼마나 많은 hyper-paremeters가 dataflow의 선택을 결정하는가?
  3. 고정된 dataflow 채택해서 많은 것을 놓치는가? 아니면 모든 경우에 잘 동작하는 하나의 dataflow가 있는가?

  • 첫번째 물음에 대해 Fig. 5.의 W4의 각 dataflow가 가지는 흐름을 비교해보면, array 크기가 작아질 수록 IS가 WS보다 성능이 더 좋다. 따라서 특정 워크로드가 주를 이루는 문제의 경우, dataflow 선택 시 array 크기를 고려해야 한다.
  • 반면 W2와 W7에 대해서는 WS와 IS가 각각 모든 경우에 대해 좋았는데, 이는 배열의 크기보다 워크로드의 특성에 더 의존적이라는 사실을 암시한다.
    • 궁극적으로, '고정'된 행렬을 배열에 매핑시키는 횟수가 적을 수록 좋다.
  • W7 제외하고 OS가 좋아서 웬만한 경우에 대해 OS dataflow 사용을 먼저 고려해보는 것이 좋을 것

C. Effect of Memory Sizing

  • 충분한 온칩 메모리는 CNN의 재사용성과 맞물려 오프칩 액세스를 줄여 시스템 오버헤드를 줄일 수 있다.
  • 그러나, 면적과 전력 소비 측면에서 고비용 리소스에 속하므로 최적 크기를 할당하는 것이 중요하다.

  • 워크로드 별로 knee of curve(곡선이 확 꺾이는 부분)이 상이했다.
  • 일반적으로 버퍼 크기가 1MB에 도달하면 return이 감소한다.

D. Effect of Shape of the array

  • Systolic array의 PE 수를 갖게 유지하고 형태는 다르게 해 각 dataflow에 대한 영향을 확인한다.

  • dataflow 별로 차이가 존재하는데, 공통적인 것은 일반적으로 정사각형 형태가 제일 낫다는 것이다.

E. Scaling out vs Scaling up

  • Scale-up: 배열을 크게 만들기 (e.g. TPU)
  • Scale-out: 배열을 여러 개 갖기 (e.g. NVIDIA 텐서 코어)

  • 일반적으로 Scale-up이 dataflow에 관계 없이 더 성능이 좋음(통신 오버헤드가 줄어들어서?)
  • 반면 W1의 경우는 dataflow에 관계 없이 Scale-out이 더 좋음

 

  • 대부분 레이어에서 Scale-up 구현이 더 성능이 좋으나, PE 수가 늘어날 수록 Scale-out이 더 낫게 추세가 바뀜

V. RELATED WORK

(생략)


VI. CONCLUSION

  • DNN의 효율적 활용을 위한 가속기 설계가 늘어나는 지금, 여전히 설계 인사이트를 얻을 수 있는 공개적인 지식과 인프라가 부족함
  • 이에 대해, 본 연구는 시뮬레이션 도구를 구현 및 제공
  • Systolic array-based CNN 가속기를 설계할 때 고려해야 할 파라미터의 이해를 돕기 위해 여러 가지 실험을 수행했음