Lightweight interface to launching jobs in the cloud
Project description
ncluster
By Yaroslav Bulatov, Andrew Shaw, Ben Mann https://github.com/cybertronai/ncluster
Ncluster provides Python API to do the following things:
- Allocate AWS machine
- Upload file to machine
- Run command on machine
- Download file from machine
IE
import ncluster
task = ncluster.make_task(instance_type='p2.xlarge')
task.upload('myscript.py')
task.run('python myscript.py > out')
task.download('out')
Necessary AWS infrastructure is created on demand using defaults optimal for fast prototyping. IE, your machines are preconfigured for passwordless SSH, can access each other over all interfaces, and have a persistent file system mounted under /ncluster. Commands are executed in a remote tmux session so you can take over the environment at any time and continue from your terminal.
Installation
Install pip, tmux, Python 3.6 (see below), and write down your AWS security keys, then
pip install -r https://raw.githubusercontent.com/yaroslavvb/ncluster/master/requirements.txt
pip install -U ncluster
export AWS_ACCESS_KEY_ID=AKIAIBATdf343
export AWS_SECRET_ACCESS_KEY=z7yKEP/RhO3Olk343aiP
export AWS_DEFAULT_REGION=us-east-1
Command-line tools
ncluster
ncluster ls
ncluster hosts
ncluster ls
ncluster ls <substring>
ncluster ssh # connects to latest instance
ncluster ssh <substring> # connects to latest instance containing <substring>
ncluster ssh \'<exact match>\'
ncluster mosh <substring>
ncluster kill <substring> # terminates matching instances
ncluster kill \'<exact match>\'
ncluster stop <substring> # stops matching instances
ncluster start <substring> # starts matching stopped instances
ncluster nano # starts a tiny instance
ncluster keys # information on enabling SSH access for your team-members
ncluster ssh_ # like ssh but works on dumb terminals
ncluster ls
ncluster cat <fn>
ncluster cmd "some command to run remotely on AWS"
ncluster efs # gives EFS info such as the mount command
nsync -m gpubox
nsync -m gpubox -d transformer-xl
nsync -d {target directory} -m {machine name substring}
nsync -m gpubox # syncs . to ~ on gpubox
nsync -d transformer-xl -m 4gpubox # syncs . to ~/transformer-xl on 4gpubox
{substring} selects the most recently launched instances whose name contains the substring. Empty string is a valid substring. Skipping -t will sync to ~ on remote machine. Sync seems to be 1 way (from local -> remote)
Docs
- Some out-of-date docs with more info docs
Extra
An example of installing pip/tmux/python 3.6 on MacOS
- Download Anaconda distribution following https://conda.io/docs/user-guide/install/index.html
- Install tmux through homebrew: https://brew.sh/, then
brew install tmux
Then
conda create -n new python=3.6 -y
conda activate new
Extra Deps:
brew install fswatch
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ncluster-0.1.91.tar.gz
.
File metadata
- Download URL: ncluster-0.1.91.tar.gz
- Upload date:
- Size: 58.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d70210273a24ee3e4b88ca61f755f6b7273a65b92e34263ea7af6afed73c6bf4 |
|
MD5 | 03b74336d088b4df1f6d7fcf192462b7 |
|
BLAKE2b-256 | c0eecf0fd84a012568310556416ee150e167725ce01ba78c3744e6b1ccad7fce |
File details
Details for the file ncluster-0.1.91-py3-none-any.whl
.
File metadata
- Download URL: ncluster-0.1.91-py3-none-any.whl
- Upload date:
- Size: 102.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4634e42363235bc033c3dc026bfef664c427122a27cf2f270661f0c8413d8ef4 |
|
MD5 | 8d38e6fc7fb5ef388607d385d214bac9 |
|
BLAKE2b-256 | 6bfc20e862d40e6dd6b2991f2fff06ca62f91a598b2308b9f9b923a616a998e5 |