프롬프트 수정의 한계와 파인튜닝의 정의
실무자가 ChatGPT나 Llama 같은 모델을 사용할 때 서비스 특유의 말투나 내부 도메인 지식을 반영시키기 위해 프롬프트를 수십 번 수정하는 불편함을 겪는다. 사용자가 원하는 결과물을 얻기 위해 쏟아붓는 프롬프트 수정 시간과 시행착오 비용은 보이지 않는 곳에서 계속 쌓이는 비효율을 초래한다. 이러한 문제를 해결하는 핵심 방법인 파인튜닝(Fine-tuning)은 이미 언어 능력을 갖춘 기초 모델(Foundation Model)의 가중치를 특정 작업 데이터로 다시 조정하여 전문성을 부여하는 과정이다.
파인튜닝은 무에서 유를 만드는 것이 아니라 이미 존재하는 지능을 특정 목적에 맞게 최적화하는 작업이다. 이는 요리 학교를 졸업한 셰프가 특정 레스토랑에 취업해 그 집만의 고유한 레시피와 주방 동선을 익히는 과정과 유사하다. 기초 모델이 가진 일반적인 언어 능력이라는 토대 위에 특정 도메인의 전문성을 덧씌우는 방식이기에, 처음부터 모델을 만드는 것보다 훨씬 적은 비용과 데이터로 빠르게 전문성을 확보할 수 있다.
기초 모델을 만드는 사전 학습과 다음 단어 예측
파인튜닝을 이해하기 위해서는 그 전 단계인 사전 학습(Pretraining) 과정을 먼저 파악해야 한다. 사전 학습은 모델이 방대한 양의 텍스트 데이터를 통해 언어의 일반적인 구조와 상식을 배우는 단계다. 이 단계에서 모델은 '다음 단어 예측(Next-word prediction)'이라는 단순한 기술을 학습한다. 예를 들어 모델에게 "The cat sat on the ____"라는 문장을 제시하면, 모델은 빈칸에 'car'보다는 'mat'이 올 확률이 훨씬 높다는 것을 수치적으로 학습한다.
모델은 수십억 개의 문장, 책, 기사를 통해 이 과정을 반복하며 문법, 사실 관계, 추론 패턴을 스스로 체득한다. 이렇게 사전 학습이 완료되어 일반적인 언어 능력을 갖춘 모델을 기초 모델(Foundation Model)이라고 부르며, Llama, Mistral, Qwen 등이 대표적인 사례다. 실무자가 수조 개의 토큰을 직접 학습시켜 모델을 처음부터 만드는 것은 천문학적인 컴퓨팅 자원이 필요하므로, 대부분은 이미 학습된 기초 모델을 내려받아 그 위에 필요한 기능을 얹는 방식을 택한다.
가중치를 미세 조정하는 파인튜닝의 동작 루프
파인튜닝은 기초 모델이 가진 가중치(Weights)를 특정 작업에 최적화된 값으로 변환하는 과정이다. 여기서 가중치란 모델의 지능을 수치로 인코딩하고 있는 값이며, 사전 학습 단계에서 일반적인 상식을 처리하는 '좋은 값'으로 설정되어 있다. 파인튜닝은 이 수치들을 미세하게 조정하여 모델이 일반적인 답변 대신 특정 작업의 정답지에 가까운 답변을 내놓도록 유도한다. 이러한 구체적인 하위 작업을 다운스트림 태스크(Downstream Task)라고 정의한다.
파인튜닝의 학습 루프는 구체적으로 '데이터 입력 $\rightarrow$ 모델의 예측 $\rightarrow$ 정답과의 비교 $\rightarrow$ 가중치 미세 조정' 순서로 작동한다. 모델에게 영화 카테고리 분류와 같은 작업 특정 데이터(Task-specific data)를 입력하면, 모델은 먼저 자신의 가중치를 바탕으로 카테고리를 예측한다. 이후 시스템은 이 예측값을 준비된 정답지와 대조하여 오차를 계산한다. 정답과 예측값의 차이가 클수록 가중치를 더 많이 수정하여 오차를 줄이며, 이 루프를 반복함으로써 모델은 정답지에 가까운 수치적 패턴을 스스로 익히게 된다.
Full Fine-tuning과 PEFT의 구조적 차이와 비용
파인튜닝은 수정하려는 파라미터의 범위에 따라 크게 두 가지 방식으로 나뉜다. Full Fine-tuning은 모델이 가진 수십억 개의 모든 가중치를 업데이트하는 방식이다. 학습 데이터가 입력될 때마다 모델 전체의 수치 값이 조정되므로 모델의 행동 양식을 완전히 재구성할 수 있다는 장점이 있다. 하지만 모든 파라미터의 기울기 값을 저장해야 하므로 GPU 메모리 점유율이 매우 높으며, 사실상 모델 전체를 다시 학습시키는 수준의 막대한 연산 자원과 시간이 소모된다.
반면 PEFT(Parameter-Efficient Fine-tuning, 효율적 미세 조정)는 전체 파라미터 중 극히 일부만 선택해 튜닝하여 계산 비용을 낮춘다. 대표적인 기법인 LoRA(Low-Rank Adaptation, 저차원 적응)는 기존 모델의 가중치는 그대로 고정하고, 그 옆에 작은 크기의 행렬 두 개를 추가해 이 부분만 학습시키는 구조다. 거대한 행렬을 직접 수정하는 대신 작은 행렬들의 곱으로 변화량을 표현하여 기존 가중치에 더하는 방식이다. 이를 통해 학습 파라미터 수를 수백 분의 일 수준으로 줄여 메모리 사용량을 급격히 낮추고 학습 속도를 높이면서도, Full Fine-tuning과 유사한 성능을 유지할 수 있다.
도입 전략: 프롬프트, RAG, 파인튜닝의 판단 기준
실무 환경에서 AI 시스템을 구축할 때는 데이터의 양, 업데이트 주기, 가용 비용에 따라 세 가지 기법 중 최적의 조합을 선택해야 한다. 프롬프트 엔지니어링은 추가 학습 없이 입력문을 최적화하여 모델의 반응을 끌어내는 방식이다. 모델의 내부 가중치를 수정하지 않으므로 도입 비용이 0원이며 수정 즉시 결과에 반영된다. 따라서 단순한 지시 최적화로 해결 가능한 문제는 프롬프트 엔지니어링이 가장 효율적인 시작점이다.
RAG(Retrieval-Augmented Generation, 검색 증강 생성)는 사용자가 질문하는 시점에 외부 데이터베이스나 온라인에서 관련 정보를 찾아 답변에 활용하는 방식이다. 정보의 양이 매우 방대하거나 데이터가 실시간으로 변경되는 환경에서 강력한 성능을 발휘하며, 모델의 기억력 대신 외부 저장소를 활용해 정보의 최신성을 유지한다. 반면 파인튜닝은 모델에게 특정한 말투를 입히거나 복잡한 출력 형식을 강제해야 하는 '작업 특정 능력'이 필요할 때 도입한다.
실제 구현 시에는 Llama 8B, Qwen, Gemma 같은 소형 인스트럭트 모델(사용자의 지시를 따르도록 조정된 모델)을 활용하고, `Unsloth QLoRA` 노트북을 통해 메모리 사용량을 최적화하는 것이 현실적이다. 수만 건의 데이터보다 정제된 수백 건의 예시 데이터셋을 사용하는 것이 모델의 행동 교정에 더 효과적이다. 학습 과정에서는 예측값과 정답 사이의 거리를 수치화한 `Training Loss`(학습 손실 값)가 점진적으로 떨어지는지를 확인하여 모델의 학습 상태를 판단한다.



