본문 바로가기

논문리뷰

Adaptive Parallel Execution of Deep Neural Networks on Heterogeneous Edge Devices

논문을 전체 번역하는것이 아닌, 일부를 번역하며, 내 의견을 적어보기로 한다.

 

요약은 다음과 같다.

스마트 홈, 스마트 도시, 자율주행 자동차와 같은 새로운 애플리케이션들이 머신 러닝(ML)을 탑재하는것에 흥미를 두고있다.
하지만 Deep Neural Networks (DNNs)을 자원이 한정된 장치에 탑재하는 것은 상당한 도전이다.
DNNs의 workload는 계산 집약적이고, 클라우드 만큼의 자원을 필요로 한다.
다른 논문의 경우에는 DNNs을 효과적으로 디자인하거나, 클라우드의 힘을 빌렸다.

이 논문에서는 이기종 IoT환경에서 최적화된 runtime으로 적응하는 CNN 가속 프레임워크를 제안한다.
이 프레임워크는 convolution layer 융합을 이용하여 공간 분할 기술을 활용하고,
네트워크 상황과 같은 computational resource의 사용가능성에 따라 동적으로 최적의 병렬 정도를 선택한다.

 

사용한 Device는 'Raspberry-Pi3' 이고, 네트워크 환경은 '무선'이다.

유명한 CNN model을 8개의 device를 활용하여 1.9~3.7배의 추론(inference)시간을 개선했다고 한다.

 

서론의 내용은 다음과 같다.

DNNs은 컴퓨터 비전, 자연어처리, 번역 등 문제를 해결하기위해 필수가 되었다.
하드웨어의 발전, 가벼운 프레임 워크는 새로운 환경에 ML deploy를 가능하게 했다.
ML들을 스마트 홈, 스마트 시티, 자율 주행 자동차, 헬스케어에 적용하고자 했지만 계산량이 너무 많았기 때문에 대부분의 경우 클라우드에서 ML을 수행하거나, edge에서는 입력 data만 받고 나머지는 클라우드에서 수행했다

결국에는 ML을 edge에 deploy하고자 했지만, 대부분 cloud를 사용한다는 것을 말한다.

 

사용자의 data를 업로드 하는것은 사생활 문제를 일으킨다.
사용자들은 온라인 서비스에서 사생활 침해를 인지하고 있고, processing을 위해 오디오나 비디오 data를 전송하는것을 걱정한다. 예시로는 아기 모니터링, 집 안에 있는 카메라, 보이스 어시스턴트 들이 있다.
더욱이, 많은 IoT 애플리케이션은 잦은 의사 결정이 필요하기에, 통신 지연의 영향으로 클라우드 컴퓨팅을 하기에는 실용적이지 않다.

 

Cloud를 사용할 경우의 문제점 2가지에 대해 말하고 있다.

1. 사생활 침해에 대한 우려

2. 통신 지연으로 인한 비 실용성

 

첫번째 문제의 경우에는 online으로 전송하기 전에 충분히 전처리 과정을 거치고 전송하게 된다면 사생활 침해를 줄일 수 있다. 그러나 에지 컴퓨팅으로 해결할 것 같다. 에지 컴퓨팅을 사용하면 온라인으로 업로드 할 필요가 없기 때문이다.

 

두번째 경우에는 클라우드까지 통신 지연이 크기 때문에 발생하는 일이므로, 통신 지연시간을 에지 컴퓨팅을 통해 해결하고자 한다고 할것 같다.

 

앞서 말한 문제점들을 해결하기 위해 클라우드에서 에지로 ML 추론을 하고자 하는 노력이 이루어졌다.
에지 컴퓨팅은 data를 가까이에 유지하기 때문에 real-time 응답을 제공하고, end-user의 사생활을 보호한다.
하지만 ML의 workloads는 또다른 문제였다. 대부분의 ML 알고리즘은 많은 계산을 요구하므로 성능, 에너지, 메모리 용량의 제한이 있는 에지 디바이스에는 부적합하다.
이를 위해 DNNs을 에지에 deploy하기 위해 에지와 클라우드간의 collaborative computation, 모델 압축 및 파라미터 튜닝, 맞춤형 모바일 구현 등 많은 연구가 이뤄졌다.
그러나 모델 정확성을 훼손하지 않고 모델을 조절하거나 real-time으로 제공된 데이터 stream을 처리하는것은 에지 디바이스에 ML deploy하는것의 새로운 도전이다.

여기까지는 배경과 기존의 연구에 대해서 이야기한것 같고, 이제 본인들의 real-time으로 제공된 데이터 stream을 처리하면서 모델 정확성을 훼손하지 않는 방법을 제안할것 같다.

 

이 연구에서, 에너지가 제약된 다중 이기종 장치의 DNN 추론의 병렬 수행을 탐구한다.
모델 튜닝이 필요하지 않고, 새로운 하드웨어에 deploy하지 않아도 된다.
음성, 센서, 비디오 스트림같은 수집된 데이터를 클라우드나 서버/클라우드릿에 전달하는것 대신 스마트 홈 장치가 요청을 해결한다.
해결해야하는 challenge
(1) 어떻게 workload를 효과적으로 각 디바이스에 나눌것인가
(2) 어떻게 계산 능력이 다른 이기종에서 ML 수행(execution)을 최적화 할것인가
(3) 어떻게 무선 연결된 디바이스에서 높은 통신 지연을 해결할 것인가

이 문제를 해결하기 위해서, 이기종 디바이스에서 DNN 추론을 최적의 방식으로 분할하는 framework를 개발했다.
먼저, 사용가능한 디바이스와 해당 계산 능력의 간단한 모델이 생성된다.
이후, 우리의 framework는 여러 DNN layer 타입의 성능 측정 모델을 사용한다.
Framework는 모델을 사용 가능한 디바이스와 통신 지연을 기반으로 각 layer의 수행 시간(execution time)을 예측하고, 최고의 분할 지점(partition point)과 각 부분(partition)의 병렬화 전략을 선택한다.
계산 능력 차이를 극복하기 위해서, 부분의 크기는 디바이스의 용량에 맞춰 선택된다.
run-time에서 각 부분은 분산되고, 여러 디바이스에서 수행된다.

VGG-16과 ResNet-50 (이미지 인식 모델), YOLOv2 (객체 탐지 모델) 에서 한개의 디바이스를 사용할때 보다 1.9~3.7배의 속도 향상을 달성했다.

간단하게 제안하는 framework가 어떻게 동작하는지 알려준다. 이 논문에서 예시로 사용한 모델은 VGG-16, ResNet-50, YOLOv2가 사용되었다는것을 알 수 있었다.

 

전부 천천히 적는것은 다음에 하기로 하고, 일단 빠르게 읽은 후, 적당히 느낀점에 대해서 적어본다.

 

고맙게도 꽤나 실험 환경을 디테일하게 적어주었다.

TCP/IP 소켓을 활용하여 통신하였고, device는 라즈베리파이 3 B+를 사용했으며, 무선 통신을 사용한다.

 

우선 수행시간 예측을 linear regression을 통해 예측했다.

 

통신 지연을 해결하고자 한 노력

  • 2가지 병렬화를 제안했다.
    • 1. Layer-wise parallelization
    • 2. Fused-layer parallelization
  • 두가지 모두 Convolution layer를 어떻게 병렬처리 할 것인지에 대해 다루고 있는것 같았다.
    개인적으로 Figure 5를 보며 느낀것이지만, 전체적인 모델 추론은 P1이 진행을 하지만, Convolution layer처럼 수행시간(execution time)이 오래걸리는 경우 LW/FW 중 한가지 전략을 선택하여 병렬화 한다고 생각했다.
  • 우리가 기존에 생각하고 있던 병렬화와는 조금 다른 양상을 보이는것 같다.
  • 이 논문은 convolution layer에서 spatial partitioning을 빠르게 병렬화 하는 방식에 대해 이야기 하고 있는것 같다.

의문점 1. layer fusion을 진행할때, Fully Connected layer에 대해서는 어떻게 하는것인가? 그냥 channel==1로 계산을 하는것일까?

 

해결 : 오늘 다시 읽어보니 놓쳤던 부분이 있었다. 해당 논문은 conv layer에 대해서만 parallelization을 진행하고, 그 이외의 다른 layer들은 local에서 수행한다.

 

결국에 LW나 FW의 차이는 연속된 여러 Convolution layer를 수행하는데 있어서 Data를 주고받는것을 줄이기 위한 노력이라고 생각했다. 예를 들어 P1에서 Conv layer i를 수행하는데 걸리는 시간이 P1에서 다른 device로 spacial partition된 input을 전송하는 시간 + 모든 device에서 spacial partition된 conv  수행 시간 + spacial partition된 output P1으로 전송하는 시간보다 클 경우에 병렬로 layer를 수행한다고 생각한다. (fusion의 경우는 해당 경우에서 발전된 형태라고 생각한다.)

 

결국 어떤 local device의 성능이 좋지 않기 때문에, Convolution layer의 수행이 오래걸린다. 따라서 Convolution layer의 수행을 Spacial Partitioning을 통해 병렬화 한다. 그러나 모든 Convolution layer마다
 input 쪼개서 전송 ->병렬로 Conv layer 수행 -> output local device로 전송, 합치기 ->input쪼개서 전송->...(논문에서 말하는 layer-wise parallelization)의 경우 통신 지연이 크다.

따라서 input 쪼개서 전송->병렬로 fusion된 Conv layer 수행 -> output local device로 전송, 합치기 (논문에서 말하는 fused-layer parallelization)의 경우 통신 지연을 줄일 수 있다.

에 대해서 말하고 있다고 생각한다.