머신러닝 & 딥러닝/LLM

[LLM] Finetuning – 파인튜닝의 정의 및 도입 시기

Haru_29 2025. 3. 27. 22:30

AI 모델을 특정 작업에 더 잘 맞추기 위해 가장 널리 사용되는 방법 중 하나는 바로 파인튜닝(Finetuning)입니다. 이는 기존의 사전학습(pretraining)된 모델을 기반으로, 전부 또는 일부를 추가 학습시켜 특정한 목적이나 도메인에 특화되도록 조정하는 과정을 말합니다.

왜 파인튜닝이 중요한가요?

파인튜닝은 단순한 성능 향상만을 의미하지 않습니다. 특히 다음과 같은 이유로 주목받고 있습니다.

  • 도메인 특화(Domain-Specific) 기능 향상: 예를 들어, 의료, 법률, 코딩 등 특정 분야에 특화된 질문에 더 정확히 답변하도록 모델을 조정할 수 있습니다.
  • 지시 수행 능력 개선(Instruction Following): 사용자가 제시한 특정 포맷, 스타일, 요구사항에 따라 더 잘 응답하도록 모델을 세밀하게 튜닝할 수 있습니다.
  • 안전성 강화: 모델이 예기치 않은 출력을 내는 것을 줄이고, 더욱 안정적으로 작동하도록 보완할 수 있습니다.

파인튜닝을 선택하기 전 고려할 점

파인튜닝은 높은 성능을 제공할 수 있는 반면, 선택과 설계에 있어 더 많은 초기 판단과 준비가 필요합니다. 예를 들어, 아래와 같은 고민이 선행되어야 합니다.

  • 파인튜닝을 할 것인가, RAG를 쓸 것인가?
    Retrieval-Augmented Generation(RAG)은 파인튜닝 없이 외부 문서나 데이터를 참조하여 정답을 생성하는 방식입니다. RAG는 빠르게 구축이 가능하며 메모리와 자원을 적게 소모합니다. 반면, 파인튜닝은 한 번 학습을 완료하면 추가 외부 검색 없이 빠르게 응답할 수 있고, 더 깊은 일관성과 정확성을 가질 수 있습니다.
  • 자원(Resource) 제약
    파인튜닝은 특히 고사양의 GPU 메모리 자원을 필요로 합니다. 이는 단일 GPU 환경에서는 부담이 될 수 있으며, 파인튜닝 과정 중 메모리 효율성을 어떻게 확보할 것인지가 중요한 이슈입니다.

메모리 효율적인 파인튜닝: PEFT

최근에는 파인튜닝의 메모리 부담을 줄이기 위해 PEFT(Parameter-Efficient Finetuning) 기법이 각광받고 있습니다. PEFT는 기존 모델의 전체 파라미터를 업데이트하지 않고, 극히 일부의 파라미터만 학습함으로써 훨씬 가볍고 효율적으로 파인튜닝할 수 있도록 돕습니다.

예를 들어, 대표적인 PEFT 방식인 LoRA(Low-Rank Adaptation)는 사전 학습된 모델에 작은 랭크의 어댑터(모듈)를 삽입하여 전체 모델을 수정하지 않고도 높은 성능을 낼 수 있도록 설계되었습니다. 이러한 방식은 특히 한정된 리소스를 가진 기업이나 연구자에게 유리합니다.

 

Finetuning Overview – 파인튜닝 개요

파인튜닝은 기반 모델(base model)이 갖고 있는 능력을 특정 작업에 맞게 조정해, 보다 잘 작동하도록 만드는 과정입니다. 즉, 모델이 특정 업무를 '충분히 잘' 수행할 수 있도록 만드는 것이 파인튜닝의 핵심 목표입니다.

파인튜닝은 전이 학습(Transfer Learning)의 한 형태입니다.

파인튜닝은 전이 학습(transfer learning)의 일종입니다. 전이 학습은 원래 하나의 작업을 위해 학습한 지식을, 새로운 작업에 보다 빠르게 적용하는 기술입니다.
이 개념은 1976년 Bozinovski와 Fulgosi에 의해 처음 제안되었으며, 사람의 학습 방식과 유사합니다. 예를 들어, 피아노를 잘 치는 사람은 새로운 악기를 더 쉽게 배울 수 있듯이, 기존에 학습한 모델은 새로운 언어 또는 도메인에도 더 쉽게 적응할 수 있습니다.

딥러닝 초기부터 전이 학습은 데이터가 부족하거나, 학습 비용이 많이 드는 작업을 해결하는 데 핵심 역할을 해왔습니다. 예를 들어, 기존에 풍부한 텍스트 데이터를 이용해 학습한 언어 모델을 법률 문서 요약, 의료 문답, DB 질의 변환 등 더 좁고 전문적인 분야로 전이시키는 데 활용할 수 있습니다.

이러한 점에서 대규모 언어 모델(LLMs)은 전이 학습을 위한 뛰어난 기반 모델로 매우 적합하며, 이는 곧 파인튜닝의 가치를 극대화합니다.

샘플 효율성 향상: 적은 데이터로 더 나은 결과

파인튜닝은 샘플 효율성(sample efficiency)을 개선합니다. 이는 적은 수의 예시만으로도 더 효과적인 학습 결과를 낼 수 있다는 의미입니다.
예를 들어, 법률 질의응답 모델을 처음부터 학습시키려면 수백만 개의 예제가 필요할 수 있지만, 이미 학습된 언어 모델을 파인튜닝하면 훨씬 적은 수의 데이터로도 원하는 결과를 얻을 수 있습니다.

OpenAI의 InstructGPT 논문에서도 이러한 관점을 강조하며, 기존 모델이 이미 갖고 있지만 프롬프트만으로는 활성화되지 않는 능력들을 파인튜닝을 통해 '활성화(unlock)'할 수 있다고 설명하고 있습니다.

또 다른 방식: 특징 기반 전이(Feature-Based Transfer)

파인튜닝 외에도 특징 기반 전이(feature-based transfer) 방식이 존재합니다. 이 방식에서는 한 모델이 학습한 특징 벡터(feature vector)를 다른 모델이 재활용하는 구조입니다.

예를 들어, 이미지 처리 분야에서는 이미지넷(ImageNet) 데이터셋에서 추출된 특징을 기반으로 다양한 컴퓨터 비전 작업(예: 객체 탐지, 세분화 등)을 수행할 수 있습니다. 이러한 방식은 특히 모델의 출력 레이어를 변경하거나, 특정 분류 헤드(classifier head)를 추가할 때 유용합니다.

파인튜닝의 위치: 사전학습 이후의 확장

모든 파인튜닝은 모델의 훈련 흐름 중 '사전학습(pre-training)' 이후의 확장 단계에 해당합니다. 파인튜닝은 다양한 형태로 존재하지만, 일반적으로는 자기지도 학습(self-supervised learning)을 통해 수행되며, 언어 모델의 경우 대부분 라벨이 없는 대규모 텍스트 데이터를 활용합니다.

예를 들어, 베트남어 책 요약 모델을 만들고자 할 때, 먼저 대규모 베트남어 문서로 자기지도 파인튜닝을 한 후, 요약 태스크에 맞춘 정제된 데이터로 추가 파인튜닝을 진행할 수 있습니다. 이를 continued pre-training이라 부르며, 고급 NLP 시스템 구축에 매우 유용합니다.

파인튜닝의 방식 – 다양한 기술과 전략

1. 감독 학습 기반 파인튜닝 (Supervised Finetuning)

감독 학습을 활용한 파인튜닝은 (입력, 출력) 쌍의 데이터를 이용해 모델을 훈련시키는 방식입니다.
예를 들어, 책 요약(Book Summarization) 작업에서는 "책 전문"이 입력이 되고 "요약된 문장"이 출력이 됩니다. 이와 같이 폐쇄형(closed-ended) 문제에서 매우 효과적이지만, 고품질 데이터 수집이 어렵고 비용이 많이 드는 것이 단점입니다.

또한, 텍스트의 일부를 공백으로 두고 이를 예측하게 만드는 infill 파인튜닝도 활용됩니다. 이는 기존의 오토레그레시브(autoregressive) 구조와도 호환되며, 텍스트 편집이나 보완 작업에 특히 효과적입니다.

2. 선호도 파인튜닝 (Preference Finetuning)

이 방식은 사용자 선호도(human preference)에 맞는 출력을 생성하도록 모델을 강화 학습을 통해 조정하는 과정입니다.
예를 들어, "문장 A"와 "문장 B" 중 어떤 답변이 더 좋은지를 사람이 판단하고, 그 결과를 반영해 모델을 업데이트하는 방식입니다. ChatGPT나 Claude와 같은 대화형 모델들이 이러한 학습 방식을 사용합니다.

3. 롱 컨텍스트 파인튜닝 (Long-context Finetuning)

최근에는 모델이 처리할 수 있는 **문맥의 길이(context length)**를 늘리는 파인튜닝도 중요해졌습니다. 예를 들어, Llama 2 기반의 Code Llama 모델은 롱컨텍스트 파인튜닝을 통해 최대 4,096에서 16,384 토큰까지 입력을 확장했습니다.

이러한 방식은 특히 긴 문서 요약, 전체 코드 분석, 다중 문서 기반 질의응답 등에 필수적인 기술입니다.

4. 파인튜닝 버전 선택과 개발자 역할

모델 제작자들은 일반적으로 여러 파인튜닝 버전을 만들어 공개합니다. 이렇게 하면 응용 개발자(application developer)가 자신의 목적에 가장 맞는 버전을 선택하거나, 그 위에 추가로 파인튜닝을 진행할 수 있습니다.
코드 Llama의 경우도 다양한 목적에 맞춘 파인튜닝 전략이 단계적으로 적용되었습니다.


언제 파인튜닝을 해야 할까요?

파인튜닝을 시작하기 전에, 과연 그것이 현재 상황에서 최선의 선택인지를 먼저 고려해야 합니다.
파인튜닝은 높은 리소스와 인력을 필요로 하기 때문에, 일반적으로는 프롬프트 기반 기법(prompt-based methods)을 먼저 실험한 후에 파인튜닝을 선택하는 것이 일반적입니다. 하지만 현실적인 문제 해결을 위해서는 두 접근 방식을 동시에 고려하는 것도 중요합니다.


파인튜닝을 해야 하는 이유 (Reasons to Finetune)

파인튜닝의 가장 주요한 목적은 모델의 전반적인 품질과 태스크 특화 성능을 향상시키는 것입니다. 특히 다음과 같은 경우에 파인튜닝은 매우 유용합니다.

  1. 출력 형식 향상
    예를 들어, JSON이나 YAML과 같은 특정 구조의 출력을 요구하는 경우, 파인튜닝을 통해 더 정확한 형식을 생성할 수 있도록 모델을 조정할 수 있습니다.
  2. 도메인 특화 태스크 대응
    범용 모델은 다양한 벤치마크에서 우수한 성능을 보일 수 있지만, 특정 산업이나 조직에 맞춘 데이터를 다룰 때는 성능이 떨어질 수 있습니다.
    예를 들어, 표준 SQL만 다루던 모델은 비표준 SQL을 사용하는 조직에서는 기대만큼의 성능을 내지 못할 수 있습니다. 이럴 때, 해당 조직의 데이터를 이용해 파인튜닝을 하면 훨씬 더 효과적인 결과를 얻을 수 있습니다.

파인튜닝의 특별한 활용 예시

1. 편향 완화(Bias Mitigation)

파인튜닝은 단순히 성능 향상에 그치지 않고, 모델의 편향(bias)을 완화하는 데도 효과적으로 사용될 수 있습니다.
예를 들어, 기본 모델이 훈련 데이터에 내재된 인종, 성별, 지역 등의 편향을 그대로 반영하는 경우, 보다 균형 잡힌 데이터셋으로 파인튜닝하면 이런 편향을 줄일 수 있습니다.

  • 남성 중심 데이터셋을 기반으로 학습된 모델은, 여성 저자의 텍스트로 파인튜닝하면 성별 편향을 줄일 수 있습니다.
  • 아프리카 저자의 글로 파인튜닝하면 인종적 다양성을 보완할 수 있습니다.

2. 지식 압축과 모델 경량화 (Knowledge Distillation)

대규모 모델을 직접 서비스하기에는 자원이 부족한 경우, 작은 모델을 큰 모델의 행동을 모방하도록 파인튜닝할 수 있습니다.
이 과정은 흔히 지식 증류(distillation)라 불리며, 더 작은 모델이 큰 모델의 능력을 간접적으로 학습하는 방식입니다.
예를 들어, Grammarly에서는 GPT-3보다 60배 작은 모델을 파인튜닝하여, 매우 작은 입력 데이터(82,000개의 텍스트 쌍)로도 강력한 성능을 확보했습니다.


파인튜닝을 하지 말아야 할 때 (Reasons Not to Finetune)

파인튜닝은 많은 장점을 제공하지만, 모든 경우에 적합한 것은 아닙니다. 다음과 같은 경우에는 파인튜닝보다 다른 방법이 더 적합할 수 있습니다.

1. 프롬프트 기반 기법으로 충분한 경우

많은 개선 효과는 파인튜닝 없이도, 잘 설계된 프롬프트(prompt) 또는 구조화된 출력 지시만으로도 달성할 수 있습니다.
예를 들어, JSON 형식 출력, 테이블 형태 정리 등은 파인튜닝보다도 잘 설계된 텍스트 입력으로 더 쉽게 구현 가능합니다.

2. 태스크 전이로 인한 성능 저하

파인튜닝을 특정 태스크에 맞춰 진행하면, 다른 작업에서는 성능이 오히려 저하될 수 있습니다.
예를 들어, 원래는 추천, 주문 변경, 피드백 등 여러 질의를 잘 처리하던 모델이, 주문 변경 태스크로만 파인튜닝되면, 추천이나 피드백 관련 질의 성능이 떨어질 수 있습니다.

이를 피하려면 다음과 같은 방법들을 고려해야 합니다.

  • 모든 태스크를 포함하여 파인튜닝하거나,
  • 태스크별로 다른 모델을 운용하거나,
  • 멀티태스크 학습(multi-task learning) 또는 서빙 전략 분리를 고민해야 합니다.

3. 기술 리소스 부족

파인튜닝은 단순한 작업이 아닙니다. 다음과 같은 전문적인 역량이 필요합니다.

  • 적절한 데이터 수집 및 정제
  • 과적합(overfitting) 및 언더피팅(underfitting) 방지
  • 모델 로깅, 모니터링, 지속적인 배포 및 업데이트
  • API 혹은 온프레미스 환경에서의 추론 최적화 및 서빙

특히 고성능 모델의 경우, 추론(inference)을 위한 서버 운영비용과 성능 최적화가 파인튜닝보다 더 큰 비용 요소가 될 수 있습니다.


도메인 특화 파인튜닝 (Finetuning Domain-Specific Tasks)

일반적인 언어 모델이 다양한 작업에서 높은 성능을 보인다고 해도, 특정 도메인에서는 여전히 전문화된 파인튜닝이 필수적입니다.
예를 들어 금융, 법률, 의료, 생명과학 등의 분야에서는 도메인 지식이 내재된 파인튜닝을 거친 모델이 더 우수한 성능을 발휘합니다.

BloombergGPT: 도메인 특화 모델의 대표 사례

2023년 3월, Bloomberg는 금융 분야에 특화된 대형 언어 모델인 BloombergGPT를 발표했습니다. 이 모델은 금융 뉴스, 리포트, 마켓 데이터 등 실제 금융 데이터를 기반으로 학습되었으며, 일반적인 범용 모델보다 금융 관련 태스크에서 높은 정확도를 보였습니다.

그러나 같은 해 OpenAI의 GPT-4 0314 버전은 BloombergGPT보다 더 나은 성능을 보였다는 결과도 발표되었습니다. 아래 표는 그 비교 결과를 보여줍니다:

ModelFiQA Sentiment  Analysis (F1) ConvFinQA (정확도)
GPT-4-0314 87.15 76.48
BloombergGPT 75.07 43.41

이 결과는 다음 두 가지 중요한 사실을 시사합니다.

  • 범용 모델이 도메인 모델을 능가할 수 있는 경우도 있다.
  • 그럼에도 불구하고, 도메인 모델은 여전히 특정 조직의 니즈에 최적화되어 활용될 수 있다.

Bloomberg의 경우, 파인튜닝 과정 자체에서 얻은 경험과 데이터 자산이 장기적으로 미래 모델 개발의 기반이 되었다는 점이 중요합니다.


파인튜닝과 프롬프트 실험은 함께 설계되어야 합니다

많은 기업에서 파인튜닝에 앞서 프롬프트만 조정해보다가 효과가 없다고 판단하는 경우가 많습니다. 그러나 프롬프트 실험도 체계적인 절차와 가이드라인 없이 진행하면 효과가 제한적일 수 있습니다.

  • 명확한 평가 기준 설정
  • 반복 가능한 실험 로깅 및 기록
  • 실패한 프롬프트에 대한 체계적 분석

이런 과정 없이 파인튜닝을 시도하면 불필요한 비용이 들 수 있습니다.


파인튜닝의 실용적 장점: 프롬프트 캐싱(Prompt Caching)

파인튜닝은 단순히 성능을 향상시키는 것 외에도, 실무 운영 측면에서 프롬프트 캐싱을 통해 비용과 지연 시간을 줄이는 효과를 줍니다.

  • 파인튜닝된 모델은 입력 프롬프트가 더 짧아도 원하는 출력을 낼 수 있기 때문에, API 호출 시의 토큰 수를 줄일 수 있습니다.
  • 반복적인 프롬프트 조각(prompt segments)도 캐시 처리 가능하므로, 동일한 작업을 여러 번 수행할 때 더욱 효율적입니다.

이러한 구조는 추론 단계에서의 효율성을 높이고, API 호출 비용을 절감하며, 동시에 속도 향상에도 기여합니다.


파인튜닝은 전략, 실험, 리소스의 균형점

지금까지 파인튜닝의 정의부터 시작해, 기법, 시기, 이유, 유의점, 그리고 실제 기업 사례까지 총체적으로 살펴보았습니다.
결국 중요한 것은 다음과 같습니다.

  1. 파인튜닝이 필요한 상황인지 아닌지 판단하는 전략
  2. 프롬프트 실험, RAG, 지식 증류 등과의 비교 분석
  3. 데이터 품질, 실험 설계, 추론 환경 등 전체적인 실행력 확보
  4. 조직이 실제로 운영 가능한 효율성과 리소스 최적화

파인튜닝은 전략적으로 선택해야 합니다

파인튜닝은 모델을 특정 목적에 최적화하는 매우 강력한 방법입니다. 하지만 무조건적인 선택보다는, 현 상황의 자원, 기술 수준, 해결하려는 문제의 특성에 따라 전략적으로 선택하는 것이 중요합니다.

  • 프롬프트나 RAG로 충분한가? 그렇다면 굳이 파인튜닝은 필요하지 않을 수 있습니다.
  • 특정 태스크에 특화된 일관된 출력이 필요한가? 그렇다면 파인튜닝이 효과적일 수 있습니다.
  • 다양한 태스크를 동시에 처리해야 하는가? 멀티태스크 구조나 멀티모델 운영 전략이 필요할 수 있습니다.