The NVIDIA container image for PaddlePaddle, release 23.08, is available on NGC.
Contents of the PaddlePaddle container
This container image includes the complete source of the NVIDIA version of PaddlePaddle in /opt/paddlepaddle
. It is prebuilt and installed as a system Python module.
The container includes the following:
- Ubuntu 22.04 including Python 3.8
- NVIDIA CUDA 12.2.1
- NVIDIA cuBLAS 12.2.5
- cuTENSOR 1.7.0.1
- NVIDIA cuDNN 8.9.4
- NVIDIA NCCL 2.18.3
- rdma-core 39.0
- OpenMPI 4.1.4+
- OpenUCX 1.15.0
- GDRCopy 2.3
- Nsight Systems 2023.2.3.1001
- Nsight Compute 2023.2.1.3
- NVIDIA HPC-X 2.15
- TensorRT 8.6.1.6 for x64 Linux
- Paddle-TRT 2.4
- SHARP 3.0.2
- DALI 1.28.0
Driver Requirements
Release 23.08 is based on CUDA 12.2.1, which requires NVIDIA Driver release 535 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 525.85 (or later R525), or 535.86 (or later R535). The CUDA driver's compatibility package only supports particular drivers. Thus, users should upgrade from all R418, R440, R460, and R520 drivers, which are not forward-compatible with CUDA 12.2. For a complete list of supported drivers, see the CUDA Application Compatibility topic. For more information, see CUDA Compatibility and Upgrades.
Key Features and Enhancements
This PaddlePaddle release includes the following key features and enhancements.
- The PaddlePaddle container image version 23.08 is based on v2.5.0.
Announcements
- The cuDNN frontend has been integrated into PaddlePaddle. It can be activated by turning on “fuse_resunit” and “fuse_dot_product_attention” flags in the “build_strategy”. The cuDNN frontend provides advanced fusion kernels which accelerates training speed.
- The NVIDIA/LDDL has been integrated in PaddlePaddle. The Language Datasets and Data Loaders (LDDL) is a utility library that minimizes the friction during dataset retrieval, preprocessing and loading for the language models. It successfully accelerates BERT pre-training phase 2 to 2X. See the BERT example for details. The training results with multinode are added in the BERT example, including 1 node to 32 nodes.
- The NVIDIA/Transformer Engine is built on top of PaddlePaddle v2.5.0. The Transformer Engine has FP8 training to accelerate LLM models with Ada and Hopper GPU. The legacy version of PaddlePaddle is not supported.
NVIDIA PaddlePaddle Container Versions
The following table shows what versions of Ubuntu, CUDA, PaddlePaddle, and TensorRT are supported in each of the NVIDIA containers for PaddlePaddle. For older container versions, refer to the Frameworks Support Matrix.
Container Version | Ubuntu | CUDA Toolkit | PaddlePaddle | TensorRT |
---|---|---|---|---|
23.08 | 22.04 | NVIDIA CUDA 12.2.1 | 2.5.0 | TensorRT 8.6.1.6 |
23.07 | NVIDIA CUDA 12.1.1 | 2.4.1 | ||
23.06 | ||||
23.04 | 20.04 | NVIDIA CUDA 12.1.0 | TensorRT 8.6.1 | |
23.03 | TensorRT 8.5.3 | |||
23.02 | NVIDIA CUDA 12.0.1 | 2.4.0 | ||
23.01 | 2.3.2 | TensorRT 8.5.2.2 | ||
22.12 | NVIDIA CUDA 11.8.0 | TensorRT 8.5.1 | ||
22.11 | TensorRT 8.5.1 | |||
22.10 | TensorRT 8.5.0.12 | |||
22.09 | ||||
22.08 | NVIDIA CUDA 11.7.1 | 2.3.1 | TensorRT 8.4.2.4 | |
22.07 | NVIDIA CUDA 11.7 Update 1 Preview | 2.3.0 | TensorRT 8.4.1 | |
22.06 | 2.2.2 | TensorRT 8.2.5 | ||
22.05 | NVIDIA CUDA 11.7 |
Automatic Mixed Precision (AMP)
Automatic Mixed Precision (AMP) for PaddlePaddle is available in this container through the native implementation. AMP enables users to try mixed precision training by adding only 3 lines of Python to an existing FP32 (default) script. AMP will select an optimal set of operations to cast to FP16. FP16 operations require 2X reduced memory bandwidth (resulting in a 2X speedup for bandwidth-bound operations like most pointwise ops) and 2X reduced memory storage for intermediates (reducing the overall memory consumption of your model). Additionally, GEMMs and convolutions with FP16 inputs can run on Tensor Cores, which provide an 8X increase in computational throughput over FP32 arithmetic.
For more information about AMP, see the Training With Mixed Precision Guide.
Tensor Core Examples
The tensor core examples provided in GitHub and NGC focus on achieving the best performance and convergence from NVIDIA 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.
- ResNet50 v1.5 model: This model is a modified version of the regular ResNet model that was introduced in the Deep Residual Learning for Image Recognition paper.
The v1.5 has
stride = 2
in the 3x3 convolution instead of 1x1 convolution. This model script is available on GitHub. - BERT model:This model is a new method of pre-training language representations that obtains state-of-the-art results on a wide array of Natural Language Processing (NLP) tasks that was introduced in the BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding paper.
This model script is available on GitHub.
Known Issues
- The data loader has a small chance to trigger segmentation fault if the loop of loading data has a “break” statement. For instance, running N-th step, then using “break” to suspend the process. It only affects NLP tasks for now. The root cause is under investigation and will be fixed in a future release. See the issue#48964 for details.
- Some APIs are deprecated by PaddlePaddle 2.5. It affects the BERT example. It will be fixed in a future release.
- The parameter server might have a small chance to trigger segmentation fault.
- The output of
FuseGemmEpiloguePassRelu
is slightly different from the unfused kernel.
.