10 분 소요

0. Abstract

다양한 device의 제약조건 하에서 효율적으로 inference 하는 것은 쉽지 않은 문제다. 전통적인 방법으로 네트워크를 디자인하는 것도 엄청난 연산량이 부담된다. 본 연구에서는 a once-for-all (OFA) 네트워크 학습법을 제안하며, OFA는 training과 search를 분리함으로써 다양한 환경을 지원한다.

  • OFA 네트워크에서 추가적인 학습 없이 특화 sub-network를 빠르게 선택할 수 있음
  • 효율적으로 OFA 네트워크를 학습하기 위해, Progressive Shrinking (PS) Algorithm 제안
    • PS는 보다 일반화된 pruning 방법으로, model size를 일반 pruning 방법보다 다양한 차원에 걸쳐 줄일 수 있음(depth, width, kernel size, resolution)
    • PS를 통해 1020개 이상의 sub-networks를 얻을 수 있으며, 이들 중 다양한 하드웨어 플랫폼에 맞는, latency / accuracy 손실이 거의 없는 네트워크를 별도 학습 없이 찾을 수 있음
  • 다양한 edge devices에서 OFA는 GPU hours를 크게 줄이면서도 SOTA NAS 방법론을 여러 방면에서 지속적으로 뛰어넘는 모습을 보여줌
    • 특히 OFA는 ImageNet top-1 accuracy 80.0%를 모바일 세팅에서 달성
    • OFA는 제 3회, 4회 Low Power Computer Vision Challenge 의 우승작

1. Introduction

DNN은 다양한 ML 분야에서 SOTA accuracy를 달성했다. 그러나 model size는 폭발적으로 증가해, 효율적으로 모델을 다양한 하드웨어 플랫폼에 이식하는 것이 새로운 과제로 떠올랐다. Hardware 사양에 따라 최적 모형이 달라지기 때문이며, 심지어 device가 같더라도 배터리 상태, workloads 등에 따라 성능 차이가 크게 발생할 수 있다. 이에 대응하기 위해 모바일을 위한 compact models 또는 기존 모델을 압축하는 방법들이 제안됐다. 그러나 모든 발생 가능한 상황에 대해 맞춤형 DNN을 준비하는 것은 다양한 모든 케이스에 대해 모형을 처음부터 설계하고 학습하므로 너무 많은 연산이 필요하다는 문제가 있다.

f1

본 논문에서는 이러한 문제에 대한 해결방법을 제시한다.

  • 한 번만 학습을 하고, 다양한 환경에 맞춰 sub-network를 선택하기만 함
  • 유연하게 모형의 depths, widths, kernel sizes, and resolutions를 재학습 없이 조정할 수 있음
    • 이는 학습과 모형 선택 과정을 분리했기에 가능

학습 과정에서는 모든 sub-networks들의 성능이 향상되는 것을 목표로 한다.

  • 모델 선택 과정에서는 sub-networks의 subset을 샘플링 한 뒤 accuracy 예측기와 latency 예측기를 학습
  • 주어진 hardware 및 제약조건에 따라 예측기가 architecture search를 수행

그러나 OFA 학습은 모든 sub-networks의 성능까지 고려해야 하므로 쉽지 않다. 모든 sub-networks의 수를 세는 것은 연산 한계로 불가능하며, 소수의 sub-networks만을 샘플링하는 것은 성능 저하를 일으킬 수 있다. 그래서 효율적인 학습을 위해 본 논문에서 PS 방법론을 제안한다.

  • OFA를 처음부터 학습하지 않고, depth, width, kernel size가 최대값인 가장 큰 네트워크를 먼저 학습
  • 그 다음 점진적으로 sub-networks를 fine-tune하는 방식
  • 이를 통해 sub-networks에 더 좋은 학습 시작점을 제공하고, 가장 큰 네트워크의 능력을 작은 네트워크들에 녹여낼 수 있음

f2

Efficient Deep Learning

SqueezeNet, MobileNets, ShuffleNetes 등 하드웨어 효율을 제고하기 위한 제안들이 있었다. 이와는 상반되게, 네트워크 compression에 촛점을 맞춘 제안들이 있었으며, 이는 network pruning 개념을 포함한다.

Neural Architecture Search (NAS)

NAS는 architecture design 과정을 자동화하려는 시도이다. 초기의 NAS는 하드웨어 효율성을 전혀 고려하지 않아, 제안됐던 NASNet, AmoebaNet 등은 inference 효율이 매우 떨어졌다. 최근의 하드웨어를 고려한 NAS 방법들은 하드웨어의 feedback을 직접적으로 architecture search 과정에 포함시킨다. 그러한 결과 inference efficiency를 향상시킬 수 있었으나, 새로운 플랫폼에 대해서는 architecture search 과정을 다시 반복해야 했다. 이는 수 많은 시나리오가 존재하는 search space에서 전혀 scalable한 방법이 아니다.

Dynamic Neural Networks

네트워크의 효율성 향상을 위해, 이미지 처리 일부 part를 동적으로 제거하는 방법들이 제안되기도 했다.

  • controller 또는 gating modules을 만들어 layers를 동적으로 제거
  • early-exit branches
  • adaptively prune channels based on the input feature map
  • stochastic downsampling adaptively
  • Slimmable Nets은 기존 네트워크에 다수의 width multipliers 적용이 가능하도록 학습

이러한 방법들은 runtime 상황에서 다양한 효율성 제약을 만족시킬 수 있지만, 여전히 이전에 디자인된 네트워크가 필요하다. 이전에 디자인된 네트워크가 모든 시나리오에서 최적이라고 볼 수 없다는 문제가 존재한다.

3. Methods

3.1 Problem Formalization

\[min_{W_o} \sum_{arch_i} L_{val}(C(W_o,arch_i))\]
  • $W_o$ : OFA Network의 가중치
  • {$arch_i$} : architectural configurations
  • $C$ : model selection scheme

3.2 Architecture Space

OFA 네트워크는 한 개의 모델이지만, CNN의 중요한 기준들(depth, width, kernel size, and resolution)을 다양하게 변경 가능한 sub-networks를 함께 제공한다. 일반적인 CNN 이론에 따라 본 연구에서도 점점 feature map size는 작아지며, channel numbers는 증가하는 구조를 채택했다.

  • input image size: 128 ~ 224 w. stride 4 (25 different input resolutions)
  • depth: {2,3,4}
  • width: {3,4,6}
  • kernel size: {3,5,7}
  • 5 units

모든 sub-networks들이 weights를 공유하므로, OFA 네트워크는 7.7M parameters만 저장한다!

3.3 Training the Once-For-All Network

Na ̈ıve Approach

OFA network 학습은 multi-objective problem으로, 각각의 sub-network를 학습하는 것이 하나의 problem이다. 이런 관점에서 가장 기초적인 학습 방법은 모든 목표에 대한 gradient를 구해서 처음부터 학습하는 것이다. 이를 위해서는 모든 sub-networks의 경우를 미리 계산해야 한다. 그러나 이 방법은 sub-networks의 수에 따라 선형적으로 연산량이 증가하게 된다는 문제가 있다. 따라서 제한된 시나리오의 경우에만 이런 접근이 가능하다.

또 다른 기본적인 접근법은 몇 개의 sub-networks를 매 step 마다 샘플링하는 것이다. 그러나 수 많은 sub-networks가 weights를 공유하므로, 이러한 방법으로는 모든 sub-networks의 accuracy를 유지할 수 없었다.

Progressive Shrinking

큰 sub-networks부터 작은 sub-networks 순서대로 점진적으로 학습하는 방법을 제안한다. 아래의 Figure 3, Figure 4가 Progressive Shrinking (PS) 학습 예시를 나타낸 것.

f3

f4

  1. 일단 가장 큰 신경망 네트워크를 최대 kernel size, depth, width로 학습
  2. 그 다음, 점진적으로 sub-networks를 학습시키기 위해 sampling space를 점점 넓혀감
  3. 최대 사이즈의 네트워크를 학습한 뒤, kernel size를 각 layer에서 {3, 5, 7} 중 선택할 수 있도록 하지만 depth, width는 최대값으로 고정
  4. 그 다음 차례로 depth, width를 elastic하게 변경
  5. resolution은 다양한 이미지 크기를 배치마다 샘플링 함으로써 전체 학습 내내 다양하게 학습(elastic)
  6. Knowledge distillation 기법도 가장 큰 네트워크의 결과를 활용해서 적용
  7. soft label과 real label 두 개에 대한 loss terms 활용

f5

f6

Elastic Kernel Size:
  • {3,5,7}이 가능하며, {3,5}의 weights는 공유
  • 공유되는 weights는 다른 분포 또는 크기를 가져야 함
  • 그래서 “kernel transformation matrices”를 고안
    • kernel transformation matrices는 layer마다 다름
    • 하지만 각각의 layer 안에서는 서로 공유함
    • 따라서 layer마다는 25x25 + 9x9 = 706개의 parameters만 추가됨
Elastic Depth:
  • 최대 N layers가 있을 때, D layers만 사용하는 경우 처음의 D layers의 결과만 사용
Elastic Width:
  • Width는 채널의 수를 의미
  • 유연하게 channel expansion ratios를 적용
  • 먼저 full model을 학습하고, channel sorting 후 channel을 선택
  • channel importance는 L1 norm을 활용하며, L1 norm이 클 수록 더 중요하다 판단

3.4 Specializaed Model Deployment with Once-For-All Network

OFA 네트워크를 학습한 뒤, 적절한 sub-network를 찾는 단계가 필요하다. 타겟 하드웨어의 efficiency constraints (latency, energy)를 만족시키면서도 accuracy가 가장 뛰어난 네트워크를 찾아야 하는 것이다. 이를 위해 “neural-network-twins”를 구성하여 주어진 신경망 구조에 따라 latency와 accuracy를 예측할 수 있게 했다.

  • 임의로 16K의 sub-networks를 샘플링하고, 10K validation images에 대한 accuracy를 측정
  • 이러한 [architecture, accuracy] 쌍은 accuracy predictor를 학습하는 데 사용
  • 또한 각각의 target hardware pltform에 대한 latency lookup table도 구성
  • 주어진 target hardware and latency 제약조건에 맞춰 evolutionary search를 통해 sub-network를 찾음

4. Experiments

ImageNet으로 테스트 했으며, 다양한 hardware platforms를 사용했다.

  • Samsung S7 Edge, Note8, Note10, Google Pixel1, Pixel2, LG G8, NVIDIA 1080Ti, V100 GPUs, Jetson TX2, Intel Xeon CPU, Xilinx ZU9EG, and ZU3EG FPGAs

4.1 Training the Once-For-All Network on ImageNet

f7

4.2 SPECIALIZED SUB-NETWORKS FOR DIFFERENT HARDWARE AND CONSTRAINTS

t1

f8

f9

f10

f12