# Installing MXNet on the Cloud

You can start using MXNet on the cloud with MXNet pre-installed. Refer below for more details.

## Install MXNet Using Amazon Machine Images(AMIs)

Here is a link to an AWS blog illustrating how to set up an Amazon Machine Image(AMI) that supports both MXNet and other popular deep learning frameworks.
* [P2 and Deep Learning Blog](https://aws.amazon.com/blogs/aws/new-p2-instance-type-for-amazon-ec2-up-to-16-gpus/)
* [Deep Learning AMI](https://aws.amazon.com/marketplace/pp/B01M0AXXQB)

Or you can use Bitfusion's MXNet AMI with a variety of deep learning and data science libraries and frameworks pre-installed, plus MXNet tutorial Jupyter notebook sample code.
* [Bitfusion MXNet AMI](https://aws.amazon.com/marketplace/pp/B01NBF5O1N/ref=_ptnr_docs_mxnet)

## Use MXNet on Multiple Instances with AWS

To scale up on AWS GPU instances using a CloudFormation template, you can follow the instructions linked in the blog below.
* [CloudFormation Template AWS Blog](https://aws.amazon.com/blogs/compute/distributed-deep-learning-made-easy/)

# Next Steps

* [Tutorials](http://mxnet.io/tutorials/index.html)
* [How To](http://mxnet.io/how_to/index.html)
* [Architecture](http://mxnet.io/architecture/index.html)
