Beyond LoRA: Can you beat the most popular fine-tuning technique?
LoRA가 파인튜닝의 표준처럼 자리 잡았지만 항상 최선의 선택은 아닐 수 있어요. 허깅페이스의 벤치마크 결과, 이미지 생성에서의 OFT나 LLM 학습에서의 rs-LoRA, LoRA-FA 등 대안 기법들이 특정 상황에
LoRA가 파인튜닝의 표준처럼 자리 잡았지만 항상 최선의 선택은 아닐 수 있어요. 허깅페이스의 벤치마크 결과, 이미지 생성에서의 OFT나 LLM 학습에서의 rs-LoRA, LoRA-FA 등 대안 기법들이 특정 상황에서 성능과 메모리 효율 모두 LoRA를 압도하는 성과를 보여주었습니다.
LoRA 너머를 바라봐야 할 때
나만의 데이터로 오픈소스 모델을 파인튜닝하려 할 때, 가장 먼저 떠올리는 것이 바로 PEFT(Parameter-Efficient Fine-Tuning, 매개변수 효율적 미세조정)일 것입니다. PEFT는 모델 학습에 필요한 메모리를 획기적으로 줄여주는 기술들의 총칭인데요. 현재 수십 가지의 PEFT 기술이 존재하지만, 대다수의 사람들은 거의 예외 없이 'LoRA(Low-Rank Adaptation)'만을 선택하곤 합니다.
이번 글에서는 과연 LoRA가 정말 언제나 최선의 선택인지 분석해 보고, 더 넓은 시야를 가졌을 때 얻을 수 있는 이점을 허깅페이스의 실험 결과를 바탕으로 소개해 드립니다.
PEFT란 무엇이고 왜 필요할까요?
수많은 오픈소스 모델이 쏟아지고 있지만, 특정 비즈니스 사례나 도메인에 딱 맞춰 사용하기에는 성능이 아쉬울 때가 많습니다. 프롬프트 엔지니어링으로 일부 보완할 수 있지만 한계가 있죠. 이럴 때 처음부터 새로 학습시키는 대신 기존 모델을 파인튜닝하는 방법을 고민하게 됩니다.
하지만 완전한 파인튜닝(Full Fine-Tuning)은 엄청난 메모리를 잡아먹습니다. 통상 모델 전체 크기의 몇 배에 달하는 메모리가 필요한데요. 모델을 양자화(Quantization)하면 용량은 줄어들지만, 양자화된 상태 그대로 직접 파인튜닝하는 것은 불가능에 가깝습니다. 이 메모리 장벽을 해결하기 위해 등장한 구원투수가 바로 PEFT입니다.
PEFT를 사용하면 전체 파인튜닝의 극히 일부에 불과한 메모리만으로 학습이 가능하며, 양자화된 모델도 튜닝할 수 있습니다. 그뿐만 아니라 다음과 같은 뚜렷한 장점을 제공합니다.
- 초소형 체크포인트 크기: 학습된 어댑터 용량이 매우 작습니다.
- 재앙적 망각(Catastrophic Forgetting) 방지: 기존 모델의 지식을 잃어버릴 위험이 낮습니다.
- 다중 서빙 용이성: 하나의 기본 모델 위에 여러 목적의 파인튜닝 어댑터를 얹어 동시에 서빙할 수 있습니다.
허깅페이스는 다양한 PEFT 기법을 단일 API로 다룰 수 있는 PEFT 라이브러리를 개발해 오고 있으며, 이는 Transformers, Diffusers 등 생태계 전반과 긴밀하게 통합되어 있습니다.
파인튜닝 기법의 절대 강자, LoRA 👑
PEFT 기법 중 가장 먼저 대중화되고 강력한 성능을 증명한 것이 바로 LoRA(Low-Rank Adaptation)입니다. 기본 모델의 가중치를 고정(Freeze)한 채, 아주 적은 양의 추가 매개변수만을 학습시키는 단순하고 직관적인 구조를 가집니다.
실제로 LoRA의 점유율은 압도적인 수준입니다.
- 허깅페이스 허브 분석: 단 하나의 PEFT 기법을 언급한 모델 카드 20,834개 샘플 중 무려 98.4% (20,509개)가 LoRA를 언급했습니다.
- 이미지 생성 도메인: 외부 사이트의 10,000개 이미지 체크포인트를 분석한 결과, 7,111개가 LoRA였습니다. 대안 기법인 LoCon(363개)과 DoRA(11개)는 극히 일부에 불과해, PEFT 모델 중 95%가 LoRA 계열이었습니다.
- 깃허브 코드 검색:
from peft import <PEFT CONFIG>형태의 코드를 검색해 본 결과, 71.3%가 LoRA 관련 설정이었습니다. 그 뒤를 LoHa(3.7%), AdaLoRA(3.5%)가 겨우 잇고 있는 형국입니다.
이 압도적인 인기는 LoRA가 모두에게 항상 최고의 결과를 주기 때문일까요? 아닐 수도 있습니다. LoRA가 초기에 가장 먼저 주목받았기 때문에, 관련 튜토리얼과 최적화 코드가 가장 풍부해졌고, 이로 인해 사용자가 몰리는 '자기강화(Self-reinforcing)' 효과의 결과물일 가능성이 큽니다.
수많은 연구진이 자신의 논문에서 'LoRA를 뛰어넘었다'고 주장하는 지금, 우리는 더 좋은 기술을 두고 LoRA라는 기본값에만 안주하고 있는 것은 아닐까요?
논문 결과만 보고 PEFT 기법을 고르면 안 되는 이유
허깅페이스 PEFT 라이브러리 안에는 이미 40가지가 넘는 다양한 PEFT 기법들이 들어가 있습니다. 거의 모든 논문이 자사 기법이 LoRA를 이겼다고 주장하지만, 이를 액면 그대로 믿기에는 다음과 같은 현실적인 문제가 있습니다.
- 연구진의 편향: 신규 기법을 제안하는 연구진은 자사 모델을 튜닝하는 데 더 많은 공을 들이는 반면, 비교 대상인 기존 기술(LoRA 등)의 튜닝에는 소홀할 수 있습니다. 실제로 한 연구에 따르면, 단순히 LoRA의 학습률(Learning Rate)만 잘 조정해도 신규 기술들을 대부분 따라잡을 수 있다고 합니다.
- 일관되지 않은 벤치마크: 논문마다 비교군으로 설정하는 기법과 테스트하는 데이터셋이 제각각입니다.
- 재현의 어려움: 논문에 쓰인 코드가 공개되지 않거나 직접 실행하기 매우 번거로운 경우가 허다합니다.
따라서 일반적인 실무자가 논문 속 장밋빛 그래프만 보고 나에게 맞는 기술을 고르는 것은 불가능에 가깝고, 결국 익숙한 'LoRA'로 돌아가게 됩니다.
허깅페이스가 PEFT 벤치마크에 접근한 방법
허깅페이스 개발팀은 사용자가 객관적인 데이터를 바탕으로 의사결정을 내릴 수 있도록 돕고자 직접 벤치마크를 설계했습니다. 모든 PEFT 기법을 완전히 동일한 환경(동일한 기본 모델, 데이터셋, 학습/평가 코드, 하드웨어)에 두고 철저하게 평가했습니다. 성능(테스트 정확도)뿐만 아니라, 실무에서 매우 중요한 VRAM 사용량, 학습 시간(Runtime), 체크포인트 용량까지 다각도로 기록했습니다.
평가는 두 가지 도메인에서 진행되었습니다.
- LLM 수학 추론 (MetaMathQA): 명령어로 튜닝되지 않은 순수 모델(Base Model)을 기반으로, 단계별 추론을 수행해 올바른 형식을 갖춘 답안을 내놓도록 파인튜닝합니다.
- 이미지 생성 (FLUX.2): 특정 고양이 인형 컨셉을 학습시켜, 기존 지식을 망각하지 않으면서 새로운 배경과 맥락 속에서 해당 대상을 그려내도록 튜닝합니다.
벤치마크 결과: LoRA는 훌륭하지만 항상 최선은 아닙니다
실험 결과, LoRA는 전반적으로 뛰어난 안정성을 보였지만 성능과 효율의 모든 측면에서 최고는 아니었습니다. '트레이드오프(성능과 메모리 요구량의 균형)'의 관점에서 대안 기법들이 훌륭한 선택지가 될 수 있음을 확인했습니다.
1. LLM 수학 추론 성능 비교 (Llama-3.2-3B 기반)
학습 시 최대 VRAM 사용량과 정확도 균형을 시각화해 보면 여러 기법이 저마다 장단점을 갖고 있음을 보여줍니다.
- rs-LoRA(rank stabilized initialization): LoRA의 기여도를 다르게 스케일링하는 이 기법은 매우 훌륭한 정확도(53.2%, VRAM 22.6 GB)를 뽐냈습니다.
- LoRA-FA: 가중치의 일부를 고정해 최적화 프로세스를 가볍게 만든 이 기법은 메모리를 단 20.2 GB만 소모하며 최고의 효율을 증명했습니다.
- Lily: 메모리는 다소 많이 쓰지만(25.6 GB), 정확도 측면에서 54.9%로 가장 뛰어난 성과를 기록했습니다.
- 일반 LoRA: 특별한 옵션이 없는 일반 LoRA는 48.1% 정확도에 22.5 GB를 소모해, 대안 기법들에 비해 효율성이 다소 떨어지는 모습을 보였습니다.
2. 이미지 생성 성능 비교 (FLUX.2 기반)
이미지 분야에서는 모델이 새로운 컨셉을 얼마나 잘 학습했는지 보여주는 DINO 유사도(DINO Similarity)를 주요 지표로 활용했습니다.
| 기법 | DINO 유사도 (높을수록 좋음) | Peak VRAM 사용량 (GB) |
|---|---|---|
| OFT | 0.708 | 9.01 |
| LoRA | 0.697 | 9.97 |
놀랍게도 이미지 생성 분야에서는 OFT(Orthogonal Fine-Tuning) 기법이 LoRA를 완벽히 압도했습니다. OFT는 더 적은 메모리(9.01 GB)를 쓰면서도 더 높은 이미지 재현 유사도(0.708)를 기록해, LoRA(9.97 GB / 0.697)보다 무조건 뛰어난 선택임을 증명했습니다.
현실적인 제약과 극복 방법
기존에 LoRA 이외의 기법을 쓰기 꺼려졌던 실무적인 이유 중 하나는 서빙 호환성입니다. 많은 경량 서빙 도구(llama.cpp, vLLM 등)가 LoRA 어댑터 포맷만을 지원하기 때문인데요.
이 문제를 해결하기 위해 허깅페이스 PEFT 라이브러리는 비-LoRA 포맷의 어댑터를 LoRA 포맷으로 변환해 주는 기능을 탑재했습니다. 실측 테스트 결과, GraLoRA로 학습한 이미지 어댑터를 LoRA로 변환해 사용했을 때 변환 전후의 유사도 차이가 사실상 전혀 없을 정도로(0.702 -> 0.694) 정밀한 복원이 가능했습니다.
또한 기법마다 지원하는 레이어 유형이나 양자화 기본 모델과의 호환성 수준이 다를 수 있으므로, 프로젝트 초기에 필요한 기술 요구 사항(예: 머징 가능 여부, 양자화 지원 여부 등)을 고려해 가장 알맞은 기술을 탐색해야 합니다.
결론: LoRA는 자동 선택이 아닙니다
LoRA는 훌륭한 범용 기술이지만, 항상 최고의 정답은 아닙니다. 여러분의 작업이 이미지 생성이나 극강의 메모리 절약이 필요한 환경이라면, 이제는 시야를 넓혀 다양한 대안 기법을 검토해 보세요.
허깅페이스 PEFT 라이브러리를 사용하면 코드 몇 줄만으로 다른 기법을 즉시 대입할 수 있습니다.
# 기존 LoRA 설정 예시
from transformers import AutoModelForCausalLM
from peft import LoraConfig, get_peft_model
base_model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-3B", dtype="bfloat16")
config = LoraConfig(target_modules=["q_proj", "v_proj"])
model = get_peft_model(base_model, config)# OFT 설정으로 전환하는 단 한 줄의 변화
from transformers import AutoModelForCausalLM
from peft import OFTConfig, get_peft_model
base_model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-3B", dtype="bfloat16")
config = OFTConfig(target_modules=["q_proj", "v_proj"]) # LoraConfig에서 OFTConfig로 변경
model = get_peft_model(base_model, config)더 나은 성능과 뛰어난 자원 관리를 위해, 다음 프로젝트에서는 꼭 LoRA 이외의 다채로운 변형 기법(DoRA, rs-LoRA, LoRA-FA, OFT 등)들을 탐색해 보시기 바랍니다!
아직 이 아티클로 만든 공식이 없어요. 첫 번째 공식을 남겨보세요!
나도 공식 만들기
댓글
6댓글을 남기려면 로그인이 필요해요.
정확도와 메모리 사용량의 트레이드오프를 보여주는 파레토 프론티어 관점이 매우 현실적이고 유용하네요. Lily가 높은 정확도를 내지만 25.6 GB의 메모리를 요구하는 것처럼, 운영 비용 대비 가치를 철저히 따져봐야 할 것 같습니다. 실제 인프라 환경에서 PEFT 기법을 선택하실 때 여러분은 VRAM 절감과 테스트 정확도 중 어느 쪽에 더 무게를 두시나요?
인프라의 제약 조건에 따라 선택이 달라지겠지만, 파레토 프론티어 상에서 확실한 비교가 가능해요. 만약 극도의 메모리 절감이 필요하다면 20.2 GB VRAM만 쓰는 BEFT(정확도 32.9%)나 LoRA-FA가 대안이 될 수 있고, VRAM 여유가 있다면 25.6 GB를 쓰더라도 최고의 정확도(54.9%)를 내는 Lily가 좋은 선택이 됩니다. 팀의 하드웨어 예산과 목표 정확도 사이의 타협점을 찾는 과정에서 이 벤치마크 지표들이 훌륭한 나침반이 될 것입니다.
바닐라 LoRA 대신 랭크 안정화 초기화나 LoRA-FA 같은 대안을 적용하는 것만으로도 성능과 메모리 효율을 바로 개선할 수 있다는 점이 놀랍네요. 특히 이미지 생성에서 LoRA를 완전히 압도한 OFT 기법은 당장 실무 프로젝트에 적용해 보고 싶어집니다. 여러분은 이번 결과를 보고 기존의 LoRA 설정을 다른 PEFT 기법으로 전환해 볼 의향이 생기셨나요?
충분히 고려해 볼 가치가 있는 전환이에요. 이미지 생성 작업에서 OFT 기법은 유사도(0.708 vs 0.697)와 메모리 절감(9.01 GB vs 9.97 GB) 모두에서 LoRA를 완전히 앞섰고, LLM 학습에서도 바닐라 LoRA(48.1%) 대신 랭크 안정화 초기화(53.2%)나 LoRA-FA(20.2 GB)를 쓰면 확실한 성능 향상을 기대할 수 있습니다. 이미 통일된 API가 구축되어 있으니 실무 적용 장벽도 낮을 것입니다.
논문 연구들이 각자 유리한 벤치마크만 제시하거나 학습률 튜닝만으로도 결과가 달라진다는 점을 짚어주신 부분이 매우 흥미롭네요. 허깅페이스의 벤치마크 역시 모든 기법에 완벽히 공정한 하이퍼파라미터 스윕을 적용하기는 어려웠을 텐데, 이러한 평가의 한계를 보완하기 위해 우리는 앞으로 어떤 검증 과정을 더 거쳐야 할까요?
하이퍼파라미터 스윕의 한계를 극복하기 위해, 허깅페이스는 사용자가 직접 최적의 파라미터를 찾아 풀 리퀘스트(PR)로 기여할 수 있는 열린 환경을 제공하고 있어요. 또한 본문에서 제안하듯, 여러분만의 자체 데이터셋을 준비하고 PEFT 라이브러리의 통일된 API를 활용해 동일한 조건에서 직접 여러 기법을 평가해 보는 검증 방식이 가장 확실한 보완책이 될 수 있습니다.