Aphrodite Engine - Servizio LLM ad Alta Throughput
Aphrodite Engine è un motore di inferenza e servizio LLM ad alte prestazioni biforcato da vLLM. Si costruisce su PagedAttention e continuous batching di vLLM, quindi aggiunge due grandi differenziatori: la copertura di quantizzazione più ampia di qualsiasi motore (GGUF, GPTQ, AWQ, ExLlamaV3, AQLM, BitNet, Marlin e altro, più cache KV quantizzato) e sampler avanzati (DRY, XTC, Mirostat) che importano per l”uso chat/creativo. Espone un”API compatibile con OpenAI, quindi si inserisce nei client esistenti.
Installazione
| Metodo | Comando |
|---|
| pip | pip install aphrodite-engine |
| Esegui il server | aphrodite run <model> |
| Docker | docker run --gpus all -p 2242:2242 alpindale/aphrodite-openai |
| Requisiti | GPU NVIDIA + CUDA (AMD/ROCm supportato su alcuni build) |
| Verifica | aphrodite --version |
Avvio di un Server
# Servi un modello con un''API compatibile con OpenAI sulla porta 2242
aphrodite run meta-llama/Llama-3.1-8B-Instruct
# Servi un modello GGUF quantizzato
aphrodite run ./model.Q4_K_M.gguf --quantization gguf
# Tensor parallelism multi-GPU
aphrodite run big-model --tensor-parallel-size 2
| Flag | Descrizione |
|---|
--quantization | Formato: gguf, gptq, awq, exl3, fp8, … |
--tensor-parallel-size N | Dividi il modello su N GPU |
--max-model-len N | Lunghezza del contesto |
--gpu-memory-utilization 0.9 | Frazione di VRAM da usare |
--kv-cache-dtype fp8 | Quantizza il cache KV per risparmiare memoria |
--dtype | Dtype di calcolo del modello (auto, half, bfloat16) |
--port 2242 | Porta API |
--api-keys KEY | Richiedi una chiave API |
API Compatibile con OpenAI
curl http://localhost:2242/v1/completions \
-H "Content-Type: application/json" \
-d '{"model":"default","prompt":"Hello","max_tokens":50}'
| Endpoint | Scopo |
|---|
/v1/completions | Completamento del testo |
/v1/chat/completions | Completamento del chat |
/v1/models | Elenca i modelli caricati |
/v1/embeddings | Embeddings (modelli di embedding) |
| Formato | Uso |
|---|
| GGUF | Stile llama.cpp k-quants (modelli della comunità) |
| GPTQ / AWQ | Formati weight-only 4-bit popolari |
| ExLlamaV3 (exl3) | Quantizzazione variable-bit ad alta qualità |
| AQLM / QuIP# | Bit-estremamente bassi |
| Marlin | Kernel GPTQ/AWQ veloci |
| fp8 | Pesi/attivazioni 8-bit float |
L”ampiezza è il punto: Aphrodite può servire modelli quantizzati dalla comunità che vLLM vanilla non può caricare.
Sampler Avanzati
| Sampler | Effetto |
|---|
| DRY | ”Don”t Repeat Yourself” — riduce la ripetizione verbatim |
| XTC | Exclude Top Choices — aumenta la creatività |
| Mirostat | Si rivolge a un setpoint di perplessità |
min_p, top_a, tfs | Sampler di troncamento aggiuntivi |
Passa questi come campi extra nella richiesta (es. "dry_multiplier": 0.8).
Tuning delle Prestazioni
| Opzione | Effetto |
|---|
--tensor-parallel-size | Scala su GPU |
--kv-cache-dtype fp8 | Adatta contesto più lungo / più concorrenza |
--max-num-seqs | Limite di concorrenza (batch) |
--enforce-eager | Disabilita i grafici CUDA (debug) |
--quantization | Scambia qualità per memoria/velocità |
Aphrodite vs Altri Motori di Inferenza
| Aspetto | Aphrodite | vLLM | llama.cpp |
|---|
| Base | Fork di vLLM | Originale | C/C++ |
| Copertura quant | Più ampia | Crescente | GGUF k-quants |
| Sampler | DRY/XTC/Mirostat | Standard | Molti |
| Migliore per | Modelli quantizzati dalla comunità, chat | Throughput massimo, formati standard | CPU/edge, GGUF |
Risorse