LLM의 효율성 및 성능 최적화에 대한 연구: Layer-Pruning & QLoRA를 활용한 모델 경량화 & 성능 유지

:pytorch:PyTorchKR:kr:

  • 최근 공개된 심층 레이어의 비합리적인 비효율성(The Unreasonable Ineffectiveness of the Deeper Layers)라는 연구에서는 LLM의 심층 레이어를 절반까지 제거하는 실험을 통해 성능 하락을 최소화하면서도 모델 크기를 줄일 수 있음을 보여주고 있습니다. 주로 사용한 방법들은 Pruing과 QLoRA Finetuning이며, 모델 경량화를 통해 연산 비용을 절감하면서도 성능을 비슷하게 유지할 수 있는 모델 개발에 관심있는 분들께 도움이 될 것으로 보입니다. :wink:

  • 이 연구는 대규모 언어 모델(LLM)에 대한 간단하지만 효과적인 레이어-가지치기 전략을 탐구합니다. 특히, 최소한의 파인튜닝으로 모델의 더 깊은 레이어를 절반까지 제거해도 다양한 질의응답 벤치마크에서 성능이 크게 떨어지지 않는다는 것을 보여줍니다. 이 연구는 LLM의 더 깊은 레이어의 잠재적 중복성을 제시하고, 레이어 가지치기와 파라미터 효율적 파인튜닝(PEFT) 방법을 결합한 새로운 접근 방식을 제시합니다. 이 연구는 계산 효율성을 향상시키는 방향을 제안할 뿐만 아니라, 딥러닝 아키텍처를 근본적으로 이해하는 방식을 재평가하도록 합니다.

심층 레이어의 비합리적인 비효율성 / The Unreasonable Ineffectiveness of the Deeper Layers

소개

이 연구는 대규모 언어 모델(LLM)의 연산 비용, 그 중에서도 추론 시점의 연산 비용을 줄이기 위한 간단하면서도 효과적인 레이어-가지치기(Layer-Pruning) 전략에 대한 실험들과 결과를 공유하고 있습니다. 저자들은 LLM의 더 깊은 레이어를 상당 부분 제거해도 다양한 질의응답 벤치마크에서 성능이 크게 손상되지 않는다는 것을 실증적으로 보여줍니다. 이러한 발견은 LLM의 성능이 그 깊이와 복잡성에 직접 비례한다는 기존의 생각이 사실과 다를 수 있다는 것을 알려주며, QLoRA 파인튜닝과 결합된 레이어 가지치기의 실용적이고 효율적인 접근 방식을 소개하여 모델 최적화에 대한 새로운 방향을 제시하고 있습니다.

LLM의 효율성을 개선하기 위한 현재 방법에는 가중치의 정밀도를 줄이는 양자화(Quantization), 파인튜닝 중 모델 매개변수의 작은 부분 집합만을 업데이트하는 LoRA(Low-Rank Adapters), 불필요한 매개변수나 연결을 직접 제거하는 가지치기(Pruning) 기법 등이 활용되고 있습니다. 이러한 전략은 모델의 크기 또는 학습 및 추론에 필요한 연산 자원을 줄이기 위해 노력하고 있지만, 종종 성능의 하락을 포함하는 트레이드-오프(trade-offs)가 발생하고 있습니다.

기본적인 아이디어는 모델의 모든 레이어가 모델의 성능에 동등하게 기여하지 않는다는 관찰에 기반한 레이어-가지치기(Layer-Pruning) 전략입니다. 이를 위해 먼저 (1) 가장 중요하지 않은 레이어 식별을 위해 레이어 간의 유사도를 측정하여 성능에 미치는 영향을 최소화하면서 제거할 수 있는 레이어를 결정 및 제거하고, (2) 제거된 레이어로 인한 성능 저하를 최소화하기 위해 QLoRA 기법을 사용하는 '치유(healing)' 과정을 거치는 것을 제안하고 있습니다

Layer-Pruning 및 Healing의 동작 방식

이 연구에서 제안하는 레이어-가지치기 방법의 구현은 최적의 레이어를 식별하고 모델을 치유하기 위한 두 단계 과정을 포함합니다. 1) 제거할 레이어를 결정하는 결정은 레이어 표현 간의 각도 거리 분석을 기반으로 하며, 모델의 성능에 미치는 영향을 최소화하기 위해 집중됩니다. 2) QLoRA를 사용한 후속 파인튜닝은 매개변수 효율적인 방식으로, 제거된 레이어의 부재를 보완하고 모델의 효과성을 보존하거나 심지어 향상시키는 데 중요합니다.

아래 그림 1을 통해 전체적인 전략을 먼저 간략히 살펴보겠습니다:

(a) 알고리즘 흐름도: n개의 레이어 제거 과정은, 각도 거리 d가 최소화되는 레이어 ℓ*를 찾아내어 그 위치부터 n개의 레이어를 제거하는 과정을 포함합니다. 필요한 경우, 파라미터 효율적인 파인튜닝(PEFT)을 통해 모델의 손상을 치유할 수 있습니다.

(b) 레이어 제거 도식화: 레이어 제거 과정은 ℓ부터 시작하여 ℓ+n−1에 이르는 총 n개의 레이어를 모델에서 제거하는 것을 나타냅니다. 이는 모델의 구조적 단순화를 의미합니다.

(c) 각도 거리 분석: 다양한 레이어 수 n에 대해, 레이어 블록의 시작 지점 ℓ에서의 각도 거리 d를 나타냅니다. 가장 낮은 거리(보라색 곡선)에서 가장 높은 거리(노란색 곡선)까지, 각도 거리의 최소값을 추적하는 검은색 선을 보여줍니다.

(d) 가지치기 결과: Llama-2-70B 모델의 레이어 제거 비율에 따른 성능 변화를 보여줍니다. 치유를 통해 성능이 어느 정도 복원되며(진한 파란색), 제거된 레이어 비율이 증가함에 따라 질의응답 작업의 정확도에 급격한 변화가 관찰됩니다(40%-50% 가지치기시), 반면 치유된 손실은 최소 80% 가지치기까지 점진적으로 증가합니다.


각 동작 과정을 다음과 같이 나누어 설명할 수 있습니다.

1. 각도 거리 측정

첫 번째 단계는 모델의 각 레이어 사이의 "각도 거리(angular distance)"를 측정하는 것입니다. 각도 거리는 레이어 간의 유사성을 측정하는 지표로 사용되며, 이는 레이어들이 처리하는 정보의 유사성을 나타냅니다. 레이어 ℓ과 ℓ+n 사이의 각도 거리를 계산함으로써, 모델 내에서 정보 처리가 중복되는 부분을 식별할 수 있습니다. 중복이 많은 레이어는 제거해도 모델 성능에 미치는 영향이 적다고 가정할 수 있습니다.

2. 중요하지 않은 레이어 식별

각도 거리를 기반으로, n개의 연속된 레이어 중에서 제거할 때 성능 손실을 최소화할 수 있는 레이어 블록을 식별합니다. 이를 위해, 레이어 ℓ부터 시작하여 ℓ+n까지의 레이어 블록 중 각도 거리 d가 최소화되는 지점을 찾습니다. 이 최소화된 각도 거리 d는 제거할 레이어 블록을 결정하는 데 사용됩니다. 이 과정은 모델 전체에 걸쳐 반복되어, 제거 가능한 레이어 블록을 찾아냅니다.

3. 레이어 제거 및 모델 치유(healing)

식별된 레이어 블록을 모델에서 제거한 후, 제거 과정에서 발생할 수 있는 성능 손실을 "치유"하기 위해 파라미터 효율적인 파인튜닝이 수행됩니다. 이 과정은 주로 QLoRA와 같은 기법을 사용하여 최소한의 파라미터 업데이트로 최대한의 성능 복원을 목표로 합니다. "치유" 과정은 제거된 레이어의 기능을 나머지 레이어가 흡수하도록 하여, 모델의 성능을 원래 상태로 복원하거나 심지어 개선하는 것을 목표로 합니다.

4. 성능 검증

마지막 단계에서는 가지치기와 치유 과정을 거친 모델의 성능을 원래 모델과 비교하여 검증합니다. 이를 통해 가지치기 전략이 모델의 효율성을 향상시키면서도 성능을 유지하거나 개선할 수 있는지를 평가합니다. 다양한 벤치마크와 작업을 통한 성능 평가는 가지치기 전략의 유효성을 실증적으로 증명하는 데 중요합니다.


예를 들어, 100개의 레이어를 가진 가상의 LLM을 고려해 보겠습니다. 제안된 방법은 51번(ℓ*)부터 75(ℓ*+n−1)번째까지 25(n)개의 레이어가 전체 성능에 거의 영향을 미치지 않는다고 식별할 수 있습니다. 이렇게 25(n)개의 레이어들을 제거한 뒤, 모델은 75개의 레이어를 남깁니다. 그런 다음 QLoRA 기법으로 모델을 파인튜닝하며 (제거된 25개의 레이어를 보완할 수 있도록) 남은 75개의 레이어들을 조정합니다. 이러한 과정을 거쳐 가지치기 이전의 원래 모델과 유사하거나 더 나은 성능 수준을 유지하는 더 효율적인 모델을 만들 수 있습니다.

실험 결과

Llama2와 Qwen 모델군들과 Mistral / Phi 모델 등, 2.7B부터 70B에 이르는 다양한 크기의 LLM들을 대상으로 가지치기 및 치유 과정을 실험하였습니다. 실험에 사용한 모델들은 모두 32에서 80개의 원본 레이어를 가지고 있습니다. 치유 단계에서는 QLoRA를 사용하여 모델을 4비트 정밀도로 양자화한 후 Colossal Clean Crawled Corpus(C4)에서 추출한 164M 또는 328M 토큰에 대해 파인튜닝을 진행함으로써 효율적인 학습을 가능하게 했습니다. 이 모든 실험은 단일 A100 GPU에서 수행되었습니다.

성능 평가를 위해 MMLU(Massive Multitask Language Understanding)와 BoolQ라는 두 가지 벤치마크를 사용했습니다. MMLU는 일반적인 세계 지식 및 문제 해결 벤치마크로, BoolQ는 텍스트 자체로부터 답을 추론해야 하는 예/아니오 독해력 평가 벤치마크입니다.

위 그림 2의 실험 결과는 다음과 같은 주요 발견을 보여줍니다:

  1. 치유에 의한 성능 개선: 레이어를 제거한 후 QLoRA를 사용한 치유 과정을 거친 모델들은, 치유 과정 없이 레이어만 제거한 경우보다 성능이 개선되었습니다. 이는 치유 과정이 가지치기로 인한 성능 저하를 어느 정도 상쇄할 수 있음을 시사합니다.

  2. 가지치기 비율에 따른 성능의 강인성(robust): 실험에 포함된 모델들은 20%-55%의 가지치기 비율까지는 성능이 상당히 강인하게 유지되었습니다. 모델 가족과 크기에 따라 이 비율은 다소 변동이 있지만, 이 범위 내에서는 모델들이 여전히 유용한 성능을 보여줄 수 있음을 의미합니다.

  3. 가지치기 비율이 증가함에 따른 성능 하락: 특정한 가지치기 비율을 넘어서면 모델 성능이 급격히 하락하여 임의 추측 수준으로 떨어지는 경향을 보였습니다. 이는 모델에서 제거할 수 있는 레이어의 한계를 나타내며, 과도한 가지치기가 모델의 성능을 크게 저해할 수 있음을 보입니다.

향후 논의 및 연구 방향

논의 (Discussion)

  • 레이어 가지치기의 효과성: 논문은 대규모 언어 모델에서 특정 레이어를 제거해도 성능이 유지되거나, 최소한의 파인튜닝으로 복원될 수 있음을 보여줍니다. 이 결과는 모델의 계산 효율성과 배포 용이성을 크게 향상시킬 수 있는 가능성을 열어줍니다.

  • 치유 과정의 중요성: 치유 과정이 모델 성능에 미치는 긍정적인 영향을 강조합니다. 특히, 파라미터 효율적인 파인튜닝 방법론인 QLoRA를 사용한 치유가 어떻게 모델의 성능을 유지하거나 개선하는지에 대한 논의가 포함될 수 있습니다.

  • 모델 설계와 최적화의 새로운 관점: 이 연구는 모델 설계와 최적화에 있어서의 새로운 접근 방식을 제시합니다. 특히, 모델의 복잡성과 성능 사이의 관계를 재고하고, 효율성을 중시하는 모델 설계가 중요함을 강조합니다.

미래 방향 (Future Directions)

  • 더 광범위한 모델과 작업에 대한 적용: 가지치기와 치유 전략을 다양한 유형의 모델과 NLP 작업에 적용하여 그 효과를 평가하는 것이 중요한 향후 연구 방향입니다. 이를 통해 가지치기 전략의 범용성과 한계를 더 잘 이해할 수 있습니다.

  • 가지치기 메커니즘의 깊이 있는 분석: 어떤 레이어가 제거될 때 모델의 어떤 기능이 영향을 받는지, 그리고 치유 과정이 이러한 기능을 어떻게 복원하는지에 대한 더 깊이 있는 분석이 필요합니다. 이는 모델의 내부 작동 메커니즘에 대한 더 깊은 이해를 가능하게 할 것입니다.

  • 효율성과 성능 사이의 최적 균형 탐색: 다양한 가지치기 및 파인튜닝 전략을 실험하여, 계산 효율성을 극대화하면서도 최적의 모델 성능을 유지할 수 있는 균형점을 찾는 것이 중요합니다. 이는 특히 리소스가 제한적인 환경에서의 AI 응용에 중요한 영향을 미칠 것입니다.

더 읽어보기

The Unreasonable Ineffectiveness of the Deeper Layers 논문

다른 읽을거리




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 힘이 됩니다~ :star_struck:

2개의 좋아요