laptop_mac macOS Sonoma
Intermediate
schedule 8 min read
by Alex Rivera • May 14, 2024
Wenn Sie eine Anwendung mit mehreren gleichzeitigen Benutzern entwickeln, werden Ollama und LM Studio nicht ausreichen. Sie benötigen eine unternehmenstaugliche Inferenz-Engine. Sie benötigen vLLM.
Step 1 Einführung
vLLM ist eine hochdurchsatzfähige und speichereffiziente LLM-Serving-Engine. Sie verwendet eine Technik namens PagedAttention, um Attention-Keys und -Values effektiv zu verwalten, was einen 2–4-fach höheren Durchsatz gegenüber Standard-HuggingFace-Transformers erzielt.
Dieser Leitfaden setzt voraus, dass Sie einen Linux-Server mit mindestens einer High-End-NVIDIA-GPU betreiben (z. B. RTX 3090, 4090 oder A100).
Step 2 Voraussetzungen
vLLM erfordert Python und CUDA. Wir empfehlen dringend die Verwendung einer virtuellen Umgebung wie conda oder dem standardmäßigen venv.
Terminal
sudo apt update
sudo apt install python3-pip python3-venv
# Create and activate environment
python3 -m venv vllm-env
source vllm-env/bin/activate
Step 3 Installation von vLLM
Installieren Sie vLLM direkt von PyPI. Dadurch werden PyTorch und die notwendigen CUDA-Abhängigkeiten automatisch heruntergeladen.
Step 4 Betrieb eines OpenAI-kompatiblen Servers
vLLM unterstützt nativ das OpenAI-API-Protokoll. Sie können ein Modell direkt über die Kommandozeile bereitstellen. Als Beispiel verwenden wir Llama 3 8B.
Terminal
python3 -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3-8B-Instruct --dtype auto --api-key your-secret-key --port 8000
Erläuterung der wichtigsten Parameter:
- --model: Die HuggingFace-Repository-ID. vLLM lädt das Modell automatisch herunter.
- --dtype auto: Verwendet automatisch bfloat16 oder float16 für maximale Performance.
- --api-key: Sichert Ihren Endpunkt ab, sodass beliebige Internetnutzer Ihre GPU nicht missbrauchen können.
Step 5 Verbindung zur API herstellen
Sie können diesen Server nun mit dem standardmäßigen OpenAI Python SDK ansprechen – lediglich durch das Austauschen der base_url.
Terminal
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="your-secret-key"
)
response = client.chat.completions.create(
model="meta-llama/Meta-Llama-3-8B-Instruct",
messages=[
{"role": "user", "content": "Explain PagedAttention."}
],
)
print(response.choices[0].message.content)
Step 6 Optimierung für den Produktionsbetrieb
Wenn Sie über mehrere GPUs verfügen (z. B. zwei RTX 3090), können Sie ein großes 70B-Modell mithilfe von Tensor-Parallelismus auf diese aufteilen. Fügen Sie dazu einfach das Flag --tensor-parallel-size hinzu:
Terminal
python3 -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3-70B-Instruct --tensor-parallel-size 2
Mit dem laufenden vLLM ist Ihr Linux-Server nun in der Lage, Dutzende gleichzeitiger Anfragen ohne jegliche Latenzeinbußen zu verarbeiten.