Skip to main content
A GPU pool is a custom resource that tells the operator which GPUs in your cluster are available for Lilac inference workloads. You control everything — which nodes, how many GPUs, what hours, and how preemption works.

Creating a GPU Pool

Quickstart

Apply a basic GPUPool resource to your cluster:
Use a fuller manifest when you want to cap the number of GPUs, define availability windows, or configure preemption behavior:

Model Cache

Setting up a model cache is optional, but highly recommended. The cache keeps downloaded model weights on each node so repeat cold starts do not need to fetch everything from Hugging Face again. With a warm cache, cold starts can be reduced by up to 80%, which lets idle GPUs start serving workloads and earning money more quickly. A 1 TB cache is a good baseline and is included in the initial example above. For larger GPUs such as H200s, B200s, and B300s, use 2 TB or more for the fastest cold starts because those GPUs typically serve larger models.

Starting from scratch

If you are creating a new GPUPool, include cache in the resource:

Modify an existing GPU pool

If you already have a GPUPool, patch it to enable the cache:

Hugging Face Token

Setting up a Hugging Face token is optional, but highly recommended. The token avoids Hugging Face rate limits for unauthenticated downloads and allows models to download at full speed. Generate a Hugging Face access token, then create a Kubernetes Secret in the same namespace as your GPUPool:
For the examples below, the GPU pool namespace is lilac-system.

Starting from scratch

If you are creating a new GPUPool, include hfTokenSecretRef in the resource:
Apply it with:

Modify an existing GPU pool

If you already have a GPUPool, patch it to attach the Hugging Face token secret:

Configuration Reference

nodeSelector

Standard Kubernetes label selector. Only nodes matching these labels are included in the pool.

capacity

Control how much of your GPU fleet Lilac can use.

schedule

Define when GPUs are available for Lilac workloads.
Use mode: always if you have dedicated GPUs that aren’t used for other workloads. Use mode: scheduled to share GPUs between your workloads (daytime) and Lilac (evenings/weekends).

preemption

Controls what happens when your workloads need GPUs back.

cache

Configures a shared Hugging Face model cache on each node in the pool. Omitting this block disables caching, so vLLM pods download model weights from Hugging Face on every cold start.

hfTokenSecretRef

References the Kubernetes Secret key that stores your Hugging Face access token.

workloads

Toggle which workload types this pool accepts.

Multiple Pools

You can create multiple GPU pools for different hardware or schedules:

Checking Pool Status

For detailed status: