가지치기를 통해 AI 모델을 최적화하여 복잡성을 줄이고 효율성을 높이며 성능 저하 없이 에지 장치에 더 빠르게 배포합니다.
가지치기는 머신러닝에서 중요한 기술입니다. 머신러닝에서 중요한 기술입니다. 계산 복잡성을 줄이기 위한 신경망(NN)의 크기와 계산 복잡성을 줄이기 위한 중요한 기술입니다. 매개변수를 제거하여 신경망의 크기와 계산 복잡성을 줄이기 위한 중요한 기술입니다. 나무의 건강한 성장을 위해 죽은 가지를 잘라내는 것과 마찬가지로, 모델 가지치기는 모델 가중치나 연결을 식별하고 모델 가중치 또는 연결을 제거합니다. 시스템 출력에 최소한의 기여를 하는 모델 가중치나 연결을 식별하고 제거합니다. 주요 목표는 높은 정확도를 유지하면서 메모리 사용량과 정확도를 유지하면서 메모리 사용량을 크게 낮추고 추론 지연 시간을 개선하는 것입니다. 이 프로세스는 다음과 같은 정교한 아키텍처를 배포하는 데 필수적입니다. Ultralytics YOLO11와 같은 정교한 아키텍처를 리소스 제약이 있는 디바이스에 스토리지 및 처리 능력이 제한되어 있습니다.
이 과정은 일반적으로 사전 학습된 모델에서 시작됩니다. 알고리즘은 네트워크를 분석하여 0에 가깝거나 최종 예측에 미치는 영향이 제한적인 매개변수(종종 값이 0에 가깝거나 최종 예측에 미치는 영향이 제한적인 매개변수를 찾기 위해 네트워크를 분석합니다. 이러한 매개변수는 제거하거나 "제로화"합니다. 연결을 제거하면 일시적으로 성능이 저하될 수 있으므로 모델은 모델은 일반적으로 미세 조정이라는 프로세스를 거치게 됩니다. 몇 시간 동안 재학습을 거쳐 남은 가중치가 가중치를 조정하고 손실된 정확도를 복구하는 과정을 거칩니다.
가지 치기에는 크게 두 가지 범주가 있습니다:
가지치기를 다른 모델 최적화 전략과 구별하는 것이 중요합니다. 모델 최적화 전략과 구별하는 것이 중요합니다, 종종 함께 사용되기도 합니다:
가지치기는 다양한 산업 분야에서 엣지 AI를 구현하는 데 중요한 역할을 합니다. 중요한 역할을 합니다:
동안 Ultralytics YOLO 모델은 기본적으로 고도로 최적화되어 있습니다, 개발자는 표준 PyTorch 유틸리티를 사용하여 가지치기를 실험해 볼 수 있습니다. 다음 예제는 다음과 같은 방법을 보여줍니다. 컴퓨터 비전 모델에서 볼 수 있는 표준 컨볼루션 레이어에 구조화되지 않은 가지치기를 적용하는 방법을 보여줍니다.
import torch
import torch.nn.utils.prune as prune
from ultralytics.nn.modules import Conv
# Initialize a standard convolutional block used in YOLO models
layer = Conv(c1=64, c2=128)
# Apply L1 unstructured pruning to remove 30% of the lowest magnitude weights
prune.l1_unstructured(layer.conv, name="weight", amount=0.3)
# Verify the sparsity (percentage of zero weights)
sparsity = float(torch.sum(layer.conv.weight == 0)) / layer.conv.weight.nelement()
print(f"Layer sparsity achieved: {sparsity:.2%}")
곧 출시될 YOLO26과 같은 효율적인 아키텍처의 향후 발전은 이러한 최적화 원칙을 통합하여 최적화 원칙을 기본적으로 통합하여 설계상 더 작고, 더 빠르고, 더 정확한 모델을 만드는 것을 목표로 합니다.