System types
@app.job(system=...) requests a GPU tier for the job, from a fixed list of
four: simulo.SystemType.TIER_1 through TIER_4. The tier decides which GPU
model runs the job.
@app.job(type="train", system=simulo.SystemType.TIER_2, timeout=60 * 60)def train(num_envs: int = 512, max_iterations: int = 200) -> dict: ...The four tiers
Section titled “The four tiers”simulo systems prints the list. It reads a catalog built into the simulo
package, so it needs no network or login; --json prints the same data for
scripts.
TIER GPU MODEL VRAM VCPU MEMORY MAX PARALLEL ENVS STATUSTier 1 (tier1) T4 16 GB 4 16 GB 16 availableTier 2 (tier2) A10G 24 GB 4 16 GB not yet measured availableTier 3 (tier3) L4 24 GB 4 16 GB not yet measured not yet availableTier 4 (tier4) L40S 48 GB 4 32 GB not yet measured not yet availableTiers 3 and 4 are listed so you can see what is planned, but no machines can run them yet, and requesting one is refused (below).
MAX PARALLEL ENVS is a ceiling measured for one default workload on that
tier. It is not the same number as your job’s num_envs, and nothing
enforces it: a bigger scene needs more memory per environment, a smaller one
less. Benchmark your own num_envs on the tier you use.
What system= does
Section titled “What system= does”- It picks the GPU. A GPU machine belongs to one tier and takes that
tier’s jobs, plus jobs that named no tier. A
TIER_2job runs on an A10G with 24 GB; aTIER_1job runs on a T4 with 16 GB. For a job near 16 GB, that is the difference between running and running out of memory. - It is not a priority. No tier is served ahead of another, and naming one does not move your job up the queue.
- Leaving it out is a normal choice. A job with no tier can run on any free machine, whatever its tier. When a new machine has to be started for it, that machine is Tier 1.
STATUS above comes from the built-in catalog, so it can’t tell you what your
platform has running. If the platform has no machines for the tier you name,
the submit is refused and the error lists the tiers it does have. A tier with
no machines
running at the moment is normal: one starts for your job, and waiting for it
is what queued usually means.
Only SystemType members are accepted
Section titled “Only SystemType members are accepted”@app.job checks system= when Python imports your file, before anything
uploads. A string is refused, even one that spells a real tier:
@app.job(system=...) must be a simulo.SystemType member, e.g. system=simulo.SystemType.TIER_1; got 'tier1'. Run `simulo systems` to list the tiers.A tier that can’t run yet raises a ValueError at the same point, naming the
GPU you asked for and the tiers you can use:
ValueError: @app.job(system=SystemType.TIER_3) (L4) is not available on the platform yet. Available today: SystemType.TIER_1 (T4), SystemType.TIER_2 (A10G). Run `simulo systems` for the full catalog.gpu= is not an @app.job argument. Passing it is refused with an
instruction to use system= instead.