Skip to main content

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

  1. Download Anaconda distribution following https://conda.io/docs/user-guide/install/index.html
  2. 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

ncluster-0.1.91.tar.gz (58.6 kB view details)

Uploaded Source

Built Distribution

ncluster-0.1.91-py3-none-any.whl (102.5 kB view details)

Uploaded Python 3

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

Hashes for ncluster-0.1.91.tar.gz
Algorithm Hash digest
SHA256 d70210273a24ee3e4b88ca61f755f6b7273a65b92e34263ea7af6afed73c6bf4
MD5 03b74336d088b4df1f6d7fcf192462b7
BLAKE2b-256 c0eecf0fd84a012568310556416ee150e167725ce01ba78c3744e6b1ccad7fce

See more details on using hashes here.

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

Hashes for ncluster-0.1.91-py3-none-any.whl
Algorithm Hash digest
SHA256 4634e42363235bc033c3dc026bfef664c427122a27cf2f270661f0c8413d8ef4
MD5 8d38e6fc7fb5ef388607d385d214bac9
BLAKE2b-256 6bfc20e862d40e6dd6b2991f2fff06ca62f91a598b2308b9f9b923a616a998e5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page