While it’s entirely possible to write / code your own Deep Learning training and deployment system from scratch, it’s worth considering some of the other options out there; one option is to use NVIDIA’s cuDNN library in your own code. cuDNN is freely available to registered developers, and is optimised to an extreme level to run as fast as possible on NVIDIA GPUs by the people who make those GPUs. Another option is to use one of a number of Deep Learning frameworks.
Deep Learning frameworks are systems for the training and deployment of Deep Learning networks which provide the flexibility to design and adapt the network to your specific task, frameworks for Deep Learning allow you to hit the ground running, to prototype and test ideas and applications without the considerable overhead of writing significant amounts of your own code. All the major frameworks use cuDNN so you can rely on optimised code, and each one has a community of developers and users who can help you not only get the most from the framework you chose but also guide you in modifying the framework to provide new features you may require for your application.
There are many freely available frameworks optimised for Deep Learning, each with different biases and their own unique styles of programming, the most widely used include Caffe, DIGITS, TensorFlow and Torch.
Caffe provides an easy and accessible way to define and train deep neural networks via a high-level scripting language (Google’s Protocol Buffer) describing the network. Extending your application beyond the pre-defined Caffe modules is fairly straight forward but will require programming your own Caffe modules. Caffe is a powerful command line driven framework.
DIGITS isn’t really a framework in its own right but rather provides a powerful graphical front end to both Caffe and Torch, simplifying interaction, setup, and providing useful visualisations of what’s going on in your deep neural network. DIGITS also helps optimise the use of multiple NVIDIA GPUs.
In contrast to Caffe’s high-level script, Torch throws you in at a deeper level requiring you to program your Deep Learning model while providing a powerful and useful level of description. This can make Torch appear more flexible than Caffe as it is clearer how the entire learning process operates, as you have had to define each step. Torch is also a command line and programming driven framework.
TensorFlow was developed as part of the Google Brain project as a framework to work with multi-dimensional arrays (tensors) utilising data flow graphs to solve machine learning and deep learning problems. TensorFlow aims to provide a more professional tool for developing and managing Deep Learning, it also provides its own graphical interface simplifying interaction, setup, and providing useful visualisations of what’s going on in your deep neural network.
CNTK (Cognitive toolkit) according to Microsoft is "a unified deep-learning toolkit that describes neural networks as a series of computational steps via a directed graph". It is another alternative for the other deep learning frameworks mentioned. However a key distinguishing factor is that the framework supports parallelisation across both multiple machines and multiple GPUs (without regard to where the GPUs are located). The goal of this framework is to provide efficiency, performance (fast training and productisation) and flexibility (application to speech, vision, text).
While these frameworks (and more) are available on the DGX-1, it is worth noting that many more Deep Learning frameworks exist, such as Kaldi - which is focused on Speech recognition, the IBM Deep Learning Platform - an entire platform from operating system to frameworks including Spark and SystemML, Theano - which includes other machine learning methods too, and many more.
Scan is an NVIDIA Elite Solution Provider for Deep Learning and offers a range of reliable, high performance server solutions, fully customisable to your needs.