Highlights
- Easy install and setup
- Save and load source code automatically
- Near-instant experiment start & queue
- Better debugging support
Features
- Easy install and setup via `pip install` and `seml configure`
- Source code automatically saved at queue time and loaded for the experiment
- Near-instant experiment start thanks to job arrays
- Fast duplicate check in large databases thanks to config hashing and indexing
- Check yaml-config at queue time
- Capture experiment stats, such as RAM and GPU-RAM usage
- `--debug` to run experiment in debug mode, which activates many useful options to make debugging easier
- `--dry-run` to print commands, including variants for the VS Code and PyCharm debugger
- Nicer error messages
- New observers: Neptune, Slack
- Nested parameter collections
- Local processing with multiple cooperating workers
- Ability to clean orphaned artifacts from MongoDB
- `max_jobs_per_batch` option to be nice and restrict the number of jobs running in parallel.
- No more `-c`
- Many small things
Breaking changes
- The public Python methods are now in `seml`, so you just need to `import seml`, then call e.g. `seml.create_mongodb_observer`. These methods are: `setup_logger`, `collect_exp_stats`, `get_results`, `create_mongodb_observer`, `create_slack_observer` and `create_neptune_observer`.
- `get_results_flattened` was removed.
- Most internal Python methods have moved, as we've restructured the library. If you use such a method you'll need to search for it.
- config:
- `output_dir` is now in `seml`, not in `slurm`.
- New `project_root_dir` parameter used for saving your source files
- SEML is now registered as a script, so you should remove the alias in your `.bashrc`
- no more `-c` in front of the config
- `-t` is now `-n`
- `--verbose` now goes to the left of the command (e.g. `start`)
- Output for local jobs is now saved to a log-file by default. Use `-o` if you don't want this.
Bug Fixes
- Experiment state `killed` instead of `interrupted` after cancelling
- Correctly handle Numpy values in `get_result`
- Smoothly work on machines without Slurm
- tqdm autonotebook for using seml inside Jupyter Notebooks
- Many small things