🏖️ 1. Fine-tuning (파인튜닝)
Fine-tuning은 사전 학습된(pre-trained) 모델을 새로운 작업이나 데이터셋에 맞게 미세 조정하는 방법입니다. 주로 모델의 하위층이나 출력층을 재학습하며, 다른 레이어는 동결(고정)한 채로 일부만 학습하는 경우가 많습니다.
세부 종류:
- Full Fine-tuning: 모델의 모든 레이어를 재학습하는 방법입니다. 이 방법은 더 많은 자원이 필요하지만, 새로운 작업에 최적화된 성능을 얻을 수 있습니다.
- Layer-wise Fine-tuning: 특정 레이어만 재학습하고 나머지 레이어는 고정시키는 방법입니다. 일반적으로 상위 레이어(출력에 가까운 레이어)만 재학습하는 것이 일반적입니다.
- Partial Fine-tuning: 전체 레이어 중 일부만 고정하고, 나머지는 재학습하는 방식입니다. 예를 들어, BERT 모델에서 일부 Transformer 블록만 재학습할 수 있습니다.
응용:
- NLP: GPT, BERT 같은 대형 언어 모델의 Fine-tuning을 통해 특정 도메인의 텍스트 생성, 질의응답, 감정 분석 등에 적용할 수 있습니다.
- 컴퓨터 비전: ResNet, VGG 같은 이미지 분류 모델을 특정 객체나 환경에 맞춰 Fine-tuning할 수 있습니다.
🏖️ Pre-trained Model이란?
Pre-trained model은 이미 다른 데이터셋에서 학습이 완료된 모델을 의미합니다. 즉, 이 모델은 특정 작업(예: 이미지 분류, 언어 이해 등)을 수행할 수 있도록 사전 학습이 완료된 상태입니다. 일반적으로 대규모 데이터셋에서 학습되어, 새로운 작업에서 transfer learning이나 fine-tuning을 통해 빠르게 적용할 수 있는 모델입니다.
- 예시: BERT, GPT, ResNet 등은 이미 방대한 데이터셋으로 학습된 모델로, 다양한 NLP나 이미지 처리 작업에서 fine-tuning하여 사용됩니다.
Pre-trained Model로 부를 수 있는 경우:
- 다른 작업에 대해 사전 학습된 경우: 만약 처음 개발한 모델이 이미 다른 데이터나 다른 작업에 대해 학습이 완료된 상태라면, 이를 pre-trained model이라고 부를 수 있습니다. 이후 이 모델을 fine-tuning하여 다른 작업에 사용할 수 있습니다.
Pre-trained Model로 부르지 않는 경우:
- 처음부터 특정 작업을 위해 학습한 모델: 만약 처음 개발한 모델이 특정 작업을 위해 처음부터 학습된 모델이라면, 이 모델은 pre-trained model이 아닙니다. 이 경우 그 모델은 단순히 task-specific model 또는 custom model이라고 부릅니다.
- 예를 들어, 특정 이미지 분류를 처음부터 학습한 모델은 pre-trained model이 아니라, 해당 작업에 맞춰 새로 학습한 모델입니다.
🏖️ 2. Transfer Learning (전이 학습)
Transfer learning은 기존 모델을 다른 작업에 적용하는 기법으로, 모델의 가중치를 가져와 적은 양의 데이터로 빠르게 학습하는 방식입니다. Fine-tuning과 유사하지만, Fine-tuning은 가중치를 조정하고 학습하는 반면, Transfer Learning은 기존 가중치를 거의 그대로 사용하는 경우도 많습니다.
세부 종류:
- Feature Extraction: 사전 학습된 모델의 중간층 출력값(피처)을 추출해 새로운 데이터에 대한 특징을 얻고, 그 위에 새로운 분류기(classifier)를 학습하는 방식입니다.
- Frozen Feature Transfer: 사전 학습된 모델의 모든 가중치를 고정한 후, 출력층만 변경하여 새로운 작업을 처리하는 방식입니다.
- Pre-trained Backbone: 대규모 사전 학습 모델(예: ResNet, EfficientNet)의 백본을 그대로 두고, 새롭게 쌓은 최종 레이어만 학습하는 방식입니다.
응용:
- 의료 영상 분석: 대규모 의료 영상 데이터를 학습한 모델을 새로운 질병 분류에 적용할 수 있습니다.
- 자연어 처리: 일반적인 언어 이해 모델을 특정 도메인(법률, 의료 등)에 맞춰 활용할 수 있습니다.
🏖️ 3. Hyperparameter Tuning (하이퍼파라미터 튜닝)
하이퍼파라미터 튜닝은 모델 학습 과정에서 사용되는 여러 하이퍼파라미터(learning rate, batch size, optimizer 등)를 최적화하는 과정입니다.
세부 종류:
- Grid Search: 하이퍼파라미터의 가능한 모든 조합을 탐색하는 방식입니다. 가장 직관적이지만, 매우 시간이 오래 걸립니다.
- Random Search: 무작위로 하이퍼파라미터 조합을 선택해 성능을 테스트하는 방식입니다. Grid Search보다 더 효율적일 수 있습니다.
- Bayesian Optimization: 이전 하이퍼파라미터 결과를 바탕으로 탐색을 최적화하는 방법입니다. 새로운 하이퍼파라미터 설정을 선택할 때 확률적으로 가장 성능이 좋을 가능성이 높은 설정을 선택합니다.
- Hyperband: 리소스 효율적인 방식으로 하이퍼파라미터 튜닝을 진행하며, 빠르게 적합한 설정을 찾습니다.
응용:
- 모델 성능 최적화: 다양한 모델에서 하이퍼파라미터 튜닝은 학습 속도와 성능 개선에 필수적입니다.
- 자동화된 머신러닝(AutoML): 자동으로 최적의 하이퍼파라미터를 찾기 위한 다양한 기법들이 사용됩니다.
🏖️ 4. Pruning (프루닝)
Pruning은 학습된 모델에서 불필요한 뉴런, 가중치, 연결을 제거하여 모델을 더 작고 빠르게 만드는 과정입니다.
세부 종류:
- Weight Pruning: 가장 작은 가중치를 가진 연결을 제거합니다. 이 방식은 전체 모델의 연결 수를 줄여 경량화된 모델을 만듭니다.
- Unit/Neuron Pruning: 중요도가 낮은 뉴런을 제거합니다. 이 방식은 신경망의 구조 자체를 단순화할 수 있습니다.
- Structured Pruning: 필터나 채널 단위로 제거하여 모델의 구조를 간소화하는 방법입니다. ConvNet 같은 구조에서 자주 사용됩니다.
- Unstructured Pruning: 임의의 개별 가중치를 제거하는 방식으로, 모델의 복잡도를 줄입니다.
응용:
- 경량 모델 개발: 모바일 환경에서 경량화된 모델을 사용해야 할 때 유용합니다.
- 실행 속도 개선: 계산량을 줄여 모델 실행 속도를 크게 개선할 수 있습니다.
🏖️ 5. Quantization (양자화)
Quantization은 모델의 가중치와 활성화 값을 더 작은 비트로 표현해 모델 크기와 계산량을 줄이는 방법입니다.
세부 종류:
- Post-Training Quantization: 모델 학습이 완료된 후 가중치와 활성화 값을 양자화하는 방법입니다.
- Quantization-Aware Training (QAT): 학습 중 양자화를 적용하여 양자화된 환경에서도 성능을 유지할 수 있도록 하는 방법입니다.
- Dynamic Quantization: 실행 중에 가중치 또는 활성화 값을 동적으로 양자화합니다.
- Static Quantization: 사전에 정의된 양자화 방식을 사용하여 모델을 최적화합니다.
응용:
- 모바일/엣지 디바이스: 모바일 또는 임베디드 시스템에서 작은 메모리와 계산 자원으로 딥러닝 모델을 구동할 때 필수적입니다.
- 실시간 처리: 양자화를 통해 모델의 추론 속도를 높여 실시간 처리에 활용할 수 있습니다.
🏖️ 6. Distillation (지식 증
류)
Distillation은 대형 모델(teacher model)의 성능을 더 작은 모델(student model)에 전달하는 과정입니다. 작은 모델이 대형 모델의 성능을 모방하는 방식으로, 효율적인 모델을 만드는 데 유용합니다.
세부 종류:
- Soft Target Distillation: 큰 모델의 예측 확률 분포를 작은 모델이 학습하는 방식입니다.
- Hard Target Distillation: 큰 모델의 정답 레이블만을 사용해 작은 모델을 학습시키는 방식입니다.
- Self-distillation: 같은 모델 내에서 일부 레이어가 다른 레이어의 지식을 활용하여 학습을 진행하는 방식입니다.
응용:
- 경량 모델 개발: 대형 모델의 성능을 유지하면서 작은 모델을 사용할 수 있게 도와줍니다.
- 추론 속도 개선: 작은 모델로 인해 추론 속도가 크게 향상됩니다.
다음과 같이 색상 및 스타일을 적용하여 정리하였습니다:
🏖️ Fine-tuning의 비교: LLM vs 기존 딥러닝 모델
-
LLM Fine-tuning
- 대규모 데이터: LLM은 수백억 개의 매개변수를 가지고 있으며, 방대한 양의 데이터로 사전 학습된 모델입니다. Fine-tuning 과정에서는 기존 모델의 언어 이해 능력을 유지한 채, 특정 도메인이나 작업에 맞춰 모델을 미세 조정합니다.
- 언어 생성: LLM의 fine-tuning은 주로 텍스트 생성, 질의응답, 감정 분석 등과 같은 언어 관련 작업에서 많이 사용됩니다. 학습 데이터가 언어 데이터로 구성되며, fine-tuning 후에는 특정 스타일이나 주제에 맞춘 텍스트 생성을 할 수 있습니다.
- 계층적 학습: 일반적으로 LLM은 여러 층이 쌓여있는 구조라서 일부 층은 동결하고 나머지 층만 학습시키는 식으로 fine-tuning을 진행할 수 있습니다. 이는 언어 이해를 망가뜨리지 않고 새로운 작업에 특화된 학습을 할 수 있도록 합니다.
-
기존 딥러닝 모델 Fine-tuning
- 작은 모델: 기존 딥러닝 모델은 LLM보다 상대적으로 작은 크기의 모델이 많습니다. 예를 들어, 이미지 분류나 음성 인식에 사용되는 모델들은 파라미터 수가 적어, 일반적으로 훨씬 더 적은 양의 데이터로도 fine-tuning이 가능합니다.
- 작업 특화: 이미지나 음성 같은 비언어 데이터에 대한 fine-tuning이 주로 이루어집니다. 예를 들어, 이미지 분류 모델을 사전 학습한 후, 특정 제품의 이미지를 분류하도록 fine-tuning할 수 있습니다.
- 전 층 학습: 기존 딥러닝 모델의 fine-tuning에서는 LLM처럼 일부 층을 동결하는 방식보다는 모든 층을 다시 학습시키는 경우가 많습니다.
🏖️ 결론
- LLM Fine-tuning은 대규모 언어 모델을 기반으로 언어 생성 작업을 위한 미세 조정에 사용되고, 기존 딥러닝 모델 Fine-tuning은 일반적으로 더 작은 모델에 대한 작업 특화된 조정에 사용됩니다.
- 두 방식 모두 모델이 이미 사전 학습된 상태에서 새로운 데이터나 작업에 맞춰 미세하게 조정한다는 점에서는 동일하지만, 사용하는 데이터의 종류와 모델의 크기, 목적이 다를 수 있습니다.
처음에 개발한 모델을 pre-trained model이라고 부를 수 있는지 여부는 그 모델이 어떤 상태인지에 따라 달라집니다.
🏖️ 1. Adapter (어댑터)
어댑터는 대형 모델의 파라미터 대부분을 고정(동결)시키고, 작은 추가 모듈만 학습하는 방법입니다. 전체 모델을 재학습하지 않고 일부 모듈만 추가해 학습할 수 있어 효율적인 fine-tuning 기법으로 많이 사용됩니다.
- 핵심 아이디어: 기본 모델의 가중치는 유지하면서, 모델의 성능을 개선하거나 특정 작업에 적응할 수 있는 작은 네트워크(어댑터 모듈)를 추가하는 방식입니다. 이 어댑터 모듈만 학습하면 되기 때문에 메모리와 계산량이 크게 줄어듭니다.
- 장점:
- 대규모 모델 전체를 학습시키지 않아도 되기 때문에 학습 비용이 매우 적음.
- 각 작업마다 다른 어댑터를 사용하여 여러 작업에 동일한 모델을 적용할 수 있음.
- 모델을 재학습하지 않아도 되므로 원래 모델의 성능을 훼손하지 않음.
- 응용: Transformer 기반의 모델(BERT, GPT 등)에 주로 사용되며, NLP 작업에서 효과적입니다.
🏖️ 2. QLoRA (Quantized Low-Rank Adapter)
QLoRA는 기존의 LoRA (Low-Rank Adapter)에 양자화(quantization)를 결합한 방법입니다. LoRA는 모델의 기존 가중치 대신 저랭크(low-rank) 행렬을 학습하는 방식인데, QLoRA는 이를 더 효율적으로 하기 위해 가중치 양자화를 도입했습니다. 이렇게 하면 대형 모델을 훨씬 적은 메모리와 계산으로 학습할 수 있습니다.
- 핵심 아이디어:
- 기존의 대형 모델의 가중치를 동결하고, 저랭크의 가중치 업데이트(즉, 더 작은 부분만 학습)를 통해 fine-tuning을 진행.
- QLoRA는 4비트 양자화 기법을 사용해 모델의 가중치를 더 작은 크기로 변환한 상태에서 fine-tuning을 수행합니다. 이를 통해 GPU 메모리 사용량을 대폭 줄일 수 있습니다.
- 장점:
- 저비용: QLoRA는 일반적으로 저비용의 하드웨어로도 대형 언어 모델을 fine-tuning할 수 있게 해 줍니다.
- 효율성: 전체 모델을 학습하는 대신 일부 저랭크 행렬을 업데이트하기 때문에 학습 효율성이 크게 향상됩니다.
- 저장 공간 절약: 4비트 양자화를 통해 메모리와 저장 공간을 절약함.
- 응용: 주로 대형 언어 모델(LLM)을 보다 적은 자원으로 fine-tuning할 때 사용됩니다. 특히 GPT 같은 모델의 fine-tuning에 많이 사용되며, NLP 작업에서 효과적입니다.
🏖️ 3. LoRA (Low-Rank Adaptation)
LoRA는 QLoRA의 기반이 된 기법으로, 원래의 대규모 모델의 가중치를 유지하면서 학습 과정에서 저랭크(low-rank) 행렬만을 추가로 학습하는 방식입니다. LoRA는 주로 대형 모델을 가벼운 자원으로 학습할 수 있게 해줍니다.
- 핵심 아이디어: 원래의 가중치가 변하지 않고, 저랭크 행렬을 통해서만 모델을 업데이트하기 때문에 계산 자원 절약이 가능.
- 장점: 대규모 모델을 효율적으로 fine-tuning할 수 있으며, 특히 메모리 절감 효과가 큽니다.
- 응용: 다양한 LLM 작업에 사용되며, 특히 GPT 계열 모델에서 유용합니다.
LLM Fine-tuning의 변화
기존의 fine-tuning 방식에서는 모든 가중치를 학습해야 했으나, Adapter, LoRA, QLoRA 같은 기법들은 일부 파라미터나 저랭크 행렬만을 학습함으로써 효율적으로 fine-tuning을 할 수 있게 합니다. 이들은 다음과 같은 점에서 큰 차이가 있습니다:
- 메모리 효율성: 전체 모델을 재학습하지 않고, 일부 모듈이나 저랭크 행렬만 학습하기 때문에 GPU 메모리 사용량이 크게 줄어듭니다.
- 학습 비용 절감: 대규모 모델을 자주 재학습하는 비용을 줄여주며, 저사양 하드웨어로도 대형 모델을 활용할 수 있게 해줍니다.
기존 딥러닝 모델과의 차이점
기존의 이미지나 음성 처리 모델에서 fine-tuning은 전체 모델의 가중치를 재학습하거나 특정 층을 학습하는 방식이었지만, LLM에서는 이러한 최신 기법들을 통해 훨씬 효율적이고 적은 자원으로도 미세 조정을 할 수 있다는 점이 차별점입니다.
결론적으로, Adapter, QLoRA와 같은 방법들은 LLM 모델의 fine-tuning을 보다 효율적으로 할 수 있는 최신 기법들이며, 메모리와 계산 자원을 절약하면서도 높은 성능을 유지할 수 있는 방법들입니다.