Skip to content

Latest commit

 

History

History

example

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Configurations

To know more about possible configurations, please first take a look at the example configuration.

The sections below explain further details in LMN config and its features:

Global and local configurations

lmn looks for configuration files in this order:

  1. {project_root}/.lmn.json5
  2. $HOME/.config/lmn.json5

2 is considered global configuration. lmn merges local configuration with the global one (the local config has priority for conflicted entries). It is recommended to store basic configurations (e.g., remote machines) in the global config, and keep the local config light.

Preset for slurm configurations

You can store presets for slurm job specification in a config file:

{
    "machines": {
        ...
    },
    "slurm-configs": {
        "very-short": {
            "partition": "contrib-gpu",
            "cpus_per_task": 1,
            "time": "0:10:00",
            "output": "slurm-%j.out.log",
            "error": "slurm-%j.error.log",
        },
        "a6000": {
            "partition": "contrib-gpu",
            "cpus_per_task": 1,
            "time": "4:00:00",
            "constraint": "a6000",
            "output": "slurm-%j.out.log",
            "error": "slurm-%j.error.log",
        },
        "cpu": {
            "partition": "cpu",
            "cpus_per_task": 1,
            "time": "4:00:00",
            "constraint": "avx",
            "output": "slurm-%j.out.log",
            "error": "slurm-%j.error.log",
        },
}

When you want to use a preset, you can simply use --sconf option

$ lmn run tticslurm --sconf a6000 -- python train.py

Preset for PBS configurations

Coming Soon...

Other notes

Project root

Project root is determined by checking if a directory contains .git or .lmn.json5.
If those are not found in the current directory, lmn recursively traverses its parents to search for it.

SSH connection

lmn establishes a ssh connection with ControlMaster (ControlPath is set to ~/.ssh/lmn-ssh-socket-{hostname}) any following ssh connections reuse the established one.