<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=145304570664993&amp;ev=PageView&amp;noscript=1">
Better EfficientNet performance in practice

Jul 06, 2021 \ Computer Vision, Research

당사가 EfficientNet을 보다 효율적으로 만든 방법

작성자

Dominic Masters

Graphcore Research 컴퓨터 비전 모델 EfficientNet IPU(Intelligence Processing Unit) 성능을 최적화하는 가지 방법을 검토하는 새로운 논문을 발표했다. 가지 기술을 모두 결합하여 훈련 처리량을 7, 추론 처리량을 3.6 이상 향상 시켰다.

실용적인 애플리케이션을 위한 EfficientNet 최적화

당사의 새 논문 "EfficientNet 효율적으로 만들기: 배치 독립적 정규화, 그룹 컨볼루션 감소된 해상도 훈련 탐색”, 당사는 이론적 효율적으로 최적화된 최첨단 모델 EfficientNet 이용하고 IPU 상에서 이를 실제로 효율적으로 만드는 가지 방법을 살펴 본다

예를 들어 IPU에서 매우 잘 수행되는 것으로 나타났던 그룹 컨볼루션을 추가하면 이론적 컴퓨팅 비용의 차이를 최소화하면서 실제 교육 처리량을 최대 3 향상시킬 있었다.

조사한 가지 방법을 모두 결합하여 비교 가능한 검증 정확도를 위해 훈련 처리량을 최대 7 향상시키고 IPU 상에서 추론을 3.6 향상시켰다.

일반적으로 부동 소수점 연산(FLOP)에서 측정되는 모델 학습의 이론적 비용은 계산하기 쉽고 사용 중인 하드웨어 소프트웨어 스택에 영향을 받지 않는다이러한 특성 덕분에 효율적인 딥러닝 모델을 찾는 핵심적인 동인이 이것은 매력적인 복잡도 척도가 되었다

그러나 실제로는 학습 비용의 이론적 측정값과 실제 비용 사이에 상당한 차이가 있다. 이는 단순한 부동 소수점 연산 카운트가 컴퓨팅 구조 데이터 이동과 같은 다른 많은 중요한 요인을 고려하지 않기 때문이다.

그룹 컨볼루션 소개

당사가 조사하는 번째 방법은 깊이별 컨볼루션(, 그룹 크기가 1 그룹 컨볼루션) 관련된 성능을 개선하는 방법이다. EfficientNet 기본적으로 모든 공간 컨볼루션 작업에 깊이별 컨볼루션을 사용한다. 그것들은 FLOP 매개 변수 효율적인 것으로 알려져 있어서 많은 최첨단 합성곱 신경망(CNN)에서 성공적으로 활용되었다. 그러나 그것들은 실제로 가속에 대한 가지 도전을 제시한다.

예를 들어, 공간 커널이 격리된 것으로 간주되므로 일반적으로 벡터 곱셈 누적 하드웨어에 의해 가속되는 결과로 초래된 내적 연산의 길이가 제한된다. , 하드웨어를 항상 완전히 사용할 수는 없으므로낭비되는사이클이 발생한다.

깊이별 컨볼루션은 또한 수행된 FLOP 수에 비해 상당한 양의 데이터 전송이 필요하므로 연산 강도가 매우 낮다. , 메모리 액세스 속도가 중요한 요소이다. 이로 인해 대안 하드웨어의 처리량이 제한될 있지만 IPU In-Processor Memory 아키텍처는 매우 높은 대역폭의 메모리 액세스를 제공하여 이와 같은 낮은 연산 강도 작업의 성능을 크게 향상시킨다.

마지막으로, 깊이별 컨볼루션은 MBConv 블록을 형성하기 위해 개의 조밀한 포인트별투영컨볼루션 사이에 끼워질 가장 효과적인 것으로 밝혀졌다. 이러한 포인트별 컨볼루션은 공간적 깊이별 컨볼루션 주변에서 6확장 계수만큼 활성화의 차원을 증가 감소시킨다. 확장은 좋은 작업 성능으로 이어지지만 매우 활성화 텐서를 생성하여 메모리 요구사항이 가장 중요한 특징이 되고 궁극적으로 사용할 있는 최대 배치 크기를 제한할 있다.

가지 문제를 해결하기 위해 당사는 MBConv 블록을 간단하지만 상당히 변경한다. 당사는 컨볼루션 그룹의 크기를 1에서 16으로 늘린다. 이는 나은 IPU 하드웨어 활용을 있게 한다. 그런 다음 FLOP 매개 변수의 증가를 보상하고 메모리 문제를 해결하기 위해 확장 비율을 4 줄인다. 이는 당사가 G16-EfficientNet이라고 부르는 EfficientNet 보다 메모리 효율적이고 계산이 컴팩트한 버전을 만들도록 했다

이러한 변경은 주로 처리량 향상에 의한 것이지만, 당사는 모든 모델 크기에서 바닐라 그룹 크기 1 (G1-EfficientNet) 기준보다 높은 ImageNet 유효성 검사 정확도를 달성할 있다는 것도 발견했다. 수정은 실질적인 효율성을 크게 향상시킨다.

EfficientNet Figure 1

G1-EfficientNet (기준) 대 G16 변형 (당사)의 이론적 (왼쪽) 및 실제 (오른쪽) 효율성 비교

프록시 정규화된 활성화

컨볼루션 행렬 곱셈 연산의 출력을 정규화하는 것은 현대 합성곱 신경망(CNN) 필수 요소가 되었으며 배치 정규화는 목적에 사용되는 가장 일반적인 형식의 방법이다. 그러나 배치 정규화(Batch Norm) 의해 도입된 배치 크기에 대한 제약은 배치 독립적 대안에서 일련의 혁신을 촉발시킨 알려진 이슈이다. 이러한 방법 많은 것들이 ResNet 모델과 작동하지만, 어느 것도 EfficientNet 배치 정규화와 동일한 성능을 달성하지 못하는 것으로 나타났다.

배치 정규화에 대한 대안의 부족을 해결하기 위해 당사는 최근 논문 소개된 새로운 배치 독립적 정규화 방법인 프록시 정규화(Proxy Norm) 활용한다. 방법은 이미 성공적인 그룹 ( 레이어) 정규화 방법을 기반으로 한다.

그룹 정규화(Group Norm) 레이어 정규화(Layer Norm) 활성화가 채널별로 비정규화 있는 문제로 어려움을 겪는다. 비정규화가 모든 레이어에서 강조되기 때문에 문제는 깊이와 더불어 악화된다. 문제는 그룹 정규화에서 단순히 그룹의 크기를 줄임으로써 피할 있지만, 이러한 그룹 크기의 감소는 표현도를 변하게 하고 성능을 저하시킨다.

프록시 정규화는 비정규화의 가지 주요 소스인 아핀변환과 그룹 정규화 또는 레이어 정규화를 따르는 활성 함수를 상쇄하면서 표현도를 보존함으로써 나은 해결책을 제공한다. 구체적으로, 비정규화는 그룹 정규화 또는 레이어 정규화의 출력을 가우시안프록시변수에 동화시키고 프록시 변수에 동일한 아핀 변환 동일한 활성 함수를 적용하여 대응한다. 그런 다음 비정규화된 프록시 변수의 통계는 실제 활성화에서 예상되는 분포 이동을 바로잡는 사용된다.

프록시 정규화를 사용하면 그룹 크기를 최대화하고(, 레이어 정규화를 사용) 채널별 비정규화 문제없이 표현도를 유지할 있다.

EfficientNet Figure 2

 

추가 프록시 정규화된 활성화 연산이 있는 컨볼루션 블록은 빨간색으로 표시된다.

새로운 정규화 기술은 관련 논문에서 자세히 살펴 본다.

중요한 것은 전반적인 접근 방식이 배치 정규화의 음함수적 정규화 특성을 모방하지 않는다는 것이다. 이러한 이유로 추가 정규화가 필요하다. 연구에서 당사는 mixup cutmix 조합을 사용한다. 레이어 정규화 + 프록시 정규화(LN + PN) 성능을 표준 전처리 AutoAugment(AA) 사용하여 개의 배치 정규화(BN) 기준치와 비교할 모델 크기의 전체 범위에서 LN + PN 표준 전처리를 사용하는 BN 성능과 일치하거나 이를 능가한다는 것을 발견했다. 더욱이 LN + PN AA 증강 매개변수를훈련하는 비용이 많이 드는 프로세스를 요구함에도 불구하고 AA 있는 BN만큼 우수하다.

EfficientNet Figure 3

다양한 크기의 EfficientNet에 대한 다양한 정규화 방법들의 비교

감소된 해상도 훈련

Touvron외 (2020) Touvron 등은 원래 훈련된 것보다 이미지를 사용하여 마지막 레이어의 훈련 미세 조정을 통해 상당한 정확도 향상을 달성할 있음을 보여주었다. 미세 조정 단계는 매우 저렴하기 때문에 실질적인 훈련 효율성 이득을 얻을 있다는 것이 분명했다. 이는 다수의 흥미로운 연구 문제를 제기했다효율성을 극대화하기 위해 훈련용 해상도를 어떻게 선택해야 하는가? 이미지는 테스트 속도가 느리다는 점을 감안할 이것이 추론 효율성에 어떤 영향을 미치는가?

이러한 질문에 답하기 위해원래해상도 (원래 EfficientNet 작업에 정의된 대로) 또는 픽셀 수의 절반에 해당하는 해상도에서 해상도에 대한 훈련을 비교했다. 그런 다음 다양한 이미지 크기로 미세 조정하고 테스트했다. 이를 통해 효율성에 대한 훈련용 해상도의 직접적인 영향을 조사하고 훈련 추론에 대해 최고의 속도-정확도 절충을 달성한 Pareto 최적 조합을 결정할 있었다

훈련 효율성을 비교할 가지 테스트 시나리오를 고려했다. 원래 해상도 테스트 또는 전체 해상도 스윕에서 유효성 검사 정확도를 최대화하기 위한 최상의 해상도를 선택하는 것이다

원래 해상도에서 테스트할 절반 크기 이미지로 훈련하면 상당한 이론적 실제적 효율성 향상을 얻을 있다. 놀랍게도, 주어진 모델 크기에 대해 절반의 해상도로 훈련하고 원래 해상도에서 미세 조정하면 원래 해상도에서 훈련, 미세 조정 테스트하는 것보다 높은 최종 정확도를 얻을 있다. 결론은 ImageNet 훈련의 경우 훈련 때보다 항상 높은 해상도에서 테스트해야 함을 시사한다. 이제 이것이 다른 도메인에도 적용되는지 알아보자

다음으로최상 이미지 해상도로 테스트할 있다면 원래 해상도로 훈련하면 최종 정확도가 크게 향상되어 Pareto Front에서의 갭이 좁아지는 것을 있다

그러나 이를 달성하기 위해서는원래훈련 설계에 대한최상 테스트 해상도가 절반의 훈련 해상도 사례에 해당하는 것보다 훨씬 커진다는 점에 유의해야 한다. 이는 추론 시에 비싸진다는 것을 의미한다.

EfficientNet Figure 4 with captions_KO

결과는 조사된 가지 개선 사항 (i) 그룹 컨볼루션 [G16 (당사) G1]; (ii) 프록시 정규화된 활성화 [LN + PN (당사) GN] (iii) 절반 해상도 훈련 [절반 해상도(당사) 원래 해상도] 의해 달성된 훈련 효율성에 대한 향상을 강조한다. 기준 결과에는 미세 조정이 없으며 원래 이미지 해상도를 사용한다 것에 주목해야 한다.

추론의 효율성을 자체적으로 비교해 보면 절반 해상도로 훈련하면 전체 정확도 범위에서 Pareto 최적 효율성을 얻을 있다. 이는 추론에서 직접적인 FLOP 이점이 전혀 없기 때문에 놀라운 결과이다. 또한 절반 해상도 추론 효율성 Pareto Front 포인트는 훈련 처리량에 최적으로 유지된다

EfficientNet Figure 5

이론적 및 실질적 추론 효율성 모든 해상도에서 테스트되었고 선은 Pareto Front를 나타낸다.

모든 효율성 측정치에서 프록시 정규화를 사용하는 모델은 그룹 정규화를 사용하는 모델과 동등하거나 약간 나은 성능을 보인다. 이는 최대 10% 처리량에서 적은 비용으로 정확도가 향상 되었기 때문이다. 그러나 중요한 것은 프록시 정규화를 사용하는 모델이 전체 Pareto Front에서 적은 매개 변수를 사용하고 모델 크기와 관련된 효율성 측면에서 프록시 정규화의 추가 이점을 돋보이게 한다.

EfficientNet 보다 효율적으로 만드는 방법

연구를 수행하면서 훈련 추론의 전반적인 효율성을 개선하기 위해 EfficientNet 모델에 대한 가지 수정 사항을 살펴 보았다.

  • MBConv 블록에서 그룹 컨볼루션을 추가하고 팽창비를 줄임으로써 공간 컨볼루션의 IPU 하드웨어 사용률을 개선하고 메모리 소비를 줄였다
  • 해상도가 절반인 이미지로 훈련함으로써 훈련 시간을 단축하고 최종 정확도를 크게 향상시켰다.
  • 새로운 정규화 방법인 프록시 정규화를 활용하여 배치 정보에 의존하지 않고 배치 정규화 성능에 필적하였다. 우리가 아는 이것은 EfficientNet 대해 이를 달성하는 번째 방법이다.

모든 방법을 조합하여 당사는 IPU에서 실제 훈련 효율성을 최대 7 향상시키고 실제 추론 효율성을 3.6 향상시켰다. 결과는 EfficientNet IPU 같은 그룹 컨볼루션 처리에 적합한 하드웨어를 사용하여 이론을 넘어 실질적인 실제 애플리케이션을 지향할 훈련 추론 효율성을 제공할 있음을 보여준다.

논문 읽기

게시물 더 보기