Intel® Nervana™ graph

Intel® Nervana™ graph is Intel's library for developing frameworks that can efficiently run deep learning computations on a variety of compute platforms. It consists of three primary API components:

  • An API for creating computational Intel Nervana graphs.
  • Two higher level frontend APIs (TensorFlow* and neon™) utilizing the Intel Nervana graph API for common deep learning workflows.
  • A transformer API for compiling and executing these graphs.

For more information, refer to the blog post announcing our preview release!

Installation

Install the base packages for the CPU backend by following the instructions in the installation documentation here.

After you complete the prerequisites and install the base Intel Nervana graph package as explained in the installation documentation, you will need to install some additional packages to run Intel Nervana Graph at optimal performance on various compute platforms.

CPU/Intel® architecture transformer

To run Intel Nervana graph with optimal performance on a CPU backend, you need to install Intel Nervana graph with Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN) support:

  1. Download Intel® MKL-DNN from here.
  2. Follow the installation instructions in the README.md to install MKL-DNN.
  3. Set the environment variable MKLDNN_ROOT to point to the location where you installed Intel MKL-DNN.
export MKLDNN_ROOT=/path/to/mkldnn/root

GPU transformer

To run Intel Nervana graph on a GPU backend, you need to install CUDA* and then enable the GPU transformer:

  1. Download and install CUDA according to the instructions.
  2. On your system, enable the GPU transformer:
make gpu_prepare

Virtual environment activation

The virtual environment for Intel Nervana Graph is created when you install the prerequisites described in the installation documentation here and in the README.

To activate a Python virtualenv, run the following command:

. .venv/bin/activate

Build Intel Nervana graph

Run the following command within your virtual environment to build Intel Nervana graph:

make install

Additional options

Use these commands to run the tests:

make [test_cpu|test_mkldnn|test_gpu|test_integration]

Before checking in code, ensure there are no "make style" errors by running the following check:

make style

If the check returns any errors, use this command to fix style errors:

make fixstyle

To generate the documentation as HTML files:

sudo apt-get install pandoc
make doc

Examples

  • examples/walk_through/ contains several code walk throughs.
  • examples/mnist/mnist_mlp.py uses the neon front-end to define and train a MLP model on MNIST data.
  • examples/cifar10/cifar10_conv.py uses the neon front-end to define and train a CNN model on CIFAR10 data.
  • examples/cifar10/cifar10_mlp.py uses the neon front-end to define and train a MLP model on CIFAR10 data.
  • examples/ptb/char_rnn.py uses the neon front-end to define and train a character-level RNN model on Penn Treebank data.

Training deep residual networks

This example demonstrates training a deep residual network as first described in He et. al. msra1. It can handle CIFAR10 and Imagenet datasets

Files

  • data.py: Implements dataloader for CIFAR10 and imagenet dataset.
  • resnet.py: Defines model for Residual network.
  • train_resnet.py: Processes command line arguments, like the choice of dataset and number of layers, and trains the Resnet model.

Dataset

The CIFAR10 Dataset gets downloaded automatically to ~/. To download and use the dataset from a specific location, set --data_dir i1k. For imagenet, update manifest_root to the location of your imagenet dataset in data.py. Also update path to the directory where manifest .csv files are stored in data.py.

Usage

Use the following command to run training on Intel Nervana Graph:

python examples/resnet/train_resnet.py -b <cpu,gpu> --size <20,56> -t 64000 -z <64,128>

Intel Nervana Graph uses the CIFAR10 dataset by default. If you would like to train using a different dataset, like the i1k dataset, provide the location of the dataset as BASE_DATA_DIR= </path/to/load/file> , and then add the --dataset: <name of data set> argument to the command above.

Citation

Deep Residual Learning for Image Recognition