QLoRA
이 페이지는 자동화 문맥에서 자주 쓰이는 QLoRA의 뜻과 쓰임을 고급 난이도 기준으로 정리한 AI 용어사전 항목입니다. 정의와 맥락, 관련 용어 5개 순서로 묶었으니, 아래 설명을 먼저 읽고 연결된 개념과 글까지 이어서 보면 이해가 빨라집니다.
QLoRA(Quantized Low-Rank Adaptation)는 기본 모델의 가중치를 낮은 비트 수로 저장하고, 여기에 붙인 LoRA 어댑터를 학습시키는 파인튜닝 방법입니다. 큰 언어 모델을 작업에 맞게 조정할 때 필요한 메모리를 줄이는 데 목적이 있습니다. 원래 제안된 방식은 4비트로 양자화한 기본 가중치를 고정하고 추가한 저랭크 가중치를 학습합니다.
LoRA에 양자화를 더하는 이유
모델을 학습할 때는 가중치 파일을 올리는 공간 외에도 중간 계산값, 기울기, 가중치 갱신에 쓰는 상태를 저장할 공간이 필요합니다. 전체 파인튜닝에서는 기본 가중치까지 조정하므로 이런 정보가 큰 부담이 됩니다. LoRA는 기본 모델을 고정하고 작은 추가 행렬을 학습해 조정할 파라미터 수를 줄입니다. 그래도 기본 모델 자체를 메모리에 올려야 하므로 그만큼의 메모리는 여전히 필요합니다.
QLoRA는 이 기본 모델이 차지하는 메모리도 줄입니다. QLoRA 원 논문은 4비트로 저장한 기본 모델을 거쳐 LoRA 어댑터로 기울기를 전달하는 방법을 제안했습니다. 계산에는 기본 모델을 사용하지만 학습 중 갱신하는 대상은 추가한 가중치입니다. 기본 가중치를 동결했다는 말은 모델을 계산에서 제외한다는 뜻이 아니라, 그 가중치의 값을 학습으로 갱신하지 않는다는 뜻입니다.
문장을 분류하는 모델을 특정 회사의 문의 유형에 맞추는 상황을 생각해 볼 수 있습니다. 한국어를 처리하는 기본 모델에 문의와 올바른 분류의 예시를 주고 어댑터를 학습합니다. LoRA와 QLoRA 모두 이런 작업에 사용할 수 있지만, QLoRA는 기본 모델을 양자화해 메모리 부담을 더 줄입니다. 어떤 방식이 분류를 더 정확하게 하는지는 데이터와 설정에 따라 달라지므로, 같은 문의 묶음으로 비교해야 합니다.
4비트 저장과 실제 계산을 구분한다
4비트로 저장한다는 말과 모든 계산을 4비트로 한다는 말은 다릅니다. QLoRA에서는 양자화한 가중치를 계산에 필요한 형태로 복원해 사용합니다. Hugging Face의 양자화 문서도 가중치 양자화 설정과 계산 자료형 설정을 따로 설명합니다. 예를 들어 기본 가중치를 4비트로 불러오면서 계산에는 bfloat16을 사용하도록 설정할 수 있습니다. 저장 정밀도만 보고 학습 중 모든 값의 자료형을 판단하면 안 됩니다.
원 논문에는 메모리를 아끼기 위한 세 가지 구성이 등장합니다. NF4(NormalFloat 4)는 정규분포를 따르는 가중치를 표현하는 데 맞춘 4비트 자료형입니다. 이중 양자화는 가중치를 양자화할 때 쓰는 상수도 양자화해 추가 공간을 줄입니다. 페이지드 옵티마이저는 학습 중 메모리 사용량이 일시적으로 커지는 상황을 관리합니다. 이들은 같은 역할을 반복하는 이름이 아니라 가중치 표현, 부가 정보, 학습 상태를 각각 다룹니다.
실제 구현에서는 어댑터를 붙일 층과 랭크도 결정합니다. 랭크는 LoRA의 추가 행렬 크기와 관련된 설정이며, 값이 커지면 학습할 파라미터와 메모리 사용량이 늘어납니다. PEFT의 양자화 학습 안내는 양자화한 모델을 학습용으로 준비한 뒤 LoRA를 추가하는 흐름을 설명합니다. QLoRA 방식의 설정으로 여러 선형 층에 어댑터를 붙이는 예도 제시합니다. 모델 구조가 다르면 대상 층의 이름과 지원 여부도 달라질 수 있습니다.
이 설정들은 학습 목표와 별개입니다. QLoRA는 어떤 정답을 가르칠지보다 어떤 가중치를 어떤 정밀도로 저장하고 조정할지를 다룹니다. 같은 QLoRA 설정으로도 요약 예시를 학습할 수도 있고, 분류 결과를 학습할 수도 있습니다. 좋은 학습 데이터를 만드는 일과 메모리를 줄이는 일은 각각 필요합니다. 어댑터가 작다는 이유만으로 적은 데이터가 언제나 충분하다고 볼 수는 없습니다.
메모리 절약의 범위와 사용 조건
원 논문은 특정 모델과 실험 조건에서 메모리를 줄이면서 전체 파인튜닝에 가까운 작업 성능을 얻었다고 보고했습니다. 그 결과를 모든 모델과 데이터에 그대로 적용할 수는 없습니다. 양자화는 원래 값을 근사하므로 오차가 생길 수 있고, 어댑터를 붙이는 범위나 학습 설정도 결과에 영향을 줍니다. 필요한 성능을 유지했는지는 실제로 사용할 작업으로 확인해야 합니다.
가중치가 메모리에 들어간다고 학습도 같은 공간에서 끝나는 것은 아닙니다. 긴 문장을 한 번에 처리하거나 여러 예시를 묶어 학습하면 중간 계산에 필요한 메모리가 늘어납니다. 배치 크기, 입력 토큰 수, 어댑터 설정을 함께 봐야 합니다. 양자화한 기본 모델의 크기만으로 필요한 GPU 메모리를 계산하면 부족할 수 있습니다. 학습 가능 여부와 학습 속도도 따로 확인해야 합니다.
추론을 위해 모델을 양자화하는 작업과도 구분합니다. 모델 파일을 4비트로 줄여 불러온 뒤 바로 응답만 생성했다면 어댑터를 추가 학습한 것이 아닙니다. QLoRA에서는 학습 데이터를 사용해 어댑터를 조정하는 과정이 있습니다. 반대로 학습을 마친 어댑터를 사용할 때도 대응하는 기본 모델과 설정이 필요합니다. 학습 방식과 배포 때 사용하는 모델 형식을 구분해 기록하면 재사용할 때 생기는 혼동을 줄일 수 있습니다.
QLoRA를 적용하려면 기본 모델의 구조, 양자화 구현, 학습 도구가 서로 맞아야 합니다. PEFT 문서의 예제는 특정 라이브러리 조합을 설명하므로 다른 실행 환경에서 그대로 지원된다고 가정해서는 안 됩니다. 모델과 어댑터를 함께 보관할 때 기본 모델의 식별자와 양자화 설정도 남기는 편이 좋습니다. 이렇게 해야 다시 불러온 결과가 학습할 때 의도한 구성과 같은지 확인할 수 있습니다.
관련 용어
QLoRA와 함께 자주 언급되는 개념들입니다. 비슷한 말처럼 보여도 역할과 쓰임은 다를 수 있습니다.
