This NVIDIA Optimized Deep Learning Framework, powered by Apache MXNet, container release is intended for use on the NVIDIA Ampere Architecture A100 GPU and on previous generation GPUs like V100 and T4, and with the latest NVIDIA CUDA® 11 and NVIDIA cuDNN 8 libraries. The container image is available on NGC.
Contents of the Optimized Deep Learning Framework container
This container image contains the complete source of the NVIDIA Optimized Deep Learning Framework, which is based upon Apache MXNet version 1.9.1. It is prebuilt and installed to the Python path. The container also includes the following:
- Ubuntu 20.04 including Python 3.8
- NVIDIA CUDA 11.8.0
- NVIDIA cuBLAS 184.108.40.206
- cuDNN 8.7.0
- NCCL 2.15.5
- Amazon Labs Sockeye sequence-to-sequence framework 2.3.14 (for machine translation)
- rdma-core 32.1
- OpenMPI 4.1.4+
- OpenUCX 1.14.0
- GDRCopy 2.3
- NVIDIA HPC-X 2.12.2tp1
- Horovod 0.24.2, with enhancements
- NVIDIA TensorRT™ 8.5.1
- NVIDIA DALI® 1.18.0
- Nsight Compute 2022.3.0.22
- Nsight Systems 2022.4.2.1
- GluonCV Toolkit 0.7
- GluonNLP Toolkit 0.8.1
- JupyterLab 2.2.10 with updated mistune 2.0.4
Release 22.11 is based on CUDA 11.8.0, which requires NVIDIA Driver release 520 or later. However, if you are running on a data center GPU (for example, T4 or any other data center GPU), you can use NVIDIA driver release 450.51 (or later R450), 470.57 (or later R470), 510.47 (or later R510), or 515.65 (or later R515). The CUDA driver's compatibility package only supports particular drivers. Thus, users should upgrade from all R418, R440, and R460 drivers, which are not forward-compatible with CUDA 11.8. For a complete list of supported drivers, see the CUDA Application Compatibility topic. For more information, see CUDA Compatibility and Upgrades.
Release 22.11 supports CUDA compute capability 6.0 and later. This corresponds to GPUs in the NVIDIA Pascal, NVIDIA Volta™, NVIDIA Turing™, NVIDIA Ampere architecture, and NVIDIA Hopper™ architecture families. Specifically, for a list of GPUs that this compute capability corresponds to, see CUDA GPUs. For additional support details, see Deep Learning Frameworks Support Matrix.
Key Features and Enhancements
This Optimized Deep Learning Framework release includes the following key features and enhancements.
- NVIDIA Optimized Deep Learning Framework, powered by Apache MXNet container image version 22.10 is based on 1.9.1.
Apache MXNet, formerly an effort undergoing incubation at The Apache Software Foundation (ASF), has graduated to become a full-status active project of the ASF.
- Starting with the 22.07 release, the NVIDIA Optimized Deep Learning Framework containers are available for the Arm SBSA platform. For example, pulling the Docker image nvcr.io/nvidia/mxnet:22.07-py3 on an Arm SBSA machine will automatically fetch the Arm-specific image.
- Deep learning framework containers 19.11 and later include experimental support for Singularity v3.0.
- The TensorCore example models are no longer provided in the core container (previously shipped in
The models can instead be obtained from Github or the NGC. Some python packages, included in previous containers to support these example models, have also been removed. Depending on their specific use cases, you might need to add some packages that were previously preinstalled.
NVIDIA Optimized Deep Learning Framework Container Versions
The following table shows what versions of Ubuntu, CUDA, Apache MXNet, and TensorRT are supported in each of the NVIDIA containers for the Optimized Deep Learning Framework. For older container versions, refer to the Frameworks Support Matrix.
Tensor Core Examples
The tensor core examples in GitHub and NGC focus on achieving the best performance and convergence from Volta tensor cores by using the latest deep learning example networks and model scripts for training. Each example model trains with mixed precision Tensor Cores on Volta and NVIDIA Turing, so you can get results much faster than training without tensor cores. This model is tested against each NGC monthly container release to ensure consistent accuracy and performance over time. This container includes the following tensor core examples:
- The ResNet50 v1.5 model is a slightly modified version of the original ResNet50 v1 model that trains to a higher accuracy.
Automatic Mixed Precision
Training deep learning networks is a computationally intensive task. Novel model architectures tend to have an increasing number of layers and parameters, which slows down training. Fortunately, new generations of training hardware and software optimizations make training these new models a feasible task.
Most of the hardware and software training optimization opportunities involve exploiting lower precision, such as FP16, to use the Tensor Cores that are available on new Volta and Turing GPUs. While training in FP16 showed great success in image classification tasks, other more complicated neural networks typically stayed in FP32 due to difficulties in applying the FP16 training guidelines that are needed to ensure proper model training.
Automatic Mixed Precision (AMP) automatically applies the FP16 training guidelines by using FP16 precision where it provides the most benefit, while conservatively keeping in full FP32 precision operations unsafe to do in FP16.
In the container, the NVIDIA Optimized Deep Learning Framework, powered by Apache MXNet AMP tutorial is located in the
/opt/mxnet/nvidia-examples/AMP/AMP_tutorial.md directory, shows you how to get started with mixed precision training using AMP for Apache MXNet, by using the SSD network example from GluonCV.
For more information about AMP, see the Training With Mixed Precision Guide.
- On H100 NVLink systems using 2 GPUs for training, certain communication patterns can trigger a corner-case bug that manifests either as a hang or as an "illegal instruction" exception. A workaround for this case is to set the environment variable
NCCL_PROTO=^LL128. This issue will be addressed in an upcoming release.
- This container has by default the environment variable setting
MXNET_CUDNN_AUTOTUNE_DEFAULT=2, which enables the selection of the fastest convolution op implementation from a list of cuDNN-supplied candidates at runtime. This setting may lead in rare model training scripts to long start-up times or hangs, in which case the recommended remedy is to turn off auto-tuning via
- This container includes an experimental version of the group BatchNorm operator that uses the nvshmem library for inter-GPU communication when enabled in Python scripts via
mx.cuda_utils.nvshmem_init(mpi4py.COMM_WORLD). Users should be aware that this feature uses just-in-time link-time-optimization (JIT LTO), a preview capability of the CUDA 11 drivers R470 through R520 that will be migrated to the runtime as of the CUDA 12 drivers R525 or later. As a consequence, the nvshmem group BatchNorm function of this container requires a R470 through R520 bare-metal driver to function, though this restriction should be lifted in a future release.