20160817

Deep Neural Network Workshop 참가

2016 Deep Neural Network SoC Workshop_Page_1.png

1. Deep Neural Network SoCs: Bringing deep learning to mobile devices
Deep learning은 인공지능 연구 분야 중 일부. 1940년대에 electronic brain이라는 개념이 도입됨. 이후 이것이 발전하여 perceptron이 됨. 하지만 XOR을 표현할 수 없다는 문제가 있었다(1969년). 이를 해결하기 위해 multi-layered perceptron이 도입됨(1980년대). 실제로 데이터를 학습하기 어렵다는 문제가 있었고, 이를 해결하는 방법으로 deep neural network가 도입됨(2006년). 이미지 분류에 딥 뉴럴 넷인 AlexNet이 우승하면서 DNN이 인기를 얻게 됨. DNN은 overfit의 문제가 있는데, 데이터 수집이 쉬워지면서 문제가 해결됨. 연산 능력이 많이 필요하다는 문제도 GPU를 사용하면서 해결됨. 컴퓨터를 인간의 뇌에 비유해서 연구하고자 하는 흐름이 있었음. 아날로그 컴퓨터와 디지털 컴퓨터를 융합하는 hybrid computer 연구 등. 최근에는 그래픽 연산을 위한 GPU를 딥 뉴럴 넷 학습 및 추론에 사용하고 있음. 예전에는 뉴럴 넷을 클라우드 컴퓨팅 환경에서 실행했다면, 요즘에는 모바일 환경에 가져오려는 시도가 많아지고 있음. 최근 brain-inspired approximation에서는 연산과 메모리가 분류되지 않는다는 특징이 있음. 메모리와 프로세서를 같이 둠. 딥 뉴럴 넷은 많은 메모리와 전력을 소모하고 있음. 효율적인 딥 뉴럴 넷을 위한 연구가 필요함. 작업량을 줄이고, 정확도를 높여야 한다. 인간의 좌뇌 / 우뇌 모델을 활용하여, 딥 뉴럴 넷을 활용하고자 한다. 일반 컴퓨팅이 좌뇌라면, 딥 뉴럴 넷이 우뇌가 되는 것. 이를 조합하는 방법에는 다양하게 있을 수 있다. 일반 컴퓨팅과 딥 뉴럴 넷을 병렬로 할 것인지, 아니면 순차적으로 할 것인지 등. 2D cellular neural network를 제안함 (2008년). SRAM cell array가 있고, PE들이 이를 공유해 사용하게 됨. 2D cellular neural network이 왜 더 좋은 성능을 낸다는 것인지 잘 이해가 안 됨. Motivation이 잘 이해되지 않고, 어떤 contribution이 있는지 잘 모르겠음. 전자과 레벨에서 여러 가지 optimization을 넣었다 (digital이 아닌 analog로 구현). Overfit을 방지하기 위해 dropout을 회로 레벨에서 구현함. True random number generator를 활용해 dropout을 회로 레벨로 구현. 기존에는 pseudo random number generator를 사용하는데, 이에 비해 훨씬 더 적은 면적으로 구현할 수 있음. Dropout을 적용하는 것이 에러율을 1.6% 낮춤. DNN을 활용한다면 marker 없이, 이미지를 직접 인식하여 AR을 구현할 수 있다. 물체 인식 과정에서, 물체 인식 SoC 이전에 visual attention을 위한 뉴럴 넷 (어떤 곳에 물체가 있을 것이다를 예측)을 사용하면 속도 및 정확도를 향상시킬 수 있다. 이런 과정은 우리가 뇌에서 수행하는 물체 인식 과정과도 유사하다.

2. Eyeriss: An Energy-Efficient Reconfigurable Accelerator And Dataflow for Deep CNNs
비디오는 가장 큰 big data이다. 현재 인터넷 트래픽의 70%는 비디오이다. YouTube 매 분마다 300시간 분량의 비디오가 업로드되고 있다. 매일 500 million hours 비디오가 CCTV에 의해 기록되고 있다. 에너지 제약된 장치에서 영상을 처리해, 뉴럴 넷에서 처리할 필요가 있음. ImageNet에서 2012년 이후로 Deep CNN 기반의 설계가 계속해서 우승하고 있으며, 사람보다 더 높은 정확도로 이미지를 분류하고 있음. 최신 딥 뉴럴 넷은 1000개 가량의 convolutional 뉴럴 넷을 중첩해서 사용하고 있다. Convolution은 전체 연산의 90%를 차지하며, 실행 시간과 에너지 소모의 대부분을 차지한다. 같은 이미지에 대해 다량의 convolution 연산이 필요하다. 채널도 많고, 필터도 많다. 채널은 RGB와 같은 채널, 필터는 이미지의 특성을 확인하기 위한 필터. 필요한 연산량은 많지만, 병렬적으로 처리할 수 있다는 특징이 있다. 하지만 메모리 접근이 bottleneck이다. filter weight, image pixel, partial sum을 모두 DRAM에서 가져와야 하고, partial sum을 다시 DRAM에 저장해야 한다. Locality가 있다는 특징을 활용하면 문제를 해결할 수 있다. 세 가지 종류의 reuse가 있다. Convolutional reuse, image reuse, filter reuse가 있다. 같은 필터를 여러번 사용하는 것, 같은 이미지를 여러 개의 필터에 대해 적용하는 것… Spatial architecture를 사용하고자 한다. 각각의 ALU는 register file, control을 갖는다. 목표는 입력 데이터와 중간 연산 결과를 계속해서 재사용하는 것. 데이터 이동은 매우 비용이 크다. 레지스터 파일에서 읽는 것의 비용이 1이라고 한다면, DRAM에서 읽을 때에는 200배의 비용이 든다. 데이터 재사용을 최대화하는 것이 중요하다. Weight stationary. Weight를 PE에 미리 넣어두고, 더이상 불러올 필요가 없도록 한다. Output stationary. Partial sum이 계속해서 같은 PE에서 축적되도록 하는 것. No local reuse(NLR)은 재사용하지 않는 것. 전체 PE가 함께 접근하는 global buffer를 두는 것. DRAM에 접근하는 것보다는 적은 비용이 들지만, local reuse보다는 비용이 크다. Row stationary. Convolutional filter는 horizontally 공유하고, 입력 이미지는 diagonally 공유한다. 그리고 partial sum은 vertically 합한다. Row stationary는 다른 데이터 흐름 모델보다 1.4~2.5배 적은 에너지를 사용한다. Partial sum / weights / pixels 각각을 얻어내기 위한 에너지 비율을 비교하는 것도 흥미로웠다. 하드웨어 디자인에서 broadcast아닌 multicast를 활용했더니 에너지를 80% 절약할 수 있었다. 사용하지 않는 PE는 clock gating을 적용하여 에너지 절약. 이미지 인지 정확도가 높아질수록 에너지 소모가 지수적으로 높아지는데, 이를 떨어뜨렸다는 점에 의미가 있다.

3. Accelerating Deep convolutional Neural Networks Using Specialized Hardware In the Datacenter
Deep learning의 적용 분야가 넓어지고, 프로세서 성능이 향상됨에 따라 주목받고 있음. 클라우드 시스템은 homogeneous / heterogeneous로 나뉠 수 있음. Homogeneous 클라우드는 CPU 기반이며, 유지 보수가 쉽고 모든 워크로드에 적용 가능하다. 하지만 CNN, DNN 처리 속도가 특화된 하드웨어보다 느리다. Heterogeneous 클라우드는 CPU 기반과 GPU 또는 ASIC의 융합으로 이루어진다. Heterogeneous 시스템에서 GPU 또는 ASIC을 사용할 수 있으므로, CNN과 DNN 성능을 높일 수 있다. 하지만 CNN과 DNN이 제약된 pool 이상으로 커질 수 없고, 유지보수가 어렵다는 문제가 있다. GPU 또는 ASIC으로만 이루어진 homogeneous 클라우드를 구성할 수도 있지만, 비용이 높고 모든 어플리케이션에 적용할 수는 없으므로 비경제적이다. 그렇다면 어떻게 할 것인가? FPGA를 사용한 클라우드 시스템을 만든다면 문제를 해결할 수 있다. FPGA는 homogeneous하며, 전력과 비용 효율성이 높다. 그리고 다양한 워크로드에 적용할 수 있다는 특징이 있다. 하지만 GPU나 ASIC에 비해 peak performance가 떨어진다는 문제점이 있다. 이번 발표에서 deep learning에 FPGA를 사용하는 것이 현실적인지에 대해 알아보고자 한다. Catapult라는 연구에서 FPGA를 검색 엔진에 적용하고자 했다(2014). 이렇게 FPGA를 검색 엔진에 적용했을 때, SW 기반의 검색 엔진에 비해 높은 성능을 보일 수 있었다. 2배의 throughput 향상이 있었고, 29%의 latency reduction이 있었다. Catapult에서 각 CPU는 FPGA를 갖고 있으며, FPGA와 CPU는 PCIe로 연결되어 있음(8GB/s). FPGA끼리는 SLIII로 연결되어 있음(2GB/s). Altera Stratix V D5에서 구현했으며, 8GB DDR3를 사용. 그 다음 버전으로 Azure SmartNIC를 연구함. 이전 버전과의 차이는 network tight integration이다. FPGA의 가격이 생각보다 저렴하게 공급받고 있다고 한다 (공개는 안 되지만, 상상도 못하게 저렴하다고 함).

4. Approximate Computing: Energy-efficient Software/Hardware Optimization for Future Workloads
DNN 어플리케이션을 위해 SoC를 어떻게 설계할 것인지에 대해 이야기할 것. DNN에는 많은 convolutional layer가 있고, 때문에 많은 연산 능력이 필요하다. DNN을 SoC로 구현할 때의 문제점 세 가지. limited power budget, limited bandwidth, low chip utilization. Limited power budget과 bandwidth로 인해 low chip utilization 문제가 발생함. 한편, DNN 어플리케이션들은 approximate해도 된다는 특징이 있다. Approximate computing에서 사용하는 기법 중 대표적인 것 세 가지: loop perforation, reduced precision computation, relaxed synchronization. CNN을 가속하는 것은 학습을 빠르게 할 수 있고, 온라인 학습 또한 가속할 수 있다. Loop perforation은 연산 가속하기 위해 loop의 일부를 빠뜨리는 것. 원래는 loop의 크기에 무관하게 한 번에 한 개씩 실행해야 하는데, loop perforation은 일부를 skip하는 것. Relaxed synchronization 기법은 작업을 여러 개의 코어가 나누어서 실행할 때, 늦게 끝나는 코어를 기다리지 않고 계속해서 진행하는 것. Loop perforation은 programming model에 대한 것. Perforation rate에 따라서 결과의 퀄리티와 성능의 trade-off가 발생한다. Reduced precision을 사용해서 성능을 높일 수 있다.

5. A Design Method for a Deep Neural Network on an FPGA
FPGA에서 DNN을 설계하는 방법에 대해서 이야기할 것. FPGA는 PLL(phase locked loop), block memory(BRAM), look up table (LUT), DSP block, I/O block 등으로 구성된다. DSP 블록은 뉴럴 넷 구성을 위해 사용되기도 한다. High-level synthesis (HLS)를 사용하면 빠른 시간 안에 FPGA 개발이 가능하다. 3개월 정도 걸리는 작업도 1주일 정도만에 개발할 수 있다. HLS를 사용하면 직접 코딩한 것보다는 더 많은 모듈이 생성되지만, 최근 생성되는 FPGA는 많은 LUT를 갖고 있으므로 문제가 되지 않는다. Residue Number System (RNS). RNS는 moduli set을 정의한다. 일반적으로 소수를 사용해 정의하며, 이것은 흥미로운 특징을 갖는다. RNS를 활용하면 정보 표현에 필요한 비트의 수를 줄일 수 있다. 때로는 RNS를 중첩해서 적용할 수도 있다. 그 다음으로 DSP 블럭의 수를 줄이는 것에 대해 이야기할 것. Binarized DCNN은 첫 번째 레이어와 마지막 레이어를 제외하고는 이진값(1 / -1)만으로 weight와 inout을 결정하는 것. Binarized DCNN을 사용하면 뉴럴 넷의 학습 속도를 높일 수 있고, 전력 소모도 줄일 수 있다 (링크). Binarized DCNN의 정확도가 낮으므로, 정확도를 높이기 위해서는 batch normalization이 필수적이다.

6. An energy-scalable convolutional Neural Network Processor exploiting Dynamically- scalable approximate computing
Flexible, energy-scalable convolutional neural net processing이 필요하다. 앞으로 뉴럴 넷을 임베디드 장치에서 사용하게 될 것이다. 학습은 클라우드에서 할 것이지만, 실제 사용은 임베디드 장치에서 하게 될 것. always-on 장치가 high accuracy를 지원하기 위해서는 수백 mW를 사용하지만, 지원할 수 있는 것은 수십 mW에 불과하다. 경우에 따라서 사용자가 필요로 하는 정확도와 속도는 다를 수 있다. 동적으로 인지에 필요한 정확도를 조절함으로써, 성능 및 전력 소모를 조절할 수 있다. 지금까지 많은 뉴럴 넷이 제안되었다. 정확도가 높아짐에 따라 복잡도도 높아지고, 에너지 소모도 늘어남. CPU와 GPU는 유연성을 갖지만, energy scalability가 떨어진다. Dedicated accelerators는 유연성은 떨어지지만, energy scalable하다. 이 연구에서 하고자 하는 것은 parallelism-scalability, precision-scalability, sparsity-scalability이다. 뉴럴 넷에 32-bit 부동소수점을 사용하는 것은 과하다. 때로는 16-bit, 8-bit 데이터를 사용하는 것으로 충분하다. AlexNet의 경우에는 32-bit과 16-bit의 정확도가 같다.

Advertisements
Tagged with: , , , , , , , , , , , , , , , , , , , , , , , , , ,
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 98,786 hits
%d bloggers like this: