Jul 06, 2021 \ Computer Vision, Research
당사가 EfficientNet을 보다 효율적으로 만든 방법
작성자
Dominic Masters
Jul 06, 2021 \ Computer Vision, Research
작성자
Dominic Masters
Graphcore Research는 컴퓨터 비전 모델 EfficientNet의 IPU(Intelligence Processing Unit) 성능을 최적화하는 세 가지 방법을 검토하는 새로운 논문을 발표했다. 세 가지 기술을 모두 결합하여 훈련 처리량을 7배, 추론 처리량을 3.6배 이상 향상 시켰다.
당사의 새 논문 "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 유효성 검사 정확도를 달성할 수 있다는 것도 발견했다. 이 수정은 실질적인 효율성을 크게 향상시킨다.
컨볼루션 및 행렬 곱셈 연산의 출력을 정규화하는 것은 현대 합성곱 신경망(CNN)의 필수 요소가 되었으며 배치 정규화는 이 목적에 사용되는 가장 일반적인 형식의 방법이다. 그러나 배치 정규화(Batch Norm)에 의해 도입된 배치 크기에 대한 제약은 배치 독립적 대안에서 일련의 혁신을 촉발시킨 잘 알려진 이슈이다. 이러한 방법 중 많은 것들이 ResNet 모델과 잘 작동하지만, 그 중 어느 것도 EfficientNet용 배치 정규화와 동일한 성능을 달성하지 못하는 것으로 나타났다.
배치 정규화에 대한 대안의 부족을 해결하기 위해 당사는 최근 논문에 소개된 새로운 배치 독립적 정규화 방법인 프록시 정규화(Proxy Norm)를 활용한다. 이 방법은 이미 성공적인 그룹 (및 레이어) 정규화 방법을 기반으로 한다.
그룹 정규화(Group Norm) 및 레이어 정규화(Layer Norm)는 활성화가 채널별로 비정규화 될 수 있는 문제로 어려움을 겪는다. 비정규화가 모든 레이어에서 강조되기 때문에 이 문제는 깊이와 더불어 악화된다. 이 문제는 그룹 정규화에서 단순히 그룹의 크기를 줄임으로써 피할 수 있지만, 이러한 그룹 크기의 감소는 표현도를 변하게 하고 성능을 저하시킨다.
프록시 정규화는 비정규화의 두 가지 주요 소스인 아핀변환과 그룹 정규화 또는 레이어 정규화를 따르는 활성 함수를 상쇄하면서 표현도를 보존함으로써 더 나은 해결책을 제공한다. 구체적으로, 비정규화는 그룹 정규화 또는 레이어 정규화의 출력을 가우시안 “프록시” 변수에 동화시키고 이 프록시 변수에 동일한 아핀 변환 및 동일한 활성 함수를 적용하여 대응한다. 그런 다음 비정규화된 프록시 변수의 통계는 실제 활성화에서 예상되는 분포 이동을 바로잡는 데 사용된다.
프록시 정규화를 사용하면 그룹 크기를 최대화하고(즉, 레이어 정규화를 사용) 채널별 비정규화 문제없이 표현도를 유지할 수 있다.
이 새로운 정규화 기술은 관련 논문에서 자세히 살펴 본다.
중요한 것은 이 전반적인 접근 방식이 배치 정규화의 음함수적 정규화 특성을 모방하지 않는다는 것이다. 이러한 이유로 추가 정규화가 필요하다. 이 연구에서 당사는 mixup과 cutmix의 조합을 사용한다. 레이어 정규화 + 프록시 정규화(LN + PN)의 성능을 표준 전처리 및 AutoAugment(AA)를 사용하여 두 개의 배치 정규화(BN) 기준치와 비교할 때 모델 크기의 전체 범위에서 LN + PN이 표준 전처리를 사용하는 BN의 성능과 일치하거나 이를 능가한다는 것을 발견했다. 더욱이 LN + PN은 AA가 증강 매개변수를 “훈련”하는 비용이 많이 드는 프로세스를 요구함에도 불구하고 AA가 있는 BN만큼 우수하다.
Touvron외 (2020) Touvron 등은 원래 훈련된 것보다 더 큰 이미지를 사용하여 마지막 몇 레이어의 훈련 후 미세 조정을 통해 상당한 정확도 향상을 달성할 수 있음을 보여주었다. 이 미세 조정 단계는 매우 저렴하기 때문에 실질적인 훈련 효율성 이득을 얻을 수 있다는 것이 분명했다. 이는 다수의 더 흥미로운 연구 문제를 제기했다. 효율성을 극대화하기 위해 훈련용 해상도를 어떻게 선택해야 하는가? 큰 이미지는 테스트 속도가 느리다는 점을 감안할 때 이것이 추론 효율성에 어떤 영향을 미치는가?
이러한 질문에 답하기 위해 “원래” 해상도 (원래 EfficientNet 작업에 정의된 대로) 또는 픽셀 수의 약 절반에 해당하는 해상도에서 두 해상도에 대한 훈련을 비교했다. 그런 다음 다양한 이미지 크기로 미세 조정하고 테스트했다. 이를 통해 효율성에 대한 훈련용 해상도의 직접적인 영향을 조사하고 훈련 및 추론에 대해 최고의 속도-정확도 절충을 달성한 Pareto 최적 조합을 결정할 수 있었다.
훈련 효율성을 비교할 때 두 가지 테스트 시나리오를 고려했다. 원래 해상도 테스트 또는 전체 해상도 스윕에서 유효성 검사 정확도를 최대화하기 위한 최상의 해상도를 선택하는 것이다.
원래 해상도에서 테스트할 때 절반 크기 이미지로 훈련하면 상당한 이론적 및 실제적 효율성 향상을 얻을 수 있다. 놀랍게도, 주어진 모델 크기에 대해 절반의 해상도로 훈련하고 원래 해상도에서 미세 조정하면 원래 해상도에서 훈련, 미세 조정 및 테스트하는 것보다 더 높은 최종 정확도를 얻을 수 있다. 이 결론은 ImageNet 훈련의 경우 훈련 때보다 항상 높은 해상도에서 테스트해야 함을 시사한다. 이제 이것이 다른 도메인에도 적용되는지 알아보자.
다음으로 “최상”의 이미지 해상도로 테스트할 수 있다면 원래 해상도로 훈련하면 최종 정확도가 크게 향상되어 Pareto Front에서의 갭이 좁아지는 것을 알 수 있다.
그러나 이를 달성하기 위해서는 “원래” 훈련 설계에 대한 “최상”의 테스트 해상도가 절반의 훈련 해상도 사례에 해당하는 것보다 훨씬 더 커진다는 점에 유의해야 한다. 이는 추론 시에 더 비싸진다는 것을 의미한다.
이 결과는 조사된 세 가지 개선 사항 (i) 그룹 컨볼루션 [G16 (당사) 대 G1]; (ii) 프록시 정규화된 활성화 [LN + PN (당사) 대 GN] 및 (iii) 절반 해상도 훈련 [절반 해상도(당사) 대 원래 해상도]에 의해 달성된 훈련 효율성에 대한 향상을 강조한다. 기준 결과에는 미세 조정이 없으며 원래 이미지 해상도를 사용한다 것에 주목해야 한다.
추론의 효율성을 자체적으로 비교해 보면 절반 해상도로 훈련하면 전체 정확도 범위에서 Pareto 최적 효율성을 얻을 수 있다. 이는 추론에서 직접적인 FLOP 이점이 전혀 없기 때문에 놀라운 결과이다. 또한 절반 해상도 추론 효율성 Pareto Front의 포인트는 훈련 처리량에 최적으로 유지된다.
모든 효율성 측정치에서 프록시 정규화를 사용하는 모델은 그룹 정규화를 사용하는 모델과 동등하거나 약간 더 나은 성능을 보인다. 이는 최대 10%의 처리량에서 적은 비용으로 정확도가 향상 되었기 때문이다. 그러나 중요한 것은 프록시 정규화를 사용하는 모델이 전체 Pareto Front에서 더 적은 매개 변수를 사용하고 모델 크기와 관련된 효율성 측면에서 프록시 정규화의 추가 이점을 돋보이게 한다.
이 연구를 수행하면서 훈련 및 추론의 전반적인 효율성을 개선하기 위해 EfficientNet 모델에 대한 몇 가지 수정 사항을 살펴 보았다.
이 모든 방법을 조합하여 당사는 IPU에서 실제 훈련 효율성을 최대 7배 향상시키고 실제 추론 효율성을 3.6배 향상시켰다. 이 결과는 EfficientNet이 IPU와 같은 그룹 컨볼루션 처리에 적합한 하드웨어를 사용하여 이론을 넘어 실질적인 실제 애플리케이션을 지향할 때 훈련 및 추론 효율성을 제공할 수 있음을 보여준다.
Sign up for Graphcore updates:
아래에 등록하시고 최신 뉴스와 업데이트를 받아 보십시오:
Sign up below to get the latest news and updates: