vLLM Metal Plugin
High-performance LLM inference on Apple Silicon using MLX and vLLM
vLLM Metal is a plugin that enables vLLM to run on Apple Silicon Macs using MLX as the primary compute backend. It unifies MLX and PyTorch under a single lowering path.
Features
- MLX-accelerated inference: faster than PyTorch MPS on Apple Silicon
- Unified memory: True zero-copy operations leveraging Apple Silicon's unified memory architecture
- vLLM compatibility: Full integration with vLLM's engine, scheduler, and OpenAI-compatible API
- Paged attention: Efficient KV cache management for long sequences
- GQA support: Grouped-Query Attention for efficient inference
Requirements
- macOS on Apple Silicon
Installation
curl -fsSL https://raw.githubusercontent.com/vllm-project/vllm-metal/main/install.sh | bash
Architecture
┌─────────────────────────────────────────────────────────────┐
│ vLLM Core │
│ Engine, Scheduler, API Server, Tokenizers │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ vllm_metal Plugin Layer │
│ ┌─────────────────┐ ┌────────────────┐ ┌──────────────────┐ │
│ │ MetalPlatform │ │ MetalWorker │ │ MetalModelRunner │ │
│ │ (Platform) │ │ (Worker) │ │ (ModelRunner) │ │
│ └─────────────────┘ └────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Unified Compute Backend │
│ ┌───────────────────────────┐ ┌───────────────────────────┐ │
│ │ MLX Backend │ │ PyTorch Backend │ │
│ │ (Primary) │ │ (Model Loading/Interop) │ │
│ │ │ │ │ │
│ │ • SDPA Attention │ │ • HuggingFace Loading │ │
│ │ • RMSNorm │ │ • Weight Conversion │ │
│ │ • RoPE │ │ • Tensor Bridge │ │
│ │ • Cache Ops │ │ │ │
│ └───────────────────────────┘ └───────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Metal GPU Layer │
│ Apple Silicon Unified Memory Architecture │
└─────────────────────────────────────────────────────────────┘
Configuration
Environment variables for customization:
| Variable | Default | Description |
|---|---|---|
VLLM_METAL_MEMORY_FRACTION |
auto |
auto allocates just enough memory plus a minimal KV cache, or 0.? for fraction of memory |
VLLM_METAL_USE_MLX |
1 |
Use MLX for compute (1=yes, 0=no) |
VLLM_MLX_DEVICE |
gpu |
MLX device (gpu or cpu) |
VLLM_METAL_BLOCK_SIZE |
16 |
KV cache block size |
VLLM_METAL_DEBUG |
0 |
Enable debug logging |
Metadata
Release files for vllm-metal 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vllm_metal-0.1.0-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
Release files / vllm_metal-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | vllm_metal-0.1.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 271.9 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a59c9a15fe9a24a046d1956ee3647cd05131f6f86969e23177bf691b4dff6fbf
|
|
BLAKE2b-256 checksum How to use checksums |
e2be3ebee27c4d4f58f462693d815c84a87b0579a5627c9587cb6294f72af663
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|