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

모델 가지치기

모델 프루닝이 엣지 AI를 위해 신경망의 크기와 복잡성을 어떻게 줄이는지 알아보세요. 모바일에서 더 빠른 추론을 위해 Ultralytics 최적화하는 전략을 탐구하세요.

모델 정리는 기계 학습에서 신경망의 크기와 계산 복잡성을 줄이기 위해 불필요한 매개변수를 체계적으로 제거하는 기법이다. 정원사가 나무가 잘 자라도록 죽거나 지나치게 자란 가지를 다듬듯이, 개발자들은 인공 신경망을 더 빠르고, 더 작으며, 더 에너지 효율적으로 만들기 위해 가지치기를 합니다. 이 과정은 스마트폰, 임베디드 센서, 에지 컴퓨팅 하드웨어와 같은 제한된 자원을 가진 장치에 현대적인 딥러닝 아키텍처를 배포하는 데 필수적입니다.

모델 가지 치기 작동 방식

트리밍의 핵심 개념은 심층 신경망이 종종 "과도한 매개변수화" 상태라는 점입니다. 즉, 상당히 더 많은 weights and biases 보다 훨씬 더 많은 가중치와 편향을 포함한다는 것입니다. 훈련 과정에서 모델은 방대한 수의 연결을 학습하지만, 모든 연결이 최종 출력에 동등하게 기여하는 것은 아닙니다. 프루닝 알고리즘은 훈련된 모델을 분석하여 이러한 중복되거나 정보가 없는 연결들— 일반적으로 가중치가 0에 가까운 연결들—을 식별하고 제거합니다.

정제된 모델의 수명 주기는 일반적으로 다음과 같은 단계를 따릅니다:

  1. 훈련: 복잡한 특징을 포착하기 위해 대규모 모델을 수렴할 때까지 훈련합니다.
  2. 정리: 중요도가 낮은 매개변수는 0으로 설정되거나 네트워크 구조에서 물리적으로 제거됩니다.
  3. 미세 조정: 모델은 두 번째 미세 조정 단계를 거치며, 이를 통해 잔여 매개변수가 조정되고 정리 단계에서 손실된 정확도를 회복할 수 있도록 합니다.

이 방법론은 종종 복권 티켓 가설과 연관되어 있으며, 이는 밀집된 네트워크 내에 고립된 하위 네트워크(당첨 티켓)가 존재한다는 것을 시사한다. 이러한 하위 네트워크는 개별적으로 훈련될 경우 원본 모델과 유사한 정확도를 달성할 수 있다.

가지치기 전략의 유형

가지치기 방법은 일반적으로 제거되는 구성 요소의 구조에 따라 분류됩니다.

  • 비구조적 정제: 이 접근법은 임계값(예: 크기)을 기준으로 모델 내 어디서든 개별 가중치를 제거합니다. 이는 매개변수 수를 효과적으로 줄이지만, 표준 하드웨어가 효율적으로 처리하기 어려운 희소 행렬을 생성합니다. 전용 소프트웨어나 하드웨어 가속기가 없다면, 비구조적 정제는 상당한 속도 향상을 가져오지 못할 수 있습니다.
  • 구조적 전정: 이 방법은 컨볼루션 신경망(CNN) 내 채널, 필터 또는 레이어와 같은 전체 기하학적 구조를 제거합니다. 밀집 행렬 구조를 보존함으로써 전정된 모델은 표준 GPU 및 CPU 호환성을 유지하여 추론 지연 시간과 처리량에 직접적인 개선을 가져옵니다.

실제 애플리케이션

프루닝은 엣지 AI의 핵심 기반 기술로, 클라우드 연결이 불가능하거나 너무 느린 환경에서도 정교한 모델을 실행할 수 있게 합니다.

  • 모바일 객체 탐지: 실시간 언어 번역이나 증강 현실과 같은 모바일 기기 애플리케이션은 배터리 수명을 유지하고 메모리 사용량을 줄이기 위해 정제된 모델을 활용합니다. YOLO26과 같은 최적화된 아키텍처는 내재된 효율성으로 인해 이러한 작업에 선호되는 기반이 되는 경우가 많습니다.
  • 자동차 안전: 자율주행차와 자율주행 차량은 순간적인 의사결정이 필요합니다. 정제된 모델은 차량 내 컴퓨터가 고해상도 카메라 영상을 처리하여 보행자를 감지할 수 있게 하며, 서버로 데이터를 전송할 때 발생하는 지연 없이 작동합니다.
  • 산업용 사물인터넷(IIoT): 제조업에서 조립라인의 시각 검사 시스템은 detect 위해 경량 모델을 사용합니다. 트리밍 기술은 이러한 시스템이 고가의 서버 랙 대신 비용 효율적인 마이크로컨트롤러에서 실행될 수 있도록 보장합니다.

트리밍 대 관련 최적화 기법

모델 전지는 강력한 도구이지만, 종종 다른 모델 최적화 기법과 혼동되거나 함께 사용됩니다.

  • 트리밍 대 양자화: 트리밍은 모델 내 매개변수(연결)의 수를 줄입니다. 반면 모델 양자화는 해당 매개변수의 정밀도를 낮추는데, 예를 들어 32비트 부동소수점 숫자를 8비트 정수로 변환하는 방식이 있습니다. 두 기법은 모델 배포 효율을 극대화하기 위해 종종 결합됩니다.
  • 트리밍 대 지식 증류: 트리밍은 일부를 제거하여 원본 모델을 수정합니다. 지식 증류는 더 큰 "교사" 모델의 행동을 모방하도록 완전히 새롭고 더 작은 "학생" 모델을 훈련시키는 과정입니다.

구현 예시

다음 Python PyTorch를 사용하여 컨볼루션 레이어에 비정형 가지치기를 적용하는 방법을 보여줍니다. PyTorch. 이는 모델을 최적화된 형식(예: ONNX과 같은 최적화된 형식으로 내보내기 전에 수행하는 일반적인 단계입니다.

import torch
import torch.nn as nn
import torch.nn.utils.prune as prune

# Initialize a standard convolutional layer
module = nn.Conv2d(in_channels=1, out_channels=20, kernel_size=3)

# Apply unstructured pruning to remove 30% of the connections
# This sets the weights with the lowest L1-norm to zero
prune.l1_unstructured(module, name="weight", amount=0.3)

# Calculate and print the sparsity (percentage of zero elements)
sparsity = 100.0 * float(torch.sum(module.weight == 0)) / module.weight.nelement()
print(f"Layer Sparsity: {sparsity:.2f}%")

데이터셋과 모델의 전체 라이프사이클(훈련, 평가, 배포 포함)을 관리하려는 사용자를 위해 Ultralytics 간소화된 인터페이스를 제공합니다. 이는 YOLO26과 같은 고도로 최적화된 모델 생성 및 하드웨어 친화적 형식(예: TensorRT 또는 CoreML 같은 하드웨어 친화적인 형식으로 내보내는 과정을 간소화합니다.

Ultralytics 커뮤니티 가입

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

지금 참여하기