모든 이야기

AI 모델 Post Training

"MIT HAN LAB"여기 유튜브 구독한 뒤에 Pruning 과 Fine Tuning 관련해서 최신 영상들 많이 보자. MIT 에 Song Han이라는 중국계 교수분이, 무려 'EIE'라는 일찍이 이 분야에서 선구적인 논문 작성한 분인데 많은 내용들을 유튜브로 올리신다. 특히 임베디드쪽에 쓰이는 TinyML에 관심 많으면 꼭 구독하자..

Post-Training에서 Pruning과 Fine-Tuning으로 모델 크기 줄이기

Post-training은 사전 학습된 모델을 실제 배포 환경에 올리기 전, 추론 비용, 메모리 사용량, 지연 시간, 또는 특정 태스크 적합성을 조정하기 위해 수행하는 단계다. 이 과정에서 모델 크기를 줄이는 대표적 기법이 Pruning(가지치기)과 Fine-tuning(파인튜닝)이며, 둘이 자주 함께 쓰이지만 각각 담당하는 역할이 다르다.


1. Pruning: 모델 구조 자체를 줄이는 방향

Pruning은 모델에서 “덜 중요한” 파라미터나 구조 일부를 제거해 파라미터를 줄이는 기법이다. 단순히 용량을 줄인다는 의미보다, 성능을 크게 해치지 않으면서 표현을 압축하는 것이 핵심이다.

보통 무조건적으로 0에 가까운 숫자를 0으로 만드는 Fine Grained Pruning 방식과, 행렬 연산에서 특정 행/열을 아예 잘라버리는 Coarse Grained Pruning 방식이 있는데 Fine Grained Pruning은 병렬연산의 메리트가 좀 적어지는 이슈가 있어서 Coarse Grained Pruning이 쓰인다.

1) Pruning의 주요 관점

  • 어떤 단위를 자를 것인가?
    • 개별 가중치(weight)를 기준으로 자르는 방식
    • 뉴런, 채널, 레이어 블록 등 더 큰 구조 단위로 자르는 방식
  • 언제 자를 것인가?
    • 학습 초기에 구조를 바꿔가며 점진적으로 pruning하는 방식
    • 학습이 끝난 뒤 정적으로 pruning하고, 필요하면 추가 조정으로 회복하는 방식
  • 얼마나 자를 것인가?
    • 일부를 깎아보며 성능-용량 trade-off를 보는 경우와, 특정 목표 크기로 맞추는 경우로 나뉜다.

2) Pruning이 모델 크기에 주는 영향

  • 파라미터 수가 줄면 메모리 사용량, 저장 크기, 때로는 연산량도 줄어든다.
  • 다만 pruning만으로 항상 속도가 linearly 줄어드는 것은 아니다. 하드웨어에서의 실제 효율은 모델 구조, 연산 패턴, 커널 지원에 따라 달라진다.
  • 구조적으로 깔끔하게 잘린 경우 추론 최적화가 쉬워지고, 불규칙한 형태라면 실제 속도 개선까지 추가 작업이 필요할 수 있다.

3) Pruning 후 자주 따라오는 현상

  • 중요도 기준만으로 자르면 작업 성능이 떨어질 수 있다.
  • 그래서 pruning은 보통 단독 끝점이라기보다, 이후 회복/적응 과정을 포함한 파이프라인의 한 단계로 다뤄진다.

2. Fine-tuning: 잘라낸 모델을 다시 살리거나 목적에 맞추기

Fine-tuning은 기존 가중치를 출발점으로 삼아, 새로운 데이터나 특정 태스크에 맞게 추가 학습을 진행하는 과정이다. Post-training 관점에서는 두 가지 의미로 자주 쓰인다.

1) 성능 회복을 위한 파인튜닝

Pruning으로 구조를 줄인 뒤, 원래 모델보다 성능이 낮아질 수 있다. 이때 파인튜닝을 통해:

  • 줄어든 구조에서도 표현을 다시 조정하고
  • 손실된 정확도를 일부 혹은 대부분 회복시키는 시도가 가능하다.

즉, pruning으로 “크기”를 줄이고, 파인튜닝으로 “성능”을 다시 다듬는 조합이다.

2) 태스크/도메인 적응을 위한 파인튜닝

이미 충분히 작은 모델이라도 실제 서비스에 쓰려면 다음과 같은 조정이 필요할 수 있다.

  • 특정 도메인 데이터 분포에 맞추기
  • 특정 출력 형식, 스타일, 제약 조건에 맞추기
  • 제한된 자원 안에서 원하는 동작 안정성 확보하기

이 경우 파인튜닝은 크기 축소 자체보다 적재적소 adaptation에 가깝다.

3) 파인튜닝의 실제 운영상 고려할 점

  • 더 많은 데이터, 더 긴 학습, 더 많은 검증 인프라가 필요할 수 있다.
  • 학습 대상 범위 전체를 다시 조정할지, 일부만 조정할지는 자원, 과적합 위험, 변경 폭에 따라 달라진다.
  • 작아진 모델은 표현 용량이 줄어들 수 있어서, 파인튜닝 데이터 구성과 평가 지표가 더 중요해진다.

3. Pruning + Fine-tuning: 왜 같이 다루는 경우가 많은가

둘은 서로 다른 축이지만, Post-training 압축 파이프라인에서는 자주 연결된다. 보통 둘을 iterative하게 같이 굴리면서 평가해가는 iterative fine tuning 기법이 많이 사용된다.

  1. 중요도 평가
    어떤 부분을 줄여도 되는지 판단한다.
  2. 구조 축소
    Pruning으로 파라미터나 구조를 덜어낸다.
  3. 성능 조정
    파인튜닝으로 성능을 다시 맞추거나, 목표 태스크에 적응시킨다.
  4. 검증과 반복
    크기, 속도, 정확도, 안정성 사이의 균형을 보며 조정한다.

이 흐름에서 핵심은 “줄이는 것”보다 “줄인 뒤에도 목표 성능을 유지할 수 있느냐”다. 그래서 최종 판단은 보통 파라미터 수 하나가 아니라, 실제 추론 환경에서의 지표들로 내린다.


4. 실무에서 자주 보는 고려 지점

1) 크기만 줄이면 끝나는 문제가 아니다

  • 저장 용량이 줄어도, 실제 배치 환경에서의 메모리 요구, 배치 크기, 커널 효율, 캐시 동작 등은 별도다.
  • Pruning으로 얻은 구조가 하드웨어에 잘 맞는다는 보장은 없다.
  • 따라서 크기 감소는 수단이고, 목표는 보통 latency, throughput, 메모리 예산, 혹은 배포 용이성이다.

2) Pruning 기준을 너무 단순하게 보면 위험하다

  • 겉으로 보기엔 작은 가중치라도, 전체 표현에서 중요한 역할을 할 수 있다.
  • 구조 단위 pruning에서는 특정 채널이나 레이어를 빼는 것이 태스크 전체에 어떤 영향을 주는지 확인이 필요하다.
  • 그래서 작은 변화로 실험하고, 여러 지표를 함께 보는 방식이 자주 쓰인다.

3) 파인튜닝이 만능은 아니다

  • 잘라낸 뒤 무조건 파인튜닝만 하면 recover된다고 보기는 어렵다.
  • 비중이 큰 구조 축소, 데이터가 부족한 도메인, 불안정 출력 문제에서는 회복이 더 어렵게 느껴질 수 있다.
  • 파인튜닝 자체가 추가 비용과 반복 실험을 요구하므로, 기대 효과와 비용을 같이 봐야 한다.

4) 평가와 모니터링이 중요하다

  • 최종적으로는 태스크 정확도만 보지 말고, 추론 시간, 메모리 피크, 응답 안정성, 실패 케이스 양상 등을 함께 확인하는 편이 좋다.
  • 특히 배포 직전 Post-training 단계에서는 “실험실에서 줄어든 모델”과 “실제 환경에서 잘 도는 모델”이 다를 수 있다.

5. 요약

  • Pruning은 모델의 파라미터나 구조 일부를 줄여 크기를 낮추는 방향이다.
  • Fine-tuning은 줄인 모델을 다시 조정하거나, 특정 태스크/도메인에 맞게 추가 학습해 성능을 다듬는 방향이다.
  • 둘은 자주 함께 쓰이는 보완 관계다. Pruning으로 압축하고, 파인튜닝으로 적응/회복하는 식이다.
  • 다만 최종 목표는 단순히 파라미터 수를 줄이는 데 있지 않고, 실제 배포 조건에서 요구되는 성능과 효율을 함께 만족시키는 데 있다.

Post-training에서 이 두 기법을 다룰 때는 “얼마나 줄였는가”보다 “줄인 뒤 어떤 지표가 어떻게 변했는가”를 중심으로 보는 게 더 현실적이다. 모델 크기 축소는 끝이 아니라, 배포 가능한 형태로 만들기 위한 조정 과정의 한 부분이라고 생각하면 흐름이 훨씬 정리된다.