Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.trainy.ai/llms.txt

Use this file to discover all available pages before exploring further.

Logging

Image logging supports the following formats: To log an image, instantiate the pluto.Image class.
img = pluto.Image(
    data: Union[str, PILImage.Image, matplotlib.figure.Figure, torch.Tensor, np.ndarray],
    caption: str | None = None,
)
pluto.log({"image/file/0-0": img}, step=step)
ParameterTypeDescription
dataUnion[str, PILImage.Image, matplotlib.figure.Figure, torch.Tensor, np.ndarray]The image data to log. Can be a path to an image file, a PIL image, a Matplotlib figure, a PyTorch tensor, or a NumPy array.
captionstrA caption for the image.

Viewing

Logged images appear as gallery cards, grouped by their metric label prefix. When comparing multiple runs, images from each run are shown side-by-side. Images in the Pluto dashboard When multiple runs are selected in the Compare view, images logged with the same metric label are displayed together, with each run’s image labeled with the run name and ID. This makes it easy to visually compare outputs across experiments.

Step Navigation

If you log images at multiple training steps, use the step slider below the images to browse through different steps. This is useful for tracking how generated outputs (e.g., sample images, attention maps) evolve over the course of training. When multiple image groups are displayed in the same section, their step sliders can be linked so that changing the step on one group changes all of them simultaneously. Click the lock icon on the step navigator to toggle sync on or off.

Multi-Sample Logging

If you log a list of images at the same step under one log name (e.g. pluto.log({"gens": [pluto.Image(a), pluto.Image(b), pluto.Image(c)]}, step=10)), every sample renders inside the same card with a per-cell ◀ i / N ▶ nav row above the image. Multi-sample image card with 1/3 nav row

Pinning Runs at a Step

The global step slider forces every run to be viewed at the same step, which makes it hard to compare runs at their respective best-performing checkpoints — different runs converge at different steps, and the artifacts you actually want side-by-side don’t all live at the same step. Pinning solves this by letting you freeze individual runs at a specific step while the global slider keeps driving everything else. Common workflows:
  • Lock a baseline run at its best step, then sweep the slider on the rest to see how the variants compare against that fixed reference.
  • Pin every run on the page at its own argmin/argmax of a metric so the gallery shows each run’s best checkpoint regardless of when it landed (see Best-Step Pinning below).
  • Hold a run frozen at a known-bad step to inspect failure modes while other runs continue advancing.
Each pinned card shows a colored badge with the pinned step. Click the pin button on an image card to choose the pin scope:
SymbolScopeEffect
Pin in this panelFreezes only this card’s run inside this image widget. Other widgets for the same run still follow the global stepper.
Pin across all panelsFreezes this run at the chosen step in every image widget on the page that shows it.
Pin to best stepPinned by a column-header action (see below). The step is computed per run from a metric’s argmin/argmax.
Pin scope dropdown showing pin-in-this-panel and pin-across-all-panels options

Unpinning

Cross-panel and best-step pins offer two unpin options in a dropdown:
  • Unpin this image — removes the pin only from this widget. Other widgets that still hold the same cross-panel pin keep it.
  • Unpin across all panels — removes the pin everywhere it was applied.
Local (single-panel) pins keep the simpler one-click unpin action — there’s nothing else to scope.

Clear All Pins

Open the Image Settings popover and click Clear All Pins to remove every pin (local, cross-panel, and best-step) at once for the current page.

Best-Step Pinning

For metric-driven exploration (ex. “show me each run at its best loss”), pin every run on the page to its own argmin/argmax step in one click. Open a metric column’s header menu in the runs table, then choose Find best step → one of:
ActionWhat it pins to
Pin steppers at min valueEach run pinned at the step where the metric is lowest
Pin steppers at max valueEach run pinned at the step where the metric is highest
Pin steppers at min value (with image)Lowest metric value among steps that also have an image for that run
Pin steppers at max value (with image)Highest metric value among steps that also have an image for that run
The “(with image)” variants are useful when your metric and image cadences don’t perfectly overlap — without them, the chosen step might land on a step that has no image, so the card falls back to the No image at step N placeholder. Find best step submenu with four pin actions

Tolerance Window

Even with the “(with image)” variants, your metric and image cadences may not align exactly (e.g. metric every 10 steps, images every 10 steps offset by 5). The best-step picker handles this with a nearest-snap with tolerance: each metric step snaps to its closest image step within a step-distance limit K (default K = 20). You can edit K directly in the Find best step submenu — type a value, press Enter or click any of the four pin buttons.

Pin Provenance

Every best-step pinned card shows an info icon (ⓘ) next to the run name. Hover for a popover that explains why this step was chosen:
  • A headline with the metric and extreme that drove the pick (e.g. Pinned at max train/loss = 0.9023)
  • The metric step that drove the pick
  • How many steps away the chosen image is from that metric step
  • A tied-alternative line when more than one image step matched within tolerance

Sync Zoom

Click the settings icon on an image card to open the Image Settings popover. Enable Sync Zoom to persist the zoom level across image fullscreen views within the same group. When enabled, zooming in on one image carries over when you navigate to the next step. Sync Zoom is off by default. Sync Zoom popover