Hardware profiles tell NeuroBrix exactly what your machine looks like — GPUs, CPU, memory, interconnects. The Prism solver reads the profile and picks the best execution strategy automatically.
By default, NeuroBrix auto-detects all hardware on your machine:
neurobrix serve --model <name>
# Auto-detects all GPUs, CPU, interconnects
Write a custom profile when you want to:
Think of profiles as a way to carve out a slice of your machine for a specific NeuroBrix instance. You can run multiple instances on the same machine, each with its own profile targeting different GPUs.
neurobrix serve --model <name> --hardware v100-32g
neurobrix serve --model <name> --hardware my-custom-profile
These profile ids ship with the engine and can be passed to --hardware:
| Family | Profile ids |
|---|---|
| NVIDIA datacentre | a100-40g, a100-80g, a10-24g, h100-80g, l40s-48g, t4-16g, v100-16g, v100-32g |
| NVIDIA consumer | rtx2080ti-11g, rtx3060-12g, rtx3080-10g, rtx3090-24g, rtx4080-16g, rtx4090-24g |
| CPU | cpu-only-x86 |
Multi-GPU variants of some of these also ship. List the exact ids installed on your machine by looking in the profile directory below.
A bundled profile is not a promise that the hardware executes: see the three honesty levels in Hardware Support. Only Volta is marked empirically validated.
Profiles are YAML files in the engine package:
neurobrix/config/hardware/ # inside the installed package
├── default.yml # Auto-generated by detection (default-cpu.yml with no GPU)
├── v100-32g.yml # Bundled
├── ...
└── my-custom.yml # Your custom profile
Use the filename (without .yml) as the --hardware argument.
The most common use case: you have 4 GPUs and want to dedicate just one to NeuroBrix:
id: single-v100-32g
preferred_dtype: float16
summary:
total_gpus: 1
total_vram_gb: 32.0
total_ram_gb: 251.5
topology: Single-GPU
cpu:
model: "Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz"
cores: 40
threads: 80
ram_mb: 257530
architecture: x86_64
features: [avx2, avx512f, fma]
devices:
- index: 0
brand: nvidia
model: Tesla V100-SXM2-32GB
memory_mb: 32768
compute_capability: "7.0"
supports_dtypes: [float32, float16]
architecture: volta
pcie_version: "3.0"
notes: "Single V100 32GB — other GPUs reserved for training"
Now you can run a second model on the remaining GPUs, or keep them free for training.
Full multi-GPU profile with NVLink interconnect:
id: my-2xv100-32g
vendor: dell
preferred_dtype: float16
summary:
total_gpus: 2
total_vram_gb: 64.0
total_ram_gb: 251.5
topology: Multi-GPU
cpu:
model: "Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz"
cores: 40
threads: 80
ram_mb: 257530
architecture: x86_64
features: [fma, avx2, avx512f, avx512_vnni]
devices:
- index: 0
brand: nvidia
model: Tesla V100-SXM2-32GB
memory_mb: 32768
compute_capability: "7.0"
supports_dtypes: [float32, float16]
architecture: volta
pcie_version: "3.0"
- index: 1
brand: nvidia
model: Tesla V100-SXM2-32GB
memory_mb: 32768
compute_capability: "7.0"
supports_dtypes: [float32, float16]
architecture: volta
pcie_version: "3.0"
interconnect:
groups:
- index: 0
members: [0, 1]
type: full_mesh
tech: nvlink
bandwidth_gbps: 300
pcie_fallback:
version: "3.0"
lanes: 16
bandwidth_gbps: 32
notes: "2 x V100 SXM2 32GB with NVLink, Dell C4140"
NeuroBrix handles heterogeneous GPU setups. Prism places larger components on the bigger GPU:
devices:
- index: 0
brand: nvidia
model: Tesla V100-SXM2-16GB
memory_mb: 16384
compute_capability: "7.0"
supports_dtypes: [float32, float16]
architecture: volta
- index: 1
brand: nvidia
model: Tesla V100-SXM2-32GB
memory_mb: 32768
compute_capability: "7.0"
supports_dtypes: [float32, float16]
architecture: volta
For development or small models:
id: cpu-workstation
preferred_dtype: float32
summary:
total_gpus: 0
total_vram_gb: 0
total_ram_gb: 32.0
topology: CPU-Only
cpu:
model: "AMD Ryzen 9 7950X"
cores: 16
threads: 32
ram_mb: 32768
architecture: x86_64
features: [avx2, fma]
devices: []
notes: "CPU-only workstation, no discrete GPU"
| Field | Required | Description |
|---|---|---|
id |
Yes | Unique profile identifier |
vendor |
No | Machine vendor (dell, supermicro, etc.) |
preferred_dtype |
Yes | Default compute dtype |
summary |
Yes | Quick stats for display and solver hints |
cpu |
Yes | CPU information |
devices |
Yes | List of GPU devices (empty [] for CPU-only) |
interconnect |
No | GPU-to-GPU links (omit for single-GPU/CPU-only) |
pcie_fallback |
No | PCIe specs for cross-group communication |
| Hardware | Recommended | Why |
|---|---|---|
| V100, T4, RTX 20 | float16 |
No bf16 support |
| A100, RTX 30/40 | float16 or bfloat16 |
Both work, bf16 avoids overflow |
| H100, H200 | bfloat16 |
Native bf16 tensor cores |
| CPU (generic) | float32 |
No half-precision acceleration |
| CPU with AMX | bfloat16 |
Hardware bf16 matrix multiply |
Warning: Without
preferred_dtype, Prism may assign fp32 to a model that was built in fp32, wasting memory and throughput. Set it for your hardware.
| Tech | Typical Bandwidth | Use Case |
|---|---|---|
nvlink |
300-900 GB/s | Server GPUs (V100 SXM, A100, H100) |
xgmi |
200-400 GB/s | AMD Instinct (MI250X, MI300X) |
pcie |
16-64 GB/s | Consumer GPUs, mixed setups |
neurobrix info --hardware my-custom
neurobrix serve --model <name> --hardware my-custom
If the profile has errors, NeuroBrix crashes with an explicit message (ZERO FALLBACK — no silent defaults).
--hardware flag usageNext: Serving Guide
© 2025–2026 Hocine Benkelaya. NeuroBrix engine released under the Apache License 2.0.
Developed by Hocine Benkelaya · Supported and funded by Neural Network Holding Ltd · Commercial distribution by WizWorks OÜ
Documentation source: GitLab