vLLM — 상용 서비스 수준의 미친 처리 속도
나 혼자 코딩할 때 쓰려고 띄워둔 Ollama나 LM Studio 서버는 쾌적하다. 하지만, 이걸 사내 챗봇으로 만들어서 직원 100명이 동시에 질문을 던지면 어떻게 될까? 대답이 10초, 20초씩 밀리더니 결국 서버가 죽어버린다.
4편까지 다룬 llama.cpp 생태계(Ollama 포함)는 싱글 유저(Single User)와 엣지 디바이스에 극도로 최적화되어 있다. 하지만 진짜 상용 서비스(Production) 환경에서는 동시 접속자를 처리하는 처리량(Throughput) 이 생명이다.
이 처리량 문제를 소프트웨어 레벨에서 기적처럼 해결하며 엔터프라이즈 로컬 서빙의 표준이 된 도구가 바로 vLLM이다.
1. 기존 엔진들의 한계: 왜 여러 명을 동시에 처리하지 못할까?
LLM이 글자를 만들어낼 때는 KV 캐시(Key-Value Cache) 라는 메모리 공간을 어마어마하게 잡아먹는다. "이전 대화 내용"을 기억해야 다음 글자를 뱉어낼 수 있기 때문이다.
과거의 엔진들은 한 유저가 접속하면 VRAM에 미리 엄청나게 거대한 빈 방(메모리 공간)을 턱 하니 예약해버렸다. 유저가 말을 길게 할지 짧게 할지 모르니까 일단 넉넉하게 방을 잡아둔 것이다. 결과는? 실제 메모리는 텅텅 비어있는데, 예약이 꽉 차서 다음 유저를 받지 못하는 현상(메모리 파편화 및 낭비) 이 발생한다. GPU의 컴퓨팅 파워는 남아도는데 메모리가 비효율적이라서 동시 처리가 안 되는 것이다.
2. vLLM의 마법: PagedAttention
버클리 대학의 연구진들은 이 문제를 OS(운영체제)가 메모리를 관리하는 방식인 '가상 메모리 페이징(Virtual Memory Paging)'에서 힌트를 얻어 해결했다. 이 기술의 이름이 PagedAttention이다.
- 유저가 접속해도 미리 거대한 방을 잡아주지 않는다.
- 아주 작게 조각난 블록(Page)을 만들어두고, 유저가 글자를 생성할 때마다 필요한 만큼만 블록을 하나씩 할당해 준다.
- 메모리 낭비가 0에 가깝게 사라진다.
이렇게 메모리 효율을 극대화하자 남는 메모리 공간에 수많은 유저들의 요청을 밀어 넣을 수 있게 되었고(Continuous Batching), 기존 방식 대비 동시 처리량(Throughput)이 2배에서 최대 24배까지 폭발적으로 증가했다.
3. vLLM 서버 띄우기 (실전)
vLLM은 주로 엔비디아(NVIDIA) GPU가 장착된 리눅스 서버에서 구동하는 것이 정석이다. (최근 Apple Silicon 지원이 추가되고 있지만, 프로덕션 레벨에서는 여전히 CUDA 환경이 메인이다.)
설치
Python 패키지로 아주 간단하게 설치할 수 있다.
pip install vllm
OpenAI 호환 API 서버 구동
vLLM 역시 Ollama처럼 OpenAI와 완벽하게 호환되는 API 서버 모드를 제공한다.
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct \
--host 0.0.0.0 --port 8000 \
--gpu-memory-utilization 0.9 \
--max-model-len 4096
이 명령어를 실행하면 vLLM 엔진이 켜지고, 포트 8000번에서 수많은 동시 요청을 씹어먹을 준비를 마친 API 서버가 가동된다.
--gpu-memory-utilization 0.9: 전체 GPU VRAM의 90%를 KV 캐시를 위해 꽉 채워서 할당하라는 뜻이다. 남는 메모리를 전부 PagedAttention 블록으로 쪼개서 대기시킨다.
서비스 연동
이제 백엔드 코드에서 이 서버로 요청을 쏘면 된다. 프론트엔드 유저 50명이 동시에 채팅을 쳐도, vLLM이 찰나의 순간에 요청들을 Batch(묶음)로 합쳐서 GPU에 던진 뒤 응답을 쪼개어 돌려준다.
📝 정리: 내 목적에 맞는 선택
- 나 혼자 코딩 테스트용으로 쓴다? 👉 Ollama / LM Studio (vLLM은 무겁고 오버스펙이다)
- 모바일이나 구형 맥북에서 꾸역꾸역 돌린다? 👉 llama.cpp
- 사내 직원 1,000명이 접속하는 AI 서비스 백엔드를 만든다? 👉 무조건 vLLM
로컬 LLM은 여기까지가 싱글 머신(한 대의 컴퓨터)에서 돌리는 기술의 끝이다. 그런데, 회사에 남는 맥북이 3대 더 있고, 내 책상에 안 쓰는 스마트폰까지 하나 있다면 어떨까? 이 장비들의 램(RAM)을 영혼까지 한데 묶어서 초거대 70B 모델을 돌릴 수는 없을까?
이 미친 상상을 현실로 만든 프로젝트, EXO Labs에 대해 다음 6편에서 다뤄본다.