Yolo 비전 선전
선전
지금 참여하기
용어집

가지치기(Pruning)

전정(pruning)이 중복 매개변수를 제거함으로써 Ultralytics 같은 신경망을 최적화하는 방법을 알아보세요. 에지 AI를 위한 구조화된 방법과 비구조화된 방법을 탐구해 보세요.

가지치기는 불필요한 매개변수를 제거하여 신경망의 크기와 계산 복잡성을 줄이는 전략적 모델 최적화 기법이다. 정원사가 나무가 잘 자라도록 죽거나 지나치게 자란 가지를 다듬듯, 가지치기 알고리즘은 중복된 가중치와 편향을 식별하여 제거한다. weights and biases 모델의 예측 능력에 거의 기여하지 않는 중복 가중치와 바이어스를 식별하고 제거합니다. 주요 목표는 높은 정확도를 유지하면서도 훨씬 적은 메모리와 에너지를 소비하는 압축된 "스파스(sparse)" 모델을 생성하는 것입니다. 이러한 축소는 추론 지연 시간 개선에 필수적이며, 모바일 폰이나 임베디드 장치와 같은 자원 제약 하드웨어에서 고급 아키텍처가 효율적으로 실행될 수 있도록 합니다.

기제와 방법론

현대 딥러닝 모델은 종종 과도하게 매개변수화되어 특정 작업을 해결하는 데 필요한 것보다 훨씬 많은 연결을 포함합니다. 프루닝은 출력에 미미한 영향을 미친다는 가정 하에 값이 0에 가까운 연결을 제거함으로써 이를 활용합니다. 매개변수가 제거된 후 모델은 일반적으로 미세 조정 과정을 거치는데, 이는 잔여 가중치를 조정하고 손실된 성능을 회복하기 위해 짧은 재훈련을 수행하는 것이다. 이 개념은 로터리 티켓 가설과 밀접한 관련이 있는데, 이는 대규모 네트워크 내에 비슷한 정확도를 달성할 수 있는 소규모의 고효율 하위 네트워크가 존재한다는 것을 시사한다.

가지치기 전략에는 크게 두 가지 범주가 있습니다:

  • 비구조적 정수화: 이 방법은 위치와 상관없이 개별 가중치의 크기에 따라 제거합니다. 총 매개변수 개수를 효과적으로 줄이기는 하지만, 표준 CPU와 GPU가 특수 소프트웨어 없이 효율적으로 처리하기 어려운 불규칙한 스파스 행렬을 생성합니다.
  • 구조적 전정: 이 접근법은 컨볼루션 신경망(CNN) 내부의 뉴런, 채널 또는 레이어와 같은 전체 기하학적 구조를 제거합니다. 행렬 구조를 보존함으로써 구조적 전정은 표준 하드웨어 가속기와 높은 호환성을 가지며, 실시간 추론에서 즉각적인 가속 효과를 종종 가져옵니다.

실제 애플리케이션

가지치기는 하드웨어 자원이 제한된 다양한 산업 분야에서 엣지 AI를 구현하기 위해 필수적입니다:

  1. 자율 드론: 수색 및 구조에 사용되는 무인 항공기는 복잡한 환경을 탐색하기 위해 컴퓨터 비전에 의존합니다. 정제된 객체 탐지 모델은 이러한 장치들이 클라우드 통신과 관련된 지연 문제를 피하면서 현지에서 실시간으로 영상 데이터를 처리할 수 있게 합니다.
  2. 모바일 헬스케어: 휴대용 의료 기기는 초음파 분석을위해 정제된 모델을 활용하여 기기 내에서 직접 detect . 이는 환자 데이터 프라이버시를 보장하며 인터넷 접속이 불가능한 외딴 지역에서도 정교한 진단을 가능하게 합니다.

구현 예시

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}%")

트리밍 대 관련 최적화 기법

배포를 위해 모델을 효과적으로 최적화하려면 가지치기(pruning)를 다른 전략과 구분하는 것이 도움이 됩니다:

  • 모델 양자화: 연결을 제거하는 가지치기와 달리 양자화는 가중치의 정밀도를 낮춥니다(예: 32비트 부동 소수점 숫자를 8비트 정수로 변환). 두 기법은 임베디드 시스템에서 효율성을 극대화하기 위해 함께 사용할 수 있습니다.
  • 지식 증류: 이는 더 작은 "학생" 모델을 훈련시켜 더 큰 "교사" 모델의 행동을 모방하도록 하는 과정입니다. 가지치기는 원본 모델을 직접 수정하는 반면, 증류는 새로운 간결한 아키텍처를 훈련시킵니다.

포괄적인 라이프사이클 관리(훈련, 주석 부착, 최적화된 모델 배포 포함)를 위해 사용자는 Ultralytics 활용할 수 있습니다. 이를 통해 데이터셋 관리부터 ONNX와 같은 하드웨어 친화적 형식으로 모델을 내보내는 작업까지 워크플로우가 간소화됩니다. ONNX 또는 TensorRT와 같은 하드웨어 친화적 형식으로 모델을 내보내는 작업까지 간소화합니다.

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기