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

모델 가지치기

모델 가지치기를 통해 머신 러닝 모델을 최적화하세요. 리소스가 제한된 배포를 위해 더 빠른 추론, 메모리 사용량 감소 및 에너지 효율성을 달성하세요.

모델 가지치기는 모델 최적화 기법 신경망의 크기와 계산 복잡성을 줄이기 위해 설계된 불필요한 매개변수를 제거하여 매개변수를 제거하여 신경망의 크기와 계산 복잡성을 줄이기 위한 기술입니다. 인공 지능 모델이 더 높은 성능을 달성하기 위해 커지면 종종 최종 출력에 거의 기여하지 않는 많은 연결이나 뉴런을 포함하여 과도하게 매개변수화되는 경우가 많습니다. 이러한 불필요한 매개변수를 이러한 중복 구성 요소를 제거함으로써 개발자는 더 적은 메모리와 에너지를 필요로 하는 더 간결한 모델을 만들 수 있습니다. 더 빠른 실시간 추론을 제공할 수 있습니다. 이 프로세스는 다음과 같은 정교한 아키텍처를 배포하는 데 특히 중요합니다. YOLO11 와 같은 정교한 아키텍처를 배포하는 데 특히 중요합니다. 휴대폰이나 임베디드 센서와 같은 리소스가 부족한 하드웨어에 배포하는 데 특히 중요합니다.

핵심 개념 및 메커니즘

가지치기 과정에는 일반적으로 훈련, 가지치기, 미세 조정의 세 가지 주요 단계가 포함됩니다. 미세 조정. 처음에는 대규모 모델을 훈련하여 복잡한 특징을 포착하기 위한 융합을 학습합니다. 가지치기 단계에서는 알고리즘이 특정 매개변수의 중요도를 평가합니다. 매개변수(일반적으로 weights and biases-를 기반으로 크기 또는 감도와 같은 기준에 따라 특정 매개변수의 중요성을 평가합니다. 중요하지 않다고 판단되는 매개변수는 0으로 설정되거나 완전히 제거됩니다.

하지만 단순히 네트워크의 일부를 잘라내는 것만으로 네트워크의 정확도가 떨어질 수 있습니다. 이를 방지하기 위해 모델은 미세 조정이라고 하는 미세 조정이라고 하는 후속 재훈련을 거칩니다. 이 단계를 통해 나머지 매개변수를 조정하고 누락된 연결을 보정하여 모델의 성능을 거의 원래 수준에 가깝게 복원할 수 있습니다. 이 접근 방식의 이 접근 방식의 효과는 복권 가설에 따르면 밀도가 높은 네트워크는 다음과 같이 구성됩니다. 독립적으로 학습할 때 비슷한 정확도를 달성할 수 있는 더 작은 하위 네트워크를 포함합니다.

모델 가지치기 유형

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

  • 비정형 가지치기: 이 방법은 위치에 관계없이 개별 가중치를 대상으로 합니다, 값이 낮은 가중치는 0으로 설정합니다. 그 결과 중요한 연결이 흩어져 있는 "스파스" 행렬이 흩어져 있습니다. 구조화되지 않은 가지치기는 모델 크기를 줄이는 데는 효과적이지만, 실제 속도를 구현하려면 특수 하드웨어나 실제 속도 향상을 실현하기 위한 소프트웨어 라이브러리가 필요합니다. CPUGPU는 고밀도 매트릭스 연산에 최적화되어 있습니다. 연산에 최적화되어 있기 때문입니다.
  • 구조화된 가지치기: 이 접근 방식은 개별 가중치 대신 전체 기하학적 구조를 제거합니다. 채널, 필터 또는 레이어와 같은 전체 기하학적 구조를 제거합니다. 컨볼루션 신경망(CNN)과 같은 전체 기하학적 구조를 제거합니다. 구조화된 가지치기는 행렬의 조밀한 구조를 유지함으로써 표준 하드웨어가 모델을 더 효율적으로 처리할 수 있게 해줍니다. 모델을 보다 효율적으로 처리할 수 있게 해주며, 이는 곧바로 추론 지연 시간을 줄일 수 있습니다. 추론 지연 시간을 줄일 수 있습니다.

가지치기 대 정량화

둘 다 널리 사용되는 최적화 기법이지만, 가지치기를 다음과 같이 구분하는 것이 중요합니다. 모델 정량화와 구별하는 것이 중요합니다. 가지치기는 매개변수(연결 또는 뉴런)의 수를 줄이는 데 매개변수(연결 또는 뉴런)의 수를 줄여 모델의 아키텍처를 효과적으로 변경하는 데 중점을 둡니다. 반면 반면 양자화는 32비트 부동 소수점 숫자를 8비트로 변환하는 등 해당 파라미터의 정밀도를 낮춥니다. 부동 소수점 숫자를 8비트 정수로 변환하는 것과 같이 해당 매개변수의 정밀도를 떨어뜨립니다. 이러한 방법은 상호 보완적인 경우가 많으며, 개발자는 먼저 모델을 정리하여 중복성을 제거한 다음 을 정리하여 중복성을 제거한 다음 양자화하여 메모리 공간을 더욱 최소화할 수 있습니다. 배포할 수 있습니다.

실제 애플리케이션

프루닝은 고급 컴퓨터 비전을 실용적인 고급 컴퓨터 비전을 실제 시나리오에서 중요한 역할을 합니다:

  1. 모바일 객체 감지: 스마트폰에서 실행되는 증강 현실 앱이나 사진 정리 앱과 같이 스마트폰에서 실행되는 애플리케이션은 가지치기된 모델을 사용하여 객체 감지를 수행합니다. 이렇게 하면 배터리 수명을 보존하고 클라우드 처리를 피하여 사용자 데이터 프라이버시를 보장합니다. 처리하지 않음으로써 배터리 수명을 보존하고 사용자 데이터 프라이버시를 보호합니다.
  2. 자동차 안전 시스템: 자율 주행 차량은 보행자와 장애물을 감지하기 위해 시각적 데이터의 신속한 처리에 의존합니다. 프루닝된 모델은 온보드 추론 엔진이 서버급 GPU의 막대한 전력 소비 없이도 서버급 GPU 막대한 전력 소비 없이도 온보드 추론 엔진이 순식간에 결정을 내릴 수 있습니다.

구현 예시

다음과 같은 프레임워크 PyTorch 와 같은 프레임워크는 내장된 유틸리티를 제공하여 가지치기를 적용할 수 있는 내장 유틸리티를 제공합니다. 다음 예제는 컨볼루션 레이어에 구조화되지 않은 가지치기를 적용하는 방법을 보여줍니다. 레이어에 비정형 가지치기를 적용하는 방법을 보여줍니다. ONNX.

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

# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3)

# Apply L1 unstructured pruning to remove 30% of the connections
# This sets the smallest 30% of weights (by absolute value) to zero
prune.l1_unstructured(layer, name="weight", amount=0.3)

# Verify sparsity: calculate the percentage of zero parameters
sparsity = float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Layer sparsity: {sparsity:.2%}")

Ultralytics 커뮤니티 가입

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

지금 참여하기