AI: 가중치 최적화 – Structured Pruning

ㅁ 가중치 최적화

ㅇ 정의:
– 신경망 모델의 가중치 중 특정 구조 단위(채널, 필터, 레이어 등)를 기준으로 불필요한 부분을 제거하여 모델 크기와 연산량을 줄이는 기법.

ㅇ 특징:
– 파라미터를 개별적으로 제거하는 비구조적(Non-structured) 프루닝과 달리, 구조 단위로 제거하여 하드웨어 가속기에서 효율적 실행 가능.
– 모델의 희소성(sparsity)뿐 아니라 실제 추론 속도 향상에 기여.
– 필터, 채널, 블록 단위로 제거하므로 모델 구조의 단순화가 용이.

ㅇ 적합한 경우:
– 실시간 추론이 필요한 모바일/임베디드 환경.
– GPU/TPU 등 병렬 연산 최적화가 중요한 경우.
– 모델 배포 시 메모리 제약이 있는 환경.

ㅇ 시험 함정:
– 비구조적 프루닝과 혼동하기 쉬움: 비구조적은 개별 가중치 제거, 구조적은 구조 단위 제거.
– 구조적 프루닝은 반드시 속도 향상을 보장한다고 단정하면 오답.
– 모든 구조 단위 제거가 정확도에 동일한 영향을 준다고 생각하면 오답.

ㅇ 시험 대비 “패턴 보기” 예시:
– (O) 필터 단위로 가중치를 제거하여 연산량을 줄이는 방법은 Structured Pruning이다.
– (X) Structured Pruning은 개별 가중치를 무작위로 제거하는 방식이다.
– (O) 채널 단위 제거는 하드웨어 가속 효율성과 관련이 있다.
– (X) Structured Pruning은 모델 정확도에 전혀 영향을 주지 않는다.

ㅁ 추가 학습 내용

Structured Pruning은 모델의 구조 단위(채널, 필터, 레이어 등)를 제거하여 연산량과 메모리 사용을 줄이는 기법이다. 대표적인 방법으로는 채널 프루닝(Channel Pruning), 필터 프루닝(Filter Pruning), 레이어 프루닝(Layer Pruning)이 있으며, 채널 프루닝은 특정 채널을 제거하여 해당 채널과 관련된 연산을 없애고, 필터 프루닝은 합성곱 필터 단위로 제거하며, 레이어 프루닝은 전체 계층을 제거하는 방식이다.

프루닝 비율은 중요도 평가를 통해 결정되며, 가중치 크기(Weight magnitude)나 BatchNorm의 스케일링 파라미터 등을 기준으로 한다. 프루닝 후에는 성능 저하를 회복하기 위해 파인튜닝(Fine-tuning)이 필요하다.

구조적 프루닝은 실제 하드웨어에서 연산량 감소와 메모리 접근 패턴 최적화에 유리하여 속도 향상과 하드웨어 효율성을 높인다. 반면 비구조적 프루닝은 희소성은 높지만 불규칙한 가중치 패턴 때문에 하드웨어 최적화가 어려운 경우가 많다.

최신 연구에서는 AutoML 기반 자동 프루닝과 Neural Architecture Search(NAS)와 결합한 구조적 프루닝이 활발히 진행되고 있다. 시험에서는 ‘구조적’이라는 키워드와 ‘속도 향상’, ‘하드웨어 효율’을 연결하는 문제가 자주 출제된다.

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*