MIT, Google에서 작성.
1. latency budget에 맞춰서 layer-wise filter reduction
2. iteration(convex 문제 처럼) 으로 optimize
3. latency는 empirically 얻은 layer-wise LUT를 사용
→mobile CPU/mobile GPU 가 대상.
→실제로 Google Pixel 폰과 Galaxy S8에 돌려보았고, 후자의 경우 snap dragon benchmark Tool 을 사용
Review
1. HW 내부 구조를 전혀 고려하지 않았으나 결국 실제로 돌린 direct metric을 사용하니까 효과는 확실하다. 논문에서도 이를 장점으로 삼고 있고. 그러나 HW가 달라지면 LUT만드는 작업이 또 필요할 것이며 HW가 fix되지 않으면 사용할 수 없다.
2. LUT 만드는 작업에 얼마나 시간이 걸렸는지 얘기가 안되어있는데.. SNPE Tool을 읽어봐야 하겠다. 그러나 이미 언급된 단점이 있다면, computation time만 고려되고 feature map movement같은 애들은 고려되지 못했다.
3. latency 계산방식이나 optimization 방식이 매우 간결하다..엄청 키치하지는않음
4. fine-tuning 에 10,000 iteration사용했다고 함. fine-tuning 오래할 수록 성능 올라가고.. 구체적인 GPU time이 적혀있지 않은 것이 매우 신경쓰인다. 그리고 실험 조건도 (batch size, training set 크기 등) 제대로 안나와있음. 근데 1만 iteration이면 그렇게 많은 건 아닐듯.
5. mobile단이 target이라 MobileNet으로만 실험이 되었으며 VGG, ResNet같은 큰 애들은 돌리지 않음
6. image classification이 target task인데, 현재 image segmentation으로 넘어가고있는 area특성상 더이상 쓰이진 않을 것 같다.
결론
1. Budget + iteration 방법은 매우 간단해서 쓸만 하다고 생각
2. LUT 만들어서 쓰는 것도 쓸만 함
3. 그러나 FGPA implementation이 되지 않는 이상 당장은 쓸 수 없고, input network도 mobileNet 정도로 targetting을 해야할 것 같음