로컬에서 LLM을 돌려보려고 ollama를 쓰고 있는데 GPU 메모리가 부족하다면서 자꾸 죽습니다. 그래픽카드는 RTX 4070 12GB고요, 13B급 모델을 올려보려고 했어요.
모델 로드하고 조금 긴 프롬프트를 넣으면 CUDA out of memory 가 나거나, 아니면 죽진 않는데 갑자기 응답이 엄청 느려집니다. nvidia-smi 보면 로드는 됐는데 추론할 때 뭔가 이상하고요.
양자화라는 걸 하면 메모리를 줄일 수 있다고 들었는데, 그냥 하면 되는 건지 품질이 많이 깎이는 건지 감이 안 옵니다. 12GB에서 13B는 무리인 걸까요? 어떻게 접근해야 할지 조언 부탁드려요.
댓글 1
13B를 fp16 원본으로 올리면 12GB엔 애초에 안 들어갑니다. 양자화된 GGUF를 쓰세요. Q4_K_M 정도면 크기가 확 줄어서 4070 12GB에 여유가 생깁니다. ollama는 태그로 양자화 버전을 받을 수 있으니 그걸로 pull 하면 돼요. 품질은 Q4 정도면 대부분의 실무 용도엔 체감 손실이 크지 않습니다. 더 낮추면(Q3, Q2) 눈에 띄게 떨어지니 거기까진 가지 마세요.
안 죽는데 갑자기 느려지는 건 모델이 GPU에 다 안 올라가서 일부 레이어가 CPU로 오프로드된 상태예요. 그러면 추론이 CPU 속도로 기어갑니다. nvidia-smi로 실제 VRAM 점유를 보고, 다 안 올라갔으면 더 작은 양자화나 num_ctx(컨텍스트)를 줄여서 KV 캐시 부담을 낮추세요.
솔직히 여유롭게 쓰려면 12GB에선 7~8B 모델을 양자화해서 돌리는 게 훨씬 편합니다. 13B를 꾸역꾸역 올리는 것보다 응답 속도도 빠르고 컨텍스트 여유도 나와요. 용도가 정말 13B급 지능이 필요한 게 아니면 한 급 낮추는 걸 추천합니다.