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.