본문 바로가기

AI & Big Data/AI 경량화 논문 분석

Designing Energy-Efficient Convolutional Neural Networks using Energy-Aware Pruning

반응형

Basic Information

  • Tien-Ju Yang, Yu-Hsin Chen, Vivienne Sze 저
  • CVPR 2017 등재
  • 비고: 애초에 계획했던 결과물을 전혀 얻지 못한 논문. 단, 연구 중 부산물로 높은 compression률을 지닌 방법을 발견한 논문.
  • 논문 아카이브: Link
  • Energy Estimation Tool: Link

서론

  • 배터리로 구동되는 모바일 장치(예: 스마트폰, 웨어러블 기기)에서는 CNN을 사용하는 것이 어렵습니다. 주요 제한 요인은 CNN 처리의 높은 에너지 소비입니다.
  • CNN 모델 크기나 계산량을 줄이려는 이전의 노력들이 있었지만, 이러한 노력들이 반드시 에너지 소비를 줄이는 것은 아니었습니다. 따라서 이러한 목표들은 에너지 비용 추정에 좋은 지표가 아닙니다.
  • 역주) 본 논문은 주로 "모바일"을 타게팅하여 문제 해결을 암시하고 있지만, 이러한 Deep Neural Network의 Energy Comsumption 문제는 비단 모바일에만 국한되지 않습니다. 서버에서의 전력 소모 효율을 높이는 것은 비용, 그리고 더 나아가 친환경성과 ESG와도 맞물려 있습니다.

연구 방법

  • CNN 설계와 에너지 소비 최적화 사이의 간극을 줄이기 위해, CNN의 에너지 소비를 직접 사용하여 가지치기 과정을 안내하는 Energy-Aware Pruning 알고리즘을 제안합니다.
  • 에너지 추정 방법론은 실제 하드웨어 측정에서 추출된 매개변수를 사용합니다.
  • 제안된 계층별 가지치기 알고리즘은 필터 가중치 대신 출력 피처 맵의 오류를 최소화함으로써 이전에 제안된 가지치기 방법보다 더 공격적으로 가지치기를 수행합니다.
  • 각 계층의 가중치가 먼저 가지치기되고, 닫힌 형태의 최소 제곱 솔루션을 사용하여 빠르게 정확도를 복원합니다. 모든 계층이 가지치기되면, 전체 네트워크는 역전파를 사용하여 전역적으로 미세 조정됩니다.

Energy Estimation Tool

  • Energy Estimation Tool: Link

입력

다양한 도구 상자를 지원하기 위해, 이 도구는 단일 네트워크 구성 파일을 사용합니다. 네트워크 구성 파일은 txt 파일로, 각 줄은 CONV/FC 계층의 구성을 나타냅니다. 각 줄의 형식은 다음과 같습니다:

  • 입력 포맷
    • Layer Index: 계층의 인덱스로, 1부터 계층 수까지입니다. 줄 번호와 동일해야 합니다.
    • Conf_IfMap, Conf_Filt, Conf_OfMap: 입력 피처 맵, 필터, 출력 피처 맵의 구성입니다. 세 데이터 유형의 구성은 "높이 너비 채널 수 맵 또는 필터 수 0 항목 수 비트 폭(비트)" 형식입니다.
    • Stride: 이 계층의 스트라이드입니다. "stride_y stride_x" 형식입니다.
    • Pad: 입력 패딩량입니다. "pad_top pad_bottom pad_left pad_right" 형식입니다. 따라서 각 줄에는 쉼표로 구분된 25개의 항목이 있습니다.
  • 추정 모델 실행 텍스트 파일을 만든 후, 아래의 단계를 따라 텍스트 파일을 업로드하고 추정 모델을 실행하세요.
  • "나는 로봇이 아니다" 체크박스를 체크하고 Google reCAPTCHA 챌린지를 완료하세요. 스팸을 방지해주세요. 아래의 "파일 선택" 버튼을 클릭하여 컴퓨터에서 텍스트 파일을 선택하세요. 아래의 "추정 모델 실행" 버튼을 클릭하여 텍스트 파일을 업로드하고 추정 모델을 실행하세요. 추정 모델은 약 10초가 걸립니다. 기다려 주시고 실행 버튼을 한 번만 클릭하세요. 성공적으로 완료되면 결과를 컴퓨터에 다운로드할 수 있는 다운로드 버튼이 페이지 상단에 나타납니다. 출력에 대한 자세한 정보는 아래를 참조하세요. 문제가 발생하면 버튼 아래에 빨간색 텍스트로 오류 메시지가 표시됩니다.

Energy-Aware Pruning

  • 우리의 목표는 주어진 CNN의 에너지 소비를 필터를 희소화함으로써 줄이는 것이며, 네트워크의 정확도에 큰 영향을 미치지 않습니다. 제안된 에너지 인식 가지치기의 주요 단계는 Fig. 2에 나와 있으며, 입력은 CNN 모델이고 출력은 에너지 소비가 더 낮은 희소한 CNN 모델입니다.
  • 단계 1에서는 Sec. 2에서 설명한대로 에너지를 기반으로 계층의 가지치기 순서가 결정됩니다. 단계 2, 3, 4는 각각 네트워크의 한 계층에 대해 가중치를 제거, 복원 및 지역적으로 미세 조정합니다. 이 내부 루프는 네트워크의 각 계층에 대해 반복됩니다. 가중치를 가지치기하고 복원하는 것은 가중치를 선택하는 것을 포함하며, 가중치를 지역적으로 미세 조정하는 것은 출력 피처 맵 오류를 최소화하면서 가중치의 값을 변경하는 것을 포함합니다. 단계 2에서는 목표 압축 비율 이상의 가중치를 빠르게 제거하기 위해 간단한 크기 기반 가지치기 방법이 사용됩니다 (예: 목표 압축 비율이 30%라면, 이 단계에서 가중치의 35%가 제거됩니다). 추가로 제거된 가중치의 수는 경험적으로 결정됩니다. 단계 3에서는 출력 오류를 줄이는 데 가장 큰 영향을 미치는 관련 가중치가 원래의 0이 아닌 값으로 복원됩니다 (예: 가중치의 5% 복원). 단계 4에서는 보존된 가중치가 닫힌 형태의 최소 제곱 솔루션으로 지역적으로 미세 조정되어 출력 피처 맵 오류를 더욱 줄입니다.
  • 각 개별 계층이 단계 2에서 4를 사용하여 가지치기되면, 단계 5는 전체 네트워크에 걸쳐 가중치의 전역 미세 조정을 수행합니다. 이러한 모든 단계는 최종 네트워크가 주어진 정확도, 예를 들면 1%의 정확도 손실을 유지할 수 없을 때까지 반복적으로 수행됩니다.
  • 이전의 크기 기반 가지치기 접근법 [6-10]과 비교하여, 이 작업의 주요 차이점은 단계 1, 3, 4의 도입입니다. 단계 1은 에너지 소비를 최소화하기 위한 가지치기를 가능하게 합니다. 단계 3과 4는 압축 비율을 늘리고 에너지 소비를 줄입니다.

실험 결과

결론

  • CNN 설계와 에너지 효율 최적화 사이의 간극을 줄이기 위한 핵심은 에너지를 직접 사용하여 설계를 안내하는 것입니다.
  • 전체 에너지 소비를 최소화하면서 정확도 저하를 최소화하기 위해 새로운 CNN 가지치기 알고리즘을 제안합니다.
  • 이 연구의 주요 기여는 다음과 같습니다:
    1. 에너지 추정 방법론: 가중치 수나 연산 수는 에너지 효율성을 향상시키기 위한 CNN 설계를 안내하는 좋은 지표가 아닙니다. 따라서 CNN의 에너지 소비를 직접 사용하여 설계를 안내합니다.
    2. 에너지 인식 가지치기: 가중치의 수를 대폭 줄이기 위해 새로운 계층별 가지치기 방법을 제안합니다. 이 방법은 에너지 소비를 최대화하기 위해 가중치를 더 공격적으로 가지치기합니다. 결과적으로 AlexNet의 에너지 소비는 가지치기 후 3.7배 감소하며, GoogLeNet의 경우 1.6배 감소합니다.

그러나

  • CNN의 가중치 수나 연산 수는 실제 에너지 소비를 직접 반영하지 않습니다. 더 작은 모델 크기나 더 적은 연산을 가진 CNN도 전체적으로 더 높은 에너지 소비를 가질 수 있습니다.
  • CNN의 에너지 소비 원인은 계산뿐만 아니라 메모리 접근도 포함됩니다. 실제로 DRAM에서 연산을 위한 데이터를 가져오는 것은 계산 자체보다 에너지 소비가 훨씬 높습니다.
  • 따라서 위에서 언급한 접근법이 CNN의 에너지 소비를 직접 최적화할 수 있다는 증거는 아직 없습니다.
    • (역자 주: .............)
반응형