Seml Versions Save

SEML: Slurm Experiment Management Library

0.4.6

1 month ago
  • Fixed a bug that seml wouldn't output anything to the console if SSH forward were used.

0.4.5

1 month ago

Bug fixes

  • This version supports newer versions of typer.

0.4.4

1 month ago

Features

  • Added support for port forwarding to access MongoDB Server #134 .
    • To use this feature install seml via pip install seml[ssh_forward].
    • Configure your MongoDB and ssh forward via seml configure --ssh_forward
  • Add clickable VSCode Debugger links #133
  • Add option stash_all_py_files to the seml configuration block to stash all python files within the current directory (instead of only stashing the imported ones).
  • Added status widget to show which command is currently running.
  • Allow the import of seml.experiment.Experiment directly from seml.

Fixes

  • Fixed minor issues in source code discovery.

0.4.3

2 months ago

Features

  • seml now provides template(s), if you want to initialize a new project simply run seml project init <project_name> and a new folder project_name will be created with sensible defaults. List available templates via seml project list-templates.
  • Add a setting to set the default terminal width for experiments SETTINGS.EXPERIMENT.TERMINAL_WIDTH.
  • Parallel processing for seml.get_results

Bug fixes

  • Fixed node detection.
  • Several fixes related to print-output.

0.4.2

3 months ago

Breaking changes

Features

  • Added seml <col> print-output: print experiment outputs directly via CLI. This command first attempts to gather the output via the slurm log file. If that fails it will search for the correct log within the MongoDB.
  • Added seml --version

TLDR:

old

import sacred
import seml

ex = sacred.Experiment()
seml.setup_logger(ex)

@ex.post_run_hook
def collect_stats(_run):
    seml.collect_exp_stats(_run)

@ex.config
def config():
    overwrite = None
    db_collection = None
    if db_collection is not None:
        ex.observers.append(
            seml.create_mongodb_observer(db_collection, overwrite=overwrite)
        )

new

from seml.experiment import Experiment

ex = Experiment()

0.4.1

3 months ago

Features

  • Add seml drop <regex> to delete all collections matching the regex pattern. (be careful with this one)
  • Progress bars have been added if operations may take longer.

Fixes

  • seml now correctly autocompletes if the cursor is not at the end.
  • bools will no longer be converted to integers.
  • source code reload now doesn't require you to first change into the correct directory.
  • source code reload will resolve interpolations.

Development

  • Added ruff linter and formatter as pre-commit hook, see readme.

0.4.0

6 months ago

Features

  • seml's CLI has been reimplemented for better usability, scalability, and optics. (#116)
    • As part of this, all seml output will now use rich for pretty printing.
  • seml now supports sacred's named configurations (#119)
    • You can import named configurations in your yaml file at the top level with $config[_<optional_name>]: str | {'name': str, 'priority': int}. Use the optional priority to indicate the import order. The optional name allows for importing multiple configs.
    • As part of this change, the whole configuration is now evaluated when starting an experiment! (no more duplicates if you add a default parameter to your yaml file)
  • OmegaConf is now supported to allow interpolations in your config files. (#119)
  • seml now supports descriptions! (#118)
    • Use seml.description in your yaml files to set descriptions.
    • You can retrospectively change descriptions via seml collection description set
    • Descriptions are listed in status, list and print-fail-trace
  • Support for wildcards and multiple config files (#100)
    • seml <collection> add *.yaml
    • seml <collection> add config1.yaml config2.yaml
  • Added seml list <regex> to list the state of all collections matching the regex (if left empty, all collections will be shown). (#114)
    • Note: this does not checks for killed or interrupted experiments.
  • Added seml <collection> print-fail-trace to print all fail traces in a collection. (#114)
    • No more manual checks in the MongoDB!
  • Added projections to status and print-fail-trace (#118)
    • You can inspect data from your failed experiments via seml collection status -p config.dataset -p config.model
  • Added support for CLI argument completion (#115).
    • Install argument completion via seml --install-completion {shell}
    • seml will complete collection names, command names, and flags.
  • Added support for Python 3.10 and 3.11

Breaking Changes

  • Dropped support for Python 3.7
  • The new CLI has slightly changed parameters. Make sure to check the documentation!
  • The behavior of seml configure has been adjusted to incorporate more configurations in the future. For now, the default behavior is identical.
  • All CLI outputs have been updated. Scripts relying on inspecting these are unlikely to work.
  • The whole configuration is now evaluated when adding an experiment rather than at runtime (#119)

Changes

  • Collections will now be dropped if they are empty after seml <collection> delete. (#100)
  • Support integers as dict keys (we convert them to strings) (#113)
  • We switched to importing larger modules lazily. Thanks to this, seml is now faster
    • Before: time seml: 1.2s - 2s
    • After: time seml: 0.5 - 0.8s
    • With the newest version of munch and sacred: ~0.3s

Bug fixes

  • Better handling of working directories.
  • Correct inheritance order to default -> template -> experiment (#109)

0.3.7

1 year ago

Features

  • Added support for zipped parameters (#63)
    • Zipped parameters behave as one dimension in the cartesian product of grid.
  • Allow changing the directory where seml loads files to via TMP_DIRECTORY in settings.py (#94)

Bug fixes

  • Fix experiment filtering with no-hash and nested configs (#89)
  • For compatibility with PyMongo >= 4.0, one can now specify directConnection (ca34fbf52b552cab4b7a6811d750f4f1c233175c)
  • Better clean-up orphaned files (#97)
  • Allow float range steps (30b4afa9b741ed0f8e1cdfd72d63f3ee8fd8357f)
  • MattermostOberserver bufixes (24910f9059f43e8e962e9e7a36adaa0a8beb4910, 059f055b71614715c2212a0cf212ff20fd64ab21)
  • Respect hierarchy for seed parameter (#93)

0.3.6

2 years ago

Features

  • Support for running commands before and after the python script (#84)
  • Support for parameter overriding via CLI (#79)
  • Print Slurm error message when sbatch / srun fails (#77).
  • Detect when script name shadows a required package, e.g. numpy.py and raise an error accordingly (#78).
  • peak GPU memory usage for TensorFlow >= 2.5

Bug fixes

  • Support for pymongo >= 4 (#76)
  • Wait for slurm to properly cancel jobs when chaining events (#87)
  • Print proper hostnames for seml jupyter (#86)

0.3.5

2 years ago

Breaking changes

  • Remove the (inoperative) max_jobs_per_batch config option.

Features

  • reload-sources command for updating the source code of specified experiments (#57, #64)
  • chain multiple commands in one, e.g. seml coll cancel reset reload-sources start (#61)
  • custom threshold settings for confirmation of cancel, reset, delete, and reload-sources (#54)
  • -y option to confirm changes directly (#62)
  • multi-user collaboration in the same MongoDB
  • New max_simultaneous_jobs config option that limits the number of simultaneously running jobs per job array

Bug fixes

  • Use repr and shlex for proper shell-escaping and handling of parameter edge cases (#51, #53, #69)
  • Correctly handle job arrays with a maximum number of simultaneously running jobs (#47)
  • Fix handling scontrol output without equal signs (#49)
  • Use UUIDs to fix race conditions in temp dir creation
  • Fix crashing when CONDA_DEFAULT_ENV is not defined
  • Do not discard parameters specifying empty dictionaries (#56)
  • print SEML usage when called without arguments (#59)