논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Scalpel: Customizing DNN Pruning to the Underlying Hardware Parallelism

1 Introduction

  • Weight pruning 방법들 중 대부분은 pruning 후에 평균 80% 정도의 weight를 없애는데도 불구하고 실제로 퍼포먼스가 떨어지는 경우가 많다.

  • Pruning된 네트워크의 행렬 곱은 sparse하게 되기 때문에 남은 weight들은 sparse matrix format으로 저장하게 된다.

  • Sparse weight matrix는 기존의 dense matrix가 가지고 있던 일정한 구조를 잃게 되며, 곱을 행할 때 sparse format을 디코드하기 위한 추가적인 연산이 필요하게 된다.

  • Weight pruning의 퍼포먼스는 하드웨어와 관련이 있다.

  • 마이크로컨트롤러에서의 weight pruning은 DNN의 성능을 일관되게 향상시킨다.

  • 하지만 단순한 구조의 마이크로컨트롤러에서는 memory access latency에 영향을 받기 때문에 sparse matrix의 사용은 비효율은 낮지만 그래도 계산 시간 자체가 이를 상회한다.

  • GPU에서는 sparse matrix 계산을 하드웨어에서 적합하지 않아 퍼포먼스를 떨어트린다.

  • CPU에서는 네트워크에 따라 달라진다.

  • 완전연결층에서는 전체 메모리 접근이 줄어 성능이 향상되나, 컨볼루셔널 층에서는 메모리 재사용이 많이 메모리접근의 이득을 취할 수 없고 sparse matrix format으로 인하여 퍼포먼스가 줄어든다.

  • 이러한 문제를 해결하기 위해 Scalpel은 DNN pruning을 data-parallel hardware structure에 적합하도록 수정하였다.

  • Scalpel은 SIMD-aware weight pruning과 node pruning 두가지로 이루어져 있다.

  • 이 방법을 통해 하드웨어 플랫폼에서 효율적으로 실행될 수 있도록 네트워크를 pruning한다.

  • 이 논문은 다음의 내용을 담고 있다.

    • DNN의 weight pruning이 만능이 아니지만 네트워크 구조과 타겟 하드웨어에 밀접한 관련이 있다.
    • 네트워크가 실행될 하드웨어 플랫폼에 최적화된 pruned 네트워크를 생성하는 Scaplel을 제안한다.
    • 기존 weight pruning을 향상시킨 SIMD-aware weight pruning를 소개한다
    • 각 층에서 중복 노드를 제거하여 DNN 모델을 압축하는 node pruning을 소개한다.
    • Scalpel과 기존의 DNN pruning 방법들을 마이크로컨트롤러, GPU, CPU 플랫폼에서 각각 성능을 비교한다.

2 Background and Motivation

2.1 DNN Weight Pruning

2.2 Challenges

  • Weight pruning은 DNN의 모델 크기와 MAC의 수를 줄여주지만, 기존의 DNN Pruning 방법에는 여러가지 숙제들이 있다.
  • 첫번째는 sparse weight matrix가 그것을 저장하는데 많은 추가 데이터를 요구한다는 점이다.
  • 두번째는 weight pruning의 계산 성능 저하이다.

3 SCALPEL

3.1 Overview

  • 저수준 병렬화 하드웨어를 위해서 SIMD-aware weight pruning이 적용한다.
  • 이것은 weight를 그룹단위로 pruning하고 남은 가중치들도 aligned group으로 남겨두도록 한다.
  • 모든 그룹은 SIMD의 길이와 동일한 단위를 사용하고, 같은 그룹은 같은 컬럼 인덱스를 사용하여 sparse format의 오버헤드를 줄이도록 하엿다.
  • 고수준 병렬화 하드웨어를 위해서 node pruning이 적용되었다.
  • 이것은 가중치 대신 중복요소 노드를 제거하는 방법이다.

3.2 Hardware with Different Parallelism

3.3 SIMD-Aware Weight Pruning

  • 먼저 모든 weight를 SIMD 길이와 동일 크기의 aligned 그룹으로 나눈다.
  • 다음 weight 그룹들을 pruning 한다. 각 그룹의 RMS를 계산한 다음, 그룹의 중요도로 사용한다.
  • 중요도가 threshold 이하로 내려간 그룹은 제거한다.
  • 다음 pruned된 가중치 행렬을 재학습 시킨다.
  • 이러한 과정을 반복하여 원래의 성능이 유지되기 직전까지 진행한다. 이는 레이어 단위로 진행된다.
  • Han의 것과 동일한 방법을 사용하여 dropout 비율을 조절하였다.

$$ D_r = D_0 \sqrt{\frac{C_{ir}}{C_{i0}}} $$

  • $D_0$은 원래의 dropout 비율, $D_r$은 수정된 dropout 비율이다.
  • $ C_i$는 레이어 $i$의 연결수로 $C_{i0}$은 원래 네트워크의의 연결 수, $C_{ir}$은 남아있는 연결수이다.
  • 다음은 sparse matrix를 기록하기 위해 CSR format을 수정하여 컬럼 위치를 그룹의 인덱스로 기록한다.

3.4 Node Pruning

  • 가중치 대신 전체 노드를 제거하는 방법으로 중복 요소를 제거하였다.
  • 마스크 레이러를 사용하여 중요하지 않은 노드를 찾고 그 출력을 막는다.
  • 마스크 레이어의 학습이 끝나면 막은 노드들은 제거해버리게 된다.
  • 완전 연결 층에서는 한 뉴런을 하나의 노드로, 컨볼루셔널 층에서는 특징 맵을 하나의 노드로 간주한다.
  • 이 방법은 DNN의 크기를 줄이면서도 sparsity를 감소시키지는 않으며, dense한 구조를 그대로 유지시킨다.
  • 각 노드 마스크는 $\alpha, \beta$ 두개의 파라미터를 가진다.
  • $\alpha$는 바이너리 값이고, $\beta$는 0과 1사이의 실수 값을 가진다.
  • $\mathbf{Y}, \mathbf{Y}’$를 각각 레이어 $A$의 원래 출력과 마스크 $A’$에 의해 마스킹된 출력이라고 하자.
  • 따라서 각 요소 $y_i’ \in \mathbf{Y}’, y_i \in \mathbf{Y}$는 $y_i’ = \alpha_i \cdot y_i $이다.
  • $\alpha=0 $일 경우 해당 모드는 제거하게 됨을 뜻한다.
  • 이제 마스크를 학습시킨다.
  • $\alpha_i, \beta_i$는 1로 초기화한다.
  • 학습을 반복하면서 $\alpha_i$를 다음과 같이 계산한다.

$$ \alpha_i|_k \begin{cases} 1 & T + \epsilon \leq \beta_i|_k \\ \alpha_i|_{k-1}, & T \leq \beta_i|_k \lt T + \epsilon \\ 0, & \beta_i|_k \lt T \end{cases} $$

  • $\beta_i$는 역전파 시 업데이트되고 0과 1사이로 조절된다.
  • 그리고 제거될 노드 수를 제어하기 위해 L1 regularization을 사용하였다.
  • 마스크 레이어에 대해서 $\beta_i$의 페널티를 다음과 같이 계산한다.

$$ R_{i, L1} = \lambda |\beta_i| = \lambda |\beta_i $$

  • $\lambda$ 는 weight decay 이다.
  • 마찬가지로 dropout 비율을 수정한다.
  • 여기서는 dropout 비율을 매 학습마다 동적으로 변경한다.

$$ Dropout|_k = Dropout|_0 \times \frac{N|_k}{N|0}$$

  • $Dropout|_0$은 원래의 비율이고, $N|_0, N|_k$는 각각 원래의 노드 수, 남은 노드 수를 의미한다.
  • 마스크 레이어의 학습이 끝나면, weight decay를 증가시킨다.
  • 그러면 더 많은 노드들이 제거될 수 있다.
  • 역시 이 방법을 원래의 성능을 유지 못할 때까지 반복한다.
  • 마지막으로 마스크를 참고하여 노드를 제거하고 다시 한번 학습을 한다.

3.5 Combined Pruning

4 Experiment Methodology

5 Evaluation Results

6 Related Work

7 Conclusion

 


Add a Comment Trackback

댓글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.