AI VIDEO BRIEFING
vLLM 인자 설정 가이드: VRAM 부족 오류 해결과 추론 속도 극대화 옵션 정리
vLLM은 인자를 제대로 잡지 않으면 속도 이점을 살리지 못한다. VRAM이 모자랄 때 줄여야 할 값과 여유가 있을 때 늘려야 할 값, 오프로딩과 접두 캐싱, 양자화 자동 감지까지 조정 순서대로 정리했다.

핵심 메시지
쉽게 이해하기
vLLM은 로컬 LLM을 훨씬 빠르게 서빙해 주는 엔진으로 알려져 있지만, 설정값을 그대로 두면 그 속도 이점을 제대로 맛보기 어렵다는 것이 이 영상의 출발점이다. 문제는 인자가 지나치게 많다는 데 있다. 영상은 어떤 모델과 GPU에서 어떤 값을 얼마로 잡아야 하는지에 대한 절대적인 정답은 존재하지 않는다고 솔직하게 인정한다. 개인마다 PC 사양이 다르고 활용 목적도 다르기 때문이다. 대신 자주 쓰이는 인자만 골라 VRAM이 부족한 상황과 여유가 있는 상황으로 나눠, 조정 우선순위를 정해 두고 위에서부터 하나씩 시험해 보는 방식을 제안한다.
VRAM이 부족할 때 가장 먼저 손대야 할 것은 최대 컨텍스트 길이다. 이 값을 지정하지 않으면 모델이 지원하는 최대 길이를 그대로 쓰는데 그 크기가 생각보다 크고, vLLM은 기동 시점에 그만한 KV 캐시 공간을 확보할 수 있는지 검사하기 때문에 여기서 걸리면 아예 실행되지 않는다. 실제로 그만큼 긴 입력을 쓸 게 아니라면 낮춰 잡으면 된다. 한 번에 처리하는 토큰 수의 기본값은 2048인데 이 값도 줄일 수 있지만 대신 속도가 느려진다. GPU 메모리 사용률은 증상에 따라 방향이 달라져서, KV 캐시 공간 부족 로그가 뜨면 0.95 정도로 올리고, 그런 로그 없이 추론 도중에 죽으면 다른 작업이 쓸 VRAM이 없다는 뜻이므로 반대로 낮춰야 한다. 다만 1로 두면 여유 공간이 사라지므로 안 된다. 정확도를 조금 포기하더라도 KV 캐시를 8비트 같은 작은 형식으로 양자화하면 사용량을 크게 줄일 수 있고, 추론 속도를 위해 켜져 있는 CUDA 그래프를 꺼서 메모리를 회수하는 선택지도 있다.
그래도 메모리가 모자라면 마지막 수단이 오프로딩이다. 모델 가중치를 CPU로 내리는 방식과 KV 캐시를 내리는 방식 두 가지가 있는데, 영상은 전자에 대해 llama.cpp보다 오프로딩 성능이 빠르다는 사례를 본 적이 없다며 정말 방법이 없을 때만 쓰라고 선을 긋는다. vLLM은 GPU 환경에서 돌리는 것이 일반적인 사용법이기 때문이다. 반면 KV 캐시 오프로딩은 실행 중 GPU와 CPU 사이를 오간다는 부담이 있지만 개발진이 최적화를 잘해 두어 KV 캐시 공간이 부족한 경우에는 성능이 괜찮게 나온 결과가 있다며 써 볼 만하다고 평가한다.
VRAM에 여유가 있는 두 번째 상황에서는 값을 반대로 키운다. 한 번에 처리하는 양을 늘리면 추론이 빨라지지만, 여기에는 함정이 있다. 영상은 국밥집 비유로 이를 설명한다. 라면 냄비 대신 10인분 솥을 쓰면 회전율이 오르지만, 솥을 10배로 키운다고 회전율이 10배가 되지는 않는다. 내용물이 많아질수록 한 번 끓이는 시간이 길어져, 처리량은 늘어도 손님이 체감하는 대기 시간은 오히려 길어지기 때문이다. GPU 메모리 사용률은 0.95 정도까지 올려 KV 캐시를 넉넉히 확보하는 편이 성능에 좋다. 그리고 챗봇으로 쓴다면 기본적으로 꺼져 있는 접두 캐싱을 반드시 켜라고 권한다. 매 요청마다 공통으로 들어가는 시스템 프롬프트와 이전 대화 기록이 중복 연산되는데, 이를 VRAM에 저장해 두고 꺼내 쓰면 체감 응답 속도가 크게 빨라진다.
마지막으로 두 상황 모두에 해당하는 공통 인자가 두 개 소개된다. GPU가 여러 장이면 텐서 병렬 크기에 장수를 넣어야 연산에서 모든 GPU를 활용할 수 있다. 양자화 인자는 이름만 보면 쓰고 있는 양자화 모델에 맞춰 직접 지정해야 할 것 같지만, 비워 두면 vLLM이 자동으로 감지해 설정한다. 영상은 오히려 지정하지 말라고 권하는데, 자동 감지가 사람의 직감보다 정확하다고 보기 때문이다. 근거로 Qwen3-8B-AWQ 모델에서 awq를 직접 명시했을 때 경고 로그가 떴고, 비워 두고 자동 선택에 맡겼더니 추론 속도가 더 빨랐던 자신의 경험을 든다.
주요 인사이트
- 같은 오류처럼 보여도 원인이 갈린다. KV 캐시 부족 로그가 뜨는 경우와 로그 없이 추론 중 죽는 경우는 GPU 메모리 사용률을 서로 반대 방향으로 조정해야 하므로, 로그를 읽지 않고 값부터 만지면 상황이 나빠진다.
- 설정 탐색을 무작정 반복하지 않으려면 순서가 필요하다. 영상이 성능을 유지하면서 메모리를 확보하기 좋은 순서로 인자를 정렬해 두고 위에서부터 하나씩 조정하라고 안내하는 이유다.
- 처리량과 응답 지연은 같은 방향이 아니다. 배치를 키우면 전체 처리량은 늘지만 한 번의 연산이 길어져 사용자 체감 대기 시간은 늘어날 수 있어, 챗봇처럼 지연이 중요한 용도에서는 적절한 지점을 찾아야 한다.
- 챗봇 워크로드에서 가장 큰 낭비는 매번 같은 내용을 다시 계산하는 일이다. 시스템 프롬프트와 대화 기록은 반복되므로 접두 캐싱 하나로 연산량을 눈에 띄게 줄일 수 있다.
- 직접 지정하는 편이 항상 낫지는 않다. 양자화 방식처럼 엔진이 자동 감지하는 항목은 비워 두는 편이 더 빠른 결과를 낸 사례가 있어, 손을 대지 않는 것도 하나의 설정이다.
자주 묻는 질문
vLLM이 실행되자마자 메모리 부족으로 죽습니다. 어디부터 봐야 하나요?
최대 컨텍스트 길이부터 확인하는 것이 좋습니다. 이 값을 지정하지 않으면 모델이 가진 최대 길이를 따라가는데, vLLM은 시작할 때 그만한 KV 캐시 공간을 확보할 수 있는지 미리 검사하기 때문에 여기서 부족하면 기동 자체가 실패합니다. 실제로 필요한 길이만큼 낮춰 잡으면 됩니다.
CPU 오프로딩을 쓰면 VRAM 부족을 해결할 수 있나요?
가능하지만 최후의 수단으로 권합니다. 영상은 모델 가중치를 CPU로 내리는 오프로딩이 llama.cpp보다 빠르다는 사례를 본 적이 없다고 말하며, vLLM은 GPU 환경에서 실행하는 것이 일반적인 방식이라고 설명합니다. 다만 KV 캐시를 내리는 오프로딩은 최적화가 잘되어 있어 캐시 공간이 부족한 경우 성능이 괜찮게 나온다고 평가합니다.
양자화 모델을 쓰면 양자화 인자를 직접 지정해야 하나요?
굳이 그럴 필요가 없다고 설명합니다. 비워 두면 vLLM이 자동으로 감지해 설정하며, 영상 제작자는 Qwen3-8B-AWQ 모델에서 awq를 직접 명시했을 때보다 자동 선택에 맡겼을 때 추론 속도가 더 빨랐다고 밝힙니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗