Skip to content

CNTK 2.0 Beta Highlights

Alexey Orlov edited this page Mar 31, 2017 · 6 revisions

In this article we have summarized new features, changes, and improvements that were introduced to CNTK during multiple Beta Releases of CNTK v.2.0 (October 2016 - March 2017).

For the detailed information on all Beta releases, please see the correspondent Release Notes - you will find links at the CNTK Releases Page.

What's new in CNTK v.2

CNTK as a Library. Python, C++, and C# / .NET Managed API

Version 2 enables using CNTK as a software library with multiple APIs in addition to running CNTK executable and programming the Networks with BrainScript.

The following programming languages are supported:

  • Python
    • Python versions supported are 2.7, 3.4, and 3.5
  • C++
  • C#/.NET Managed

We have introduced a lot of features for each of these API and provided many examples illustrating their usage. Use the following resources:

Python Examples and Tutorials (Jupyter Notebooks)

Recognizing the importance of Python in Deep Learning we have prepared a set of Python Examples and Tutorials (the latter are implemented as Jupyter Notebooks). You will find all information at these locations:

You may also use CNTK Docker Containers to run Jupyter Notebooks tutorials.

CNTK Evaluation library

The CNTK Library API allows to evaluate both CNTK model-v1 and model-V2 format.

In CNTK v.2 the Evaluation Library can be used on Windows and Linux, in CPU and GPU configurations, and utilizing C++, Python, as well as C# and other .NET languages.

See more on CNTK Evaluation Library here.

CNTK new features

We have introduced a lot of new features during the v.2.0 Beta period. The list below highlights some of them:

  • Support of object recognition using Fast R-CNN algorithm.
  • Integration with NVIDIA NCCL, a stand-alone library of standard collective communication routines, such as all-gather, reduce, broadcast, etc., that have been optimized to achieve high bandwidth over PCIe. See how to enable NCCL in the CNTK Wiki.
  • Support of Asynchronous Stochastic Gradient Descent (ASGD)/Hogwild! training parallelization support using Microsoft’s Parameter Server (Project Multiverso).
  • Support of Distributed scenarios in Python API. See more in the sections on Distributed scenarios in ConvNet and ResNet examples.
  • Support for training on one-hot and sparse arrays via NumPy.
  • Lambda rank and NDCG at 1 are accessible from Python for real this time.
  • New Python and BrainScript for VGG16 and 19.
  • Performance Profiler for BrainScript and Python.
  • Support in training session for cross validation and preservation of all checkpoints.
  • Ability to write your own optimizer in Python by inheriting from UserLearner and overriding the update method.
  • Ability to implement Learners in Python using UserLearner Read more here.
  • All deserializers are exposed in C++.
    • HTK deserializers are also exposed in Python.
  • Support for TensorBoard output in both Python and BrainScript. Read more here.
  • Support for Model debugging, that can be done conveniently similarly to gdb/pdb, by wrapping the model with debug_model() and training/evaluating it.

We have also implemented a lot of performance improvements.Read more here.

CNTK Installation and Usage

New automated installation procedures

We have enabled different ways to install CNTK in an automated manner:

  • Installation scripts for binary distribution.
  • Installation scripts for the users who would like to work with CNTK source code.
  • Installation via pip install procedure.

Read more about different ways to install CNTK here.

CNTK at Docker Hub and as self-built Docker Images

CNTK is now available as Docker Images at Docker Hub.

You may also build your own Docker Images using pre-configured Docker files from CNTK Code base. See this Wiki page on using CNTK as Docker Images and Containers.

CNTK as NuGet packages

Windows developers using C++ and C# / .NET are welcome to use multiple CNTK NuGet packages supporting both v.1 and v.2 model formats.

See more on CNTK NuGet packages here.

Clone this wiki locally