Tasks to finetune
Before Fine-tuning (base or pretrained model)
Fine-turning
지도 학습 과정은 지시 프롬프트(instruction prompts)를 사용하여 언어 모델(LLM)을 미세 조정하는 것을 포함합니다.
지도 학습(supervised learning)은 머신 러닝의 한 분야로, 모델이 레이블이 지정된 데이터 세트에서 학습하는 방법입니다. 이러한 과정에서 모델은 입력 데이터와 해당 레이블 사이의 관계를 학습하려고 시도합니다.
“언어 모델(LLM)”은 텍스트 데이터를 처리하고 생성할 수 있는 알고리즘입니다. 일반적으로 언어 모델은 대량의 텍스트 데이터에서 미리 학습됩니다.
“미세 조정(fine-tuning)”은 이미 학습된 모델을 특정 작업이나 데이터 세트에 맞게 추가로 학습시키는 것을 의미합니다. 이는 모델이 새로운 작업에 더 효과적으로 대응할 수 있도록 도와줍니다.
“지시 프롬프트(instruction prompts)”는 모델에게 특정 작업을 수행하도록 지시하는 문장이나 단어입니다. 예를 들어, “번역해주세요”나 “설명해주세요”와 같은 문장이 지시 프롬프트가 될 수 있습니다.
따라서 “지도 학습 과정은 지시 프롬프트를 사용하여 언어 모델(LLM)을 미세 조정하는 것을 포함합니다”라는 문장은, 레이블이 지정된 데이터와 지시 프롬프트를 사용하여 언어 모델을 특정 작업에 맞게 더욱 정교하게 학습시키는 과정을 설명하는 것입니다.
Prompt datasets (prompt-completion pairs)
“Prompt datasets” 또는 “prompt-completion pairs”는 언어 모델 학습에 사용되는 특별한 형태의 데이터 세트입니다. 이 데이터 세트는 “프롬프트(prompt)”와 “완성(completion)”으로 구성된 쌍을 포함합니다.
- 프롬프트(Prompt): 이는 언어 모델에게 어떤 작업을 수행하라고 지시하는 질문이나 문장입니다. 예를 들어, “번역해주세요: Hello”나 “2 + 2는 무엇인가요?” 등이 프롬프트가 될 수 있습니다.
- 완성(Completion): 프롬프트에 대한 모델의 응답입니다. 예를 들어, “안녕하세요”나 “4” 등이 완성이 될 수 있습니다.
이러한 프롬프트와 완성의 쌍은 모델이 특정 작업을 어떻게 수행해야 하는지를 학습하는 데 도움을 줍니다. 특히 지도 학습에서는 이러한 쌍을 사용하여 모델을 미세 조정(fine-tuning)할 수 있습니다. 즉, 기존에 학습된 언어 모델을 특정 작업이나 도메인에 더 특화되게 만들 수 있습니다.
예를 들어, 언어 번역 작업을 위해 모델을 미세 조정하려면, 다양한 언어 쌍에 대한 프롬프트와 완성의 예시를 포함하는 데이터 세트가 필요할 것입니다. 이를 통해 모델은 어떻게 문장을 다른 언어로 올바르게 번역하는지를 배울 수 있습니다.
이렇게 하면, 모델은 더 정확하고 다양한 작업을 수행할 수 있게 됩니다.
“미리 학습된 언어 모델의 성능과 적용성을 특정 작업에 대한 지시 프롬프트를 사용하여 훈련함으로써 향상시키려는 목표”는 이미 일반 데이터셋에 대해 학습된 언어 모델을 더 특화된 작업이나 분야에 적용하기 위해 미세 조정하는 과정을 설명합니다.
자세히 살펴보면:
- 성능 향상: 주요 목표는 미리 학습된 언어 모델이 특정 작업을 더 정확하고 효율적으로 수행할 수 있도록 만드는 것입니다. 이는 문맥을 더 잘 이해하거나, 더 관련성 있는 응답을 생성하거나, 오류를 줄이는 것을 의미할 수 있습니다.
- 적용성: 이 과정은 모델을 더 다양한 작업이나 분야에서 잘 수행할 수 있도록 만드는 것도 목표입니다. 즉, 원래 학습된 작업뿐만 아니라 다른 작업에도 적용 가능하게 합니다.
- 미리 학습된 언어 모델: 이는 이미 큰, 일반적인 데이터셋에 대해 학습된 언어 모델을 의미합니다. 이 모델은 언어에 대한 광범위한 이해를 가지고 있지만, 특정 도메인이나 작업에 특화되지 않았을 수 있습니다.
- 특정 작업에 대한 훈련: 미세 조정 과정에서는 모델을 원하는 작업에서 뛰어나게 하기 위한 새로운 데이터셋에 다시 학습시킵니다. 이 작업은 의료 진단부터 고객 서비스 상호작용에 이르기까지 다양할 수 있습니다.
- 지시 프롬프트 사용: 미세 조정 과정에서는 지시 프롬프트를 사용하여 모델을 안내합니다. 이러한 프롬프트는 모델에게 무엇을 기대하는지를 명확하게 알려주는 특정 질문이나 명령입니다. 예를 들어, 작업이 번역이라면 프롬프트는 “다음 영어 문장을 프랑스어로 번역하세요: …”와 같을 수 있습니다.
이러한 요소들을 모두 결합하여, 미세 조정 과정은 특정 응용 프로그램이나 산업에 더 잘 맞는, 더 전문화되고 효율적인 모델을 만들기 위해 노력합니다.
Classical training process
Pseudocode for PyTorch Style
Instruction Fine-tuning, 2 types of task
Type 1
Catastrophic Forgetting (degrades model performance)
“카타스트로픽 포기팅(Catastrophic Forgetting)”은 머신 러닝 모델이 새로운 정보를 학습하면서 이전에 배운 정보를 잊어버리는 현상을 의미합니다. 이 문제는 모델의 성능을 저하시키는 주요 요인 중 하나입니다.
특히 이 현상은 시간이 지나면서 여러 작업에 대해 모델을 학습시키는 순차적 학습(sequential learning) 시나리오에서 특히 문제가 됩니다. 예를 들어, 언어 모델이 먼저 영어를 학습하고 나서 프랑스어를 학습할 때, 프랑스어를 학습하는 과정에서 영어에 대한 정보를 잊어버릴 수 있습니다.
카타스트로픽 포기팅은 머신 러닝, 특히 심층 학습(deep learning) 모델에서 흔한 문제입니다. 이를 해결하기 위한 다양한 방법이 연구되고 있습니다:
- 엘라스틱 가중치 공유(Elastic Weight Consolidation): 이전에 학습한 작업에 대한 중요한 가중치를 보존하는 방법입니다.
- 진보적인 신경망(Progressive Neural Networks): 새로운 작업을 학습할 때마다 새로운 레이어나 모듈을 추가하는 방식입니다.
- 재허용(Rehearsal): 새로운 데이터를 학습할 때 이전에 학습한 데이터도 함께 복습하는 방법입니다.
- 메타 학습(Meta-Learning): 모델이 학습하는 방법 자체를 학습하여, 새로운 작업을 더 빠르게 적응할 수 있게 하는 방법입니다.
이러한 방법들은 모델이 새로운 작업을 학습하면서도 이전에 배운 내용을 유지할 수 있도록 도와줍니다.
머신 러닝과 자연어 처리의 맥락에서, 감정 판단 작업을 위해 모델을 미세 조정하는 것은 특정 작업에 대해 미리 학습된 모델을 적용하는 전형적인 예입니다. 다음과 같이 작동합니다:
원래 모델
가령, 주어진 프롬프트를 기반으로 텍스트를 생성할 수 있는 미리 학습된 언어 모델이 있다고 가정해 봅시다. 이 모델은 텍스트를 이해하고 생성하는 데는 뛰어나지만 특정 작업에 특화되지 않았습니다.
감정 판단을 위한 미세 조정
이 모델을 감정 분석 작업에 미세 조정하기로 결정했습니다. 이 작업에서 모델은 문장을 받아 그 감정을 긍정적, 부정적, 또는 중립으로 분류해야 합니다.
- 데이터 준비: 문장과 그에 해당하는 감정 레이블(긍정적, 부정적, 중립)이 있는 데이터셋을 준비합니다.
- 지시 프롬프트: “다음 문장의 감정을 판단하시오: …”와 같은 지시 프롬프트를 사용하여 미세 조정 과정에서 모델을 안내합니다.
- 훈련: 이 새로운 데이터셋에서 모델을 훈련시킵니다. 지시 프롬프트를 사용하여 모델을 안내하면, 모델은 프롬프트와 감정 분류 작업을 연관시키게 됩니다.
- 평가: 미세 조정 과정이 끝난 후, 별도의 테스트 데이터셋에서 모델의 성능을 평가하여 작업을 잘 배웠는지 확인합니다.
결과
미세 조정 후에는 모델이 문장을 받아 그 감정을 정확하게 분류할 수 있어야 합니다. 예를 들어, “이 제품이 정말 좋아요”라는 문장을 받으면 모델은 “긍정적”이라고 응답해야 합니다.
잠재적 문제: 카타스트로픽 포기팅
조심스럽게 하지 않으면, 모델은 이전에 가지고 있던 일반적인 언어 이해 능력을 일부 잊어버릴 수 있습니다. 이때 “카타스트로픽 포기팅” 문제가 발생합니다. 이를 완화하기 위해 이전 설명에서 언급한 엘라스틱 가중치 공유나 재허용과 같은 기술을 사용해야 할 수 있습니다.
감정 분석 작업에 성공적으로 모델을 미세 조정함으로써, 특정 작업에 더 특화되고 유용한 모델을 만들면서도 일반적인 언어 능력을 유지할 수 있게 되었습니다.
PEFT (Parameter Efficient Fine-Tuning)는 특히 카타스트로픽 포기팅의 위험을 줄이고 계산 효율성을 높이는 여러 장점을 제공합니다.
카타스트로픽 포기팅에 덜 취약
언어 모델 (LLM)의 대부분의 매개변수를 변경하지 않음으로써, PEFT는 모델이 이전에 배운 작업을 잊어버릴 위험을 최소화합니다. 이는 모델이 처음에 습득한 핵심 지식이 대체로 그대로 유지되기 때문입니다.
여러 작업에 대한 효율적인 미세 조정
PEFT는 매개변수의 작은 부분집합만을 수정할 수 있게 해줍니다. 이는 새로운 작업마다 전체 모델을 복제할 필요가 없다는 것을 의미합니다. 단순히 원래의 모델에 새롭게 미세 조정된 매개변수를 결합하면 됩니다. 이는 특히 시간이 지남에 따라 모델을 여러 작업에 적응시켜야 할 때 매우 효율적입니다.
비용 효율적인 훈련
대부분의 매개변수가 고정되어 있고 원래 LLM의 가중치 중 약 15%-20%만 훈련되므로, 계산 비용이 크게 줄어듭니다. 이로 인해 메모리 사용량이 적은 훈련 과정이 가능해져 비용 효율성이 높아집니다.
요약하면, PEFT는 언어 모델을 미세 조정하는 균형 잡힌 및 효율적인 방법을 제공합니다. 전체 새 모델을 훈련하거나 모델이 원래 훈련되었던 작업에서 능력을 잃는 위험 없이 빠르게 새 작업에 적응할 수 있습니다.
PEFT (Parameter Efficient Fine-Tuning)는 효율적인 미세 조정을 위해 다양한 기술을 사용하며, 카타스트로픽 포기팅의 위험을 최소화합니다. 이 프레임워크 내에서 일반적으로 사용되는 두 가지 접근법은 재매개변수화(reparameterization) 방법과 가산(additive) 방법입니다. 자세히 알아보겠습니다:
재매개변수화 방법
이 방법들은 원래의 고차원 가중치 행렬을 새로운 저랭크 형태로 변환합니다. 이렇게 하면 훈련 가능한 매개변수의 수가 줄어들면서도 모델이 고차원 데이터를 처리할 수 있게 됩니다.
LoRa (Low-Rank Adaptation)
LoRa는 이 카테고리에서 자주 사용되는 기술입니다. 큰 가중치 행렬을 두 개의 더 작은, 랭크 분해 행렬로 표현합니다. 훈련 중에는 이 작은 행렬들이 원래의 큰 가중치 행렬 대신 업데이트됩니다. 이로 인해 계산 비용과 메모리 요구량이 줄어듭니다.
가산 방법
이 접근법에서는 언어 모델 (LLM)의 원래 가중치를 모두 고정하고, 새로운 모델 구성 요소를 도입합니다. 이 새로운 구성 요소는 특정 작업에 모델을 적응시키기 위해 미세 조정됩니다. 원래의 가중치가 변경되지 않기 때문에, 카타스트로픽 포기팅의 위험이 최소화됩니다.
LoRa가 추론에서 어떻게 작동하는가
LoRa의 경우, 작은 행렬들이 훈련되면 이들의 곱은 추론 단계에서 원래의 가중치 행렬에 더해집니다. 이를 통해 모델은 원래의 매개변수와 새롭게 학습된 매개변수 모두의 이점을 얻을 수 있으며, 계산 복잡성이 크게 증가하지 않습니다.
요약하면, 재매개변수화와 가산 방법 모두 미세 조정 과정을 더 효율적이고 카타스트로픽 포기팅에 덜 취약하게 만들기 위한 목표를 가지고 있습니다. 이들은 훈련 가능한 매개변수의 수를 줄이거나 작업 특화된 새로운 구성 요소를 추가함으로써 모델의 원래 능력을 유지합니다.
소프트 프롬프트(soft prompts)와 프롬프트 튜닝(prompt tuning)은 머신 러닝과 자연어 처리 분야에서 미세 조정 과정을 더 효율적이고 효과적으로 만들기 위한 고급 기술입니다. 이러한 개념들을 자세히 살펴보겠습니다:
소프트 프롬프트
소프트 프롬프트는 주어진 프롬프트에 추가되는 훈련 가능한 토큰의 집합입니다. 표준 토큰이 특정 단어나 구절을 나타내는 반면, 이러한 소프트 토큰은 모델의 임베딩 공간 내에서 어떠한 값도 가질 수 있습니다. 이 토큰 값은 사람이 직접 해석할 수 없을 수 있지만, 수행해야 할 작업과 관련된 단어나 개념에 가까운 위치에 최적화됩니다.
프롬프트 튜닝
프롬프트 튜닝은 이러한 소프트 프롬프트를 최적화하는 것에 중점을 둡니다. 프롬프트 튜닝에서 사용되는 토큰은 훈련 가능하지만 사람의 언어에 직접 대응하지 않습니다. 이들은 주어진 작업에 대해 가장 적절하고 정확한 응답을 생성하도록 모델을 안내하는 데 최적화됩니다. 훈련시킬 토큰의 수는 훈련 과정의 하이퍼파라미터가 되어, 모델의 복잡성과 계산 요구량을 조절할 수 있습니다.
효율성의 장점
적은 수의 매개변수를 훈련시키는 것은 여러 가지 이점이 있습니다:
- 메모리 요구량 감소: 모델의 일부 레이어만 훈련시키거나, 새로운 작은 구성 요소를 아키텍처에 추가하거나, 소프트 프롬프트를 사용하면 전체 미세 조정에 비해 더 적은 메모리가 필요합니다.
- 훈련 속도 향상: 업데이트할 매개변수가 적기 때문에 훈련 과정이 더 빠를 수 있습니다.
- 작업 특화 최적화: 더 작은 매개변수 집합에 중점을 둠으로써, 카타스트로픽 포기팅의 위험 없이 특정 작업에 모델을 더 효과적으로 최적화할 수 있습니다.
요약하면, 소프트 프롬프트와 프롬프트 튜닝은 계산 자원과 작업 특화 성능 측면에서 모델을 더 효율적으로 미세 조정할 수 있는 방법을 제공합니다. 이들은 과적합과 카타스트로픽 포기팅의 위험을 줄이면서 대상 최적화를 가능하게 합니다.
카타스트로픽 포기팅을 완화하는 또 다른 방법은 훈련 중에 모델의 가중치에 할 수 있는 변경량을 제한하는 정규화(regularization) 기술을 사용하는 것입니다. 이러한 접근법은 이전 훈련 단계에서 학습한 정보를 보존하고 새로운 데이터에 과적합(overfitting)되는 것을 방지하는 데 도움이 될 수 있습니다.
카타스트로픽 포기팅은 머신 러닝 모델이 새로운 정보를 학습하면서 이전에 학습한 정보를 잊어버리는 현상을 의미합니다. 이를 완화하기 위한 하나의 방법은 정규화(regularization) 기술을 사용하는 것입니다.
정규화란 무엇인가요?
정규화는 모델의 가중치가 너무 큰 값을 가지지 않도록 제한하여 모델이 과적합되는 것을 방지하는 기술입니다. 이는 일반적으로 손실 함수(loss function)에 특정 항을 추가하여 구현됩니다.
어떻게 카타스트로픽 포기팅을 완화하는가?
정규화를 사용하면 모델 훈련 중에 가중치가 크게 변경되는 것을 제한할 수 있습니다. 이렇게 하면 모델이 새로운 데이터에 과도하게 적응하여 이전에 학습한 정보를 잊어버리는 것을 방지할 수 있습니다. 즉, 이전에 학습한 정보를 일정 수준 이상 유지하면서 새로운 데이터에 적응할 수 있게 됩니다.
과적합과의 관계
과적합은 모델이 훈련 데이터에 너무 잘 맞아서 새로운 데이터에는 잘 작동하지 않는 현상을 의미합니다. 정규화는 이러한 과적합을 방지하기 위해 사용되기도 하며, 이는 모델이 이전에 학습한 일반적인 패턴을 유지하면서 새로운 데이터에 적응하는 데 도움이 됩니다.
결론적으로, 정규화 기술은 모델이 새로운 데이터에 적응하면서도 이전에 학습한 정보를 보존하는 데 도움을 줄 수 있어, 카타스트로픽 포기팅을 완화하는 데 유용합니다.
Type 2
Prompting or Fine-tuning
Evaluation
Common Framework
ARC (AI2 Reasoning Challenge)
ARC는 자연어 처리(NLP) 모델이 추론과 이해 능력을 얼마나 잘 보이는지 평가하기 위한 데이터셋입니다. 이 데이터셋은 주로 과학적 지식과 논리적 추론 능력을 중점으로 둡니다. 문제는 주로 다중 선택형이며, 각 선택지는 다양한 추론 능력을 요구합니다.
HellaSwag
HellaSwag는 자연어 이해와 상황 인식 능력을 평가하기 위한 데이터셋입니다. 이 데이터셋은 주로 문맥을 이해하고, 그에 따라 가장 적절한 후속 행동이나 사건을 예측하는 능력을 테스트합니다.
MMLU (Multi-Modal Language Understanding)
MMLU는 텍스트 뿐만 아니라 이미지나 오디오와 같은 다른 모달리티도 포함하여 언어 모델의 이해 능력을 평가하는 데이터셋입니다. 이 데이터셋은 모델이 다양한 형태의 정보를 종합적으로 이해하고 처리할 수 있는 능력을 측정합니다.
TruthfulQA
TruthfulQA는 모델이 주어진 정보의 진실성을 판단할 수 있는 능력을 평가하는 데이터셋입니다. 이 데이터셋은 모델이 특정 주장이나 정보가 사실인지, 아니면 거짓인지를 정확하게 판단할 수 있는지를 테스트합니다.