가지치기(Pruning)
가지치기를 통해 AI 모델을 최적화하여 복잡성을 줄이고 효율성을 높이며 성능 저하 없이 에지 장치에 더 빠르게 배포합니다.
가지치기는 훈련된 신경망(NN)의 크기와 계산 복잡성을 줄이는 데 사용되는 모델 최적화 기술입니다. 이 프로세스에는 모델에서 중복되거나 덜 중요한 파라미터(가중치) 또는 구조(뉴런, 채널 또는 레이어)를 식별하고 제거하는 작업이 포함됩니다. 목표는 원래 모델과 비슷한 수준의 정확도를 유지하면서 더 작고 빠르며 에너지 효율적인 모델을 만드는 것입니다. 이는 에지 장치와 같이 리소스가 제한된 환경에 복잡한 AI 모델을 배포하는 데 특히 중요합니다.
Pruning 작동 방식
가지치기(Pruning) 과정은 일반적으로 딥러닝 모델이 완전히 학습된 후에 시작됩니다. 이는 많은 대규모 모델이 과도하게 파라미터화되어 최종 예측에 거의 기여하지 않는 가중치와 뉴런을 많이 포함하고 있다는 원칙에 따라 작동합니다. 중요하지 않은 이러한 구성 요소를 식별하는 일반적인 방법은 크기를 분석하는 것입니다. 값이 0에 가까운 파라미터는 중요도가 낮은 것으로 간주됩니다. 식별되면 이러한 파라미터는 제거되거나 0으로 설정됩니다. 가지치기 과정 후, 이제 더 작아진 네트워크는 일반적으로 몇 번의 epoch 동안 모델을 재학습하는 미세 조정을 거칩니다. 이 단계를 통해 나머지 파라미터는 아키텍처 변경에 적응하고 가지치기 중에 손실되었을 수 있는 성능을 복구할 수 있습니다. 이러한 가지치기 및 미세 조정의 반복적인 과정은 "Deep Compression"과 같은 기초 연구 논문에 설명된 대로 모델 크기와 성능 간의 원하는 균형을 달성하기 위해 반복될 수 있습니다.
가지치기의 유형
가지치기 기술은 네트워크에서 제거되는 대상을 기준으로 크게 분류할 수 있습니다.
- 비정형 가지치기(Weight Pruning): 이 방법은 크기와 같은 특정 기준에 따라 네트워크에서 개별 가중치를 제거합니다. 그 결과 많은 연결이 0이 되는 희소 모델이 생성됩니다. 이는 파라미터 수를 크게 줄일 수 있지만 추론 속도를 항상 향상시키지는 못할 수 있습니다. 특히 CPU 또는 GPU와 같은 표준 하드웨어에서는 NVIDIA의 희소 모델용 도구와 같은 특수 소프트웨어 라이브러리가 필요합니다.
 - 구조적 가지치기: 이 접근 방식은 CNN(Convolutional Neural Network) 내에서 뉴런, 채널 또는 전체 레이어와 같은 네트워크의 전체 구조적 구성 요소를 제거합니다. 네트워크의 규칙적인 블록을 제거하기 때문에 표준 하드웨어가 쉽게 활용할 수 있는 방식으로 모델의 크기와 계산 요구 사항을 직접적으로 줄여 더 예측 가능한 속도 향상으로 이어지는 경우가 많습니다. Neural Magic의 DeepSparse와 같은 도구는 이러한 구조적 희소 모델에 대한 CPU에서의 추론을 가속화하도록 설계되었습니다.
 
PyTorch 및 TensorFlow와 같은 주요 머신러닝 프레임워크는 가지치기 구현을 위한 기본 제공 유틸리티 및 튜토리얼을 제공합니다.
실제 애플리케이션
가지치기는 계산 리소스가 제한된 실제 시나리오에서 강력한 AI 모델을 배포하는 데 필수적입니다.
- 에지 장치에서 객체 탐지 최적화: Ultralytics YOLO와 같은 모델은 실시간 객체 탐지에 사용됩니다. YOLOv8과 같은 모델을 가지치기하면 Raspberry Pi 또는 NVIDIA Jetson과 같은 저전력 에지 장치에 배포할 수 있습니다. 이를 통해 장치 내 스마트 감시, 교통 관리 최적화 및 로봇 공학에 컴퓨터 비전 통합과 같은 애플리케이션이 가능합니다.
 - 대규모 언어 모델(LLM) 로컬에서 실행: Pruning(가지치기)은 대규모 언어 모델(LLM)의 메모리 사용량을 획기적으로 줄일 수 있습니다. 가지치기된 LLM은 텍스트 요약 또는 로컬 가상 비서와 같은 자연어 처리(NLP) 작업을 위해 스마트폰이나 랩톱에서 직접 실행할 수 있습니다. 이는 응답성을 향상시키고 사용자 데이터를 장치에 보관하여 데이터 개인 정보 보호를 강화하며, 이는 Electronic Frontier Foundation(EFF)와 같은 조직의 핵심 원칙입니다.
 
가지치기(Pruning) vs. 기타 최적화 기술
가지치기는 모델 최적화를 위한 여러 기술 중 하나이며 다른 기술과 함께 사용되는 경우가 많습니다. 관련 개념과 구별하는 것이 중요합니다.
- 모델 양자화(Quantization): 이 기술은 모델의 가중치 및 활성화의 수치 정밀도를 줄입니다(예: 32비트 float에서 8비트 정수로). 이는 모델 크기를 줄이고 특히 특수 지원이 있는 하드웨어에서 계산 속도를 높일 수 있습니다. 파라미터를 제거하는 가지치기와 달리 양자화는 파라미터를 압축합니다.
 - 지식 증류(Knowledge Distillation): 이 방법에서는 더 작은 "학생" 모델을 훈련하여 더 큰 사전 훈련된 "교사" 모델의 출력을 복제합니다. 목표는 학습된 지식을 보다 컴팩트한 아키텍처로 이전하는 것이며, 가지치기는 기존 아키텍처를 수정합니다.
 
이러한 기술은 상호 배타적이지 않습니다. 일반적인 워크플로는 먼저 모델을 가지치기하여 중복 파라미터를 제거한 다음 가지치기된 모델에 양자화를 적용하여 효율성을 극대화하는 것입니다. 그런 다음 최적화된 모델을 Ultralytics 내보내기 기능을 사용하여 다양한 추론 엔진에서 광범위하게 배포할 수 있도록 ONNX와 같은 표준 형식으로 내보낼 수 있습니다. Ultralytics HUB와 같은 플랫폼은 학습에서 최적화된 모델 배포에 이르기까지 전체 수명 주기를 관리하는 데 도움이 될 수 있습니다.