Skip to main content

scheduler_tools

Build Status Documentation Code Coverage

Tools for composing interdependent tasks on a scheduler (i.e. SLURM)


Setup requirements for launching prefect / dask-distributed on the cluster from your local desktop

On your local system

For whatever project you are working on add scheduler_tools to your dependency list.

conda activate {your_env_name}
pip install -e {your_project_name}
mkdir ~/.aics_dask

create file ~/.aics_dask/ssh.json with contents

{"gateway":{
	"url": "slurm-machine.bettertech.com",
	"user": "flanders",
	"identityfile": "/Users/flanders/ssh/flandersPrivateKey"
	},
    "dashboard_port": 8787,
    "dask_port": 34009
}

On the cluster

conda activate {your_env_name}
pip install -e {your_project_name}
mkdir ~/.aics_dask

programmatically launch remote server and create tunnel

from scheduler_tools import Connector
from pathlib import Path

prefs = {'gateway': {}}
prefs['gateway']['url'] = 'slurm-machine.bettertech.com'
prefs['gateway']['user'] = 'flanders'
prefs['gateway']['identityfile'] = '~/.ssh/id_rsa'
prefs['dask_port'] = 34009
prefs['dashboard_port'] = 8787


dask_prefs = {'cluster_obj_name': {'module': 'dask_jobqueue', 'object': 'SLURMCluster'},
                      'cluster_conf': {},
                      'worker_conf': {},
                      'remote_conf': {}
                      }
dask_prefs['cluster_obj_name'] = {'module': 'dask_jobqueue', 'object': 'SLURMCluster'}

dask_prefs['cluster_conf']['queue'] = 'aics_cpu_general'
dask_prefs['cluster_conf']['cores'] = 2
dask_prefs['cluster_conf']['memory'] = '4GB'
dask_prefs['cluster_conf']['walltime'] = "02:00:00"
dask_prefs['worker_conf']['minimum_jobs'] = 2
dask_prefs['worker_conf']['maximum_jobs'] = 40

dask_prefs['remote_conf']['env'] = 'dask-scheduler' # whatever you named your remote conda env
dask_prefs['remote_conf']['command'] = 'setup_and_spawn.bash'
dask_prefs['remote_conf']['path'] = '/home/<username>/.aics_dask' # where your preferences live for this


conn = Connector(dask_prefs=dask_prefs, pref_path=Path('~/.aics_dask/ssh.json'))
conn.run_command()
conn.stop_forward_if_running()
conn.forward_ports()

programmatically shutdown remote server and tunnel

from scheduler_tools import Connector
from pathlib import Path

conn = Connector(pref_path=Path('~/.aics_dask/ssh.json'))
conn.stop_dask()

cluster creation context example

from scheduler_tools import Connector, default_dask_prefs
from pathlib import Path

dask_prefs = default_dask_prefs()


with Connector(dask_prefs=dask_prefs, prefs=Path('~/.aics_dask/ssh.json')) as conn:
    print(f"local dashboard on: {conn.local_dashboard_port}")
    print(f"local dask port: {conn.local_dask_port}")
    # !!! your code here !!!

Command line interface

CLI start Dask Cluster command

spawn_dask_cluster -s ~/.aics_dask_gpu/ssh.json -q aics_gpu_general -r <remote_env_name>

CLI stop Dask Cluster command

shutdown_dask_cluster -s ~/.aics_dask/ssh.json

Free software: Allen Institute Software License

Metadata

Release files for scheduler-tools 0.1.5

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

Source distribution (sdist)

Source distribution for scheduler-tools 0.1.5
File Size Uploaded
scheduler_tools-0.1.5.tar.gz 24.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scheduler-tools 0.1.5
File Interpreter ABI Platform
scheduler_tools-0.1.5-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 52.1 kB

Release files / scheduler_tools-0.1.5.tar.gz

Download URL scheduler_tools-0.1.5.tar.gz
Size 24.1 kB
Tags Source
SHA-256 checksum
How to use checksums
aef59d081231f50d7f03f0aea2b48d6c37f4d4bf3607c371ec12a88163d052a4
BLAKE2b-256 checksum
How to use checksums
f5b0278310e96d462b5c840e65139e48dc5343dca18ce1abbf0804a46b3239b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

Release files / scheduler_tools-0.1.5-py2.py3-none-any.whl

Download URL scheduler_tools-0.1.5-py2.py3-none-any.whl
Size 27.9 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
58d3c9019d00391b4daadbbea418d1ef703ac6df893dad790ca7ecbfe3dbf47e
BLAKE2b-256 checksum
How to use checksums
7b7ceaaf8e68ddefb861b0b90c09563237c1db372d163201bb3f57531e7d5e1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.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