Why not just run ray job submit, kubectl or sbatch?
You can, if you have the credentials. TunePlane holds them instead, and in exchange the run gets
quota enforcement, an audit trail, one place its metrics land, and a record of the commit it came
from. The only thing the proxied path takes away is the ability to skip a quota.
Why does a submission need a clean working tree?
Every run records its commit, a config snapshot and the recipe digest. Three months later, that is the only reliable way to reproduce the good result.Can the lock file upgrade itself?
No. An upgrade can change entrypoints, defaults and images, so it has to be a decision somebody made.Which framework versions can I use?
How do I run my own framework or private code?
custom/custom with an allowlisted image and a train.sh in the experiment. The image needs
Python, your framework and your dependencies — not the CLI.
The published custom recipe declares external observability, so pass --observability-url and
install the tuneplane wheel if you want console charts. See
custom training.
Where should training data live?
Three options, in order of preference:
For material a job may read but nobody may download, use a Volume.
How is GPU time counted?
Every job recordsgpu_seconds, which is wall time holding cards times the card count. Queued
time is free; counting starts when the container is up. It shows on the console’s Usage page.
Can I work on a machine with no GPU?
Yes, for everything except training.tp init, tp new, tp validate, tp methods and
tp job logs are all local or read-only. A whole submit-to-ingest loop runs without a GPU too,
with scheduling and quota semantics intact — see smoke-testing.