2024-08-13 | 인사이트 리포트

온디바이스 AI의 도전 과제 – 딥러닝 모델 ‘경량화’

Chloe Woo | Content Strategist

ondevice ai lightwegith 비유 그림

이전 아티클에서 온디바이스 AI의 개념과 장점에 대해 알아보세요.  

 

클라우드 기반의 대형언어모델(LLM)은 비교적 작은 모델도 파라미터가 최소 50억 개가 넘고, 용량도 수십 GB 수준입니다. 계속 커지는 추세이고요.

하지만 클라우드가 아닌 엣지 기기에서 AI가 제대로, 빠르게 작동하려면 AI 모델이 반드시 작아야 합니다. 그래서 최근 온디바이스 AI를 위한 ‘모델 경량화’ 기술이 활발히 연구되고 있죠.  

주요 딥러닝 모델의 이미지 분류 성능 표.

주요 딥러닝 모델의 이미지 분류 성능 표. 레이어가 많을수록(즉, 모델이 복잡할수록) 에러율이 감소합니다. 성능이 높아졌다는 의미입니다. 하지만 파라미터 수(용량)와 FLOPs(연산량)이 엄청나게 늘어납니다. Image Credit : https://www.mdpi.com/2073-431X/12/3/60

 

경량화는 크게 두 가지 방향이 있는데요. 하나는 효율을 극대화하기 위해 알고리즘 자체를 새로운 구조로 설계하는 ‘경량 알고리즘’ 기술입니다. 그리고 다른 하나는 이미 만들어진 딥러닝 모델에 군더더기를 덜어내는 ‘알고리즘 경량화’ 기술입니다. 어떤 방향이든, 모델이 적은 자원으로도 효율적으로 작동하게 만드는 것이 최종 목표입니다. ‘작지만 강력하게!’ 말이죠.  

이번 아티클에서는 다양한 모델 경량화 기술을 소개합니다.  

 

새로운 경량 알고리즘을 만드는 기술 

  

(1) 모델 구조 변경

 

레즈넷(ResNet):

일반적으로 신경망은 계층 수가 늘어날수록 정확도가 떨어집니다. 레즈넷은 이를 해결하기 위해 나온 모델입니다. 깊은 네트워크에서도 성능 저하 없이 학습할 수 있도록 해주죠. 일부 신경망을 건너뛰고 필요한 부분으로 바로 가는 일종의 지름길을 만드는 건데요. 연산 관점에서 보면 곱셈이 아닌 덧셈으로 문제를 단순화한 모델입니다(Residual Learning, 잔여 학습법). 이미지넷(Imagenet) 대회에서 사람보다 우수한 성적으로 성능을 입증했습니다.
  

스퀴즈넷(SqueezeNet): 

*합성곱 신경망(Convolutional Neural Network, CNN)은 보통 3×3 합성곱 필터를 씁니다. 스퀴즈넷은 1×1 필터를 사용해요. 이렇게 하면 파라미터 수가 9분의 1로 줄어들게 됩니다. 이런 1×1 필터를 활용해 채널 개수를 줄였다가 다시 늘릴 수 있습니다(파이어 모듈 기법). 덕분에 필요한 계산을 더 빠르게 할 수 있죠.  

동시에 모델의 성능을 유지하려고 앞서 소개한 레즈넷 학습 방식을 도입했습니다. 경우에 따라 특정 레이어를 거치지 않는 바이패스 브랜치(bypass branch)도 추가했죠. 그 결과, 분류 정확도가 3% 더 높아졌습니다.  

  • CNN(Convolutional Neural Network): 주로 이미지 인식에 사용되는 심층 신경망의 한 종류로, 합성곱 연산과 풀링을 통해 이미지를 분류합니다. 합성곱 연산은 이미지의 작은 영역에서 필터(커널)를 사용해 이미지의 경계, 모서리, 질감 등과 같은 정보를 추출하는 과정입니다. 풀링은 합성곱 층에서 추출된 특징 맵의 크기를 줄이고, 중요한 특징을 추려내는 과정입니다. 

 

(2) 합성곱 필터를 효율적으로

 

모바일넷(MobileNet):  

핵심 아이디어는 CNN에서 합성곱을 둘로 나누는 겁니다. 바로 ‘깊이별(Depthwise) 합성곱’과 ‘포인트별(Pointwise) 합성곱’인데요. 

먼저 각 입력 채널(깊이) 별로 합성곱을 합니다. 예를 들어 컬러풀한 이미지가 들어왔다면, 각 색상 채널(빨강, 초록, 파랑) 별로 따로따로 연산을 하는 것이죠. 그 다음에 포인트별 합성곱을 합니다. 1×1 필터를 사용해 앞서 계산한 채널별 출력을 결합합니다. 최종 연산량이 줄어드는 효과가 있습니다.  

  

셔플넷(ShuffleNet): 

셔플넷은 모바일넷보다 성능을 더 높이려고 제안된 모델입니다. 셔플넷은 ‘그룹 합성곱’과 ‘채널 셔플링’을 합니다. 

먼저 전체 입력 채널을 그룹으로 나눕니다. 그리고 각 그룹에 대해 합성곱을 합니다. 그런데 여기까지만 하면 해당 그룹 안에서만 정보가 흐릅니다. 마치 각 그룹별로 독립적인 네트워크를 학습시키는 것처럼 되죠. 그래서 ‘채널 셔플링’을 합니다. 각 그룹의 출력을 중간에 섞는 것이죠. 연산량을 더 줄이면서도 성능이 떨어지지 않습니다.  

셔플넷의 원리를 설명하는 그림

전체 입력 채널을 그룹으로 나눈 뒤 각 그룹에 대해 합성곱을 합니다. 중간에 각 그룹의 출력을 섞는 ‘채널 셔플링’을 합니다. 연산량을 더 줄이면서도 성능이 떨어지지 않습니다. Image credit: arxiv.org/pdf/1707.01083

고스트넷(GhostNet): 

모바일넷과 셔플넷에 남아 있는 1×1 합성곱 필터가 여전히 상당한 메모리와 연산량을 차지한다는 문제 인식에서 제안된 모델입니다. 딥러닝 모델의 추론 결과인 ‘피처맵(feature map)’에서 중복되는 부분을 합성곱보다 훨씬 쉬운 ‘선형 연산(Linear Transfer)’으로 만들겠다는 것이 핵심 아이디어입니다(중복 피처가 유령처럼 보인다고 해서 Ghost라고 함). 적은 파라미터로 더 많은 특징을 추출할 수 있습니다. 그 결과, 모델을 압축하면서도 높은 정확도를 유지할 수 있습니다. 

고스트넷은 이러한 중복된 피처맵을 보다 비용 효율적인 방법으로 생성하는 기술입니다.

잘 훈련된 딥러닝 네트워크에서는 피처맵에 많은 정보가 들어 있어서 입력 데이터를 잘 이해할 수 있게 해줍니다. 예를 들어, ResNet-50 모델이 만든 위의 피처맵을 보면, 비슷한 쌍들이 많이 보입니다(동일한 색상의 박스). 이런 특징은 딥러닝 모델의 성능이 좋다는 의미입니다. 고스트넷은 이러한 중복된 피처맵을 보다 비용 효율적인 방법으로 생성하는 기술입니다. Image Credit – GhostNet: More Features from Cheap Operations> https://arxiv.org/pdf/1911.11907

 

 

(3) 경량 모델 자동 탐색 

 

넷어댑트(NetAdapt): 

사용자가 설정한 제약 조건(예: 연산량, 메모리 사용량, 에너지 소비)에 따라 기본 신경망을 자동으로 최적화하는 기술입니다. 

먼저 신경망의 개별 모듈(레이어, 필터 등)을 분석합니다. 각각이 최종 성능에 미치는 영향을 평가하죠. 그리고나서 불필요한 필터를 제거하거나 레이어의 크기를 조정합니다. 모델의 성능을 다시 평가해서 제약 조건을 충족하는지 확인합니다. 불충분하면 추가 최적화를 수행합니다. 이런 점진적인 과정을 통해 모델을 가장 효과적인 구조로 조정할 수 있습니다. 

사용자가 모델을 일일이 조정할 필요가 없다는 것이 가장 큰 장점입니다. 특히 제약 조건을 고려해서 최적화하기 때문에 특정 애플리케이션에 가장 잘 맞는 모델을 자동으로 만들 수 있습니다.  

  

엠나스넷(MNasNet): 

모바일 환경에 최적화된 신경망을 자동 탐색하는 모델입니다. 가장 먼저 *순환 신경망(RNN)을 기반으로 다양한 모델을 생성합니다. 그리고는 각 모델을 훈련시켜서 정확도를 평가하고, 실제 모바일 폰에서 실행시켜 모델의 추론 지연 시간을 측정합니다. 이를 반복해서 모델의 정확도와 속도 간의 균형을 이루는 최적의 구조를 찾습니다. 

  • 순환 신경망(RNN, Recurrent Neural Network): 순차 데이터를 처리하고 분석하는 딥러닝 모델입니다. 순차 데이터란 단어, 문장, 시계열 데이터처럼 앞뒤 구성 요소가 복잡한 규칙에 따라 상호 연관되는 데이터를 뜻합니다. 이를 처리하기 위해 RNN은 이전 단계의 출력을 다음 단계의 입력으로 사용합니다.   

 

기존 알고리즘을 경량화하는 기술

 

(1) 모델 압축(Model Compression) 

딥러닝 모델은 수많은 파라미터로 구성돼 있습니다. 모델이 데이터를 잘 학습하도록 돕는 역할을 하는데요. 모델이 최적화되지 않아 파라미터가 과도하게 많으면 오히려 연산 속도가 느려질 수 있습니다. 이를 과파라미터화(Over-Parameterization)라고 하고요. 

이렇게 불필요한 파라미터나 가중치, 또는 네트워크 일부를 제거해서 연산을 빠르게 만드는 기술을 모델 압축(Model Compression)이라고 합니다. 물론 성능이 떨어지지 않게 하는 것이 도전 과제입니다. 

ondevice ai lightwegith 비유 그림

가지치기(Pruning): 

대표적인 모델 압축 기법으로 가지치기(Pruning)가 있습니다. 단어 뜻 그대로 불필요한 부분을 없애는 방법이죠. 예컨대 ‘가중치 가지치기’는 모델 성능에 영향을 적게 미치는 특정 가중치(weight)를 0으로 만듭니다. 복잡한 연결의 일부분을 줄이는 것이죠. 가중치뿐만 아니라 신경망의 특정 구조적 단위(채널, 필터, 뉴런 등)를 제거하는 방법도 연구되고 있습니다. 

이런 가지치기 기법은 별도의 하드웨어 구현 없이 바로 속도 향상을 체감할 수 있습니다. 하지만 잘라내는 과정에서 정보가 손실될 가능성도 있어요. 때문에 재학습 등을 통해 신경망을 세밀하게 조율해야 합니다.  

모델 경량화 가지치기(프루닝)을 설명하는 그림

‘가중치 가지치기’는 모델 성능에 영향을 적게 미치는 특정 가중치(weight)를 0으로 만듭니다. 뿐만 아니라 신경망의 특정 구조적 단위(채널, 필터, 뉴런 등)를 제거하는 방법도 연구되고 있습니다. Image Credit: Wikipedia Commons

 

양자화(Quantization) 및 이진화(Binarization): 

양자화는 숫자의 비트(bit) 수를 줄이는 방법입니다. 보통 딥러닝 모델은 가중치 값을 32비트 *부동소수점(floating point)으로 표현하는데, 양자화를 통해 8비트 정수로 줄일 수 있습니다. 이렇게 하면 계산 속도가 더 빨라집니다. 메모리 사용량과 전력 소비량도 줄어들죠. 정확도가 떨어지지 않도록 데이터 포맷과 비트 수를 세밀하게 조절해야 합니다. 

이진화는 양자화에서 한 걸음 더 나아가, 딥러닝 모델의 가중치와 입력 값을 부호에 따라 -1 또는 +1의 이진 형태로 바꾸는 방법입니다. 

  • 부동소수점(floating-point)은 컴퓨터에서 소수를 표현하는 방식 중 하나입니다. 쉽게 말해, 소수점을 고정된 위치에 두는 대신, 필요한 위치로 옮길 수 있게 하는 방법입니다. 이를 통해 매우 큰 수나 매우 작은 수를 효율적으로 표현할 수 있습니다. 

단, 양자화 및 이진화에 사용되는 데이터 타입을 처리하는 하드웨어가 있어야만 실질적인 성능 향상을 기대할 수 있습니다.  

 

(2) 지식 증류(Knowledge Distillation) 

 

복잡한 모델로부터 작은 모델로 지식을 전달해서, 성능을 모방하게 하는 기법입니다. 학습이 이미 이뤄진 큰 네트워크를 선생(Teacher) 모델, 아직 학습되지 않은 작은 네트워크를 학생(Student) 모델이라고 부릅니다. 여러 선생 모델들을 *앙상블해서 하나의 학생 모델을 학습시킵니다. 성능을 최대한 유지하면서 네트워크 규모를 축소하는 것이 목표입니다.  

  • 앙상블 : 여러 모델을 결합해 성능을 향상시키는 방법입니다. 배깅(Bagging), 부스팅(Boosting), 스태킹(Stacking), 보팅(Voting) 등 다양한 알고리즘이 사용됩니다. 널리 알려진 랜덤 포레스트(Random Forest)는 동일 모델을 여러 번 학습시키고 그 결과를 종합하는 배깅의 일종입니다.  

3가지 지식 증류 기법이 있습니다. (1)결과값만을 배우는 ‘응답(Response)’ 기반, (2)중간 과정에서 나오는 값들까지 모두 학습하는 ‘Feature’ 기반, (3)각 값들이 나온 프로세스까지 모방하는 관계(Relation) 기반입니다.  

지식 증류 기법을 비유한 이미지

(3) 경량 자동화 

데이터의 포맷, 비트 수, 매트릭스 행열의 개수 등 경량화 대상 가운데 어떤 부분을 얼마만큼 제거할지를 강화학습 또는 특정 규칙을 기반으로 자동으로 탐색하고 결정하는 기법입니다. 처리 속도, 메모리 사용량, 또는 에너지 사용량 등 어떤 값을 최소화하고자 하는지에 따라 결정이 달라지게 되죠. 경량화하는 과정에서 불필요한 시행착오를 최소화하여 최적화에 소요되는 시간을 줄이고 경량화 후 성능을 극대화하는 데 목적이 있습니다. 

 

마치며 

모델 경량화는 다양한 기기에서 AI 기능을 실시간으로 사용할 수 있게 하는 중요한 요소입니다. 이러한 기술들을 활용하여 모델의 크기와 복잡도를 줄이면서도 높은 성능을 유지할 수 있습니다. 온디바이스 AI의 발전은 모델 압축 기술의 발전과도 밀접하게 연관되어 있으며, 앞으로 더 많은 혁신이 기대됩니다. 

참고 자료

  1. ETRI, <경량 딥러닝 기술 동향> 2019
  2. Li, Z.; Li, H.; Meng, L. Model Compression for Deep Neural Networks: A Survey. Computers 202312, 60. https://doi.org/10.3390/computers12030060
  3. 김혜지 외, Transformer를 활용한 인공신경망의 경량화 알고리즘 및 하드웨어 가속 기술 동향, 2023 ETRI