음악 분류 딥러닝을 만들자(18) - NetAdapt

응큼한포도·2024년 8월 13일
0

NetAdapt

참고 논문

https://arxiv.org/abs/1804.03230

과정

  1. NAS과정을 통해 시작점인 seed network architecture를 설정한다

  2. 기존 아키텍처를 이것저것 수정해본 여러개의 아키텍처를 만든다

  3. 변형한 아키텍처가 지연 시간(latency)이 최소한 δ만큼 감소한것만 선택한다

  4. 이전 아키텍처에서 사용한 가중치를 새로운 아키텍처에 적용한다 이때 새로운 아키텍처에서 새로운 레이어가 추가된 부분이나 없어진 부분은 가중치를 잘라내거나 무작위로 초기화한다

  5. 각각 수정해본 아키텍처를 T 단계만큼 미세 조정(finetuning)한다. 여기서 T는 미세조정 횟수

  6. 가장 좋은 모델을 선택한다

  7. 목표로 하는 지연시간에 도달하기 전까지 위 과정을 반복한다

알고리즘

Net: pretrain한 네트워크
Acc: accuracy
Resj: j번째 resource에 대해 직접적으로 측정한 metric
budj: j번째 resource의 budget

상세 알고리즘은 위와 같다

그런 과정을 layer마다 필터에 적용해준다. 한가지 유의할 점은 기준치 미달인 필터의 가중치를 없애는게 아닌 필터 자체와 그 필터와 연관된 필터를 없앤다. 그 편이 이점이 더 많다고 함

보완점

NetAdapt의 가장 큰 특징은 하드웨어에서 직접 측정한다는 점인데 이 직접 측정한다는 점이 성능에서 큰 병목을 일으킬 수 있다.

그래서 논문 저자들은 미리 layer마다 필요한 resource 소비량을 가늠하는 방식으로 보완하고 있다

구현

구현은 코드가 길어져서 끊어서 진행하겠다

profile
미친 취준생

0개의 댓글