생성형 AI 활용이 점점 더 보편화되면서 '초거대언어모델(LLM) 성능 개선'이라는 주제는 언어모델 개발자부터 생성형 AI를 업무에 활용하고자 하는 개인에 이르기까지 다양한 사람들이 고민하고 있는 부분입니다. 특정 도메인에 대한 지식으로 무장하고 더욱 정확하고 자연스러운 답변을 하는 LLM을 만들기 위해서 모두가 한 번쯤 고민해 보았을(혹은 들어보았을) 대상이 있습니다. 바로 파인튜닝입니다.
파인튜닝이란 방대한 양의 매개변수와 학습 데이터로 사전학습(pre-training)된 초거대언어모델(LLM)에 비교적 적은 양의 데이터셋을 적용해 추가로 미세조정(fine-tuning)을 진행하여 특정 도메인이나 태스크에 최적화된 LLM을 만드는 과정입니다. 파인튜닝을 거친 모델은 일반적으로 사전학습 과정만 거친 LLM과 비교하여 더욱 뛰어난 성능을 자랑하는 것으로 알려져 있습니다.
출처 : medium
반가운 소식은 개발에 대한 경험이나 지식이 적은 개발자들이나 일반인들도 직접 LLM을 파인튜닝 해볼 수 있는 환경이 갖추어지고 있다는 사실입니다. 얼마 전 Meta에서 8B, 70B, 405B 세 가지 크기의 매개변수로 공개한 LLaMA-3.1은 현존하는 '오픈소스' 모델 중 최고의 성능을 자랑합니다. 특히 405B 크기의 모델은 약간의 파인튜닝만으로도 매개변수가 수십 배나 많은 OpenAI의 GPT-4와 Anthropic의 Claude에 준하는 성능을 보여준 것으로 알려져 있지요.
출처 : Meta
이처럼 뛰어난 오픈소스 LLM은 직접 확보한 텍스트 데이터셋을 추가로 학습하는 미세조정(fine-tuning)을 거쳐 특정 도메인과 태스크에 특화된 모델로 탄생합니다. PEFT나 양자화를 통해 LLaMA-3.1 405B와 같은 초대형 오픈소스 모델조차 비교적 적은 리소스로 파인튜닝이 가능해졌습니다. 약간의 시간과 노력 그리고 리소스를 들이면 로컬 환경에서 GPT 수준의 심지어 커스터마이즈 된 언어모델을 구현해 낼 수 있다니 파인튜닝은 개발자들에게 참 매력적인 대안이 아닐 수 없습니다.
특히 최근에는 Huggingface Transformer라는 라이브러리를 활용하여 보다 간편하게 파인튜닝을 할 수 있게 되었습니다. 또한 코드 없이 파인튜닝이 가능한 LLaMaFactory, Axolotl, Unsloth와 같은 솔루션도 등장하여 파인튜닝 작업에 대한 허들이 많이 낮아진 상태입니다.
1. 파인튜닝의 문제점
그런데 파인튜닝은 정말로 만능일까요? 아무리 허들이 낮아졌다고는 하지만 파인튜닝은 여전히 시간과 돈 그리고 리소스가 많이 들어가는 작업입니다. 보통 원활한 파인튜닝을 위해서는 NVIDIA의 A100이나 H100과 같은 고가의 GPU가 필요합니다. 다음으로 SFT(Supervised Fine-Tuning) 등 다양한 파인튜닝 기법을 구현해 내기 위해 적게는 수천 개에서 많게는 수만 개에 이르는 데이터셋을 직접 준비하는 라벨링 과정이 필요하지요. 마지막으로 여러 라이브러리를 활용하기 위해서는 GPU 및 Python과의 호환을 위한 가상환경 구성이 필요합니다.
설상가상으로 직접 파인튜닝을 진행하다 보면 이러한 과정들이 물 흐르듯 부드럽게 흘러가는 일은 거의 없습니다. 위에서 언급했듯 모델 자체를 훈련시키는 시간도 오래 걸리지만, 진짜 문제는 이를 위한 준비과정에 숨어있습니다. 일견 사소해 보이는 패키지 버전 문제나 GPU 호환 문제로 하룻밤을 꼬박 새우는 것도 LLM 개발자들에게는 종종 있는 일입니다.
2. 파인튜닝의 대안, 지식검색생성(RAG)
이에 대한 대안으로 검색증강생성 즉 RAG(Retrieval Augmented Generation)과 GPT-4o나 Claude 그리고 Gemini와 같은 SoTA 모델을 연동하여 사용하는 방법이 사용되고 있습니다. RAG란 직접 LLM을 건드리지 않으면서도, 성능을 개선하고 환각현상(Hallucination)을 방지하기 위한 일종의 지식 파이프라인을 구축하는 과정이라고 할 수 있습니다.
출처 : Medium
파인튜닝과 비교하여 RAG가 가지는 장점은 명확합니다. pdf, csv, html, json 등 어떤 형태든 사전에 LLM에게 제공할 문서를 가지고 있다면 라벨링을 통한 데이터셋 구축이 필요 없다는 점입니다. 또한 API만 연동하면 OpenAI나 Google 등에서 제공하는 최신 LLM을 사용할 수 있습니다. 당연히 성능면에서도 파인튜닝된(상대적으로 작은) 오픈소스 모델과 비교하여 훨씬 더 뛰어난 경우가 많습니다.
RAG 파이프라인은 문서 임베딩, 벡터 DB, 프롬프트 엔지니어링, 검색(Retrieval 혹은 Rerank 등)과 같은 기술들의 총집합체입니다. 이 브런치북에서는 비전공자들도 알 수 있는 언어로 이와 관련된 개념과 기술들을 하나씩 자세히 뜯어볼 것입니다.