Fine-tuning부터 ICL, 그리고 PEFT 개념 정리 # 38 위클리 딥 다이브 | 2024년 5월 8일 에디터 배니 |
|
|
💡 이번주 뉴스레터에는 이런 내용을 담았어요!
- 언어 모델의 Fine-tuning 개념에 대해서 정리했습니다.
- In-Context Learning(ICL)이 등장한 배경과 장단점을 요약했습니다.
- 다양한 PEFT 방법론을 소개합니다.
|
|
|
안녕하세요, 에디터 배니입니다.
지난 뉴스레터에서 언어 모델이 긴 글을 한 번에 이해할 수 있는 이유(링크 🔗)를 소개했습니다. 다양한 방법이 있지만 그중에서도 긴 컨텍스트를 이해할 수 있도록 위치 정보를 반영하는 위치 임베딩(Positional Embeddings)에 대해 자세히 알아봤는데요. 이러한 경향성에 힘 입어 최근 소개되는 언어 모델들은 긴 컨텍스트 윈도우(Long-Context Window)를 기본으로 지원하고 있습니다. 이는 언어 모델이 한 번에 많은 양의 데이터를 처리할 수 있음을 의미합니다.
덕분에 Many-Shot In-Context Learning(ICL)이 가능해지면서 프롬프트 엔지니어링 전략만으로도 언어 모델의 성능을 향상시킬 수 있게 됐습니다.(💡ICL은 아래에서 자세하게 설명해요!) 과거에는 특정 목적을 달성하기 위해서 사전 훈련된(Pre-trained) 언어 모델에 Fine-tuning 과정이 필요했지만, 이제는 더 적은 데이터로 많은 비용과 시간을 들이지 않고도 성능을 높일 수 있게 된 것입니다. 상황이 이러다보니 파인튜닝(Fine-tuning)이 필요한가에 대한 의문을 제기하기도 합니다.
그렇다고 Fine-tuning이 완전히 쓸모 없는 것은 아닙니다. 최근에는 규모가 큰 사전 훈련 모델의 전체 파라미터를 업데이트하는 방식(Full Fine-tuning)이 아니라, 일부 파라미터를 효율적으로 업데이트하는 방식을 연구하고 있습니다. 덕분에 Full Fine-tuning보다 훨씬 더 적은 데이터와 비용을 들여 안정적인 성능을 낼 수 있는 것이죠. 이때 저는 자연스럽게 이런 의문이 들었습니다. |
|
|
🤔 ICL과 PEFT 중 어떤 것이 더 좋을까? |
|
|
두 분야 모두 꽤 오랜 시간 발전을 거쳐온 만큼 과거에 비해서는 훨씬 개선됐습니다. 실제로 두 방법론을 비교하는 연구들이 종종 발표되어 왔는데요. 이 내용을 이해하기 위해서는 Fine-tuning과 ICL이 어떤 발전 과정을 거쳐 왔는지 이해해야 합니다. 다양한 개념들이 등장하는 만큼 이번 주제에 대해 더욱 깊이 있게 다루기 위해 2주간에 걸쳐 소개하도록 하겠습니다. 이번주는 Fine-tuning부터 ICL의 등장, 그리고 다양한 PEFT 연구를 살펴봅니다. |
|
|
Fine-tuning: 언어 모델의 능력을 빌려오자 |
|
|
‘언어 모델’이라는 말이 등장하던 시절로 돌아가봅시다. 2018년, BERT는 당시 기준으로 뛰어난 자연어 이해 능력을 가지고 있었습니다. 일반적인 언어 특성을 이해하고 있는 BERT는 다양한 도메인에서 두루 활용이 가능했죠. 하지만 BERT를 특정한 목적에 맞게 활용하기 위해서는 추가적인 학습이 필요합니다. 다행히 그 과정이 복잡하지는 않습니다. BERT 구조를 유지한 채 마지막 단계에 텍스트 분류가 가능한 레이어를 더하고, 텍스트 분류를 위한 학습 데이터를 추가로 훈련시키면 됩니다.
예를 들어, 어떤 텍스트에 나타난 긍/부정 감정을 분석하고 싶다면 마지막 레이어의 출력값이 2개가 되도록 설정하면 됩니다. 이 과정에서 사전 훈련된 모델의 파라미터 값들은 약간씩 조정됩니다. 감정 분류 작업을 수행하기 위해 새로운 학습 과정을 거치며 파라미터를 업데이트하기 때문입니다. 이것이 사전 훈련 모델을 기반으로 파라미터를 미세(Fine)하게 조정(Tuning)하는 Fine-tuning입니다. 참고로 이렇게 축적된 지식 정보를 활용해 새로운 목적으로 학습 과정을 전이 학습(Transfer Learning)이라고 합니다. |
|
|
Model #1의 출력값을 입력값으로 받는 Model #2 Logistic Regression 레이어를 추가함으로써 긍정/부정 감정 예측 태스크로 변형할 수 있다. 그림 예시에서는 BERT를 경량화한 DistilBERT를 활용했다.
|
|
|
Fine-tuning만 하면 누구나 언어 모델을 가질 수 있다는 점에서 매력적이었습니다. 하지만 아무리 적은 데이터셋으로 학습이 가능하다고 하더라도, 어디까지나 사전훈련 데이터셋에 비해 적은 규모를 의미합니다. 당시에는 수 천 개에서 수 백 만 개의 데이터가 있어야 Fine-tuning이 가능했습니다. 그리고 언어 모델을 훈련시키기 위해서는 수 백-수 천 만원에 달하는 GPU 성능이 필요합니다.
이런 점들을 고려하면 여전히 개인 수준에서 Fine-tuning 학습에 드는 비용을 감당하기란 쉽지 않아 보입니다. 어떤 글에 표현된 감정이 긍정인지 부정인지 분류하는 간단한 과정이라고 하더라도 해당 데이터셋을 수집하고, 훈련시키는 데 만만치 않은 비용을 감당해야 하는 것입니다. 그럼에도 많은 기업에서는 이를 기반으로 언어 모델의 다양한 가능성을 가늠할 수 있었죠. |
|
|
In-Context Learning(ICL): 이젠 Fine-tuning이 필요 없다 |
|
|
이렇게 언어 모델이 발전하던 와중에 LLM의 시대가 열렸습니다. 그 유명한 GPT-3가 그 서막을 열었다고 할 수 있는데요. GPT-3를 처음 소개한 논문의 원제는 <Language Models are Few-Shot Learners> 입니다. 이 논문에서 본격적으로 In-Context Learning(ICL) 개념이 알려지기 시작했습니다.
ICL은 컨텍스트 안에 주어진 여러 샷들을 학습하여 답변의 패턴을 이해하는 과정입니다. 내가 원하는 답을 얻기 위한 문제에 대해서 몇 가지 예제들을 만들어 두고, 이를 언어 모델에게 프롬프트로 입력합니다. 우리가 쉽게 이해할 수 있는 자연어의 형태로요. ICL은 예제의 개수에 따라서 Zero-Shot / One-Shot / Few-Shot 등으로 구분합니다.
여기서 Shot(샷)이란 모델에게 주어진 예제, 즉 (입력-타깃) 쌍을 의미합니다. 즉, 언어 모델에게 적은 예제를 제공해도 이를 학습해서 적절한 답을 낼 수 있다는 뜻입니다. 이를 인간의 학습으로 비유해보자면, 치타와 표범 사진을 각각 한 장씩 보여준 뒤 새로운 문제에 대해서 정답을 맞히라고 하는 것과 같습니다.
|
|
|
보시다시피 몇 개의 예제(샷)를 보여주고, 다음에 무엇이 올지 예측하게 문제를 제공함으로써 원하는 답변을 얻을 수 있습니다. ICL이 Fine-tuning 과정에 비해 훨씬 간편하죠? 모델의 일부를 수정하지 않아도 되고, 훨씬 적은 예제 데이터만 있어도 원하는 결과를 얻을 수 있으니까요.
하지만, 이런 장점들에도 불구하고 몇 가지 치명적인 단점이 존재합니다. 우선, 모델이 추론(Inference)할 때마다 많은 계산 비용이 듭니다. 학습이 완료된 모델로 새로운 입력값에 대해서 예측하는 과정을 '추론'이라고 말합니다. 학습 과정에서도 연산이 필요한 것처럼 입력된 값을 처리하는 추론 과정에서도 비용이 발생합니다.
ICL의 특성상 많은 예제들을 입력해야 성능이 개선되는데, 입력 프롬프트의 길어지면 길어질수록 계산 비용은 높아질 수밖에 없습니다. 한 번 Fine-tuning한 모델의 경우, 입력 프롬프트에 예제를 입력할 필요가 없기 때문에, 학습 과정에서는 계산 비용이 많이 들더라도 추론 과정에서는 비용을 절약할 수 있습니다.
또한, 프롬프트의 형식에 따라 성능에 영향을 미친다는 점도 ICL의 단점으로 꼽힙니다. 결국 예제를 입력하는 방식 또한 프롬프트 엔지니어링의 일종입니다. 어떻게 입력 포맷을 설정하느냐에 따라 성능에 차이가 난다는 점에서 일관성이 떨어질 수 있습니다. 심지어 동일한 예제를 활용하더라도, 예제의 순서를 바꾸는 것만으로도 성능에 영향을 미치기도 합니다. 이런 점을 고려했을 때, Fine-tuning의 성능이 더욱 안정적이고 ICL에 비해 높은 정확도를 보이는 경향이 있습니다. |
|
|
동일한 예제에 순서만 바꿨는데도 정확도(Acc.; Accuracy)가 급감했다.
그리고 부정확한 레이블을 제공하더라도 제대로 된 답을 내기도 한다는 연구( <Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?> (Min et al., 2022) 🔗 링크)도 발표됐습니다. 이런 ICL의 문제점들이 지적되면서 정말로 모델이 예제를 ‘학습’하는 것이 맞느냐는 의문이 제기됩니다.
Fine-tuning 방법론과 비교한 ICL의 특징을 정리하면 다음과 같습니다. |
|
|
👍 ICL의 장점
-
적은 양의 예제를 제공하는 것만으로도 언어 모델을 활용한 하위 과제를 풀 수 있다.
-
파라미터를 업데이트할 필요가 없어 학습 비용을 절약할 수 있다.
-
하나의 모델로 여러 가지 하위 과제를 수행할 수 있는 유연성을 가지고 있다.
|
👎 ICL의 단점
- 추론 과정에서 계산 비용이 상대적으로 많이 든다.
- 프롬프트 형식과 순서에 따라 성능이 달라지기도 한다.
- 부정확한 레이블을 제공하더라도 올바른 답을 내는 등 학습 효과가 제대로 입증되지 않았다.
|
|
|
PEFT: 그럼 Fine-tuning을 효율적으로 하면 되잖아? |
|
|
Fine-tuning의 비효율성은 모델 전체 파라미터를 조정하는 과정에서 기인합니다. 특히나 대규모 언어 모델이 등장하면서 전체 파라미터를 업데이트하는 것은 더욱 어려워졌습니다. 그러면서 효율적으로 Fine-tuning 하는 방법에 대해서도 많은 연구가 이뤄졌습니다. 이를 PEFT(Parameter Efficient Fine-tuning)라고 부릅니다. PEFT의 핵심은 전체가 아닌 일부 파라미터만 효율적으로 조정하여 적은 연산 비용으로도 Full Fine-tuning한 것과 유사한 성능을 갖도록 만드는 것입니다.
1. Adapter
PEFT에는 다양한 방법이 있지만, 대표적인 방식 중 하나가 Adapter를 추가하는 것입니다. 앞서 BERT 모델을 설명하면서, 마지막 단계에 분류를 위한 레이어를 하나 추가한다고 말했던 것 기억하시나요? Adapter를 추가하는 과정도 이와 아이디어가 유사합니다. 가장 큰 차이점이 있다면 사전 훈련된 모델은 업데이트하지 않고(소위 파라미터를 ‘얼린다(Freeze)’고 표현합니다.) 추가된 Adapter의 파라미터만 업데이트하는 것입니다.
|
|
|
일반적으로 Adapter는 위의 그림처럼 트랜스포머 블록 사이에 추가됩니다. Adapter 개념이 처음 소개된 <Parameter-Efficient Transfer Learning for NLP> 논문에서 Adapter로 추가된 파라미터는 전체의 약 3.6%에 불과합니다. 이만큼 적은 양의 파라미터를 업데이트하고도 성능 차이는 0.4%이내입니다. 근소한 성능 차이를 희생하는 대신 막대한 학습 비용을 절약할 수 있는 것이죠. 이런 아이디어는 다양한 PEFT 방법론 연구에 크게 기여했습니다.
2. Prefix Tuning
또 다른 방법으로는 Prefix Tuning이 있습니다. ‘Prefix’라는 단어에서 알 수 있듯이, 이번에는 사전 훈련된 파라미터의 앞단에 추가됩니다. Prefix Tuning의 장점은 하위 태스크에 따라 이 Prefix 블록을 쉽게 갈아 끼울 수 있다는 점입니다. 기존 Fine-tuning 방식은 하위 태스크 종류에 따라 각 모델을 따로 학습시켜야 했기 때문에 유연성(Flexibility)이 떨어졌습니다. 하지만 Prefix Tuning으로 다양한 태스크에 학습된 여러 개의 Prefix 블록을 활용한다면, 파라미터 저장 공간도 절약하면서 유연성을 극대화할 수 있습니다. |
|
|
3. Reparametrization
그리고 최근에는 LoRA 모델로 대표되는 Reparametrized Fine-tuning이 주목 받고 있습니다. 일부 파라미터만 학습하면서 동시에 다양한 태스크에 유연하게 활용하기 좋은 데다가 성능까지 뛰어나기 때문인데요. 그 구조도 단순합니다. |
|
|
이번에는 입력 단계나 중간 단계에 Adapter 블록을 삽입하는 것이 아니라, 낮은 차원의 행렬을 업데이트한 뒤 사전 훈련된 파라미터 값에 더하는 방식입니다. 이 방식 역시 다른 태스크로 전환이 유연하게 이뤄질 수 있는데요. 특정 LoRA 모듈의 가중치를 다시 빼고, 새롭게 전환할 태스크의 가중치를 더하기만 하면 됩니다.
이밖에도 몇 가지 장점이 있는데요. 다른 방법론은 기존 모델 사이에 레이어를 추가하는 만큼, 추론 시에 약간의 시간 소요가 더 되지만, LoRA는 추론 시 기존 파라미터에 병합되기 때문에 추론 속도를 유지할 수 있습니다. 게다가 모델의 입력과 출력 등 다른 단계와 독립적이기 때문에 원한다면 Prefix Tuning 등의 다른 방법론과도 결합이 가능합니다. 이런 장점 때문에 최근 LLM 모델을 Fine-tuning할 때 LoRA를 기반으로 한 방법론이 자주 활용됩니다. |
|
|
Fine-tuning부터 ICL 방법론의 등장, 그리고 다양한 PEFT 방법론까지 살펴봤습니다. 이대로라면 PEFT 방식을 활용해서 성능을 개선하는 것이 더 좋아보일지도 모르겠는데요. 실제로 지난 해에 LoRA 방법론(더 정확히는 양자화까지 반영한 QLoRA)이 자주 눈에 띄였습니다. sLM이 부상하면서 이는 개인 컴퓨터 환경에서 언어 모델을 Fine-tuning 할 수 있게 만들었기 때문입니다.
하지만 소규모 언어 모델에서도 Long-Context를 지원하면서, Many-Shot ICL이 가능해지며 본격적인 논의가 시작됩니다. 다음주 뉴스레터에서는 과거부터 현재까지 ICL과 Fine-tuning을 비교한 연구 논문을 중심으로 살펴보도록 하겠습니다. |
|
|
SNS를 팔로우하면 최신 소식을 가장 빠르게 확인하실 수 있습니다 😆 |
|
|
deep daiv.
manager@deepdaiv.com
|
|
|
|
|