모델 경량화 방법

2024. 5. 7. 18:10칼럼

 

 

 

 


 

 

 

1.  모델 경량화란?

  1) 모델 경량화는 규모가 크거나 복잡한 모델을

      작고 가벼운 형태로 변환하는 프로세스를 의미합니다.

 

  2) 모델 경량화는 일반적으로 딥러닝 모델, LLM(거대 언어 모델), AI 모델 등등에서

      효율성과 성능의 향상을 위해 사용됩니다.

 


 

2. 모델 경량화를 사용하는 이유 및 장점

  1) 많은 기기 및 시스템은 제한된 하드웨어 자원을 갖고 있어

      대규모 모델을 실행하기에는 데이터의 전송과 저장에서 요구되는 비용이 많이 들며

      사용자 경험의 향상에도 어려움이 있습니다.

 

  2)

     (1) 이때 모델 경량화를 사용하게 되면 모델의 크기와 연산량이 줄어들기 때문에

           제한된 환경이나 저사양 하드웨어에서도 실행 할 수 있게 됩니다.

     (2) 서버 비용을 줄일 수도 있게 되며 모델이 간결해짐에 따라

           성능과 형태 등의 주요 측면에서의 효율성도 높아집니다.

 


 

3. 모델 경량화 방법

모델 경량화 방법은 모델을 간결하게 하여 효율성을 높인다는 공통점이 있지만

모델에 따라 조금씩 다른 특성을 보입니다.

 

저는 그 중

딥러닝 모델, LLM(거대 언어 모델), AI 모델의 경량화 방법에 대해서 설명하겠습니다.

 

 

 

1) 딥러닝 모델의 경량화 방법

(1) 가지치기(Pruning)(네트워크 구조화 관점 경량화)

 

 

  1. 중요하지 않은 weight(가중치)를 제거하여 모델의 연결 수를 줄이고 계산량을 감소시키는 방법.
  2. 머신을 딥러닝 할 때는 training 과정에서 complexity가 늘어나는데 이때 중요하거나 자주 쓰는 parameter는 살리고 자주 쓰지 않는 parameter을 제거하는 방식입니다.
  3. 사람이 50조개의 뉴런을 가지고 태어나 1년 뒤에는 1000조개가 된다고 할 때, 어른이 되는 과정에서 자주 쓰는 뉴런은 보존하고 그렇지 않은 뉴런은 없어지면서 결국에는 500조개의 뉴런이 되는 것으로 빗대어서 설명할 수 있습니다.
  4. 가지치기(Pruning)은 network의 parameter을 제거하기 때문에 정보가 손실될 수 있다는 단점과 complexity가 감소하기 때문에 추론 속도(inference speed)가 빨라지며 일반화를 할 수 있다는 장점이 있습니다.

 

 

중요하지 않은 parameter을 그룹(channal, filter, layer) 단위로 제거하는 structured pruning과 parameter을 독립적으로 제거하는 unstructured pruning이 있습니다.         

 

 

(2) Network Quantization((가중치)양자화)

  1. 학습된 딥러닝 모델이 weight 값을 저장할 때 사용하는 비트의 수를 줄여서 모델의 크기를 줄이고 연산 효율을 높이는 방법입니다.
  2. 더 적은 비트를 사용해서 모델을 실행시킬 수 있기 때문에 모델의 메모리 사용량이 줄어들고, inference(추론)할 때 동작시간을 단축시킬 수 있다는 장점이 있으나 숫자가 덜 정밀하게 표현되어 성능이 떨어진다는 단점이 있습니다.
  3. 딥러닝에서는 숫자의 저장과 연산에서 32-bit floating point나 FP32(32비트)를 사용하는데 이것을 FP16(16비트)이나 INT8(64비트)로 표현 가능한 범위의 숫자로 변환한 뒤(=bitband를 낮춰서 표현한 뒤) 해당 비트 수만큼의 메모리에 저장하는 방법입니다.

 

 

 

2) LLM(거대 언어 모델)의 경량화 방법

(1) PEET(Parameter Efficient Fine-Tuning)

  1. 적은 매개변수(parameter) 학습만으로 빠른 시간에 새로운 문제를 효과적으로 해결하는 미세 조정 방법
  2. 전체 모델을 조정하는 것보다 적은 계산 자원과 데이터 자원을 사용하기 때문에 실행속도와 결과제공, 피드백의 과정이 효율적으로 작동하게 됩니다. 또 더 적은 리소스가 요구되기 때문에 더 많은 사용자가 모델을 사용할 수 있게 되며 더 다양한 작업(도메인에의 접근 등), 더 다양한 환경(제한이 있는 환경 등)에서의 사용도 용이하게 한다는 장점이 있습니다.
  3. Parameter(매개변수)의 일부를 조정하기 때문에 원래 모델과 동일한 성능을 보장할 수 없고 PEET 적용 시 사용되는 하이퍼파라미터에 따라 성능이 크게 변할 수 있다는 단점이 있습니다.

 

   4. PEET의 방법론 중 Quantization와 LoRA이 있습니다.

  • Quantization(양자화)는 매개변수를 실수형에서 정수형으로 바꾸어 비트 수를 줄여서 모델 사이즈를 감소시키는 방식입니다. 모델의 크기가 줄어들기 때문에 계산의 효율성이 향상되고 복잡도는 감소한다는 장점이 있습니다. 추론(inference) 속도는 빨라지며 메모리 사용량도 효율적으로 작동하게 됩니다. 

  • LoRA(Low Rank Adoption), 즉 낮은 순위 적용 방식은 매개변수 가중치(weight) 중 일부만 미세조정하고 나머지는 원래대로 유지시키는 방식입니다. 전체 매개변수를 사용하는 큰 체크포인트 파일 대신 작은 체크포인트 파일을 얻어 저장공간을 효율적으로 사용할 수 있습니다. 훈련비용과 컴퓨터 리소스를 절약하면서도 성능을 향상시킬 수 있다는 장점이 있습니다.

 

 

 

3)  AI 모델의 경량화 방법

(1) Quantization(양자화)

  1. 앞선 설명과 마찬가지로, 모델 파라미터를 정수로 변환하여 저장공간을 줄이는 방법
  2. 예시 : 32비트 부동 소수점 수를 8비트 정수로 양자화하여 모델의 크기를 줄인다.

 

(2) Pruning(가지치기)

  1. 앞선 설명과 마찬가지로, 불필요하거나 중요도가 낮은 가중치(weight)들을 제거하여 모델의 크기를 줄이는 방법
  2. 예시 : 기울기의 절댓값이 가장 작은 가중치를 제거하여 모델의 크기를 줄인다.

 

(3) Distillation(증류)

  1. 큰 모델에서 작은 모델로 지식을 전달하는 방법
  2. 작은 모델이 큰 모델과 유사한 성능을 내도록 학습시킵니다.
  3. Distillation(증류)에는 큰 모델로부터 작은 모델로 지식을 전달하는 과정을 다루는 Knowledge Distillation(지식 증류)와학습 데이터의 크기를 줄이고(학습에 일부 관련성이 높은 데이터만을 사용) 모델의 정확도를 향상시키는 Data Distillation(데이터 증류)가 있습니다.

 

 

 


 

마침 : 모델 경량화 방법은 해당 모델마다 국한된 것이 아니라 가지 방법이 여러 모델에도 적용 가능합니다. 모델의 경량화는 거의 모든 측면에서의 효율성을 향상시킨다는 장점이 있지만 손실이나 정밀도의 측면에서는 성능이 떨어질 있다는 단점 또한 존재합니다. 현재 단점을 개선, 보안하기 위한 여러 경량화 방법들이 연구 중에 있습니다.

 

 


AID 5기 : 송지윤 

 

 

 

'칼럼' 카테고리의 다른 글

AI 최신 소식  (1) 2024.07.03
AutoML  (0) 2024.06.01
LoRA 기법에 대해서  (0) 2024.05.18