Skip to main content

Github Actions

SEML: Slurm Experiment Management Library

SEML is the missing link between the open-source workload scheduling system Slurm, the experiment management tool sacred, and a MongoDB experiment database. It is lightweight, hackable, written in pure Python, and scales to thousands of experiments.

Keeping track of computational experiments can be annoying and failure to do so can lead to lost results, duplicate running of the same experiments, and lots of headaches. While workload scheduling systems such as Slurm make it easy to run many experiments in parallel on a cluster, it can be hard to keep track of which parameter configurations are running, failed, or completed. sacred is a great tool to collect and manage experiments and their results, especially when used with a MongoDB. However, it is lacking integration with workload schedulers.

SEML enables you to

  • very easily define hyperparameter search spaces using YAML files,
  • run these hyperparameter configurations on a compute cluster using Slurm,
  • and to track the experimental results using sacred and MongoDB.

In addition, SEML offers many more features to make your life easier, such as

  • automatically saving and loading your source code for reproducibility,
  • easy debugging on Slurm or locally,
  • automatically checking your experiment configurations,
  • extending Slurm with local workers,
  • and keeping track of resource usage (experiment runtime, RAM, etc.).

Get started

New projects

The fastest way to get started with SEML is via uv:

  1. Install uv:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  2. Setup a new project
    # uvx will execute `SEML` in a temporary virtual environment
    # and run it to setup your new project.
    uvx seml project init my_new_project
    
  3. Setup a virtual environment
    cd my_new_project
    uv sync
    
  4. Activate your virtual environment
    source .venv/bin/activate
    
  5. Configure SEML:
    seml configure
    

When executing SEML make sure to always use the seml command from your project's virtual environment and only use uvx seml for high-level commands that do not affect experiments (like setting up new projects).

Existing projects

If you want to include SEML into existing projects, you can install it via:

pip install seml

Then configure your MongoDB via:

seml configure

SSH Port Forwarding

If your MongoDB is only accessible via an SSH port forward, SEML allows you to directly configure this as well if you install the ssh_forward dependencies via:

pip install seml[ssh_forward]

It remains to configure the SSH settings:

seml configure --ssh_forward

Development

For development, we recommend uv which you can install via

curl -LsSf https://astral.sh/uv/install.sh | sh

Setup the right environment use and activate it:

uv sync --locked
source .venv/bin/activate

Alternatively, you can install the repository in any Python environment via:

pip install -e .[dev]

Pre-commit hooks

Make sure to install the pre-commit hooks via

pre-commit install

Documentation

Documentation is available in our docs.md or via the CLI:

seml --help

Example

See our simple example to get familiar with how SEML works.

CLI completion

SEML supports command line completion. To install this feature run:

seml --install-completion {shell}

If you are using the zsh shell, you might have to append compinit -D to the ~/.zshrc file (see this issue).

Slurm version

SEML should work with Slurm 18.08 and above out of the box. Version 17.11 and earlier do not have a SIGNALING job state, which you have to remove from the SLURM_STATES defined in SEML's settings (seml/settings.py). Earlier versions have not been tested and might have other issues.

Contact

Contact us at zuegnerd@in.tum.de, johannes.gasteiger@tum.de, or n.gao@tum.de for any questions.

Cite

When you use SEML in your own work, please cite the software along the lines of the following bibtex:

@software{seml_2023,
  author = {Z{\"u}gner, Daniel and Gasteiger, Johannes and Gao, Nicholas and Dominik Fuchsgruber},
  title = {{SEML: Slurm Experiment Management Library}},
  url = {https://github.com/TUM-DAML/seml},
  version = {0.4.0},
  year = {2023}
}

Copyright (C) 2023 Daniel Zügner, Johannes Gasteiger, Nicholas Gao, Dominik Fuchsgruber Technical University of Munich

Metadata

Release files for seml 0.5.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for seml 0.5.7
File Size Uploaded
seml-0.5.7.tar.gz 517.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for seml 0.5.7
File Interpreter ABI Platform
seml-0.5.7-py3-none-any.whl Python 3 none any Details

Total release size: 643.4 kB

Release files / seml-0.5.7.tar.gz

Download URL seml-0.5.7.tar.gz
Size 517.7 kB
Tags Source
SHA-256 checksum
How to use checksums
8aeb091cec3ddd0b7e346fa64217eb9054fc51457545c6bf693f7500563edea7
BLAKE2b-256 checksum
How to use checksums
a0a329caae6cf220efa46cc9a05e9acef2d538059410333a3df030a8e2fe9a8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 21, 2026.

Transparency log

Release files / seml-0.5.7-py3-none-any.whl

Download URL seml-0.5.7-py3-none-any.whl
Size 125.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6e3545d27fd9575c9a3ce7c46bed22b9e61b606713f1e94cf960cd79b4e971d4
BLAKE2b-256 checksum
How to use checksums
1be7a11fd5f120d12eff4011e8be5de52a68b46b19ad0e0b7c517d4ba78311bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 21, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.7 This release

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

4 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page