반응형

EfficientViT 배경 설명

  • EfficientViT는 2023년 발표된 논문이다. 
  • ViT의 memory 효율성을 개선하기 위해, 샌드위치 구조의 레이아웃과 cascaded group attention을 도입한 EfficientViT model을 제안하였다.
  • model 속도와 accuracy가 매우 좋다. 

Abstract

  • ViT는 성능이 좋지만, 연산 비용이 너무 커서, 실사용에 문제가 있다.
  • 이 논문에서는 EfficientViT라는 빠른 속도의 ViT 모델을 소개한다. 
  • 기존 transformer 구조의 모델들이 memory를 효과적으로 사용하지 못하는 MHSA(Multi-Head Self-Attention)의 tensor reshaping이나 element-wise function으로 인해 제약이 있음을 발견했고, FFN 층들 사이에 MHSA를 배치하는 샌드위치 구조를 구성하여 memory 사용량을 줄였다. 
  • 또한, head들의 attention map들 간에 비슷한 부분을 공유하여, 연산적으로 불필요한 부분이 많다는 것을 발견하였다. 이를 해결하기 위해, cascadede group attention module이라는 feature를 각기 다른 split들로 attention head를 통과시키는 구조를 제안했다. 이로 인해, 단순 연산의 단순함뿐 아니라, attention의 다양성도 향상했다. 
  • 실험을 통해, EfficientVit는 기존 efficient model들에 비해 더 빠른 속도에서 좋은 성능을 보임을 증명했다.

 

Introduction

[배경]

  • 기존 ViT model들은 computer vision 분야에서 좋은 성능을 보여주었지만, 성능 증가에 다라 model size 증가와 연산 overhead 증가로 인해, 실시간을 요하는 상황에서 사용하기 불안정하다. 
  • 이를 해결하기 위해, 다양한 ViT 경량화 model들이  나왔지만,  model parameter와 Flop을 줄이는 방식을 사용했기에 속도에 대한 객관적 측정이 될 수 없고, 실제 inference throunput을 반영하지 못한다. (속도 향상이 model size 줄이는 것에 기인했는지, 방법에 기인했는지 객관적 판단 불가)

[논문-Analysis]

  • 이를 해결하기 위해, 논문에서는 ViT를 빠르게 하기 위해 근본적으로 ViT를 어떻게 설계해야할지를 연구하였다.
  • ViT inference speed에 영향을 미치는 3가지 요인인, memory access, computation redundancy, parameter usage 측면에서 살펴봤고, 그중, memory bound의 영향이 큰 것을 발견했다. 
  • 즉, memory 접근이 GPU/CPU의 연산 활용을 막고, 속도에 부정적 영향을 미침을 발견했다. 
  • memory가 비효율적으로 활용되는 연산들은 주로 multi-head self attention(MHSA)의 tensor reshaping과 element-wise function 연산에서 나타났다. 
  • 논문에서는 MHSA와 FFN의 비율을 적절히 조정하여 성능을 유지하면서 memory 접근을 크게 줄였다. 
  • 또한, 몇개의 attention head들이 서로 선형 관계를 갖기 때문에 attetion map에 불필요하다는 것을 발견하였다. 
  • 이 현상을 각 head에 다양한 feature를 제공하는 방식을 활용하여, 완화시키고 연산 효율성도 가져갈 수 있다.
  • 추가적으로 parameter 효율성을 향상하기 위해, structured pruning을 이용하여, 불필요한 parameter를 줄였다.

[EfficientViT]

  • 논문에서는 앞선 연구를 바탕으로 "EfficientViT"를 제안한다.
  • 특히, 샌드위치 구조의 레이아웃으로 모델을 만들어, MHSA와 FFN 사이에 하나의 memory bound만 두게 하여, 연산 속도를 향상했다.
  • 또한, 새로운 cascaded group atention(CGA) 모듈을 제안하여, 연산 효율성을 향상했다. 
  • CGA의 핵심 아이디어는 head에 각기 다른 feature를 input으로 준다는 것이다. (즉, Head 들간의 선형적 관계 등의 중복된 feature들이 연산에 비효율적이기 때문에 각기 다른 feature를 보도록 조정하겠다.)
  • 마지막으로, network의 중요한 부분에 channel을 늘리는 등 parameter를 재조정하여, parameter 효율성을 향상한다. 

[실험]

  • 기존 CNN과 ViT 기반의 lightweight 모델에 비해 빠르면서 성능이 좋다.

 

ViT 속도 연구

  • ViT 효율성을 향상하기 위해, 3가지 측면(1.memory access 2.computation redundancy 3.parameter usage)에서 관찰하였다. 

Memory Efficiency

  • Memory 접근으로 인한 ovehead는 model 속도에 매우 주요한 요인이다. 
  • transformer의 연산 중, tensor reshaping, element-wise addition, normalization 등이 memory unit 사이들의 접근을 요해서, 시간이 오래 걸리게 된다. 
  • 이 연산들을 조금 더 간단하게 바꾸기 위한 연구들이 있었으나, (softmax self-attention 간략화, sparse attention, low-rank approximation) 대게 성능 하락이 존재하고, 속도 향상에 한계가 있었다.
  • 이 논문에서는 memory access를 줄이기 위해, memory-inefficient layer를 줄이는 방법을 사용한다. 
  • 최근 연구들에서 memory에 비효율적인 부분은 FFN보다 MSHA에 주로 존재한다고 하였다. 하지만, 기존 ViT 구조에서는 두 layer들이 동일한 수를 유지하고 있다. 
  • 논문에서 Swin-T, DeiT-T로 실험해 보았을 때, MSHA의 비율을 20~40%로 줄였을 때, 좋은 성능이 나오고, 속도로 각각 1.25배, 1.5배로 빨라졌음을 확인했다. (아래 그래프 참고)
  • 즉, MSHA의 비율을 줄이는 것이 모델 성능과 속도 측면에서 모두 유리했다.

 

Computation Efficiency

  • MHSA에서 attention map은 연산이 비싸지만, 그중 일부들은 꼭 필요 없다는 것이 알려져 있다.
  • attention 간의 similarity를 재보았을 때, 매우 높은 similarity를 보였다. 
  • 이것은 각 head들이 동일 feature에 대해서 비슷한 projection을 하기 때문에, 불필요한 연산들이 존재한다는 것을 의미한다. 
  • 각 head들이 다른 pattern을 보이게 하기 위해, 각 head에 feature의 부분 부분을 쪼개어 각기 다른 feauture를 처리하도록 하는 방법을 사용했다. 이것은 group convolution과 비슷한 개념이다. 


Parameter Efficiency

  • ViT는 NLP의 Transformer 구조를 그대로 가져왔기 때문에, Q, K, V의 구조를 따르고, FFN의 확장 비율을 4로 설정해 놓았다.
  • Lightweight model에서는 이러한 구조를 재설계하는 방식을 따르는데, 이 논문에서도 Talylor structured pruning을 사용하여 중요 parameter만 남기도록 하였다. 
  • 이 방법은 gradient와 weight의 곱을 channel 중요도로 정의하여, 중요하지 않은 channel을 제거하고, 가장 중요한 channel을 유지하는 방법을 사용한다. 
  • 연구를 통해, 2가지 사실을 알 수 있는데, 첫 번째로, 첫 2 stage에서는 더 많은 dimension을 유지하지만, 마지막 단계에서는 훨씬 적은 dimension이 유진 된다. 두 번째로, Q, K 및 FFN dimension은 크게 축소되지만, V dimension은 거의 유지되고, 마지막 몇 개의 block에서만 감소한다.
  • 이를 통해, 1) 기존 channel 구성 방식(FFN 확장 비율 :4)은 마지막 몇 개의 block에서 많은 중복을 초래한다. 2) Q, K는 V에 비해, 훨씬 많은 중복이 존재하고, V는 상대적으로 더 큰 dimension을 선호한다. 는 점을 유추할 수 있다.

 

 

EfficinetViT

EfficinetViT Building Block

  • 아래 그림처럼 EfficientViT는 memory 효율적인 샌드위치 구조의 layout과 cascaded group attention을 사용했다. 

[Sandwich Layout]

  • spatial mixing을 위해 self-attention layer를 중간에 두고, 이를 FFN layer가 양쪽에서 감싸는 형태로 구성하는 구조이다. 
  • 이 설계로 인해, model 내, self-attention layer로 인한 memory 사용 및 처리 시간을 줄이고, FFN layer를 더 많이 활용하여 , 다양한 channel 간 연결을 효과적으로 수행되도록 한다.

[Cascaded Group Attention]

  • MHSA에서 attention head의 중복성은 연산 효율성을 떨어뜨린다. 
  • 이를 해결하기 위해, group convolution에서 영감 받아, ViT용 Cascaded Group  Attentin을 제안한다.
  • 이는 각 head에 full feature를 나눈 서로 다른 부분을 입력으로 사용하여, attention 연산을 각 head에 분산시킨다.
  • CGA는 각 head의 입력에 더 풍부한 정볼르 포함하도록, Q, K, V layer를 개선한다. 
  • 각 head의 출력이 다음 head의 입력에 추가되어, feaure의 representation이 점점 향상된다. 
  • 추가적으로 Q projection 이후에 새로운 token interaction layer를 추가하여, self-attention이 local과 global 관계를 동시에 잡을 수 있도록 한다.
  • 이런 cascaded 방식은 2가지의 장점이 있다. 1) attention map의 다양성 향상 2) network 깊이 증가

[Parameter Reallocation]

  • parameter 효율성 증가를 위해, network의 parameter를 중요한 부분의 channel은 더 넓게, 안 중요한 부분은 더 좁게 만드는 재배치를 진행하였다.
  • Q, K는 앞선 연구를 바탕으로 작은 channel만 할당하였고, V에 대해선 느 input embedding과 동일 dimension을 유지하도록 하였다. 
  • 또한, FFN의 parameter 중복성을 고려해 기존 확장비율 4에서 2로 조정하였다.
  • 이로 인해, 중요 정보는 유지하면서 불필요 parameter를 줄여 model 효율성을 향상했다.

EfficinetViT Network Architecture

  • model은 크게 3가지 단계로 구성되었다. 각 단계는 앞선 EfficientViT Block들로 구성되어 있고, 각 subsampling layer에서 token 개수가 4배 감소한다.
  • 효과적인 subsampling을 위해, sandwich 구조의 subsampling block을 제안하였다. 정보 손실을 최소화하기 위해, ㄴself-attention layer를 inverted residual block으로 대체하였다. 
  • EfficientViT는 Layer Normalization 대신, Batch Normalization을 사용했다. (실행 시간 측면에서 유리)
  • 속도를 위해, GELU, HardSwish 대신 RELU를 사용했다.

 

 

Experiments

  • ImageNet-1K classification에서 기존 lightweight model들에 비해, 빠른 속도에서 더 좋은 성능을 보였다. 

 

Reference

Liu, X., Peng, H., Zheng, N., Yang, Y., Hu, H., & Yuan, Y. (2023). Efficientvit: Memory efficient vision transformer with cascaded group attention. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 14420-14430).

반응형

ViT 배경 설명

  • ViT는 2021 ICLR에 나온, Google Brain의 논문이다.
  • NLP 분야에서 광범위하게 사용되고 있던, Transformer를 computer vision 분야에 적용해 좋은 성능을 보여주었다. 

 

Abstact

  • Transformer가 NLP 분야에서는 standard로 자리 잡았지만, computer vision 분야에서 활용은 아직 한계가 있다.
  • vision 분야에서는 attention은 attention은 CNN과 함께 적용되거나, 그 요소를 바꾸는 데 사용하는 등, 전체적인 구조는 그대로이다.
  • 이 논문에서는 CNN구조의 중심이 불필요하고, image patches를 sequence 형태로 pure transformer에 바로 적용하는 것이 image classification에서 잘 working한다는 것을 보여준다.
  • 많은 양의 pre-trained 데이터로 학습하고, 적은 양의 image recognition benchmark들로 실험했을 때, Vision Transformer(ViT)는 SOTA CNN 구조보다 학습에 적은 연산 cost를 사용하면서 좋은 성능을 낸다.

 

Introduction

[배경]

  •  NLP 분야에서는 Transformer를 선두로 한, Self-attention-based 구조를 채택해서, 매우 좋은 성능을 보이고 있다.
  • Computer vision에서는 CNN 구조가 아직 대세이다. CNN 구조와 self-attention 구조를 연결하려고 노력하거나, conviolution을 대체하는 등 여러 연구들도 있었다.
  • 특히, convolution을 대체하는 연구는 이론적으로는 효율적이지만, 현재(그 당시) hardware accelerator 구조로는 적용이 어려웠다. 따라서, large-scale image recognition에서는 classic resnet 구조가 아직 SOTA였다.

[소개]

  • 이 논문에서는 standard Transformer를 거의 변경없이, 이미지에 적용한다. 이를 위해, image를 patch로 나누고, 이 patch들을 linear embeddings sequence 형태로 transformer에 넣는다. (image patche들은 NLP의 token처럼 다뤄진다.)
  • 모델은 image classification을 supervised learning으로 학습한다. 
  • ImageNet 같은 mid-sized 데이터셋에서 이 모델은 비슷한 크기의 resnet보다 몇 % 정도 낮은 수준의 정확도를 보인다. 
  • 이 결과는 기대에 밑돌아, Transformer가 inductive biases(추상적 일반화)가 CNN에 비해 떨어진다고 생각할 수 있다. 
  • 하지만, 대용량 dataset에서 실험했을 때, 상황은 바뀐다.
  • ViT는 충분한 pre-trained 데이터가 있을 때, 매우 좋은 성능을 보인다. 

 

Method

  • 모델 디자인은 original Transformer를 최대한 비슷하게 따랐다. (구현이 되어 있기에 바로 적용할 수 있어서)

[ViT]

  • Transformer는 1D 데이터를 처리하는데, 이미지는 2D이다. 이미지(HXWXC)를 다루기 위해, Image를 2D patches(PXPXC) 개로 나누었다. 
  • Transformer는 각 layer에서 constant latent vector size D를 유지하는데, 이를 위해, patch들을 학습 가능한 linear projection을 통해, D dimension 화하였다. 그리고, 이 결과를 patch embeddings라고 부른다.
  • BERT의 class token 처럼, patch embedding의 앞에 learnable embedding을 붙인다. 이것은 Transformer encoder의 output이 이미지 representation(y)이 될 수 있도록 사용된다. 
  • pre-training과 fine-tuning 단계에서 모두, Transformer encoder의 ouput이 classification의 head로 이용된다. 
  • classification head는 pre-training 단에서는 one hidden layer의 MLP로, fine-trurning 단계에서는 하나의 linear layer로 구성된다. 
  • Position embeddings는 patch embeddings에 더해져, 공간 정보를 제공한다.
  • ViT에서는 학습 가능한 1D position embeddings를 사용했는데, 2D의 position embedding이 성능에 딱히 영향이 없는 것 같아서 그랬다고 한다.
  • Transformer encoder는 multiheaded self-attention의 대체 layer들과 MLP block으로 구성되어있다.
  • Layernorm은 각 block 전에 적용되어 있고, 모든 block 끝에는 residual connection이 존재한다.
  • MLP는 GELU 함수를 사용한 2개의 latyer로 구성되어 있다. 

 
[Inductive bias]

  • ViT는 image specific inductive bias가 CNN에 비해 덜하다.
  • CNN에서는 지역 정보, 2D neighborhood 정보, translation 등분산성(골고루 보고 처리한다.)이 각 layer에 담긴다.
  • ViT에서는 MLP layer에서만 translation 등분산성과 지역 정보를 보고,  self-attention layer들에서는 전체적으로 본다. 
  • 2D neighborhood 정보는 드물게 사용된다. model의 시작에 이미지를 cutting 하고, fine-tuning 때는 position emeddings를 다른 resolution으로 처리하기 때문이다. 또한, initinalization 시에 embedding에는 정보가 없기 때문에, patch의 2D 위치와 patch 간의 공간 관계에 대해 처음부터 스스로 학습해야 한다. 

[Hybrid Architecture]

  • raw image patches의 대안으로, CNN의 feature 형태로 input sequence를 구성할 수 있다. hybrid model에서는 patch embedding을 CNN feature map으로부터 뽑는다.
  • 어떤 케이스에서는 1X1이 될 수 있는데, 이 것은 input sequence가 spatial dimension 정보를 flatten 한 케이스이다.
  • classification input embedding과 postion embeddings들은 아래처럼 더해진다. 

 
[Fine-turning and Higher resolution]

  • 기본적으로 ViT를 large dataset에서 pre-train 하였고, 적은 데이터셋에서 fine-tune 하였다.
  • 이를 위해, pre-trained prediction head를 지우고, zero-initialized D X K layer를 넣었다. (K는 classification class 개수)
  •  pre-trained 보디, fine-tune 때 높은 해상도의 이미지를 사용하는 것이 유리하다.
  • 고해상도 이미지를 넣을 때, patch size는 동일하게 유지한다. (sequence length만 늘어난다.)
  • ViT는 임의의 sequence length를 다룰 수 있지만, 그러면 pre-training 된 position embedding은 더 이상 의미가 없다. 
  • 이때는 pre-trained position embedding에 original image에서의 위치에 따라, 2D interpolation을 통해 처리했다. 

 

Experiments

  • Resnet, ViT, hybrid model을 실험했다. 
  • 각 모델의 데이터 필요도를 확인하기 위해, 다양한 사이즈에서 pre-train을 하였고, 다양한 benchmark에서 실험했다.
  • pre-training의 연산 cost를 생각했을 때, ViT는 매우 순조롭게, 적은 양의 연산 cost 만으로 SOTA recognition benchmark에 도달했다. 

[Setup]

  • Dataset : ILSVRC-2012 ImageNet 데이터셋(1000 classes, 1.3M images), superset ImageNet-21k(21k classes, 14M images), JFT(18k classes, 303M high resolution images)을 사용했다. benchmark로는 ImageNet의 original validation labels와 cleaned-up Real labels, CIFAR-10/100, Oxford-IIIT Pets, Oxford Flowers-102를 사용했다. 
  • Model Variants : ViT의 configuration는 BERT를 기반으로 했다. patch size가 작아질 수 록 연산은 expensive 해진다. (token이 많다고 생각하면 됨) CNN의 baseline으로는 ResNet을 사용했지만, Batch Normalizaation layer를 Group Normalization으로 대체했다.

[SOTA와 비교]

  • 특정 모델에서 ImageNet의 SOTA인 NoisyStudent보다 좋은 성능을 보여준다. 

 

Conclusion

  • image recognition에 Transformer를 사용해 보았다.
  • 과거 computer vision에서의 self-attention 구조와 다르게, image-specific inductive biases를 구조에 넣지 않았다. 
  • 대신에, 이미지를 patch들의 sequence로 다뤄, NLP처럼 처리했다. 
  • scalable 하고, large dataset에서 pre-training 했을 때, 잘 working 하여, ViT는 pre-trained에 많은 cost를 쓰지 않고도, SOTA image classification에 버금가는 성능을 보여주었다. 
  • 아직, 나아갈 길이 많다. (detection이나 segmentation 적용 등)

 

Reference

Dosovitskiy, Alexey, et al. "140 Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, 141 Jakob Uszkoreit, and Neil Houlsby. An image is worth 16x16 words: Transformers for image 142 recognition at scale." ICLR 3 (2021): 143.
 

총평

  • NLP 분야에서 혁신을 이뤄낸, transformer를 vision 분야에 도입하여 성능을 낸 게, 지금 시점에서는 당연해 보이지만, 이 도입을 위해 얼마나 고민하고, 실험했을지 싶다.
  • NLP처럼 transformer를 시작으로, GPT, BERT 등으로 이어지는 거대 모델의 흐름이 vision에도 적용될 것인지 살펴봐야겠다.

+ Recent posts