Bitfusion Deep Learning AMIs Now Available on AWS P2 Instances

Bitfusion Deep Learning AMIs including TensorFlow, Caffe, Torch, Theano, Chainer, and Digits 4 are now available on the newly announced AWS P2 Instances. Recently AWS introduced new P2 Instances which feature Nvidia K80 Accelerators with GK210 GPUs. Unlike the previous G2 instanced which were equipped with K520 cards, where each card only had 4 GiB of memory, each GPU in the P2s has 12 GiB of memory with a memory bandwidth of 240 GB/s. The table below summarizes the specifications for the new P2 Instances:   Instance vCPU Count System Memory GPU Count Total GPU Memory Network p2.xlarge 4 61 GiB 1 12 GiB High p2.8xlarge 32 488 GiB 8 96 GiB 10 Gigabit p2.16xlarge 64 732 GiB 16 192 GiB 20 Gigabit The new P2 instances provide significant advantages over the last generation of instances when it comes to deep learning, including the ability to train neural networks significantly faster and to work with larger models that previously exceeded the GPU memory limits. We will be posting a follow on blog shortly detailing some performance benchmarks between the new P2 instances and the previous generation of G2 instances. In the meantime, we have qualified our deep learning AMIs on the new P2 instances and they are are available in the AWS Marketplace as follows:   Bitfusion Boost Ubuntu 14 Caffe AMI Pre-installed with Ubuntu 14, Nvidia Drivers, Cuda 7.5 Toolkit, cuDNN 5.1, Caffe, pyCaffe, and Jupyter. Boost enabled for multi-node deployment. Get started with Caffe machine learning and deep learning in minutes. Launch on AWS!     Bitfusion Boost Ubuntu 14 Torch 7 AMI Pre-installed with Ubuntu 14, Nvidia Drivers, Cuda 7.5 Toolkit, cuDNN 5.1, Torch 7, iTorch, and Jupyter. Boost enabled for multi-node deployment. Get started with Torch numerical computing, machine learning, and deep learning in minutes. Launch on AWS! Bitfusion Ubuntu 14 Chainer AMI Pre-installed with Nvidia Drivers, Cuda 7.5 Toolkit, cuDNN 5.1, Chainer 1.13.0, and Jupyter. Optimized to leverage Nvidia GRID as well as CPU instances. Designed for developers as well as those eager to get started with the flexible Chainer framework for neural networks. Launch on AWS!    Bitfusion Ubuntu 14 Digits 4 AMI Pre-installed with the Deep Learning GPU Training System (DIGITS) from Nvidia. Leverage GPU instances to accelerate pre-installed Caffe and Torch applications. Train deep neural networks and view results directly from your browser. Launch on AWS!    Bitfusion Ubuntu 14 TensorFlow AMI Pre-installed with Ubuntu 14, Nvidia Drivers, Cuda 7.5 Toolkit, cuDNN 5.1, TensorFlow, Magenta, Keras and Jupyter. Get started with TensorFlow deep learning, machine learning, and numerical computing in minutes with pre-installed tutorial collateral. Launch on AWS!    Bitfusion Ubuntu 14 Theano AMI Pre-installed with Ubuntu 14, Nvidia Drivers, Cuda 7.5 Toolkit, cuDNN 5, Theano, and Jupyter. Get started with Theano deep learning, machine learning, and numerical computing, and develop interactive Theano scripts via python directly from your browser. Launch on AWS!    Bitfusion Mobile Deep Learning Service AMI Pre-installed with Nvidia Drivers, Cuda 7.5 Toolkit, Caffe, GPU Rest Engine, Pre-trained Models, and a simple Rest API server. Use existing pre-trained models or train your own models and then integrate inference tasks into your applications via the provided REST API. Launch on AWS!  
Read More

ami deep learning

Bitfusion Presenting at the GPU Technology Conference Europe 2016

Join us September 28-29 in Amsterdam, Netherlands at the GPU Technology Conference Europe as we showcase how Bitfusion Boost can enable GPU virtualization in the datacenter with ease. Whether you are going for efficiency and utilization or outright performance, we can help with both. Be sure to attend session "HPC 12: Breaking New Database Performance Records with GPUs" on Thursday September 29th, 09:30 - 10:00, where along with IBM Cloud and MapD we will be discussing in detail how these remarkable results were achieved.
Read More

Events gpu

Training a Bird Classifier with Tensorflow and TFLearn

If you are new to our AMIs, head over to our Tensorflow README on how to get started, or check out our previous blog entry on getting started with TensorFlow Intro This entry is a walkthrough using the our latest Tenorflow AMI to train a model based on the example in Adam Geighty’s Medium article on Machine Learning . I am specifically using a g2.2xlarge EC2 instance to train the model to show the training benefits of using GPU instance over using a CPU instance. Adam Geighty’s article articulated a number of things really well - his code example split out the different steps needed to train the model and the steps matched with sections of the article itself, allowing you to get a good understanding of what he was explaining. The example he used is based on the Cifar-10 example code and uses a combination of datasets to train a bird classifier. You can read more about Cifar datasets here and the referenced TFLearn code example here.     Bitfusion Ubuntu 14 TensorFlow AMI Launch on AWS! Creating the Classifier Before we start, create a directory named bird_classifier in the ubuntu users home directory. We will carry out all operations in this directory as the ubuntu user. mkdir ~/bird_classifier cd ~/bird_classifier Next we need our dataset to work with. You can download the dataset referenced in the article from S3. It’s a combination of the the Cifar 10 dataset and Caltech-UCSD Birds-200–2011 data set. In total there are ~74K images. wget https://s3-us-west-2.amazonaws.com/ml-is-fun/data.zip unzip data.zip From this you will get the dataset: full_dataset.pkl Download the Training Code Next we need to get the code used in the article. I have provided a couple options to obtain it below: Option 1 - use wget: The code below will pull from a gist and save it as bird_classifier.py. wget -O bird_classifier.py https://gist.githubusercontent.com/sono-bfio/89a91da65a12175fb1169240cde3a87b/raw/b859d1673e0a81ebd42d7799d7c1df71517c175b/bird_classifier.py Option 2 - copy the code below to a file that is in the same directory as full_dataset.pkl. In my case, I copied it to a file called bird_classifier.py. from __future__ import division, print_function, absolute_import # Import tflearn and some helpers import tflearn from tflearn.data_utils import shuffle from tflearn.layers.core import input_data, dropout, fully_connected from tflearn.layers.conv import conv_2d, max_pool_2d from tflearn.layers.estimator import regression from tflearn.data_preprocessing import ImagePreprocessing from tflearn.data_augmentation import ImageAugmentation import pickle # Load the data set X, Y, X_test, Y_test = pickle.load(open("full_dataset.pkl", "rb")) # Shuffle the data X, Y = shuffle(X, Y) # Make sure the data is normalized img_prep = ImagePreprocessing() img_prep.add_featurewise_zero_center() img_prep.add_featurewise_stdnorm() # Create extra synthetic training data by flipping, rotating and blurring the # images on our data set. img_aug = ImageAugmentation() img_aug.add_random_flip_leftright() img_aug.add_random_rotation(max_angle=25.) img_aug.add_random_blur(sigma_max=3.) # Define our network architecture: # Input is a 32x32 image with 3 color channels (red, green and blue) network = input_data(shape=[None, 32, 32, 3], data_preprocessing=img_prep, data_augmentation=img_aug) # Step 1: Convolution network = conv_2d(network, 32, 3, activation='relu') # Step 2: Max pooling network = max_pool_2d(network, 2) # Step 3: Convolution again network = conv_2d(network, 64, 3, activation='relu') # Step 4: Convolution yet again network = conv_2d(network, 64, 3, activation='relu') # Step 5: Max pooling again network = max_pool_2d(network, 2) # Step 6: Fully-connected 512 node neural network network = fully_connected(network, 512, activation='relu') # Step 7: Dropout - throw away some data randomly during training to prevent over-fitting network = dropout(network, 0.5) # Step 8: Fully-connected neural network with two outputs (0=isn't a bird, 1=is a bird) to make the final prediction network = fully_connected(network, 2, activation='softmax') # Tell tflearn how we want to train the network network = regression(network, optimizer='adam', loss='categorical_crossentropy', learning_rate=0.001) # Wrap the network in a model object model = tflearn.DNN(network, tensorboard_verbose=0, checkpoint_path='bird-classifier.tfl.ckpt') # Train it! We'll do 100 training passes and monitor it as it goes. model.fit(X, Y, n_epoch=100, shuffle=True, validation_set=(X_test, Y_test), show_metric=True, batch_size=96, snapshot_epoch=True, run_id='bird-classifier') # Save model when training is complete to a file model.save("bird-classifier.tfl") print("Network trained and saved as bird-classifier.tfl!")   Train it! At this point, all we need to do is run our python script. The script carries out the following functions: Will run through our dataset 100 times (epoch=100) Takes roughly ~60 minutes (This is on a g2.2xlarge – EC2 Instance with a single GPU) Produce our model file: bird-classifier.tfl. $ python2 bird_classifier.py # OUTPUT BELOW I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.so.7.5 locally I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcudnn.so.5 locally I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.so.7.5 locally I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcuda.so locally .. ..... ........ Concatenated output ........... ..... .. I tensorflow/core/common_runtime/gpu/gpu_device.cc:806] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GRID K520, pci bus id: 0000:00:03.0) --------------------------------- Run id: bird-classifier Log directory: /tmp/tflearn_logs/ --------------------------------- Preprocessing... Calculating mean over all dataset (this may take long)... .. ..... ........ Concatenated output ........... ..... .. -- Training Step: 59200 | total loss: 0.16163 | Adam | epoch: 100 | loss: 0.16163 - acc: 0.9332 | val_loss: 0.24135 - val_acc: 0.9387 -- iter: 56780/56780 -- Network trained and saved as bird-classifier.tfl! Inference (Let’s test some images) The script above created out trained model bird-classifier.tfl. Next, we will download the inference script provided in the article and some images from the internet and test it. The code below will save the inference script as infer.py   wget -O infer.py https://gist.githubusercontent.com/ageitgey/a40dded08e82e59724c70da23786bbf0/raw/7c78536295f1ab8cce62d5c63ed57212cafd8950/r_u_a_bird.py Next, we will create a directory to store our test images and download some creative commons images from the net. The test set has a total of 6 images – three that are birds and three that are not.   mkdir -p test_images cd test_images wget -O bird_bullocks_oriole.jpg http://www.5ensesmag.com/wp-content/uploads/2013/03/800px-Bullocks_Oriole.jpg wget -O bird_mount_bluebird.jpg http://climate.audubon.org/sites/default/files/bird_images/Mountain_Bluebird_FlickrCC_1.jpg wget -O bird_african_fish_eagle.jpg http://www.nature.org/cs/groups/webcontent/@web/@africa/documents/media/african-fish-eagle-720x400.jpg wget -O not_a_bird_stop_sign.jpg https://upload.wikimedia.org/wikipedia/commons/f/fd/Free_creative_commons_Rural_Stop_Landscape,_Antelope_Island,_Utah_\(4594258122\).jpg wget -O not_a_bird_airplane.jpg http://blogs.voanews.com/student-union/files/2012/01/airplane-flickr-shyb.jpg wget -O not_a_bird_creativecommons_logo.jpg https://www.raspberrypi.org/wp-content/uploads/2014/03/creative_commons.j Let’s run our inference script against the images. I created a simple loop to go through and test each image below: # Make sure you are in the directory where you downloaded infer.py to for f in test_images/*.jpg; do echo "File: ${f}"; python2 infer.py ${f} 2>/dev/null; echo ""; done Here’s our output: File: test_images/bird_african_fish_eagle.jpg That's a bird! File: test_images/bird_bullocks_oriole.jpg That's a bird! File: test_images/bird_mount_bluebird.jpg That's a bird! File: test_images/not_a_bird_airplane.jpg That's not a bird! File: test_images/not_a_bird_creativecommons_logo.jpg That's not a bird! File: test_images/not_a_bird_stop_sign.jpg That's a bird! Pretty good, we got one false positive in the bunch (“not_a_bird_stop_sign.jpg”). I left this in here as it is reveals an interesting anomoly, Adam’s article has a section that speaks to this: “How accurate is 95% accurate?” Lastly, if you would like run the inference script with a single image rather than using the bash forloop I have above, run the following: python2 infer.py test_images/bird_african_fish_eagle.jpg GPU vs. CPU Performance To see the value of a GPU, I ran the training overnight with a CPU instance (C4.4xl). The results are below: c4.4xl - $0.838 per Hour 16 cores (hyper threaded) maxed out ~ 123 Minutes g2.2xl - $0.65 per Hour single GPU ~ 65 Minutes   Conclusion There you have it - a trained bird classifier based on the Medium Article using Bitfusion’s Tensorflow AMI. If you are interested in scientific computing or deep learning, I encourage you to take a look our AMI offerings. They are sure to speed up your development, prototyping and GPU cluster creation. Additionally, if you have trained models and are looking for solid infrastructure to serve them, contact us here. Questions or comments? Please post them in the comment section below or join our community Bitfusion-AWS Slack Channel. Get Started!   Are you currently developing AI applications, but spending too much time wrangling machines and setting up your infrastructure? We are currently offering a Free 30-Day Trial of Bitfusion Flex!  
Read More

tensorflow tutorial

Bitfusion Scientific Computing AMI 2016.08

Last week we released an update for our popular Bitfusion Ubuntu 14 Scientific Computing AMI which upgrades all of the commonly used applications for scientific and statistical computing to the most recent versions, including:
Read More

ami supercomputing

TensorFlow 0.9 AMI with Keras, cuDNN 5, and 30-40% faster

A few weeks ago we published a tutorial on Easy TensorFlow Model Training on AWS using our Bitfusion TensorFlow AMI. This quick tutorial as well as the AMI have proven immensely popular with our users and we received various feature requests. As such this week we are releasing v0.03 of the TensorFlow AMI which introduces several new features:
Read More

ami tensorflow

New Blender AMI with Mate Desktop, Turbo VNC Server, and VirtualGL

Last week we released several media related AMIs featuring a RESTful API interfaces. We received feedback, particularly on our Blender rendering AMI, that some of you would like to try and work directly with Blender via a remote session and a Desktop environment. Always listening to user feedback, this week we are releasing a Bitfusion Ubuntu 14 Blender AMI pre-installed with Nvidia Drivers, Cuda 7.5 Toolkit, Blender 2.77, and a complete Linux desktop environment including Mate Desktop, TurboVNC Server and VirtualGL for full 3D hardware acceleration of OpenGL applications when using remote display software.
Read More

ami

New Bitfusion Deep Learning and Media AMIs with REST APIs for Developers

Today we are introducing four new AMIs targeted at developers that want to offload compute intensive applications or tasks from their thin clients, laptops, or even mobile devices into the cloud where they can utilize vastly more powerful systems to get these tasks done orders of magnitude faster. The four new AMIs are as follows: Bitfusion Mobile Deep Learning Service, Bitfusion Mobile Image Manipulation Service, Bitfusion Mobile Rendering Service, and Bitfusion Mobile Video Processing Service. Each AMI comes with a simple REST API which can be used as is and for which we provide simple example scripts. Alternatively, you can build on top of our API and provide your own services or integrate these AMIs into your applications. Here are the details for each new AMI:
Read More

ami deep learning

Deploy Bitfusion Boost on AWS faster than ever

Enabling development, deployment, and acceleration of multi-node GPU applications from deep learning to oil exploration. Back in March, we first described how to deploy Bitfusion Boost on AWS to create a 16 GPU cluster. We received a lot of customer feedback since then, in particular we paid attention to issues that tripped you up in order to make the experience more seamless. With that in mind, we engaged the AWS Marketplace team to integrate Bitfusion Boost directly into our products, enabling you to spin-up Bitfusion Boost GPU clusters directly from the AWS Marketplace with just a few clicks. Some of the major improvements include: Run multi-gpu enabled applications across multiple GPU instances without any additional configurations or code changes Boost enabled AMIs can be launched in cluster-mode directly from the AWS Marketplace Boost enabled AMI clusters can be launched in all AWS regions that contain GPU instances AMI opt-in process is identical for single-instance and cluster-mode AMI launches Monthly cluster cost estimates are provided directly in the AWS Marketplace Simplified cluster launch parameters for CFNs enable easier cluster customization   Summary Launching a Bitfusion Boost Cluster now entails only 4 easy steps: Locate a Bitfusion Boost enabled AMI in the AWS Marketplace Select a Bitfusion Boost Cluster configuration Fine-tune the Bitfusion Boost Cluster launch parameters Launch the Bitfusion Boost Cluster and verify proper operation   Detailed Instructions Locate a Bitfusion Boost enabled AMI You can locate all Bitfusion Boost enabled AMIs in the AWS marketplace by clicking here. Alternatively, below are direct links to our AMIs which are presently Boost enabled. If you don't already have an AWS account, you can create one by clicking here. Bitfusion Boost Ubuntu 14 Cuda 7 Bitfusion Boost Ubuntu 14 Cuda 7.5 Bitfusion Boost Ubuntu 14 Caffe Bitfusion Boost Ubuntu 14 Torch Select a Bitfusion Boost cluster configuration For this example we are using the Bitfusion Boost Ubuntu Cuda 7.5 AMI, and we will launch an 8 GPU cluster. The image below has several color-coded boxes: Blue Box: Shows detailed descriptions of the available deployment (delivery) options for this AMI. Green Box: Selection box where you can pick the cluster you want to create. Pick the GPU Optimized Cluster here. Yellow Box: Estimated costs for the cluster if you were going to run it 24/7 for an entire month. Even though the cost of the infrastructure is shown for a month, the actual charges will be calculated based on hourly usage. Once you have selected the GPU Optimized Cluster option, click on the large Continue button above it, and you will be forwarded to the Launch on EC2 page shown below. The important sections are once again highlighted by color-coded boxes: Blue Box: Select the AWS region in which you would like to launch the Bitfusion Boost Cluster. Green Box: Click this button to proceed and fine-tune the cluster parameters. Fine-Tune the Bitfusion Boost Cluster parameters After you click the Launch with CloudFormation Console button you will be taken to the Select Template AWS page. Simply click the Next button on the bottom right and you will be presented with several options to fine-tune the cluster you are about to launch. All the available options are described in detail in our Boost on AWS Documentation, however, to launch the 8 GPU cluster we only need to specify two options as highlighted in the figure below: Blue Box: Select a key name which you will use to SSH into the instance. If you have not create an AWS key before you can create one by following the AWS directions here. After you create the key, return to the fine-tuning page where the key needs to be selected, refresh the page, and then select they key you just created. Green Box: You must enter here the IP address from which you will be connecting to the EC2 instance. For now enter 0.0.0.0/0 to keeps things simple, however, for future clusters consider setting a specific IP from which you will be connecting to increase the security of the cluster even further. Once you set these two fields, click the Next button on the bottom right and you will be forwarded to the Options pages. Nothing needs to be set here, so simply click the Next button again to go to the Review page. Launch the Bitfusion Boost Cluster One the Review page you must click the check-box next to the "I acknowledge that this template might cause AWS CloudFormation to create IAM resources" text at the very bottom of the page to enable our template to provision the cluster for you. Only thing left to do is clicking the Create button, and your cluster will be created! At this point you are forwarded to the Stack Management page on AWS. It will most likely be blank initially, but after a couple minutes you will see a stack being created as shown in the image below. You can click the check-box next to the stack to obtain additional information about the stack. You will see that the status is shown as CREATE_IN_PROGRESS. The creation of the cluster can take anywhere from 5 to 10 minutes. If you are curious about all the details that we are taking care of simply click on the events tab. Eventually you will see the status change to CREATE_COMPLETE - time to log in to the cluster and verify that everything is working as expected. To log in to the instance you need to obtain the instance IP address. You can find this information by navigating to your AWS Console, clicking on EC2, and then clicking on running instances. In case you have other instance running, filter the instances by "bitfusion-boost" and you should see two instances as shown below. Blue Box: Select the AWS instance that contains the cuda75 in the name. This is the application instance into which you will log in, and from which you will execute your Cuda / GPU applications. The instances below it, with gpunode in the name, is the instance hosting the additional GPUs. Depending on how many additional GPUs you selected when creating your cluster, you may have multiple of these instances. Green Box: Note down the Public DNS address listed in this box for your instance. You will use this address in the commands below to access the instance and execute applications. To access the instance application instance execute the following command: ssh -i {path to your pem file} ubuntu@{public dns address} Once you are logged in execute the following command to verify that all 8 GPUs are available to your application: bfboost client /usr/local/cuda-7.5/samples/bin/x86_64/linux/release/deviceQuery You should see obtain the following output: deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.5, NumDevs = 8, Device0 = GRID K520, Device1 = GRID K520, Device2 = GRID K520, Device3 = GRID K520, Device4 = GRID K520, Device5 = GRID K520, Device6 = GRID K520, Device7 = GRID K520 Result = PASS BFBoost run complete. You are all set. Happy coding and development on your 8+ GPU Bitfusion Boost Cluster.
Read More

aws

Bitfusion Presenting at Data By the Bay Conference - May 19, 2016

Please join us on Thursday May 19, 2016 at 10:40am at the Data By the Bay Conference as we present on the Promise of Heterogeneous computing.
Read More

data science Events

Easy TensorFlow Model Training on AWS

Recently Google released TensorFlow 0.8 which amongst other features provides distributed computing support. While this is great for power users, the most important step for most people trying to get started with machine learning or deep leaning is simply to have a powerful and pre-configured instance. To solve this problem, we recently released Bitfusion Ubuntu 14 TensorFlow AMI using version 0.8 of TensorFlow which has been configured to work equally well across CPU and GPU AWS instances.
Read More

tensorflow tutorial

Search

New Call-to-action

Stay Up-to-Date!

Get our regular deep learning and AI news, insights, tutorials, and more.