I chose the least expensive g2.2xlarge EC2 instance type with a GPU and used the One Click Launch option (you will need to specify a key file pem file for the AWS region where you are starting the instance). to have an instance running and available in about a minute. This GPU instance costs $0.65/hour so remember to either stop it (if you want to reuse it later and don't mind paying a small cost of persistent local storage) or terminate it if you don't want to be charged for the 60GB of SSD storage space associated with the EC2.
I am very comfortable working in SSH shells using Emacs, screen, etc. When an instance boots up, the Actions -> Connect menu shows you the temporary public address which you can use to SSH in:
ssh -i "~/.ssh/key-pair.pem" [email protected]
Anaconda is installed so jupyter is also pre-installed and can be started from any directory on your EC2 using:
After some printout, you will see a local URI to access the Jupyter notebook that will look something like this:
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
In another terminal window start another SSH session but this time map the local port 8888 to port 8888 on the EC2:
ssh -L 8888:127.0.0.1:8888 -i ".ssh/key-pair.pem" [email protected]
Now on your laptop you can attach to the remote Jupyter instance using (your token will be different):
Alternative to using SSH tunnel:
A nice alternative is to install (on your laptop - no server side installation is required) and use sshuttle. Assuming I have a domain name attached to the sometimes running EC2, I use the following aliases in my bash configuration file:
alias gpu='ssh -i "~/.ssh/key-pair.pem" [email protected]YDOMAIN.COM'
alias tun="sshuttle -r [email protected]MYDOMAIN.COM 0/0 -e 'ssh -i \".ssh/key-pair.pem\"'"
Note: Keeping an Elastic IP Address attached to a EC2 when the EC2 is usually not running will cost you about $3.40/month, but I find having a "permanent" IP address assigned to a domain name is convenient.
Goodies in the AWS machine learning AMI:
There are many examples installed for each of these frameworks. I usually use Keras and I was pleased to see the following examples ready to run:
There are many other examples for the other frameworks TensorFlow, MXNet, Caffe, Caffe2, PyTorch, Theano, CNTK, and Torch.