Speed at scale
GPU pools
One model on the host GPU, shared by many VMs at once.
What it is
One model on the host GPU, shared by many VMs at once.
A GPU pool loads a model on the host GPU once: Metal on macOS, Vulkan on Windows and Linux. Granted VMs call it over their network card with their own token. No VM holds a GPU device, so snapshots and warm pools work exactly as before.
Why it matters
Models run fastest on a GPU, and one GPU usually means one VM. A GPU pool turns a single GPU into a shared service for every sandbox on the host.
- Load once, serve many. One model in memory, parallel requests from many VMs.
- Per-VM access. Each VM gets its own grant, revocable at once.
- Every platform. Metal and Vulkan, the same commands everywhere.
Runs on
- Linux x86_64
- Linux arm64
- macOS
- Windows x64
- Windows arm64
How it works
Create a pool from a model file, then start VMs with --gpu-pool.
CLI
flash gpu info
flash gpu pool create --id llm --model /models/model.gguf --slots 4 --wait-ready 600
sudo flashnet --mode nat --vm-id vm-gpu-1 -- flash run --bundle BUNDLE --id vm-gpu-1 --vcpus 1 --mem-mib 512 --nic '{NIC}' --gpu-pool llm --detach
flash gpu grant ls --gpu-pool llmMCP
flash_gpu(method: "POST", path: "/v1/gpu-pools", body: {id: "llm", model: "/models/model.gguf", slots: 4})
flash_gpu(method: "POST", path: "/v1/gpu-grants", body: {vm_id: "vm-gpu-1", gpu_pool: "llm"})API
POST /v1/gpu-pools {"id": "llm", "model": "/models/model.gguf", "slots": 4}
POST /v1/gpu-grants {"vm_id": "vm-gpu-1", "gpu_pool": "llm"}
GET /v1/gpu-grants?gpu_pool=llmThe result
Three VMs ask one model three different questions at the same time, and each gets its answer.
One GPU, one loaded model, many sandboxes served in parallel.
How it works
Related
See it live: flash demo run 23