Skip to content

Experiments#

Example of the Experiments tab in Neptune

In the Experiments tab, you can see all the runs of the project in one table.

Each time you track a run with neptune.init_run(), it's added to the top of the table.

The leftmost column shows:

  • Whether the run is visible in comparison mode ( )
  • The identifier
  • A status indicator, if the run is active

Configuring columns#

Apart from filtering, you can customize the table columns to display the fields you are interested in.

Adding columns to the table#

Click Add column, then enter the field to add. The field path is the location of the piece of metadata in the run structure: run["field/path"].

Good to know

To be featured in the parallel coordinates view, the column must be added to the Experiments table.

Pinning columns#

Pinning a column in the experiments table

Pinned columns keep the fields visible as you switch between different tabs. They're also automatically included as columns in legends.

  1. If you haven't already, add the field of interest (such as sys/name) with the Add column button.
  2. On the column, click the icon and select Pin column.

    Alternatively, drag the column to the left of the separator line.

Tip

You can have one set of pinned columns in one custom view, and a different set in another view.

Sorting and customization#

Click the dots menu ( ) on a column to:

  • Access sorting options
  • Configure the column name, color, and numerical format
  • Group by the column
  • Pin the column
  • Remove the column

Sorting by last edited#

Modification timestamps are stored automatically in the sys namespace.

You can sort by the following:

  • sys/ping_time – when the Neptune API interacted with the object. That is, something was logged or modified through the code.
  • sys/modification_time – when any kind of edit was made, such as editing the run metadata through the app. This can be setting a description or managing the tags.

Supported field types#

The table view supports simple field types and certain single values.

Out of a series of values, you can choose a particular value to display, such as the max loss.

Supported

Not supported

Custom views#

Once you're happy with your experiments table configuration, you can save the view for later. It'll be visible to any member of your project.

The following is retained in the saved view:

  • Column configuration
  • Query filters
  • Grouping

To save a custom view:

  1. In the Custom view dropdown above the search input box, click Save view as new.
  2. Give your new table view a name (you can change it later).

Now any project members can access the view and share it with a persistent link.

See custom view in Neptune 

Grouping runs (groupBy)#

How to switch to Group mode

To switch from List to Group mode, click .

By default, runs are grouped by group tag. You can group runs by any other value, such as batch size or learning rate.

For details, see Groups.

Searching and filtering runs#

Filter input box and selection menu for date and time

You can query runs by any field except files. By default, the search targets the name field (sys/name).

To switch to the query builder, click the Query button or use the keyboard shortcut: Ctrl+K

  • To change parts of a filter, you can click on the operator or value to change them without altering the rest.
  • To instantly filter by tag or owner, click on a value in the respective column.

Query syntax#

The syntax of a condition is:

  • <field> exists
  • <field> <operator> <one or (if applicable) more values>

You can build a query out of multiple conditions, in which case all of the conditions are applied (joined by AND).

Data and field type Operators Value(s) Example
Numerical (Float or Integer) =, !=, >=, >, <=, <, exists, not exists integer or float f1 >= 0.95
Numerical series (FloatSeries) aggregates: average, variance, last value, max, or min =, !=, >=, >, <=, < integer or float test/acc LAST < 0.6
Text (String) =, !=, contains, not contains, exists, not exists string sys/name = blobfish-candytuft
Text series (StringSeries) last entry =, !=, contains, not contains string finetuning/monitoring/stderr contains SomeException
Owner one of, not one of user or service account name sys/owner one of jackie, francis
Tags (StringSet) one of, not one of, all of one or more tags sys/tags all of finetune, v2.0
Artifact = hash value data/version/train = aae08a1jkdt45pl...b1b
State (RunState) one of, = active or inactive sys/state = active
Model version stage (Stage) one of, not one of none, archived, staging, production sys/stage one of staging, production
datetime exists, not exists, before, after, last

Value for before/after: date and time

Values for last: day, week, month, quarter, or year

sys/creation_time last quarter
Boolean =, != True or False sys/failed = True

The query language doesn't support fields that involve files (File, FileSet, FileSeries).

Example queries#

Models small enough to be used on mobile that have a decent accuracy

  • model_info/size_MB <= 50
  • test/acc | LAST > 0.90
What was logged
run = neptune.init_run()
run["model_info/size_MB"] = 45
for epoch in epochs:
    # training loop
    acc = ...
    run["test/acc"].append(acc)

All of Jackie's runs from the current exploration task

  • sys/owner = jackie
  • sys/tags one of exploration
What was logged
run = neptune.init_run(
    api_token="...", # (1)!
    tags=["exploration", "pretrained"],
)
  1. The API token of jackie's account, passed to this argument or set to the NEPTUNE_API_TOKEN environment variable

All runs from the start of a particular month that failed during training

  • sys/creation_time after 2023-11-01 00:00:00
  • sys/failed = True
What was logged
run = neptune.init_run()
...
# Exception was raised during execution