What belongs in it
Logs need nothing:
print, logging and framework stdout all reach the Logs tab. Charts are
not parsed from stdout. Use tuneplane.report or declare TensorBoard/JSONL outputs for
native collection; the independent collector needs no Python SDK in the training image.
A Dockerfile to start from
PATH — otherwise python inside train.sh is /usr/bin/python with no torch. And use a
devel base if you need nvcc, which DeepSpeed’s JIT compile does.
Push, then pin
The registry allowlist
--image is parsed for its registry host: ghcr.io, localhost:5000, or docker.io when the
name carries no host. That host has to be in TUNEPLANE_ALLOWED_IMAGE_REGISTRIES, a
comma-separated list the deployment sets.
An administrator sets something like
TUNEPLANE_ALLOWED_IMAGE_REGISTRIES=registry.example.com,ghcr.io, and the nodes have to be able
to pull: imagePullSecrets on KubeRay, a Docker login on each registered machine, or an
already-converted SIF on Slurm.
What each backend wants
A slow pull leaves the job in
PENDING until the pre-running deadline, then FAILED. That is
not a training bug.
Check it worked
tp job logs reaching your own launch line means the image pulled and the venv is
on PATH.