1. 개요[편집]
| 신경망 가지치기 Neural Network Pruning | |
|---|---|
| 하는 일 | 중요도가 낮은 가중치·채널·헤드를 0으로 만들거나 아예 들어낸다 |
| 두 갈래 | 비구조적(개별 가중치) · 구조적(채널·필터·헤드·층) |
| 고전 기준 | 크기 |w| · OBD(대각 헤세) · OBS(헤세 역행렬) |
| 표준 절차 | 학습 → 가지치기 → 재학습을 반복 |
| 유명한 가설 | 복권 티켓 가설 (Frankle–Carbin 2019) |
| 불편한 진실 | 비구조적 희소성은 대개 속도로 이어지지 않는다 |
| 현실적 타협 | 2:4 반구조 희소성 (Ampere 이후 스파스 텐서코어) |
신경망 가지치기는 학습된 신경망에서 기여가 작은 파라미터나 구조 단위를 제거해, 정확도를 크게 잃지 않고 모형 크기와 연산량을 줄이는 압축 기법이다. 과잉 파라미터화된 망은 학습에는 유리하지만 배포에는 낭비이므로, 다 쓰고 나서 필요 없는 부분을 걷어내자는 발상이다. 아이디어 자체는 1980년대 말부터 있었고, 2015년 이후 모형이 커지면서 신경망 양자화·지식 증류와 함께 배포 파이프라인의 상비 도구가 됐다.
이 셋은 서로 직교한다. 증류는 함수를 작은 망으로 옮기고, 양자화는 수치 정밀도를 낮추고, 가지치기는 연결 자체를 없앤다. 증류가 “새 사람을 가르친다”면 가지치기는 “같은 사람의 안 쓰는 시냅스를 잘라낸다”에 가깝고, 실제로 이름과 초기 동기 모두 생물학적 시냅스 가지치기에서 왔다. 세 기법을 순서대로 겹쳐 쓰는 것이 표준 코스이며, 순서는 대체로 증류 → 가지치기 → 양자화다.
2. 무엇을 자를 것인가 — 두 축[편집]
가지치기 방법을 정리하는 가장 유용한 축은 알갱이의 크기다.
| 비구조적 가지치기 | 구조적 가지치기 | |
|---|---|---|
| 단위 | 개별 가중치 | 채널·필터·어텐션 헤드·층 |
| 결과 | 희소 행렬(0이 흩어진 밀집 텐서) | 더 작은 밀집 텐서 |
| 같은 정확도에서 제거율 | 높음 (90% 이상도 흔함) | 낮음 (보통 30~60%) |
| 실제 속도 이득 | 거의 없음 (아래 절 참고) | 확실. 그냥 작은 망이 됨 |
| 필요한 런타임 | 희소 커널 또는 전용 하드웨어 | 없음. 표준 BLAS 그대로 |
정확도 대 압축률 곡선만 보면 비구조적이 압도적으로 이긴다. 그런데 그 곡선은 아무도 돈을 지불하지 않는 지표를 그린 것이다. 이 어긋남이 이 분야 전체를 규정한다.
3. 중요도를 어떻게 매기는가[편집]
3.1. 크기 기반[편집]
가 작으면 자른다. 야만적으로 단순한데 지금도 강력한 기준선이다. 층마다 별도 임계를 두는 방식(layerwise)과 전체 가중치를 한 줄로 세워 자르는 방식(global)이 있고, 후자가 층별 희소도를 자동으로 배분해 주지만 첫 층·마지막 층을 과도하게 깎는 사고가 잦아 보통 보호 목록을 둔다.
3.2. 헤세 기반 — OBD와 OBS[편집]
크기 기준의 문제는 명확하다. 작은 가중치라도 그 방향으로 손실이 가파르면 잘라선 안 된다. 손실 을 수렴점 근처에서 2차까지 전개하면 (수렴했으므로 1차항은 0)
최적 뇌 손상(Optimal Brain Damage, LeCun–Denker–Solla, 1990)은 헤세 행렬이 대각이라고 가정해 각 가중치를 0으로 보낼 때의 손실 증가를 중요도로 삼는다.
크기 기반은 여기서 로 둔 특수 경우인 셈이다. 최적 뇌 수술(Optimal Brain Surgeon, Hassibi–Stork, 1993)은 대각 가정을 버리고, “가중치 를 0으로 만들되 나머지 가중치를 최적으로 재조정한다”는 제약 최적화를 푼다. subject to 을 라그랑주로 풀면
가 나온다. 즉 자른 가중치의 몫을 살아남은 가중치들이 나눠 받는다. 재학습 없이도 성능이 유지되는 이유가 이 보상 항에 있다.
당시엔 이 파라미터 수의 제곱이라 장난감 망에서만 가능했고, 그래서 30년간 각주 취급을 받았다. 그런데 층별로 쪼개고 를 입력 공분산 으로 근사하면 계산이 감당된다는 것이 밝혀지면서, 2022~2023년 대형 언어모형 압축의 핵심 엔진으로 부활했다 — 가지치기 쪽은 SparseGPT, 양자화 쪽은 신경망 양자화 문서의 GPTQ가 같은 OBS 갱신식을 쓴다. 30년 묵은 정리가 촐레스키 분해 한 번으로 되살아난 사례.1
3.3. 그 밖의 기준[편집]
- 이동 기반 가지치기(movement pruning, 2020). 사전학습 모형을 미세조정할 때는 크기 기준이 오히려 나쁘다. 큰 가중치는 사전학습이 정한 값이지 지금 과제가 원하는 값이 아니기 때문이다. 그래서 값이 아니라 0에서 멀어지는 방향으로 움직인 누적량 을 점수로 쓴다.
- 활성값 결합 기준. Wanda(2023)는 를 점수로 쓴다. 헤세 역행렬도, 가중치 갱신도 없이 SparseGPT에 근접하는데, 요점은 가중치만 보면 안 되고 그 가중치가 곱해지는 입력의 크기를 같이 봐야 한다는 것이다. 대형 언어모형의 이상치 채널 이야기와 정확히 같은 관찰이다.
- 초기화 시점 가지치기. SNIP(2019) 등은 학습 전에 같은 민감도로 잘라 학습 비용까지 아끼려 한다. 다만 후속 연구에서 이 방법들이 층 안에서 어느 가중치를 자르는지에 거의 무감각하고, 사실상 층별 희소도 배분만 결정하고 있다는 비판을 받았다. 같은 층별 비율로 무작위 가지치기해도 성능이 비슷하면 그 점수 함수는 일을 안 한 것이다.
4. 반복적 가지치기와 재학습[편집]
한 번에 90%를 자르면 망가지지만, 조금 자르고 재학습하기를 반복하면 같은 최종 희소도에서 성능이 훨씬 낫다. 한(Han) 등(2015)이 이 절차를 표준화했다.
- 밀집 망을 정상적으로 학습한다.
- 임계 이하 가중치를 마스킹한다.
- 살아남은 가중치만 재학습한다(마스크는 고정).
- 2~3을 목표 희소도까지 반복한다.
AlexNet과 VGG-16에서 정확도 손실 없이 파라미터를 9배·13배 줄였고, 이어 나온 Deep Compression(2016)이 여기에 양자화와 허프만 부호화를 얹어 AlexNet을 35배 압축했다. 이 논문이 없었다면 이후 10년의 모형 압축 문헌은 꽤 달랐을 것이다.
재학습의 세부가 의외로 중요하다. 가지친 뒤 작은 학습률로 미세조정하는 것이 오랜 관행이었는데, 렌다 등(2020)은 원래 학습률 스케줄을 처음부터 다시 돌리는 학습률 되감기(learning rate rewinding)가 대체로 더 낫다고 보고했다. 가지치기 논문끼리 비교가 안 되는 이유의 상당 부분이 “재학습 예산과 스케줄이 제각각”이라는 데 있다는 지적도 같은 계열이다.2
5. 복권 티켓 가설[편집]
프랭클과 카빈(2019)의 관찰은 이렇다. 반복적 크기 기반 가지치기로 얻은 희소 마스크를 씌운 채 가중치를 원래 초기값 로 되돌리고 다시 학습시키면, 밀집 망과 비슷한 정확도에 비슷한 반복 수로 도달한다. 반면 같은 마스크에 새 무작위 초기값을 주면 잘 안 된다. 그래서 “무작위 초기화된 밀집 망 안에는 단독으로 학습해도 원래 망에 필적하는 부분망(당첨 티켓)이 들어 있다”는 가설이 복권 티켓 가설이다. 마스크만이 아니라 마스크와 초기값의 조합이 당첨 복권이라는 것이 요점.
작은 망에서는 재현이 잘 되는데 ResNet-50급으로 키우면 초기값으로의 되돌리기가 실패한다. 처방이 되감기(rewinding)다 — 가 아니라 학습 초기 스텝 지점의 가중치 로 돌린다( 는 전체 학습의 0.1~7% 수준). 이 수정으로 대형 망에서도 가설이 살아났고, 그 배경 설명이 선형 모드 연결성이다. 학습 초반의 잡음(데이터 순서·증강)에 대해 최종 해가 안정해지는 시점이 존재하고, 그 이후 지점으로 되감아야 티켓이 작동한다는 것.
찬물을 끼얹는 결과도 나란히 있다. 류(Liu) 등(2019)은 구조적 가지치기에서 가지친 구조를 무작위 초기화부터 충분히 학습시키면 물려받은 가중치를 미세조정한 것과 성능이 같거나 낫다고 보고했다. 즉 그 경우 가치 있는 것은 물려받은 가중치가 아니라 발견된 아키텍처이며, 가지치기는 사실상 신경망 구조 탐색이었다는 해석이다. 두 결과가 정면충돌하는 것처럼 보이지만 조건이 다르다 — 복권 티켓 쪽은 비구조적 가지치기와 제한된 학습 예산, 류 등은 구조적 가지치기와 넉넉한 재학습이다. “가지치기가 무엇을 주는가”에 대한 답이 알갱이 크기에 따라 달라진다는 것이 이 논쟁의 진짜 결론이고, 여전히 열려 있다.
6. 희소성이 속도가 되지 않는 문제[편집]
여기가 실무자가 가장 크게 데는 지점이다. 가중치의 90%를 0으로 만들었는데 추론 시간이 그대로다. 이유는 셋이다.
- 밀집 커널은 0을 곱해도 똑같이 빠르다. 마스크만 씌운 텐서는 여전히 밀집 텐서이고, GEMM은 값을 보지 않는다. 진짜 이득을 보려면 희소행렬 포맷으로 바꿔 희소 커널을 태워야 한다.
- 희소 포맷은 인덱스 값을 지불한다. CSR은 비영원소마다 열 인덱스를 저장하므로, INT8 가중치 하나에 32비트 인덱스가 붙으면 50% 희소는 오히려 손해다.
- 불규칙 메모리 접근이 캐시와 SIMD를 죽인다. 밀집 GEMM은 산술 강도가 높고 벡터 유닛을 꽉 채우는데, 비정형 희소는 게더/스캐터가 지배한다. 그래서 실전에서 희소 GEMM이 밀집 GEMM을 이기려면 희소도가 대략 95~99% 이상이어야 한다는 것이 오랜 경험칙이다.
절충안이 반구조 희소성이다. NVIDIA Ampere 세대부터 들어간 2:4 희소성은 축약 축 방향으로 연속한 가중치 4개마다 최대 2개만 비영이라는 규칙을 강제한다. 패턴이 규칙적이라 인덱스가 원소당 2비트로 끝나고, 스파스 텐서코어가 이를 직접 소비해 이론상 행렬 연산 처리량이 2배가 된다. 표준 레시피는 “밀집 학습 → 2:4 마스크 적용 → 같은 하이퍼파라미터로 재학습”이다. 정확도 손실은 대체로 작지만, 50% 희소가 상한이라 비구조적 가지치기의 90%와는 애초에 다른 게임이다.
교훈을 한 줄로 요약하면 이렇다. 압축률은 논문이 정하고, 속도는 하드웨어가 정한다.3 가지치기 결과를 보고할 때 파라미터 감소율만 적고 실측 지연시간을 적지 않는 것은 검증 및 확인 관점에서 절반만 보고한 것이다.
7. 구조적 가지치기의 실제[편집]
- 채널·필터 가지치기. 필터의 노름으로 자르거나, 배치 정규화의 스케일 파라미터 에 벌점을 걸어 0으로 수축한 채널을 통째로 들어내는 방식(network slimming)이 널리 쓰인다. 후자는 라쏘의 희소화 성질을 그대로 빌려 온 것이라, 학습이 끝나면 자를 채널이 이미 정해져 있다는 점이 편하다.
- 어텐션 헤드 가지치기. 트랜스포머의 다중 헤드 중 상당수가 지워도 성능이 유지된다는 것이 2019년에 보고됐다. 층 대부분에서 헤드 하나만 남겨도 큰 손실이 없는 경우가 있는데, 헤드마다 마스크 변수를 두고 그 기울기 크기로 중요도를 재는 방식이 표준이 됐다.
- 의존성 처리가 진짜 난관이다. 채널 하나를 지우면 다음 층의 입력 채널, 잔차 연결의 상대편, 그룹 합성곱의 그룹 크기가 전부 따라 움직인다. 잔차 블록에서는 더하기로 만나는 두 경로가 같은 채널 집합을 지워야 하므로 결합 제약이 생긴다. 실전 구현에서 정확도보다 이 그래프 의존성 추적에 시간을 더 쓰게 되는 것이 보통이다.
- 저계수 분해와의 관계. 채널 가지치기가 행렬의 행/열을 통째로 지우는 것이라면, 저랭크 근사는 특이값 분해로 계수를 줄인다. 목적은 같고 제약이 다르다 — 전자는 원소를 보존하고 구조를 바꾸며, 후자는 구조를 보존하고 원소를 바꾼다.
8. 실무 체크리스트[편집]
- 먼저 구조적으로, 그다음 비구조적을 검토한다. 배포 대상이 일반 GPU/CPU면 비구조적 가지치기의 기대 이득은 대체로 0이다. 2:4를 지원하는 하드웨어가 확실할 때만 반구조를 고려한다.
- 희소도 목표를 층별로 균일하게 주지 않는다. 첫 합성곱, 분류기 마지막 층, 임베딩은 민감하다. 파라미터의 대부분이 완전연결층에 있고 연산의 대부분이 합성곱층에 있다는 비대칭도 기억할 것 — 파라미터를 줄이는 것과 FLOP을 줄이는 것은 다른 목표다.
- 평가는 평균이 아니라 꼬리로 한다. 전체 정확도가 유지되면서 희귀 클래스·소수 집단 성능만 무너지는 현상이 반복 보고됐다. 압축은 다수 표본이 지지하지 않는 결정경계부터 지운다.
- 가지치기는 정규화가 아니다. 드롭아웃은 학습 중 무작위로 껐다 켜서 과적합을 막는 기법이고, 가지치기는 배포용으로 영구히 지우는 기법이다. 부수적으로 정규화 효과가 나타날 수는 있지만 그걸 목적으로 쓰는 건 도구를 잘못 든 것이다.
9. 관련 문서[편집]
- 신경망 양자화 · 지식 증류 · 저랭크 근사 · 복권 티켓 가설
- 심층 학습 · 합성곱 신경망 · 트랜스포머 · 역전파
- 헤세 행렬 · 촐레스키 분해 · 특이값 분해 · 희소행렬
- 라쏘 · 티호노프 정규화 · 드롭아웃 · 배치 정규화
- GPU 컴퓨팅 · 조합 최적화 · 검증 및 확인
10. Footnotes[편집]
-
OBD·OBS 원논문의 실험 규모는 가중치 수백~수천 개짜리 망이다. 저자들이 “언젠가 큰 망에도 쓸 수 있을 것”이라고 적어 둔 문장이 30년 뒤 1750억 파라미터에서 실현됐는데, 그사이에 바뀐 것은 이론이 아니라 층별로 문제를 쪼개는 요령과 GPU 메모리였다. 논문을 오래 묵히면 가끔 이런 일이 생긴다. ↩
-
가지치기 문헌의 비교 불가능성은 악명이 높아서, “우리 방법이 최신 기법 A를 이겼다”의 상당수가 재학습 에폭을 더 준 결과라는 지적이 여러 번 나왔다. 압축률·정확도·재학습 예산·실측 지연시간 네 개를 같이 적지 않은 표는 일단 의심하고 보는 것이 정신 건강에 좋다. ↩
-
그래서 가지치기 발표를 들을 때 가장 효율적인 질문은 “몇 퍼센트 줄이셨나요”가 아니라 “그래서 몇 밀리초 빨라졌나요”다. 후자에 답이 없으면 앞의 숫자는 파일 크기 이야기이고, 파일 크기가 병목인 배포 환경도 분명 있지만 대개는 아니다. ↩