| name | vllm-serving |
| description | Deploy API service, production environment configuration |
| triggers | ["When user wants to deploy vLLM as a service","When user needs production deployment configuration","When user wants to configure model serving parameters","When user needs monitoring and logging setup"] |
vllm-serving
Overview
Deploying vLLM in production requires careful configuration of model parameters, resource allocation, and monitoring. This skill covers production deployment patterns.
Prerequisites
- vLLM installed
- GPU server with adequate resources
- Basic understanding of the target model's requirements
Main Workflow
Step 1: Basic Deployment
vllm serve meta-llama/Llama-2-7b-chat-hf
vllm serve meta-llama/Llama-2-7b-chat-hf \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.9
Step 2: Production Configuration
vllm serve meta-llama/Llama-2-7b-chat-hf \
--host 0.0.0.0 \
--port 8000 \
--api-key ${API_KEY} \
--max-model-len 4096 \
--max-num-seqs 256 \
--gpu-memory-utilization 0.85 \
--dtype bfloat16 \
--tensor-parallel-size 2 \
--enable-chunked-prefill \
--max-num-batched-tokens 4096
Step 3: Model Configuration Parameters
vllm serve meta-llama/Llama-2-7b-chat-hf \
--max-model-len 4096 \
--max-num-seqs 256 \
--gpu-memory-utilization 0.9 \
--dtype bfloat16 \
--quantization awq \
--tokenizer-mode auto
Step 4: Docker Deployment
docker run --runtime nvidia --gpus all \
-p 8000:8000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
-e HF_TOKEN=${HF_TOKEN} \
vllm/vllm-openai:latest \
--model meta-llama/Llama-2-7b-chat-hf \
--tensor-parallel-size 2
```dockerfile
FROM vllm/vllm-openai:latest
COPY config.yaml /config.yaml
ENV VLLM_CONFIG=/config.yaml
ENTRYPOINT ["python", "-m", "vllm.entrypoints.openai.api_server"]
## Common Patterns
### Pattern 1: Multi-GPU Deployment
```bash
# Tensor parallelism across 4 GPUs
vllm serve meta-llama/Llama-2-70b-chat-hf \
--tensor-parallel-size 4 \
--pipeline-parallel-size 1 \
--max-model-len 4096
Pattern 2: Quantized Model Serving
vllm serve TheBloke/Llama-2-7B-AWQ \
--quantization awq \
--max-model-len 4096
vllm serve TheBloke/Llama-2-7B-GPTQ \
--quantization gptq
Pattern 3: Systemd Service
[Unit]
Description=vLLM API Server
After=network.target
[Service]
Type=simple
User=vllm
Environment="HF_TOKEN=your_token"
Environment="CUDA_VISIBLE_DEVICES=0,1"
ExecStart=/usr/local/bin/vllm serve meta-llama/Llama-2-7b-chat-hf \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 2
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl enable vllm
sudo systemctl start vllm
sudo systemctl status vllm
Pattern 4: Kubernetes Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: vllm-server
spec:
replicas: 1
selector:
matchLabels:
app: vllm
template:
metadata:
labels:
app: vllm
spec:
containers:
- name: vllm
image: vllm/vllm-openai:latest
args:
- "--model"
- "meta-llama/Llama-2-7b-chat-hf"
- "--tensor-parallel-size"
- "2"
ports:
- containerPort: 8000
resources:
limits:
nvidia.com/gpu: 2
env:
- name: HF_TOKEN
valueFrom:
secretKeyRef:
name: hf-token
key: token
Troubleshooting
Problem: Port already in use
Solution:
lsof -ti:8000 | xargs kill -9
vllm serve model --port 8001
Problem: Model loading timeout
Solution:
export HF_HUB_DOWNLOAD_TIMEOUT=300
vllm serve /path/to/local/model
Problem: High latency under load
Solution:
vllm serve model --max-num-seqs 512
vllm serve model --enable-chunked-prefill
vllm serve model --scheduler-delay-factor 0.0
References