Running GPU Workloads

Guide to deploying workload on a virtual nodes

VastAI

Currently the only supported cloud provider. More are to come.

Networking

Since VastAI does not allow us to run Wireguard in kernel space the VPN is done by Wireproxy in user space. This means all traffic to the cluster needs to go either over HTTP proxy or through tunnel.

Proxy is available at localhost:3128

TCP Tunnels can be set by setting ENV variables in format GW_TUNNEL_<port-number> = private address to tunnel to. Set these variables in pod’s definition.

Machine Selection

You can control machine selection by adding annotations to your Pod specification. All annotations use the prefix gpu-provider.glami.cz/.

Boolean Filters

AnnotationDescriptionExample
verified-onlyOnly select verified machinesgpu-provider.glami.cz/verified-only: "true"
datacenter-onlyOnly select datacenter machines (no consumer hardware)gpu-provider.glami.cz/datacenter-only: "true"

Region Filters

AnnotationDescriptionValid ValuesExample
regionSpecify allowed regions (comma-separated)europe, north-america, asia-pacific, africa, south-america, oceaniagpu-provider.glami.cz/region: "europe,north-america"

List Filters

AnnotationDescriptionExample
gpu-namesComma-separated list of allowed GPU namesgpu-provider.glami.cz/gpu-names: "RTX 4090,RTX 3090"
compute-capComma-separated list of allowed CUDA compute capabilitiesgpu-provider.glami.cz/compute-cap: "8.6,8.9"

GPU Filters

All numeric filters support three variants:

  • Exact value: <field-name>
  • Minimum value: <field-name>-min
  • Maximum value: <field-name>-max

Note: If an exact value is specified, min/max values for that field are ignored.

AnnotationDescriptionUnitExample
gpu-countNumber of GPUscountgpu-provider.glami.cz/gpu-count: "2"
gpu-count-minMinimum number of GPUscountgpu-provider.glami.cz/gpu-count-min: "1"
gpu-count-maxMaximum number of GPUscountgpu-provider.glami.cz/gpu-count-max: "4"
vramVRAM per GPUMBgpu-provider.glami.cz/vram: "24576"
vram-minMinimum VRAM per GPUMBgpu-provider.glami.cz/vram-min: "16384"
vram-maxMaximum VRAM per GPUMBgpu-provider.glami.cz/vram-max: "49152"
vram-totalTotal VRAM across all GPUsMBgpu-provider.glami.cz/vram-total: "49152"
vram-total-minMinimum total VRAMMBgpu-provider.glami.cz/vram-total-min: "32768"
vram-total-maxMaximum total VRAMMBgpu-provider.glami.cz/vram-total-max: "98304"
vram-bandwidthGPU memory bandwidthGB/sgpu-provider.glami.cz/vram-bandwidth: "900.0"
vram-bandwidth-minMinimum memory bandwidthGB/sgpu-provider.glami.cz/vram-bandwidth-min: "500.0"
vram-bandwidth-maxMaximum memory bandwidthGB/sgpu-provider.glami.cz/vram-bandwidth-max: "1000.0"
tflopsTotal TFLOPSTFLOPSgpu-provider.glami.cz/tflops: "82.0"
tflops-minMinimum TFLOPSTFLOPSgpu-provider.glami.cz/tflops-min: "50.0"
tflops-maxMaximum TFLOPSTFLOPSgpu-provider.glami.cz/tflops-max: "100.0"
cudaCUDA versionversiongpu-provider.glami.cz/cuda: "12.1"
cuda-minMinimum CUDA versionversiongpu-provider.glami.cz/cuda-min: "11.8"
cuda-maxMaximum CUDA versionversiongpu-provider.glami.cz/cuda-max: "12.4"

CPU and RAM Filters

AnnotationDescriptionUnitExample
cpuNumber of CPU corescoresgpu-provider.glami.cz/cpu: "8"
cpu-minMinimum CPU corescoresgpu-provider.glami.cz/cpu-min: "4"
cpu-maxMaximum CPU corescoresgpu-provider.glami.cz/cpu-max: "16"
ramSystem RAMMBgpu-provider.glami.cz/ram: "32768"
ram-minMinimum system RAMMBgpu-provider.glami.cz/ram-min: "16384"
ram-maxMaximum system RAMMBgpu-provider.glami.cz/ram-max: "65536"

Price Filters

AnnotationDescriptionUnitExample
priceExact price per hourUSD/hourgpu-provider.glami.cz/price: "0.50"
price-minMinimum price per hourUSD/hourgpu-provider.glami.cz/price-min: "0.10"
price-maxMaximum price per hourUSD/hourgpu-provider.glami.cz/price-max: "1.00"

Network Speed Filters

AnnotationDescriptionUnitExample
upload-speedUpload speedMbpsgpu-provider.glami.cz/upload-speed: "1000"
upload-speed-minMinimum upload speedMbpsgpu-provider.glami.cz/upload-speed-min: "500"
upload-speed-maxMaximum upload speedMbpsgpu-provider.glami.cz/upload-speed-max: "10000"
download-speedDownload speedMbpsgpu-provider.glami.cz/download-speed: "1000"
download-speed-minMinimum download speedMbpsgpu-provider.glami.cz/download-speed-min: "500"
download-speed-maxMaximum download speedMbpsgpu-provider.glami.cz/download-speed-max: "10000"

VastAI-Specific Filters

AnnotationDescriptionUnitExample
vastai-dlperfVastAI DLPerf benchmark scorescoregpu-provider.glami.cz/vastai-dlperf: "100.0"
vastai-dlperf-minMinimum DLPerf scorescoregpu-provider.glami.cz/vastai-dlperf-min: "50.0"
vastai-dlperf-maxMaximum DLPerf scorescoregpu-provider.glami.cz/vastai-dlperf-max: "150.0"

Example Pod Specification

Here’s a complete example showing how to use these annotations:

apiVersion: v1
kind: Pod
metadata:
  name: my-gpu-workload
  annotations:
    # Only verified datacenter machines in Europe
    gpu-provider.glami.cz/verified-only: "true"
    gpu-provider.glami.cz/datacenter-only: "true"
    gpu-provider.glami.cz/region: "europe"
    
    # GPU requirements: 2x RTX 4090 or RTX 3090
    gpu-provider.glami.cz/gpu-names: "RTX 4090,RTX 3090"
    gpu-provider.glami.cz/gpu-count: "2"
    gpu-provider.glami.cz/vram-min: "20480"  # At least 20GB per GPU
    
    # CPU and RAM requirements
    gpu-provider.glami.cz/cpu-min: "8"
    gpu-provider.glami.cz/ram-min: "32768"  # At least 32GB RAM
    
    # Price constraint
    gpu-provider.glami.cz/price-max: "1.50"  # Maximum $1.50 per hour
    
    # Network requirements
    gpu-provider.glami.cz/download-speed-min: "1000"  # At least 1Gbps
spec:
  containers:
  - name: training-container
    image: pytorch/pytorch:latest
    command: ["python", "train.py"]

Filter Behavior

  • Exact vs Range: When you specify an exact value (e.g., gpu-count: "2"), the corresponding min/max filters are ignored
  • Multiple Filters: All specified filters must be satisfied (AND logic)
  • List Filters: For list filters like gpu-names, any value in the list is acceptable (OR logic)
  • Default Ordering: Machines are ordered by price (ascending) by default
  • Machine Bans: Machines that fail during startup are temporarily banned and excluded from future selections
Last modified January 30, 2026: docs (a584816)