AI VIDEO BRIEFING
LoRA·PEFT로 LLM 미세조정하기: 원본 가중치는 얼려두고 작은 어댑터만 학습하는 법
거대 언어모델 미세조정의 걸림돌인 연산량과 거대한 체크포인트 문제를 PEFT와 LoRA가 어떻게 푸는지 설명한다. 원본 가중치를 동결하고 작은 어댑터만 학습하는 원리와 실제 코드 흐름을 예제와 함께 정리했다.

핵심 메시지
쉽게 이해하기
샘 위트빈은 거대 언어모델을 미세조정할 때 부딪히는 두 가지 근본 문제에서 이야기를 시작한다. 첫째는 연산량이다. 모델이 커질수록 더 크고 여러 대의 GPU가 있어야 학습이 가능하다. 둘째는 파일 크기다. 예컨대 T5-XXL 체크포인트는 약 40GB에 이르고, 수십억 파라미터 모델은 갈수록 더 커진다. 이 두 문제를 완화하려는 접근이 바로 PEFT, 즉 파라미터 효율적 미세조정이다.
PEFT에는 프리픽스 튜닝, P-튜닝, 프롬프트 튜닝 등 여러 기법이 있는데, 영상에서 다루는 것은 LoRA(Low-Rank Adaptation)다. 핵심 아이디어는 사전학습된 네트워크의 대부분 파라미터를 '동결'해 두고, 모델 곳곳에 소량의 추가 가중치를 붙여 그것만 학습하는 것이다. 원본 가중치를 그대로 두기 때문에, 미세조정을 과하게 했을 때 모델이 원래 배운 것을 잊어버리는 '치명적 망각'을 줄일 수 있다.
이 방식의 이점은 분명하다. 적은 데이터로도 좋은 성능을 얻고 다른 상황으로의 일반화도 더 잘 된다. 무엇보다 최종 산출물이 아주 작다. 위트빈은 라마 모델을 미세조정해 알파카 모델을 만들었을 때 추가 부분 체크포인트가 약 12MB에 불과했다고 소개한다. 물론 원본 가중치는 여전히 필요하지만, 공유하고 저장해야 할 부분이 기가바이트 단위에서 메가바이트 단위로 줄어든다는 것이 큰 장점이다.
실습에서는 허깅페이스의 PEFT 라이브러리와 bitsandbytes를 사용한다. bitsandbytes로 모델을 8비트로 로딩하면 GPU 메모리 사용량이 줄어 저장과 학습이 수월해진다. 예제 모델은 Bloom 70억 파라미터이며, A100뿐 아니라 더 작은 모델로 바꾸면 T4에서도 시도할 수 있다. 모델을 불러온 뒤에는 레이어 노름 등 일부를 float32로 유지하며 원본 가중치를 동결한다.
LoRA 설정(config)이 결과를 좌우한다. 어텐션 헤드 수, 알파 스케일링, 어댑터를 붙일 target modules, 드롭아웃, 그리고 태스크 유형(디코더 전용의 인과적 언어모델인지, T5 같은 seq2seq인지)을 지정한다. 이렇게 하면 전체 70억 파라미터 중 학습 대상은 극히 일부만 남는다. 학습에서는 작은 GPU를 고려해 그래디언트 누적과 워밍업 스텝을 쓰고, 완성된 어댑터만 허깅페이스 허브에 수십 MB 크기로 업로드한다. 데모로는 인용문을 입력하면 태그를 생성하는 작은 모델을 만들어 보인다.
주요 인사이트
- LoRA의 본질은 '원본은 그대로, 작은 어댑터만 학습'이다. 이 단순한 전환이 연산·저장·망각 문제를 한꺼번에 완화한다.
- 체크포인트가 작아진다는 점은 실용적으로 크다. 하나의 원본 모델에 여러 개의 가벼운 어댑터를 갈아끼우는 운영 방식이 가능해진다.
- 8비트 로딩(bitsandbytes)은 미세조정의 문턱을 낮추는 또 다른 축이다. 메모리를 줄여 소비자용 GPU에서도 대형 모델을 다룰 수 있게 한다.
- config의 target modules나 알파 값에 대한 최적값은 아직 정립 중이라, 실무에서는 여러 설정을 실험하며 학습 대상 규모와 성능의 균형을 찾아야 한다.
- 이 기법은 언어모델뿐 아니라 스테이블 디퓨전 같은 이미지 생성 모델의 미세조정에도 널리 쓰이고 있다.
자주 묻는 질문
LoRA는 모델의 원본 가중치를 바꾸나요?
아닙니다. 사전학습된 대부분의 파라미터는 동결한 채, 모델 곳곳에 붙인 소량의 추가 가중치(어댑터)만 학습합니다. 원본을 건드리지 않기 때문에 기존 지식을 잊는 치명적 망각을 줄이는 효과가 있습니다.
왜 체크포인트 크기가 그렇게 작아지나요?
학습해서 저장하는 대상이 전체 모델이 아니라 추가된 어댑터 가중치뿐이기 때문입니다. 영상에서는 알파카용 어댑터가 약 12MB, 예제 업로드가 약 31MB 수준으로, 기가바이트가 아닌 메가바이트 단위라고 설명합니다. 다만 추론 시에는 원본 모델이 여전히 필요합니다.
일반 GPU로도 대형 모델을 미세조정할 수 있나요?
가능합니다. bitsandbytes로 모델을 8비트로 로딩해 메모리 사용량을 줄이고, 그래디언트 누적과 워밍업 스텝을 활용하면 됩니다. 영상 예제는 A100에서 진행하지만, 더 작은 Bloom 모델로 바꾸면 T4급에서도 시도할 수 있다고 안내합니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗