6GB 노트북 GPU에서 모델 양자화하기
RTX 3050 노트북 GPU에 대규모 언어 모델(LLM)을 올려보려고 시도했습니다. 이 카드는 VRAM이 6GB뿐입니다. 4비트 양자화가 어떤 모델에서 작동하고 어떤 모델에서 실패하는지 확인하고 싶었습니다.
세 가지 모델을 양자화하기 위해 하나의 스크립트를 사용했습니다:
- Phi-3.5-mini (3.8B)
- Llama-3.2-3B
- Qwen2.5-3B (VibeThinker)
결과: Phi와 Llama는 잘 작동했습니다. Phi는 34분 만에 7.6GB에서 2.2GB로 줄어들었습니다. Llama와 VibeThinker도 비슷한 경로를 따랐습니다. 이 모델들은 쉽게 들어갔습니다.
그다음 Qwen2.5-7B를 시도했습니다. 실패했습니다. 두 번째 레이어에서 Out of Memory 오류와 함께 프로세스가 중단되었습니다.
실패 원인: GPTQ 양자화는 각 레이어마다 Hessian 행렬을 생성합니다. 7B 모델의 경우, 이 계산에는 6GB 카드가 제공하는 것보다 더 많은 메모리가 필요합니다. 몇 가지 해결 방법을 시도해 보았습니다:
- 더 작은 캘리브레이션 데이터셋: 변화 없음.
- Hessian을 CPU로 오프로딩: 더 오래 지속되었지만 여전히 충돌했습니다.
- GPTQ 대신 AWQ 사용: 동일한 지점에서 충돌했습니다.
- CPU만 사용: 작동은 하지만 너무 느립니다. 레이어당 약 16분이 소요됩니다.
소형 GPU를 위한 핵심 요약:
- 모델 크기가 약 3배 감소할 것으로 예상하십시오.
- GPU 양자화를 위해서는 파라미터 수를 30억
40억 개(3B4B)로 제한하는 것을 목표로 하십시오. - KV 버젯(KV budget)을 주의 깊게 살피십시오. 파일 크기가 비슷하더라도 추론 중에 사용되는 메모리는 다를 수 있습니다.
- 양자화는 서빙(serving)보다 더 많은 메모리를 사용합니다. 프로세스 진행 중에 시스템 RAM을 모니터링하십시오.
모델 비교 (W4A16): • Phi-3.5-mini: 2.27 GB | 68.7 tok/s • Llama-3.2-3B: 2.26 GB | 66.0 tok/s • VibeThinker-3B: 2.07 GB | 43.9 tok/s
양자화 후 세 모델 모두 기본적인 수학 및 소수(prime number) 로직을 정확하게 수행했습니다.
선택 사항 학습 커뮤니티: https://t.me/GyaanSetuAi