오늘은 vLLM
에대해서 간단하게 알아보고 설치하는 방법까지 알아보려고 한다.
1. vLLM 이란?
vLLM
은 Versatile Large Language Model Serving System
의 약자로, 대규모 언어 모델(LLM)을 효율적으로 서빙하기 위한 오픈소스 라이브러리이다.
높은 처리량과 낮은 지연 시간을 목표로 설계되었으며, 특히 GPU 환경에서 LLM 추론 성능을 극대화해 준다는 특징이 있으며,
VLLM은 PagedAttention, 최적화된 CUDA 커널, 텐서 병렬 처리 등 다양한 기술을 활용하여 빠른 추론 속도를 제공한다.
GitHub - vllm-project/vllm: A high-throughput and memory-efficient inference and serving engine for LLMs
A high-throughput and memory-efficient inference and serving engine for LLMs - vllm-project/vllm
github.com
2. vLLM vs Ollama
흔히 로컬에서 LLM을 구동한다고 하면 Ollama도 같이 등장한다.(나도 Ollama를 사용 중이었다.)vLLM
과 Ollama
는 모두 LLM을 실행하고 관리하기 위한 도구이지만, 목표와 기능에서 차이가 있다.
vLLM
- 장점
- 뛰어난 성능: 높은 처리량과 낮은 지연 시간으로 대규모 환경에 적합
- 다양한 성능 최적화 기능: pagedattention, 텐서 병렬 처리 등 다양한 최적화 기술 제공
- GPU 활용 극대화: GPU 환경에서 LLM 추론 성능을 극대화
- 단점
- 설정 및 사용법 복잡: OLLAMA에 비해 설정 및 사용법이 다소 복잡
- 로컬 환경에서의 간단한 실험에는 과도함: 고성능 서빙에 특화되어 로컬 환경에서 간단한 실험에는 다소 과도할 수 있음
Ollama
- 장점
- 간편한 설치 및 사용법: 설치 및 사용법이 매우 간단하여 초보자도 쉽게 사용 가능
- 로컬 환경에서 LLM 쉽게 사용 가능: 로컬 환경에서 LLM을 테스트하거나 개인적인 용도로 사용하기에 편리
- 모델 관리 및 API 서버 제공: 모델 관리, API 서버 등 기본적인 기능 제공
- 단점
- VLLM에 비해 성능 낮음: 성능 면에서 VLLM보다 떨어짐
- 고성능 서빙 환경에는 부적합: 고성능 LLM 서빙 환경에는 적합하지 않음
Summary
특징 | VLLM | OLLAMA |
---|---|---|
장점 | - 뛰어난 성능 (높은 처리량, 낮은 지연 시간) - 다양한 성능 최적화 기능 - GPU 활용 극대화 |
- 간편한 설치 및 사용법 - 로컬 환경에서 LLM 쉽게 사용 가능 - 모델 관리 및 API 서버 제공 |
단점 | - 설정 및 사용법 복잡 - 로컬 환경 간단 실험에는 과도함 |
- VLLM 대비 성능 낮음 - 고성능 서빙 환경 부적합 |
둘 다 다양한 모델들을 지원하고 OpenAI 호환 API를 지원하니, 각자의 상황에 맞게 사용하면 될 것 같다.
아래와 같은 컨퍼런스도 열리는 걸 보니 목적자체가 다르기 때문에 서로 경쟁 및 협력하면서 발전해가고 있는 것 같다.

3. Install
VLLM은 pip, Docker, 소스 빌드 등 다양한 방법으로 설치할 수 있다.
쉽게 사용할 수 있는 pip
과 docker
을 이용한 방법만 알아보자.
pip
간단하게 가상환경을 생성해 주고 pip으로 vllm을 설치해 준다.
나는 conda가 익숙해서 conda로 설치했는데, vLLM docs에서는 최근 인기 있는 가상환경 관리자인 uv를 사용하라고 권장되어 있다. 둘 다 명령어만 치면 되니 비슷하다.
uv
uv venv myenv --python 3.12 --seed
source myenv/bin/activate
uv pip install vllm
conda
conda create -n myenv python=3.12 -y
conda activate myenv
pip install vllm
vllm serve Qwen/Qwen2.5-1.5B-Instruct
Using Docker
docker run --runtime nvidia --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HUGGING_FACE_HUB_TOKEN=<secret>" \
-p 8000:8000 \
--ipc=host \
vllm/vllm-openai:latest \
--model mistralai/Mistral-7B-v0.1
위와 같이 docker을 이용해서 올릴 수도 있다. 나는 매번 치는 게 귀찮아서 보통 compose로 만들어서 컨테이너를 올리기 때문에 docker-compose.yml도 작성해 봤다. (추가 설정들을 해서 Dockerfile도 같이 설정해줘야 한다.)
FROM vllm/vllm-openai:latest
RUN uv pip install git+https://github.com/huggingface/transformers.git --system
ENV TZ=Asia/Seoul
version: '3'
services:
vllm:
build:
context: .
dockerfile: Dockerfile
runtime: nvidia
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
- ~/.cache/huggingface:/root/.cache/huggingface
ports:
- "8000:8000"
environment:
- HUGGING_FACE_HUB_TOKEN=허깅페이스토큰
- TZ=Asia/Seoul
ipc: host
command: --model google/paligemma2-10b-mix-224
gpu 옵션이나 추가적인 설정들은 docs를 참고하면 될 것 같다.
4. Usage
vLLM은 Python API와 OpenAI 호환 API 서버를 제공한다.
Python API
from vllm import LLM
llm = LLM(model="facebook/opt-350m")
# 프롬프트 생성
prompts = [
"Hello, my name is",
"The capital of France is",
"The best programming language is",
]
outputs = llm.generate(prompts)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
OpenAI 호환 API 서버
Docker를 통해 VLLM을 설치한 경우, 기본적으로 OpenAI 호환 API 서버가 실행된다. 다음과 같이 curl
명령어를 사용하여 API를 호출할 수 있다.
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "facebook/opt-350m",
"prompt": "The capital of Germany is",
"max_tokens": 50
}'
Python의 openai
라이브러리를 사용하여 API 서버에 접근할 수도 있다.
import openai
openai.api_base = "http://localhost:8000/v1" # VLLM API 서버 주소
openai.api_key = "EMPTY" # API 키는 필요없으므로 임의의 값 설정
completion = openai.Completion.create(
model="facebook/opt-350m",
prompt="The capital of Germany is",
max_tokens=50
)
print(completion.choices[0].text)
또 pip을 설치한 경우에도 아래 명령어를 통해서 OpenAPI 호환 서버를 열 수 있다.
기본적으로 http://localhost:8000
으로 열리게 되며, --host
와 --port
옵션을 이용하여 열 수 있다.
vllm serve Qwen/Qwen2.5-1.5B-Instruct
더 자세한 사용법 및 옵션은 VLLM 공식 문서를 참고하면 된다.
5. Model
사용 가능한 모델은 Docs나 허깅페이스에서 확인이 가능하다. (허깅페이스에서 약관동의가 필요한 repo들은 미리 동의를 하고 사용하면 된다.)

https://docs.vllm.ai/en/stable/models/supported_models.html
'알쓸신잡' 카테고리의 다른 글
맥북 한영키 윈도우 처럼 세팅 (0) | 2025.03.28 |
---|---|
Obsidian Auto card link 플러그인 (0) | 2025.03.28 |
Chrome 텍스트 커서 깜박임 오류 해결 가이드 (0) | 2025.03.27 |
Git-credential (0) | 2025.03.26 |
OpenSource Contribute (0) | 2025.03.14 |