SLLM 모델을 코랩 무료 GPU만으로도 돌리고 싶어 이것 저것을 찾아보고 실행시켜보았지만, 계속 RAM 메모리 부족으로 세션이 다운되었다.
양자화된 모델들을 사용하여도 똑같은 문제가 발생하여서, 찾아보던 중 QLoRA + koAlpaca 모델이 코랩 무료 gpu로도 돌아간다는 것을 확인했다
서치 과정에서, QLoRa 및 양자화라는 단어에 대해 잘 모르겠어서 정리!
양자화 (Quantization)
"모델 가중치와 활성화 함수 출력을 더 작은 비트 단위로 표현하도록 변환하는 것"
→ 데이터의 정보를 줄이고, 정밀도를 낮추되, 저장 및 연산하는데 필요한 용량을 감소시켜 효율성을 확보하는 경량화 방법론
- 동적 양자화 (dynamic quantization)
- 가중치만 양자화, 활성화 함수는 추론 시 동적으로 양자화
- 정적 양자화 (static quantization)
- 가중치와 활성화 함수를 모두 미리 양자화
▶동적 양자화와, 정적 양자화 모두 학습 완료된 모델을 양자화 하는 것, quantization loss와 inference latency 간의 trade-off를 피하기 어려움
- 양자화-인지 훈련 (quantization-aware training) = QAT
- 학습 당시부터 quantization-dequantization을 반복하는 fake-quantization으로 학습 이후 수행할 양자화를 미리 학습 당시부터 인지할 수 있도록 시뮬레이션
- 기존 모델을 그대로 사용하지 못하고 처음부터 재학습 필요
K-bit block-wise quantization
: 입력 텐서의 B개 값을 하나의 블록으로 간주, 각 블록의 absmax를 양자화 상수
LoRA(Low- Rank Adaptation)
이미 사전 학습이 완료된 LLM의 파라미터는 업데이트하지 않고 downstream task에 필요한 파라미터 업데이트, 변화량만 낮은 차원의 bottle-neck으로 계산해 순전파 시 더해주기만 하면 됨
W0+ΔW=W0+BA(W0∈Rd×k,B∈Rd×r,A∈Rr×k,r≪min(d,k))
W0 는 frozen, A, B는 trainable한 상태
모델이 크다고 finetuning까지 꼭 무겁게 할 필요는 없을 수도 있다는 가능성을 바탕으로 LoRA에서는 W만큼 의 intrinsic dimension이 낮을 수 있다는 가정 하에 가중치 업데이트까지 low-rank decomposition으로 대체
QLoRA
기존의 LoRA에 새로운 quantization을 더한 형태, 베이스 모델인 PLM의 가중치를 얼리고(frozen), LoRA 어댑터의 가중치만 학습 가능하게 하는 것은 LoRA와 동일, frozen PLM의 가중치가 4비트로 양자화되었다는 정도가 다른 점 -> QLoRA에서 주요히 소개되는 기술은 양자화 방법론이 추가
pre-trained model을 4bit로 quantize하는 high-precisoin technique -> QLoRA 사용시, 큰 모델들을 GPU 한 개로 fine-tuning가
4-bit NormalFloat
QLoRA의 경우, PLM 가중치가 4비트로 양자화된 채 저장 -> NormalFloat
단순한 FP4나 in4가 아닌 새로 개발해 제안한 4-bit NormalFloat를 사용
NF4는 quantile quantization라는 개념에 기반
* quantile quantization: 양자화 대상이 되는 데이터 집합의 누적 분포를 통해 해당 분포의 분위를 구하고 이를 양자화 구간으로 간주, 이후 데이터 양자화시 각 양자화 구간에 할당되는 데이터의 개수가 동일하도록 보장
-> 해당 데이터의 분포에 따라 비선형적인 구간을 가질 확률이 높고, 데이터의 분포가 달라질때마다 새로 계산해주어야 함(비용 높음)
모든 데이터 집합의 분포가 동일하게 고정된다면 확률 분포 추정, 분위 분할 등의 과정을 모두 생략하고 이미 정해진 양자화 구간에 데이터 포인트들을 맵핑하면 됨
NF4 데이터 타입이 경량화의 핵심인 이유
1) 분위 양자화를 통해 데이터 이산화, 정보의 분포를 최대한 이상적으로 유지
2) 계산 비용을 줄임
사전 학습된 언어 모델의 가중치는 초기화, 업데이트, 정규화 등의 과정을 거쳐 평균0, 0이고 표준편차가 인 zero-centered 정규 분포를 가짐 -> 분포를 통일해 표준화하면, 분위, 양자화에 적합한 단일 고정 분포로 변환 가능 -> NF4
참고
https://velog.io/@kaiba0514/QLoRA-QLoRA-Efficient-Finetuning-of-Quantized-LLMs
Dettmers, Tim, et al "Qlora: Efficient finetunning of quantized llms." arXiv preprint arXiv: 2305.14314(2023)
'개발' 카테고리의 다른 글
[Pose estimation] Yolo VS Mediapipe (0) | 2024.05.07 |
---|---|
[Linux] 오래된 컴퓨터에서 wifi 5ghz 연결 (0) | 2024.04.14 |
인식 안되는 USB 포맷 / 안 쓰는 컴퓨터에 리눅스 깔기 (0) | 2024.04.13 |
WSL 저장공간 관리 (0) | 2024.03.31 |
zip.part ~ 로 이루어진 파일 병합하기 (0) | 2024.03.31 |