์ธ๊ณต์ง๋ฅ
LoRA, QLoRA ๋ฐ QA-LoRA: ๋ํ ์ธ์ด ๋ชจ๋ธ์์ ์ ์ ํ๋ ฌ ๋ถํด๋ฅผ ํตํ ํจ์จ์ ์ธ ์ ์์ฑ

대형 언어 모델(Large Language Models, LLM)은 인간과 같은 텍스트를 이해하고 생성하는 능력에서 독특한 지위를 차지했습니다. LLM의 강력한 성능은 그들의 거대한 크기에서 비롯되며, 종종 수십억 개의 매개변수를 가지고 있습니다. 그러나 이러한 거대한 규모는 모델을 특정 작업이나 도메인에 맞게 조정할 때 어려움을 겪을 수 있습니다. LLM을 관리하는 전통적인 방법은 모든 매개변수를 미세 조정하는 것이며, 이는 계산 및 재정적 부담을 가중시킵니다.
이전 기사에서 우리는 LLM을 특정 요구 사항에 맞게 미세 조정하는 방법에 대해 살펴보았습니다. 우리는 지시 기반 미세 조정, 단일 작업 미세 조정 및 매개변수 효율적인 미세 조정과 같은 다양한 미세 조정 방법에 대해 논의했습니다. 이러한 방법은 모두 고유한 접근 방식을 가지고 있으며, transformer 아키텍처는 LLM의 핵심입니다. 그러나 이러한 방법은 계산 및 메모리 요구 사항이 많아 실용적이지 않을 수 있습니다.
위 이미지는 다양한 대형 언어 모델의 매개변수 수를 나타냅니다. 특히, PaLM, BLOOM 등이 있습니다.
최근 몇 년 동안 더 큰 모델이 개발되었습니다. 그러나 이러한 거대한 모델을 표준 시스템에서 미세 조정하는 것은 전문적인 최적화 기술 없이 불가능합니다.
마이크로소프트에서 제시한 저위 행렬 적응(LoRA)은 이러한 문제를 완화하고 LLM을 더 접근하기 쉽고 조정하기 쉽게 만드는 것을 목표로 합니다.
LoRA의 핵심은 모델을 조정하는 데 필요한 매개변수의 수를 줄이는 것입니다. 전통적인 미세 조정 방법과 달리, LoRA는 모델의 가중치를 동결하고 transformer 아키텍처의 각 레이어에 학습 가능한 저위 행렬을 도입합니다. 이 접근 방식은 미세 조정 과정을 더 효율적으로 만듭니다.
LLM 조정 전략의 진화
LLM 조정의 역사에 대해 살펴보면, 여러 전략이 사용되어 왔습니다. 초기에는 미세 조정을 위한 전통적인 방법이 사용되었습니다. 그러나 모델의 크기가 커짐에 따라, 이러한 방법은 계산 요구 사항이 많아졌습니다.
다음 전략은 부분 미세 조정으로, 모델의 매개변수 중 일부만 미세 조정하는 방법입니다. 이 방법은 계산 부담을 줄이지만, 여전히 모델의 크기에 비해 효율적이지 못했습니다.
LoRA 소개
행렬의 랭크는 행렬의 열에 의해 생성된 차원을 나타냅니다. 랭크는 행렬의 고유한 행 또는 열의 수로 결정됩니다.
- 전체 랭크 행렬: 랭크는 행렬의 행과 열 중 작은 쪽과 일치합니다.
- 저위 랭크 행렬: 랭크는 행렬의 행과 열 중 작은 쪽보다 작습니다.
대형 모델은 도메인에 대한 광범위한 이해를 가지고 있습니다. 그러나 특정 작업에 대한 미세 조정은 이러한 이해의 작은 부분만을 강조하는 경우가 많습니다. 여기서 LoRA가 빛을 발합니다. LoRA는 가중치 조정 행렬이 저위 랭크 행렬일 수 있다고 제안합니다. 따라서 LoRA는 이 행렬을 두 개의 작은 랭크 행렬로 분해하여 미세 조정 과정을 더 효율적으로 만듭니다.
Transformer에 LoRA 적용
LoRA는 신경망에서 특정 가중치 행렬에 초점을 맞춰서 훈련 부담을 줄입니다. Transformer 아키텍처에서, 일부 가중치 행렬은 자기 주의 메커니즘과 관련이 있으며, Wq, Wk, Wv 및 Wo와 같은 두 개의 다중 계층 퍼셉트론(MLP) 모듈이 있습니다.
LoRA의 수학적 설명
LoRA의 수학적 설명을 살펴보겠습니다:
- 미리 훈련된 가중치 행렬 :
- 미리 훈련된 가중치 행렬 의 차원은 입니다. 즉, 행렬에는 개의 행과 개의 열이 있습니다.
- 저위 랭크 분해:
- 전체 행렬 을 직접 업데이트하는 대신, 저위 랭크 분해 접근 방식을 제안합니다.
- 업데이트 는 두 개의 행렬 와 의 곱으로 나타낼 수 있습니다.
- 의 차원은 입니다.
- 의 차원은 입니다.
- 훈련:
- 훈련 과정에서, 는 변경되지 않습니다. 이것은 “가중치 동결”이라고 합니다.
- 와 는 훈련 가능한 매개변수입니다. 즉, 훈련 과정에서 와 를 조정하여 모델의 성능을 개선합니다.
- 곱셈과 덧셈:
- 모두 와 업데이트된 (즉, 와 의 곱)는 동일한 입력 에 의해 곱해집니다.
- 이 곱셈의 결과는 서로 더해집니다.
- 이 과정은 다음 방정식으로 요약됩니다: 여기서 는 입력 에 대한 업데이트된 출력을 나타냅니다.
이 방법은 대형 가중치 행렬을 업데이트하는 더 효율적인 방법을 제공하며, 계산 효율성과 메모리 사용량에서 이점을 제공합니다.
초기화 및 스케일링:
모델을 훈련할 때, 매개변수를 초기화하는 방법은 훈련 과정의 효율성과 효과에 큰 영향을 미칩니다. LoRA에서 가중치 행렬을 업데이트하는 경우:
- 행렬 와 의 초기화:
- 행렬 : 이 행렬은 임의의 가우시안 값으로 초기화됩니다. 가우시안 초기화를 사용하는 이유는 대칭을 깨뜨리기 위해서입니다. 즉, 동일한 레이어의 다른 뉴런은 초기 가중치가 다르기 때문에 다른 특징을 학습합니다.
- 행렬 : 이 행렬은 0으로 초기화됩니다. 이를 통해 업데이트된 는 훈련 시작 시 0으로 초기화됩니다. 이는 모델의 행동이 훈련 시작 시 급격히 변경되지 않도록 합니다.
- 업데이트 출력의 스케일링:
- 업데이트 을 계산한 후, 그 출력은 의 배수로 스케일링됩니다. 여기서 는 상수입니다. 스케일링을 통해 업데이트의 크기를 제어합니다.
- 스케일링은 랭크 이 변경될 때 특히 중요합니다. 예를 들어, 더 높은 정확도를 위해 랭크를 증가시키는 경우(계산 비용을 희생하여), 스케일링을 통해 다른 하이퍼파라미터를 조정할 필요가 없습니다. 이는 모델에 안정성을 제공합니다.
LoRA의 실제 영향
LoRA는 효율적으로 LLM을 특정 예술 스타일로 조정하는 데 잠재력을 보여주었습니다. 이는 Greg Rutkowski의 예술 스타일을 모방하는 모델을 조정하는 데 특히 두드러졌습니다.
LoRA는 LLM을 더 접근하기 쉽게 만들고, 이론적 발전과 실제 응용 사이의 격차를 좁히는 데 중요한 역할을 할 수 있습니다. 계산적 장벽을 완화하고 모델 조정을 더 효율적으로 만듦으로써, LoRA는 실제 시나리오에서 LLM을 더广泛하게 사용하는 데 기여할 수 있습니다.
QLoRA (Quantized)
LoRA는 저장 공간을 줄이는 데 도움이 되지만, 여전히 모델을 로드하기 위해大量한 GPU가 필요합니다. 여기서 QLoRA(Quantized LoRA)가 등장합니다. QLoRA는 LoRA와 Quantization을 결합하여 더智能한 접근 방식을 제공합니다.
일반적으로, 가중치 매개변수는 32비트 형식(FP32)으로 저장되며, 각 요소는 32비트의 공간을 차지합니다. 만약 동일한 정보를 8비트 또는 4비트로 압축할 수 있다면? 이것이 QLoRA의 핵심 아이디어입니다. Quantization은 연속적인 무한한 값을 더 작은 집합의 이산적인 유한한 값으로 매핑하는 과정입니다. LLM의 경우, 모델의 가중치를 더 높은 精度의 데이터 형식에서 더 낮은 精度의 데이터 형식으로 변환하는 것을 의미합니다.
QLoRA의 간단한 설명은 다음과 같습니다:
- 초기 Quantization: 먼저, LLM을 4비트로 Quantization하여 메모리 사용량을 크게 줄입니다.
- LoRA 훈련: 그 다음, LoRA 훈련을 수행하지만, 표준 32비트 精度(FP32)에서 수행합니다.
QLoRA에서 훈련을 마친 후, 가중치를 높은 精度 형식으로 되돌려야 합니다. 이는 정확도 손실과 프로세스 속도 향상을 위한 최적화가 필요합니다.
제안된 해결책은 가중치 행렬을 더 작은 세그먼트로 나누고, 각 세그먼트에 Quantization과 저위 랭크 적응을 개별적으로 적용하는 것입니다. QA-LoRA라는 새로운 방법은 Quantization과 저위 랭크 적응의 이점을 결합하여 효율적이고 효과적인 모델을 제공합니다.
결론
이 기사에서 우리는 LLM의 거대한 매개변수 크기에서 비롯되는 문제를 살펴보았습니다. 우리는 전통적인 미세 조정 방법과 그에 따른 계산 및 재정적 부담에 대해 논의했습니다. LoRA는 미세 조정을 위한 새로운 접근 방식을 제공하며, 모델을 전혀 다시 훈련하지 않고도 미세 조정을 수행할 수 있습니다. 우리는 또한 QLoRA(Quantized LoRA)에 대해 간략히介绍했습니다. QLoRA는 LoRA와 Quantization을 결합하여 모델의 메모리 사용량을 줄이는 동시에 훈련 精度를 유지합니다. 이러한 기술을 통해, 실제 시나리오에서 LLM을 더 쉽게 사용하고, 이론적 발전과 실제 응용 사이의 격차를 좁힐 수 있습니다.
이러한 전략은 특정 작업에 맞게 LLM을 조정하는 것과 미세 조정 및 배포 프로세스가 계산 및 저장 자원에 과도한 부담을 주지 않는 것을 균형 있게 조정하는 데 사용됩니다.




















