경량화 방법 : Pruning
Date:
경량화 - Pruning
- Pruning : 중요도가 낮은 파라미터를 제거하는 방법
Pruning 종류
- Pruning 단위에 따라 크게 두 가지(Structured, UnStructured)로 구분 가능함
- Structured : Group 단위
- UnStructured : fine grained 단위
Structured Pruning
- 파라미터를 그룹 단위로 Pruning 진행
- 그룹 단위 : Channel, Filter, Layer Level 등으로 정의하여 진행 가능함
- Masked (0으로 Pruning 된)된 그룹으로 실질적인 연산 횟수를 줄일 수 있어 속도 향상에 직접적인 영향이 있음
🔍관련 논문
- Learning Efficient Convolutional Networks Through Network Slimming(ICCV 2017)
- 단위 : Structured
- 기준 : BatchNorm Scaling Factor $\gamma$
- 적용 : Global
- Phase : 학습된 모델
- 각 filter에 BN의 Scaling Factor $\gamma$가 곱해지기 때문에, Scaling Factor $\gamma$가 커지면, filter weight 크기는 일반적으로 커질 것으로 예상
- Scaling Factor $\gamma$ 크기를 기준으로 p%의 채널을 pruning 진행
- Scaling Factor $\gamma$에 L1-norm을 Regularize로 사용하여 Insignificant Channel들을 자연스럽게 Prune 되도록 유도함
- ImageNet 기준, VGG11, 50% Pruning, FlOPS 30.4%, 파라미터 수 82.5% 감소
- HRank:Filter Pruning using High-Rank Feature Map(CVPR 2020)
- 단위 : Structured
- 기준 : Feature map filter SVD Rank
- 적용 : Local
- Phase : 학습된 모델
- Weight가 아닌 Feature map output을 보자
- Feature map output의 각 Filter SVD를 적용하여 Rank를 계산함
- But, Feature map output은 이미지에 따라 달라지지 않나?
- 해당 논문에서는 Random한 image들의 Feature map output을 계산하여 Rank를 구해보니 실험적으로 차이가 없음을 확인함
- ResNet50, ImageNet 기준 약 44%의 FLOPS 감소, 1.17% 성능 하락
- 계산은 torch에 matrix rank 계산 함수를 이용하여 사용 가능함
UnStructured Pruning
- Parameter 하나하나를 독립적으로 Pruning 진행
- 행렬이 점점 Sparse 해지게 되지만 Filter의 수가 없어지는게 아니기 때문에 실질적인 속도가 계선되진 않음
- 하지만 Sparse Representation에 대해서 연산 가속이 가능하면 속도가 계선될 수도 있음
🔍관련 논문
- The Lottery Ticket Hypothesis : Finding Sparse, Trainable Neural Networks(ICLR 2019)
- 단위 : Unstructured(fine grained)
- 기준 : L1 Norm
- 적용 : Global
- Phase : 학습된 모델
- 방법 : 약간의 Prune → 재학습 → 약간의 Prune → 재학습 …(iterative pruning)
- Prune된 Sparse한 모델들은 일반적으로 학습이 어려움
- Lottery Ticket Hypothesis : Dense하고, Randomly-initialized된 feed-forward Net은 기존 original Network와 필적하는 성능을 갖는 sub-networks(winning tickets)을 갖는다는 가정(Pruning-obtained network들 중 original network만큼 학습이 잘되고, 높은 accuracy를 갖는 sub-networks가 있을 것을 가정)
- 이런 Lottery Ticket(sub network)를 찾기 위한 방법론을 제시하였고, 10~20%의 Weight만으로 원 network와 동일 성능을 냄
- Identifying Winning Tickets 구하는 방법
- 네트워크 초기화 $f(x;\theta_{0})$
- 네트워크를 학습하여 parameter $\theta$를 구함(j번째 학습하면 $\theta_{j}$)
- parameter $\theta_{j}$를 $p\%$ 만큼 pruning 진행 → mask $m$를 생성(p는 보통 20%)
- 살아남은 Parameter(Mask되지 않은 애들)를 초기 Parameter($\theta_{0}$)로 되돌림, 이때 나온 결과를 Winning Ticket($f(x;m\odot\theta_{0})$, mask된 영역은 0으로 나머지는 $\theta_{0}$(초기화)로 정의함)이라고 함
- Target Sparsity(e.g. 90%)에 도달할때까지 B - D 반복 진행(10회 진행할 경우 $(1-0.2)^{10} \approx 10.7\%$)
- 간단한 Idea로 좋은 성능을 뽑아내고, Pruning 후 Fine tuning하는 방식을 고집하던 기존 틀을 깨고 새로운 패러다임을 제시함
- 하지만, 매우 느린 학습시간
- Stabilizing the Lottery Ticket Hypothesis(arXiv 2019) ; Weight Rewinding
- LTH(Lottery Ticket Hypothesis)의 경우 데이터셋이나, 네트워크의 크기가 커졌을때 불안정한 모습이 있었음
- 그래서 기존 LTH에서 Parameter를 초기화 하여 재학습하는 것이 아닌 k번째 Epoch의 학습 Parameter를 사용하여 안정화 시킴
- 논문에서는 총 Iteration의 0.1~7% 지점을 Rewinding point로 언급함
- Weight와 Learning Rate 모두를 Rewind(되돌려)서 Pruning → Retrain 진행함
- Comparing Rewind And Fine-Tuning In Neural Network Pruning(ICLR 2020); Learning Rate Rewinding
- 2번 논문에서 사용한 Weight Rewinding는 하지 않고 Learning Rate만 Rewinding하여 진행함
💡 LTH
- 왜 아직 잘되는지 설명이 안됨(But, RL, NLP 등등 다양한 분야에서 적용이 가능함이 Report되고있음)
- 특정 initialization에 대해서, 학습 후 도달하는 공간이 유사? → 네트워크의 학습 및 수렴 관련 연구와 접목되는 부분
- Linear Mode Connectivity and the Lottery Ticket Hypothesis(ICML 2020)
- 네트워크의 학습 및 수렴 관련된 실험
- 특정 학습 시점(epoch at 0,k)에서 seed를 변경하여 두 개의 Net을 학습 후 비교해봄(SGD를 통한 계산 결과가 다르기 때문에 다른 곳으로 수렴)
-
Seed를 통해 다른 Weight를 학습한 후 두 Net Weight의 Linear interpolation을 사용하여 weight간의 어떤 관계성을 확인해 보고자함
- $W_0$를 사용하였을 경우에는 Weight값이 수렴 자체를 안하는 경향성이 보였지만,
- $W_k$를 사용한 경우 특정 k번째에서 수렴하는 결과가 나오기 시작함
- 두 가지 결과를 비교해보고 생각해 봤을때 어느 정도 학습이 진행되면 한 Plate위에서 학습되는게 아닐까?라는 의문을 남겼고, 이 부분이 LTH와 어떻게 관련이 있는지 많은 연구들이 진행되고 있음
- Deconstructing Lottery Tickets:Zeros, Signs, and the Supermask(NeurIPS 2019)
- LTH의 경우 $w_f$를 L1 norm으로 줄세워 Masking 진행하게 되는데, 이때 $w_i$를 함께 비교하는 방식을 제안함
정리
아쉬운점
- Structured/Unstructured 모두 간단한 Architecture 벤치마크를 수행함(MobileNet, EfficientNet, NASNet 등 Modern한 Architecture는 잘 다루지 않음)
- 다양한 Architecture에 적용하려면 여러가지 예외처리, 추가 검증을 필요로함(Transformer는 그래도 덜한 편)
- 파라미터 수, FLOPs로 비교를 많이 하지만, 실질적으로 Latency 향상 정도와는 거리가 있음, 아직까지 Unstructured에서 연산 가속이 되는 HW가 많지 않음, 지원하는 추세이지만 아직 제약사항이 많음
- 연구 복잡도가 복잡해지는 정도에 비해 효과는 크지 않은 것 같음
강점
- 여전히 연구적 가치가 높고, 여러 분야와의 접목이 일어나는 추세
💡 수정 필요한 내용은 댓글이나 메일로 알려주시면 감사하겠습니다!💡
댓글