laptop_mac macOS Sonoma
Intermediate
schedule 8 min read
by Alex Rivera • May 14, 2024
Se stai sviluppando un'applicazione con più utenti simultanei, Ollama e LM Studio non sono sufficienti. Hai bisogno di un motore di inferenza di livello enterprise. Hai bisogno di vLLM.
Step 1 Introduzione
vLLM è un motore di serving per LLM ad alto throughput e memoria efficiente. Utilizza una tecnica chiamata PagedAttention per gestire efficacemente le chiavi e i valori di attenzione, ottenendo un throughput da 2 a 4 volte superiore rispetto ai transformer standard di HuggingFace.
Questa guida presuppone che tu stia utilizzando un server Linux con almeno una GPU NVIDIA di fascia alta (ad esempio RTX 3090, 4090 o A100).
Step 2 Prerequisiti
vLLM richiede Python e CUDA. Consigliamo vivamente di utilizzare un ambiente virtuale come conda o il classico 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 Installazione di vLLM
Installa vLLM direttamente da PyPI. Questo scaricherà automaticamente PyTorch e le dipendenze CUDA necessarie.
Step 4 Avviare un Server Compatibile con OpenAI
vLLM supporta nativamente il protocollo API di OpenAI. Puoi servire un modello direttamente dalla riga di comando. Useremo Llama 3 8B come esempio.
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
Spiegazione dei Parametri Principali:
- --model: L'ID del repository HuggingFace. vLLM lo scaricherà automaticamente.
- --dtype auto: Utilizza automaticamente bfloat16 o float16 per le massime prestazioni.
- --api-key: Protegge il tuo endpoint in modo che utenti casuali di Internet non possano sovraccaricare la tua GPU.
Step 5 Connessione all'API
Ora puoi accedere a questo server utilizzando l'SDK Python standard di OpenAI, semplicemente sostituendo il 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 Ottimizzazione per la Produzione
Se disponi di più GPU (ad esempio due RTX 3090), puoi distribuire un modello grande da 70B su di esse utilizzando il parallelismo tensoriale. Aggiungi semplicemente il flag --tensor-parallel-size:
Terminal
python3 -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3-70B-Instruct --tensor-parallel-size 2
Con vLLM in esecuzione, il tuo server Linux è ora in grado di gestire decine di richieste simultanee con zero degradazione della latenza.