Pruning
가지치기(Pruning)가 중복 파라미터를 제거하여 Ultralytics YOLO26과 같은 신경망을 어떻게 최적화하는지 배우십시오. 엣지 AI를 위한 구조화된 방법과 비구조화된 방법을 살펴보십시오.
Pruning is a strategic model optimization technique used to reduce the size and computational complexity of neural networks by removing unnecessary parameters. Much like a gardener trims dead or overgrown branches to help a tree thrive, pruning algorithms identify and eliminate redundant weights and biases that contribute little to a model's predictive power. The primary objective is to create a compressed, "sparse" model that maintains high accuracy while consuming significantly less memory and energy. This reduction is essential for improving inference latency, allowing advanced architectures to run efficiently on resource-constrained hardware like mobile phones and embedded devices.
Link to this section메커니즘 및 방법론#
현대의 딥러닝 모델은 종종 과도하게 매개변수화되어 있는데, 이는 특정 작업을 해결하는 데 필요한 것보다 훨씬 더 많은 연결을 포함하고 있음을 의미합니다. 가지치기는 출력에 미치는 영향이 무시할 수 있을 정도로 작다는 가정하에 0에 가까운 값을 가진 연결을 제거함으로써 이를 활용합니다. 파라미터가 제거된 후, 모델은 일반적으로 미세 조정 과정을 거치며, 남은 가중치를 조정하고 손실된 성능을 복구하기 위해 짧게 재학습됩니다. 이 개념은 대규모 네트워크가 유사한 정확도에 도달할 수 있는 더 작고 효율적인 서브 네트워크를 포함하고 있다고 제안하는 복권 가설(Lottery Ticket Hypothesis)과 밀접한 관련이 있습니다.
가지치기 전략에는 크게 두 가지 범주가 있습니다.
- Unstructured Pruning: This method removes individual weights based on their magnitude, regardless of their location. While it effectively reduces the total parameter count, it creates irregular sparse matrices that standard CPUs and GPUs may struggle to process efficiently without specialized software.
- 구조적 가지치기(Structured Pruning): 이 접근 방식은 합성곱 신경망(CNN) 내의 뉴런, 채널, 레이어와 같은 전체 기하학적 구조를 제거합니다. 행렬 구조를 보존함으로써 구조적 가지치기는 표준 하드웨어 가속기와 매우 호환되며, 종종 실시간 추론 속도를 즉각적으로 향상시킵니다.
Link to this section실제 애플리케이션 사례#
가지치기는 하드웨어 리소스가 제한된 다양한 산업 분야에서 Edge AI를 구현하는 데 없어서는 안 될 요소입니다:
-
자율 주행 드론: 수색 및 구조에 사용되는 무인 항공기는 복잡한 환경을 탐색하기 위해 컴퓨터 비전에 의존합니다. 가지치기된 객체 감지 모델을 사용하면 이러한 장치가 클라우드 통신과 관련된 지연 문제 없이 로컬에서 실시간으로 비디오 피드를 처리할 수 있습니다.
-
모바일 헬스케어: 초음파 분석용 휴대용 의료 기기는 가지치기된 모델을 사용하여 장치에서 직접 이상 징후를 감지합니다. 이를 통해 환자의 데이터 개인정보를 보장하고 인터넷 연결이 없는 원격 지역에서도 정밀한 진단을 수행할 수 있습니다.
Link to this section구현 예시#
YOLO26과 같은 최첨단 모델은 효율성을 위해 설계되었지만, 개발자는 PyTorch와 같은 라이브러리를 사용하여 레이어를 추가로 최적화할 수 있습니다. 다음 예제는 합성곱 레이어에 비구조적 가지치기를 적용하는 방법을 보여줍니다.
import torch
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3)
# Apply L1 unstructured pruning to remove 30% of weights with the lowest magnitude
prune.l1_unstructured(layer, name="weight", amount=0.3)
# Verify sparsity (percentage of zero parameters)
sparsity = 100.0 * float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Sparsity achieved: {sparsity:.2f}%")Link to this section프루닝 대 관련 최적화 기법#
배포를 위해 모델을 효과적으로 최적화하려면 가지치기와 다른 전략을 구분하는 것이 도움이 됩니다:
- 모델 양자화(Model Quantization): 연결을 제거하는 가지치기와 달리, 양자화는 가중치의 정밀도를 낮춥니다(예: 32비트 부동 소수점을 8비트 정수로 변환). 두 기법을 함께 사용하여 임베디드 시스템에서의 효율성을 극대화할 수 있습니다.
- 지식 증류(Knowledge Distillation): 이는 더 큰 "교사" 모델의 동작을 모방하도록 더 작은 "학생" 모델을 학습시키는 과정을 포함합니다. 가지치기는 원래 모델을 직접 수정하지만, 증류는 새로운 소형 아키텍처를 학습시킵니다.
학습, 주석 처리, 최적화된 모델 배포를 포함한 포괄적인 수명 주기 관리를 위해 사용자는 Ultralytics Platform을 활용할 수 있습니다. 이를 통해 데이터 세트 관리부터 ONNX나 TensorRT와 같은 하드웨어 친화적인 형식으로 모델을 내보내는 워크플로가 단순화됩니다.






