Run compute jobs on AWS as if you were running them locally.
Nimbo: Machine Learning on AWS with a single command
Nimbo is a dead-simple command-line tool that allows you to run code on AWS as if you were running it locally. It abstracts away the complexity of AWS, allowing you to build, iterate, and deliver machine learning models faster than ever.
Example - run "python -u train.py --lr=3e-4
run "python -u train.py --lr=3e-4The fastest way to prototype on AWS
Nimbo drastically simplifies your AWS workflow by taking care of instance, environment, data, and IAM management - no changes to your codebase needed. Whether you're just getting started with AWS or are a seasoned veteran, Nimbo takes the pain out of doing Machine Learning in the cloud, allowing you to focus on what matters - building great models for your team and clients.
Powerful commands
Nimbo provides many useful commands to supercharge your productivity when working with AWS, such as easily launching notebooks, checking prices, logging onto an instance, or syncing data. Some examples include :
nimbo ls-spot-pricesnimbo ssh <instance-id>nimbo push datasetsnimbo pull logsnimbo rm-all-instances
Key Features
- Your Infrastructure:
- User Experience:
- Customizable:
- Seamless Spot Instances
- Managed Images
You can find more information at nimbo.sh, or read the docs at docs.nimbo.sh.
Getting started
Please visit the Getting started page in the docs.Examples
Sample projects can be found at our examples repo, nimbo-examples. Current examples include:- Finetuning an object segmentation network with Detectron2
- Training a neural network on MNIST with Pytorch
- Training a neural network on MNIST with Tensorflow, on a spot instance
Product roadmap
- GCP support: Use the same commands to run jobs on AWS or GCP.
- Deployment: Deploy ML models to AWS/GCP with a single command. Automatically create an API endpoint for providing video/audio/text and getting results from your model back.
- Add Docker support: Right now we assume you are using a conda environment, but many people use docker to run jobs. This feature would allow you to run a command such as
nimbo run "docker-compose up", where the docker image would be fetched from DockerHub (or equivalent repository) through adocker_imageparameter on thenimbo-config.ymlfile. - Add AMIs with preloaded large datasets: Downloading and storing large datasets like ImageNet is a time consuming process. We will make available AMIs that come with an extra EBS volume mounted on
/datasets, so that you can use large datasets without worrying about storing them or waiting for them to be fetched from your S3 bucket. Get in touch if you have datasets you would like to see preloaded with the instances.
Developing
If you want to make changes to the codebase, you can clone this repo and
pip install -e .to install nimbo locally. As you make code changes, your local
pip install -r requirements/dev.txtfor installing all dependencies for development.
Running Tests
Create two instance keys, one for eu-west-1 and one for us-east-2. The keys should begin with the zone name, e.g. eu-west-1-dave.pem. Do not forget to chmod 400 the created keys. Place these keys in src/nimbo/tests/aws/assets.
Create a nimbo-config.yml file in src/nimbo/tests/assets with only the aws_profile, securitygroup, and cloudprovider: AWS fields set.
Make sure that the security_group that you put in test nimbo-config.yml allows your IP for all regions, otherwise, the tests will fail.
Use pytest to run the tests
pytest -x