일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CUDA
- Pyverilog 튜토리얼
- Pyverilog 실행
- linux makefile 작성
- linux c++ 컴파일
- systolic array
- 딥러닝 가속기
- Pyverilog 설치
- pygraphviz 설치 오류
- 클럭 게이팅
- 컨벌루션 연산
- Makefile compile
- AMBA
- pytest-pythonpath 설치 오류
- pyverilog 설치 오류
- DNN 가속기
- 남산업힐
- makefile
- Design DNN Accelerator
- linux c 컴파일
- CLOCK GATING
- 데이터 해저드
- CDC
- Data HAzard
- 이진수 곱셈 알고리즘
- 대구 반도체 설계기업 특화
- gpgpu-sim
- DNN Accelerator
- gcc 컴파일
- Pyvrilog tutorial
- Today
- Total
오늘은 맑음
Study note : Efficient Processing of Deep Neural Networks(1) 본문
천천히 Efficient Processing of Deep Neural Networks라는 Textbook을 읽어볼까 합니다.
저자는 Vivienne Sze, Yu-Hsin Chen, Tien-Ju Yang로, 기존 Eyeriss라는 논문을 저술했습니다.
기존 Efficient Rrocessing of Deep Neural Network라는 survey 논문이 있지만 이 내용을 확장해서 Textbook을 집필한 것 같습니다. 책을 쭉 보게 되면 Eyeriss 논문에서 봤던 내용들과 그림들과 내용들이 보입니다.
Part 1에서부터 Part 2의 4강까지는 기존의 Deep Neural Network의 배경 지식(Conv Layer, FC Layer)과 어떻게 하면 효율적으로 Deep Learning algorithm을 처리할 수 있을지에 대한 내용 등이 적혀 있습니다. 따라서 천천히 읽어보시면 좋을 것 같습니다.
저는 챕터 5부터 시작해보겠습니다.
Chapter 5. Designing DNN Accelerator
5장에서는 DNN Accelerator의 Performance와 Energy eifficiency를 증가시키기 위한 방법에 대해 기술되어 있습니다.
John Hennessy와 Dave Patterson은 무어의 법칙이 끝나감에 따라 gereral-purpose hardware의 performance와 energy efficiency를 증가시키기 위해서 Hardware-Software co-design이 중요하다고 주장합니다. 대표적으로는 Tensorflow가 있습니다.
Tensorflow는 NVIDIA의 GP-GPU를 프로그래밍 하는 언어인 CUDA(c++기반)를 기반으로 만들어진 Python library입니다. Tensorflow는 GP-GPU 내부의 Thread를 알맞게 할당해서 인공지능 알고리즘을 효율적으로 연산할 수 있게 해줍니다. 즉, 새로운 software 혹은 language를 만들어서 compiler에 의해 hardware가 효율적으로 동작시키는 방법을 hardware-software co-design이라고 합니다.
하지만 이 책의 Chapter 5에서 중요하게 다루는 내용은 hardware-algorithm co-design입니다.
Hardware-algorithm co-design은 algorithm을 수정하는 방법을 통해 hardware의 performance와 energy efficient를 증가시킵니다. 예를 들면
- Data locality를 이용해서 데이터를 재사용
- Sparsity를 이용
- Data의 transfer cost를 낮추기
등이 있습니다.
1번은 상대적으로 데이터 transfer cost가 높은 off-chip memory(DRAM)이나 on-chip memory지만 cost가 높은 cache와 실제 연산하는 PE간의 data transfer를 줄이는 것입니다. 대신 반복적으로 재사용하는 데이터를 더 작은 memory(register)에 담아놓고 사용하는 방법입니다.
2번은 Pruning과 같은 algorithm에 의해 생성된 '0'의 값을 계산하지 않는 방식입니다. 입력 값으로 0이 사용되면 MAC연산을 했을 때 곱셈기의 결과 값은 0이 되기 때문에 연산을 수행하지 않게 되면 cost가 높은 곱셈기를 동작시키지 않을 수도 있고, 혹은 다른 데이터를 계산하게 해서 PE가 idle 상태(동작을 하지 않는 상태)가 되는 상황을 줄여 더욱 효율적으로 연산을 수행할 수 있습니다.
3번은 quantization을 이용해 데이터의 bit-width를 낮추는 방법입니다. 내부에서 연산되는 데이터의 bit-width를 줄이게 되면 transfer할 때의 cost도 줄게 되고 MAC연산기의 크기 역시 줄게 됩니다.
위와 같은 내용이 5.1 EVALUATION METRICS AND DESIGN OBJECTIVES까지 서술되어 있습니다.
다음에는 5.2 KEY PROPERTIES OF DNN TO LEVERAGE부터 시작해보겠습니다. 5.2장부터는 Eyeriss 논문에서 발표된 내용인 Data reuse방법을 시작으로 위에서 설명된 방법들을 기반으로 한 hardware-algorithm co-design 기법들이 설명되는 것 같습니다. 시간이 나는 대로 꾸준히 읽어보도록 하겠습니다.
Reference
https://www.morganclaypool.com/doi/abs/10.2200/S01004ED1V01Y202004CAC050
'NPU' 카테고리의 다른 글
Study note : Efficient Processing of Deep Neural Networks(3) (0) | 2021.11.20 |
---|---|
Study note : Efficient Processing of Deep Neural Networks(2) (0) | 2021.11.13 |
나의 학부 졸업작품 감상 평(MNIST dataset을 이용한 dnn accelerator 시뮬레이션) (4) | 2021.04.20 |
Systolic array를 이용한 NPU에 대한 이해(2) (0) | 2021.04.18 |
Systolic array를 이용한 NPU에 대한 이해(1) (0) | 2021.04.06 |