Skip to content

supported_gpus.yml

The supported_gpus.yml inventory file decouples the GPU configuration from the actual code implementation of Hydra. It is the single source of truth for which GPU hardware profiles we offer, how we address them internally, and how each compute provider names them on their end.

The file lives once per environment in the inventory directories: infra/inventory/<env>supported_gpus.yml Hydra reads the file from its active inventory directory at startup. If the file cannot be read or parsed, the load and the whole service fails.

Top-Level Structure

The file contains a single key, supported_gpus, holding a list of GPU profiles. Each entry's type becomes the key by which the profile is looked up, so type values must be unique.

supported_gpus:
  - type: a100
    labeling:
      nvidia_smi: A100
      ansible: gpu.a100
    instance_counts:
      max: 7
    allowed_gpus_per_instance: [1, 2, 4, 8]
    hardware_specs:
      memory_gb:
        max: 120
    providers:
      - name: prime-intellect
        api_names:
          - A100_80GB
        instance_types:
          - on-demand
          - spot
      - name: verda
        api_names:
          - "A100 80GB"

Fields

GPU profile

Field Type Required Default Description
type string yes Internal identifier and lookup key for the hardware profile, e.g. a100, h100.185gb. This is how we address the GPU everywhere in our code.
labeling object yes How the GPU is detected and labelled on a machine. See Labeling.
instance_counts object no unlimited Limits on how many instances of this type may run as an execlet (no impact on bare VMs). See Instance counts.
allowed_gpus_per_instance list of ints no [1] The GPU counts a single instance may carry, e.g. [1, 2, 4, 8]. A request for any other count is rejected.
hardware_specs object no no constraints Optional vCPU and memory constraints for the underlying machine. See Hardware specs.
providers list yes The compute providers that offer this GPU and how they name it. See Providers.

Labeling

Labelling is mainly required for running execlets on this GPU type.

Field Type Required Description
nvidia_smi string yes Pattern matched against the nvidia-smi output to detect this GPU on a machine.
ansible string yes Ansible label applied to the host, e.g. gpu.a100.

Instance counts

Field Type Required Description
max int no Maximum number of instances of this GPU type that may exist as execlets at once. The maximum number does not apply for bare VMs.

Note

Only max is currently honoured. A min field is reserved for guaranteeing a number of running instances which cannot be stopped but is not yet active.

Hardware specs

hardware_specs is optional. When omitted, no vCPU or memory constraints are applied. It may contain vcpus and/or memory_gb, each a constraint object:

Field Type Required Description
vcpus constraint no Constraint on the number of vCPUs of the machine.
memory_gb constraint no Constraint on the machine's RAM in GB.

Each constraint object accepts min and/or max (non-negative integers):

hardware_specs:
  memory_gb:
    min: 185
    max: 256

This is what distinguishes profiles such as h100 and h100.185gb, which share the same physical GPU but differ in the required machine memory.

Providers

providers lists every compute provider that can supply the GPU. Each provider entry maps our internal type to the names the provider uses.

Field Type Required Default Description
name string yes Provider identifier, e.g. prime-intellect, verda, atlas.
api_names list of strings yes The names the provider uses for this GPU. Multiple entries are allowed when a provider exposes several SKUs that all map to our type (e.g. H200_96GB and H200_141GB).
instance_types list no [on-demand] Pricing/availability variants we allow for this provider/GPU combination.

Valid instance_types values are:

  • on-demand — a regular pay-as-you-go instance the provider will not preempt.
  • spot — a preemptible/spot instance the provider may terminate at any time.

Unknown values cause the file to fail parsing.

Example

To create an l40s on our end, Hydra tells Prime Intellect to create an L40S_48GB or Verda to create an L40S. The api_names entries are exactly those provider-side names.