sLLM(Small Language Model) 파인튜닝은 소규모 언어 모델에 특정 도메인이나 작업에 특화된 데이터를 추가 학습시켜 성능을 향상시키는 과정이다.
일반적으로 파인튜닝은 전체 모델을 미세 조정하거나 일부 레이어만 학습시키는 방식으로 이뤄지며, 효율성과 과적합 방지를 고려해 설정된다.
LoRA와 같은 파라미터 효율적 튜닝 기법을 활용하면 적은 자원으로도 효과적인 성능 개선이 가능하다.
양자화(Quantization)는 딥러닝 모델의 크기를 줄이기 위해 파라미터를 더 작은 데이터 타입(예: float32 → int8)으로 변환하는 기법이다.
대표적인 타입으로 fp16, bf16 등이 있으며, 이들은 저장 공간을 줄이면서도 계산 속도와 효율성을 개선할 수 있다.
bf16은 fp32와 동일한 표현 범위를 갖되 정밀도는 낮아지는 절충안이며, 정수 기반 양자화(int8)는 크기와 속도 면에서 가장 효율적이나 정보 손실 가능성이 크다.
✅ 좀 더 자세히:
float16은 float32보다 크기는 절반으로 줄지만, 표현할 수 있는 숫자의 범위와 정밀도가 떨어져 정보 손실이 클 수 있어. 이를 보완하기 위해 구글 브레인이 제안한 bfloat16(bf16)은 float32와 동일한 범위(지수부 8bit)를 유지하면서 정밀도(가수부)를 줄인 형식으로, 정밀도는 낮아지지만 범위 손실 없이 더 넓은 값을 표현할 수 있어.
그리고 더 나아가 8비트 정수 기반 양자화(int8)를 사용하면 모델 크기와 연산량을 크게 줄일 수 있지만, 정수는 부동소수점보다 훨씬 표현력이 떨어지기 때문에, 성능 유지와 정보 손실 사이의 균형을 맞추는 것이 핵심이야.
INT8 양자화는 딥러닝 모델의 파라미터와 활성화 값을 32비트 부동소수점(fp32)에서 8비트 정수(int8)로 변환하여, 모델 크기를 약 75% 줄이고 추론 속도를 2~4배 향상시키는 기법이다.
Absmax Quantization은 가장 단순한 양자화 방식으로, 텐서의 절대값 최대값을 기준으로 스케일 팩터를 계산하고 모든 값을 정수로 변환한다. 계산이 간단하고 대칭적인 데이터 분포에 적합하지만, 이상치에 매우 민감하여 전체 정밀도가 낮아질 수 있다.
이를 보완하기 위해, 텐서를 **작은 블록 단위(K개씩)**로 나누고 각 블록에서 개별적으로 최대 절대값을 계산해 양자화를 수행하는 방식이 사용된다. 이렇게 하면 이상치의 영향을 국소적으로 제한하여 더 정밀한 양자화가 가능하다.
**PEFT(Parameter-Efficient Fine-Tuning)**는 대형 모델을 효율적으로 미세조정하기 위해 전체 파라미터가 아닌 일부 구성 요소만 학습하는 방법이다.
대표적으로 LoRA, 어댑터 튜닝, 프롬프트 튜닝, P-튜닝 등이 있으며, 기존 모델은 고정한 채 작은 모듈이나 입력 프롬프트만 학습해 자원 소모를 줄인다.
이러한 방식은 성능은 유지하면서도 메모리, 계산 비용, 학습 시간 측면에서 훨씬 효율적이다.
LoRA는 "원래 모델은 건드리지 않고, 작고 가벼운 학습 가능한 보조 장치(Adaptor)를 덧붙이는 방식"으로, 저비용 고효율 파인튜닝을 가능하게 해주는 기술이다.
“기존 모델의 모든 파라미터를 바꾸지 않고, 작은 두 개의 행렬만 새로 학습하자!”
학습할 때는 작은 2개 행렬만 학습하고, 추론할 때 고정시켜놓은 큰 행렬 쓰기! why) 도메인 특성만 뽑아내면 되니까

즉, 원래 weight로 만든 출력에 BAx를 더해서 보정해주는 방식이야. 여기서 는 학습되는 부분이야.
예를 들어 d=100이고 r=8이라면, 원래 weight는 10,000개 파라미터지만 A와 B는 800 + 800 = 1,600개만 학습하면 되지!
r (rank): A, B 행렬의 중간 차원. 작게 설정할수록 학습 파라미터 수가 줄지만 표현력은 감소.
alpha: 학습된 LoRA 결과의 중요도를 얼마나 반영할지 조절.
적용 위치: 트랜스포머 구조 안에서 LoRA를 어느 linear layer에 적용할지도 선택해야 해.