https://product.kyobobook.co.kr/detail/S000214934825
한 권으로 끝내는 실전 LLM 파인튜닝 | 강다솔 - 교보문고
한 권으로 끝내는 실전 LLM 파인튜닝 | 실무 현장에서 꼭 필요한 파인튜닝, PEFT, vLLM 서빙 기술을 직접 실습하면서 배워 보자!AI 기술의 최전선에서 배우는 LLM 파인튜닝의 모든 것! 이론적 토대부터
product.kyobobook.co.kr
"한 권으로 끝내는 실전 LLM 파인튜닝" 교재를 활용해 3주(주말 제외) 동안 진행 되는 온라인 스터디
양자화(Quantization)란?
양자화란, 정확하고 세밀 단위(고정밀 형식)로 표현된 값에서 단수화한 단위(저정밀 형식)의 값으로 변환하는 기술이다.
예를 들어, π(파이)라고 불리는 원주율은 '3.141592653...'이지만, 흔히 '3.14'라고 불리는 것처럼 근사적으로 표현하는 방식도 양자화의 예시 중 하나이다. 또한, 기존 원주율인 '3.141592653...' 과 '3.14' 간의 오차인 '0.00592653...'을 양자화 오차(Quantization Error)라고 한다.
LLM(대규모 언어 모델)에서는 일반적으로 32비트 부동소수점(FP32) 또는 16비트 부동소수점(FP16)과 같은 고정밀 데이터의 가중치와 활성화 값을 8비트 정수(INT8)와 같은 정밀도가 낮은 데이터로 변환하기 위해 사용된다.
부동소수점 FP32, FP16, BF16 비교
관련 논문 제목 : A Study of BFLOAT16 for Deep Learning Training
논문 링크 : https://arxiv.org/abs/1905.12322
A Study of BFLOAT16 for Deep Learning Training
This paper presents the first comprehensive empirical study demonstrating the efficacy of the Brain Floating Point (BFLOAT16) half-precision format for Deep Learning training across image classification, speech recognition, language modeling, generative ne
arxiv.org
부동소수점 표현 방식
- Sign(부호용) : 모든 부동소수점 표현방식은 1bit를 부호용(+/-)으로 사용
- Range(범위) 또는 Expoential(지수) : 수의 범위, 즉 자릿수를 표현
- Precision(정밀도) 또는 Mantissa(가수, 유효숫자) : 자릿수를 제외한 수의 생김새를 표현
- FP32 : 32비트 부동소수점, 일반적으로 사용
- 1비트: 부호(Sign)
- 8비트: 지수(Exponent)
- 23비트: 가수(Mantissa)
- 장점 : 높은 정밀도와 표현 범위, 계산 오류가 적어 안정적인 학습 가능
- 단점 : 메모리 사용량이 크고, 계산 속도가 느림
- FP16 : 16비트 부동소수점, 딥러닝에서 연산 효율성을 높이기 위해 사용
- 1비트: 부호(Sign)
- 5비트: 지수(Exponent)
- 10비트: 가수(Mantissa)
- 장점 : 메모리 사용량 감소 및 연산속도 증가, 특히 GPU의 혼합 정밀도 학습(mixed precision training)에서 활용
- 단점 : 낮은 정밀도로 인해 수치 안정성 문제가 발생, 작은 값(소수점 이하)을 정확히 표현하기 어려움
- BF16 :
16비트 부동소수점, Google에서 개발한 부동소수점 형식, FP16의 대안으로 설계
FP32와 동일한 지수(Exponent) 범위를 유지하며, 학습 안정성을 보장하면서도 메모리 효율을 제공- 1비트: 부호(Sign)
- 8비트: 지수(Exponent) (FP32와 동일)
- 7비트: 가수(Mantissa)
- 장점 : FP32와 동일한 지수 범위를 제공해 수치 안정성 유지, FP16보다 안정적이고 빠른 학습 가능
- 단점 : FP32보다 낮은 정밀도로 인해 일부 세부 연산에서 손실 발생 가능
형식 | 비트 수 | 부호(Sign) | 지수(Exponent) | 유효숫자(Mantissa) | 정밀도 | 메모리 효율성 | 계산속도 |
FP32 | 32비트 | 1비트 | 8비트 | 23비트 | 높음 | 낮음 | 느림 |
FP16 | 16비트 | 1비트 | 5비트 | 10비트 | 낮음 | 높음 | 빠름 |
BF16 | 16비트 | 1비트 | 8비트 | 7비트 | 중간 | 높음 | 빠름 |
효율적인 FP32, FP16, BP16 사용 방법
- FP32 : 일반적으로 모델 학습에 사용, 정밀도가 높아 모델의 정확도를 높일 수 있지만, 연산속도가 느리고 메모리 사용량이 크기 때문에 대규모 모델 학습에 제한적
- FP16 : 딥러닝 추론(inference) 분야에서 많이 사용, FP32 대비 연산속도가 빠르고 메모리 사용량이 적지만, 정밀도가 낮아서 모델의 정확도가 떨어질 수 있으므로 학습에 적합하지 않다
- BF16 : 인공지능 분야에서 주로 사용, FP32보다 메모리 사용량이 작지만 정밀도가 더 낮다. 모델 학습 시 FP32 대비 메모리 사용량을 약 50%줄일 수 있으며, 정확도 손실이 크지 않은 경우에 사용
결론. 모델 학습시 정밀도가 높은 FP32, 추론시 FP16을 사용(혼합 정밀도 학습). 모델 특성에 따라 BF16이나 다른 형식 고려
혼합 정밀도 학습 (Mixed Precision Training)
논문 제목 : Mixed Precision Training
논문 링크 : https://arxiv.org/abs/1710.03740
Mixed Precision Training
Deep neural networks have enabled progress in a wide variety of applications. Growing the size of the neural network typically results in improved accuracy. As model sizes grow, the memory and compute requirements for training these models also increases.
arxiv.org
위와 같이, FP16, FP32를 혼합하여 모델학습에 사용하는 방식을 Mixed Precision Training이라고 한다.
학습에 사용되는 메모리 사용량을 최적화하여 학습을 가속화 하는 동시에 모델의 정확도를 유지할 수 있는 방법이다.
- 모델의 가중치(weight)는 FP32형식으로 저장
- 입력 데이터는 FP16 형식으로 변환하여 처리
- FP16형식으로 처리하는 도중에 정밀도가 손실될 가능성이 존재하므로, 일정 주기마다 가중치를 FP32로 복사하여 정밀도를 보정
- 역전파(backpropagation) 과정에서도 FP16을 사용하여 연산 속도를 높임
- 학습 이 끝난 후, 모델의 가중치를 다시 FP32로 변환하여 저장
FP32만을 사용할 때보다 많은 메모리 사용량을 줄이기에, 대규모 모델 학습에 사용되는 방식
QLoRA란?
논문 제목 : QLoRA : Efficient Finetuning of Quantized LLMs
논문 링크 : https://arxiv.org/abs/2305.14314
QLoRA: Efficient Finetuning of Quantized LLMs
We present QLoRA, an efficient finetuning approach that reduces memory usage enough to finetune a 65B parameter model on a single 48GB GPU while preserving full 16-bit finetuning task performance. QLoRA backpropagates gradients through a frozen, 4-bit quan
arxiv.org
QLoRA는 기존의 LoRA에 새로운 양자화(Quantization) 방법을 적용한 파인튜닝 기법이다. 사전 훈련된 모델을 4비트로 양자화 한 다음, 소량의 학습 가능한 LoRA(Low Rank Adapter) 가중치를 추가하여 튜닝한다. 이 가중치들이 양자화된 가중치를 통해서 Gradient를 역전파하여 조정하게 되는 방식이다.
QLoRA의 주요 특징
- 4-bit NormalFloat (NF4) : 정규 분포 데이터에 대한 정보 이론적으로 최적인 양자화 데이터 유형
- Double Quantization : 양자화 상수를 양자화하여 평균 메모리 발자국을 줄이는 방법
- Paged Optimization : Gradient 체크포인트 메모리 스파이크를 피하는 방법
4-bit NormalFloat (NF4)
NF4는 QLoRA의 핵심 기술로, 모델 가중치를 4비트로 양자화 하여 저장하는 방식을 의미, QLoRA에서는 4비트의 NF4를 사용하여 데이터 크기를 대폭 감소
NF4는 데이터의 분포를 고려하여 그룹별로 다른 스케일링 값을 사용하는 양자화 방식인 분위 양자화(Quantile Quantization)를 진행
- data type value의 z-score 계산
- 가운데 bin에 0을 추가하여 양쪽 set을 concatenation 진행
- absmax를 찾아 normalization을 진행
Double Quantization
Double Quantization은 양자화를 한 번 더 수행하는 기법이다. QLoRA에서는 모델 가중치를 양자화할 때 사용하는 양자화 상수(Quantization Constant)를 추가로 양자화 하여 저장 공간을 더욱 줄였다. 해당 방식을 통해 모델 전체의 메모리 사용을 최소하 하였고, 결과적으로 QLoRA는 기존의 4비트 양자화보다 더 적은 비트로 모델을 표현할 수 있게 되었다.
Paged Optimization
Paged Optimization은 GPU 메모리(VRAM)가 부족할 때, 일부 데이터를 CPU 메모리(RAM)에 저장하여 사용하는 기법이다. 가상 메모리처럼 작동하며, GPU의 VRAM이 부족해 OOM(Out-of-Memory) 에러가 발생 시, 자동적으로 optimizer state(옵티마이저 상태)를 CPU RAM으로 이동할 수 있도록 하고, optimizer update(옵티마이저 업데이트)에서 해당 데이터가 필요한 경우 다시 optimizer state를 GPU로 옮기며 안정적으로 학습을 진행할 수 있도록 도와준다.
이를 통해 제한된 VRAM환경에서도 대형 모델을 훈련시킬 수 있는 가능성을 제공한다.
참고
https://m.post.naver.com/viewer/postView.nhn?volumeNo=19437431&memberNo=20717909
인공지능에서 양자화 기술이 중요한 이유는?
[BY 퀄컴 코리아] - 정확도를 잃지 않으면서 머신 러닝 모델의 크기를 줄여줘- 우리 주변을 둘러보면 인...
m.post.naver.com
https://velog.io/@nellcome/QLoRA%EB%9E%80
QLoRA란?
양자화부터 QLoRA까지
velog.io
https://velog.io/@kaiba0514/QLoRA-QLoRA-Efficient-Finetuning-of-Quantized-LLMs
[QLoRA] QLoRA: Efficient Finetuning of Quantized LLMs
야! 너도 챗지피티 만들 수 있어! QLoRA 논문 리뷰
velog.io
'DL > LLM&RAG' 카테고리의 다른 글
한 권으로 LLM 온라인 스터디 1기 Day_15 - vLLM (0) | 2025.01.21 |
---|---|
한 권으로 LLM 온라인 스터디 1기 Day_14 - QLoRA 실습 (1) | 2025.01.21 |
한 권으로 LLM 온라인 스터디 1기 Day_12 - 효율적인 파라미터 튜닝(PEFT) - LoRA 개념 및 실습 2장 (1) | 2025.01.21 |
한 권으로 LLM 온라인 스터디 1기 Day_11 - 효율적인 파라미터 튜닝(PEFT) - LoRA 개념 및 실습 1장 (0) | 2025.01.20 |
한 권으로 LLM 온라인 스터디 1기 Day_10 - 다중 GPU를 활용한 Llama3.1-8B-instruct 파인튜닝 (2) | 2025.01.20 |