부제 : Efficiently search for efficient models
기존 NAS 방법에는 여러 문제점이 있다. 먼저 첫번째로 방법이 너무 무겁다는 점이다. search space를 만들고 각각의 search space를 찾아서 training시키고 evaluation하고 이러한 과정 자체가 굉장히 오래 걸리고 비용이 매우 크다. 그래서 proxy task를 이용해서 작은 데이터셋을 쓰겨나 (ex. CIFAR-10) 혹은 search space를 매우 작게 만들거나 더 적은 epoch로 training을 하는 등의 방법으로 조금 가볍게 만들어서 사용해왔다.
이러한 proxy task를 쓰지 않고 search 방법자체를 효율적으로 바꾸려는 시도들도 있었는데 그 중 하나가 ProxylessNAS 방법이다.
search space를 모두 포함하는 큰 네트워크를 하나를 만들고 training을 하는데 각 path마다 activation을 만들어서 training하거나 inference할때 특정 활성화된 path만 update가 일어나고 연산에 참여하는 식이다.
두번째 기존 NAS의 문제점은 보통 efficient한 네트워크를 찾을 때 MACs를 기준으로 찾는 경우가 많은데 MACs수가 작다고 반드시 더 속도가 빠른 것은 아니라는 것이다. MACs수는 연산량의 수인데 특정 연산은 빠르고 특정 연산은 느릴 수 있고 하드웨어마다 그러한 조건이 다를 수 있어서 MACs수는 작지만 오히려 속도가 느린 네트워크를 NAS를 통해 얻을 수도 있게 된다.
위의 표에서 볼 수 있다시피 NAS 방법으로 찾은 NASNet이나 AmoebaNet같은 경우가 MACs수는 MobileNet-V2보다 작지만 속도는 더 느린 것을 볼 수 있다. 또한 오른쪽 표에서는 hidden dimenssion수를 늘리거나 layer수를 늘리는데 비슷한 FLOPs수를 가지지만 hidden dimenssion은 늘어나도 gpu에서 속도차이가 크게 없는데 비해 layer를 늘리는 쪽은 gpu에서 속도 차이가 많이 나는 것을 볼 수 있다. 또한 gpu말고 라즈베리같은 다른 기기에서는 또 다른 경향을 보인다. 그런데 이러한 하드웨어 별 속도차이를 NAS에 추가하기 위해 하드웨어에서 속도를 측정하는 과정을 NAS에 넣으면 이 또한 굉장히 process를 무겁고 오래걸리게 만든다. hardware에서 측정하고 다시 결과를 이용해서 search를 하고 이러한 과정이 느리고 비싸기 때문이다.
이에 대한 해결방안으로는 latency prediction 모델을 만들어 해결하는 방법이 있다.
위의 그림과 같이 hardware에서 직접 측정해서 결과를 주고 받는것이 아닌 latency prediction모델에서 예측된 latency를 받아 NAS에서 활용하는 것이다. 이를 위해 hardware에서 특정 architecture들과 그 architecture의 latency를 미리 측정해서 dataset으로 만들어 latency 모델을 학습시켜 놓고 NAS에서 architecture를 찾으면 latency model에서 어느 정도의 속도가 나올지 예측을 해준다. 보통 layer-wise로 특정 layer의 input, output, kenel size, channel size등을 input으로 받고 그에 대한 latency를 output으로 가지는 식으로 latency lookup table을 만들어 활용한다. 이렇게 학습된 latency prediciton 모델을 실제와 거의 똑같은 수준으로 latency를 예측해준다고 한다. 이러면 훨씬 빠르고 적은 비용으로 NAS방법을 사용해 architecture를 찾을 수 있다고 한다.
이렇게 찾은 네트워크가 다른 NAS 방법들보다 정확도, 속도면에서 더 좋은 결과를 얻었고 특정 hardware별로 얻어낸 네트워크도 다르고 속도도 특정 hardware를 위해 찾아진 network가 그 특정 hardware에서 더 빠른 결과를 얻는 것을 볼 수 있었다.
'AI 강의 정리 > TinyML and Efficient Deep Learning' 카테고리의 다른 글
Neural Architecture Search (NAS) - Once-for-All (0) | 2023.06.26 |
---|---|
Neural Architecture Search (NAS) - Framework (0) | 2023.06.17 |
Neural Architecture Search (NAS) - Manually Designed Neural Networks (0) | 2023.06.16 |
[MIT 6.S965] Lecture 03 - Pruning and Sparsity (Part I) (2022 Fall) (0) | 2023.03.17 |