基于NVIDIA NGC容器安装使用PaddlePaddle
基于NVIDIA NGC容器安装使用PaddlePaddle
PaddlePaddle
PaddlePaddle作为国内首个自主研发的深度学习平台,自2016年正式向专业社区开源,是一个技术先进、功能丰富,涵盖深度学习核心框架、基础模型库、端到端的产业平台。 - 端开发套件、工具和组件以及服务平台。NGC 容器是开始使用 PaddlePaddle 的最简单方法。PaddlePaddle NGC Container 附带了所有依赖项,为开始开发常见应用程序提供了一个简单的地方,例如计算机视觉和自然语言处理 (NLP)。
PaddlePaddle NGC 容器针对 GPU 加速进行了优化,并包含一组经过验证的库,可启用和优化 GPU 性能。此容器还可能包含对 PaddlePaddle 源代码的修改,以最大限度地提高性能和兼容性。该容器还包含用于加速 ETL(DALI、RAPIDS)、训练(cuDNN、NCCL)和推理(TensorRT)工作负载的软件。
先决条件
使用 PaddlePaddle NGC 容器需要主机系统安装以下内容:
有关支持的版本,请参阅Framework Containers Support Matrix和NVIDIA Container Toolkit Documentation。
不需要其他安装、编译或依赖管理。无需安装 NVIDIA CUDA 工具包。
运行PaddlePaddle
要运行容器,请按照NVIDIA 深度学习框架容器用户指南中运行容器一章中的说明发出适当的命令,并指定注册表、存储库和标签。有关使用 NGC 的更多信息,请参阅NGC 容器用户指南。
如果您有 Docker 19.03 或更高版本,启动容器的典型命令是
docker run --gpus all --shm-size=1g --ulimit memlock=-1 -it --rm nvcr.io/nvidia/paddlepaddle:xx.xx-py3
如果您有 Docker 19.02 或更早版本,启动容器的典型命令是:
nvidia-docker run --shm-size=1g --ulimit memlock=-1 -it --rm nvcr.io/nvidia/paddlepaddle:xx.xx-py3
Where:
xx.xx
is the container version. For example,22.05
.
PaddlePaddle 通过将其作为 Python 模块导入来运行:
$ python -c 'import paddle; paddle.utils.run_check()'
Running verify PaddlePaddle program ...
W0516 06:36:54.208734 442 device_context.cc:451] Please NOTE: device: 0, GPU Compute Capability: 8.0, Driver API Version: 11.7, Runtime API Version: 11.7
W0516 06:36:54.212574 442 device_context.cc:469] device: 0, cuDNN Version: 8.4.
PaddlePaddle works well on 1 GPU.
W0516 06:37:12.706600 442 fuse_all_reduce_op_pass.cc:76] Find all_reduce operators: 2. To make the speed faster, some all_reduce ops are fused during training, after fusion, the number of all_reduce ops is 2.
PaddlePaddle works well on 8 GPUs.
PaddlePaddle is installed successfully! Let's start deep learning with PaddlePaddle now.
查看/workspace/README.md
容器内部,了解有关开始和自定义 PaddlePaddle 图像的信息。
您可能希望从容器外部的位置提取数据和模型描述以供 PaddlePaddle 使用。要实现这一点,最简单的方法是将一个或多个主机目录挂载为Docker 绑定挂载。例如:
docker run --gpus all -it --rm -v local_dir:container_dir nvcr.io/nvidia/paddlepaddle:xx.xx-py3
注意:为了在 rank 之间共享数据,NCCL 可能需要用于 IPC 的共享系统内存和固定(页面锁定)系统内存资源。操作系统对这些资源的限制可能需要相应增加。有关详细信息,请参阅系统文档。特别是,Docker 容器默认使用有限的共享和固定内存资源。在容器内使用 NCCL 时,建议您通过发出以下命令来增加这些资源:
--shm-size=1g --ulimit memlock=-1
在docker run
命令中。
这个容器里有什么?
有关完整的内容列表,请参阅PaddlePaddle 容器发行说明。
此容器映像包含 NVIDIA 版本的 PaddlePaddle 的完整源代码,格式为/opt/paddle/paddle
. 它是作为系统 Python 模块预构建和安装的。访问paddlepaddle.org.cn了解更多关于 PaddlePaddle 的信息。
NVIDIA PaddlePaddle 容器针对与 NVIDIA GPU 一起使用进行了优化,并包含以下用于 GPU 加速的软件:
- CUDA
- cuBLAS
- NVIDIA cuDNN
- NVIDIA NCCL (optimized for NVLink)
- NVIDIA Data Loading Library (DALI)
- TensorRT
- PaddlePaddle with TensorRT (Paddle-TRT)
此容器中的软件堆栈已经过兼容性验证,不需要最终用户进行任何额外安装或编译。该容器可以帮助您从头到尾加速深度学习工作流程。
ETL
NVIDIA 数据加载库 (DALI)旨在通过将数据卸载到 GPU 来加速深度学习应用程序的数据加载和预处理管道。DALI 主要专注于为图像、视频和音频数据构建数据预处理管道。这些管道通常很复杂并且包括多个阶段,导致在 CPU 上运行时出现瓶颈。使用此容器开始使用 DALI 加速数据加载。
训练
NVIDIA CUDA 深度神经网络库 (cuDNN)是一个 GPU 加速的深度神经网络基元库。cuDNN 为标准例程提供高度调整的实现,例如前向和反向卷积、池化、归一化和激活层。此容器中的 PaddlePaddle 版本预编译了 cuDNN 支持,不需要任何额外配置。
NVIDIA 集体通信库 (NCCL)为 NVIDIA GPU 和网络实现多 GPU 和多节点通信原语,其中考虑了系统和网络拓扑。NCCL 与 PaddlePaddle 集成以加速多 GPU 和多节点系统的训练。特别是,NCCL 为 Mirrored 和 MultiWorkerMirrored 分布式训练策略提供了默认的 all-reduce 算法。
推理
TensorRT是一个用于高性能深度学习推理的 SDK。它包括一个深度学习推理优化器和运行时,可为深度学习推理应用程序提供低延迟和高吞吐量。PaddlePaddle 与 TensorRT (Paddle-TRT) 的集成优化并执行兼容的子图,允许 PaddlePaddle 执行剩余的图。虽然您仍然可以使用 PaddlePaddle 广泛而灵活的功能集,但 TensorRT 将解析模型并尽可能对图形的部分应用优化。
推荐读物
有关最新的发行说明,请参阅PaddlePaddle 发行说明文档网站。
有关基于容器映像的此框架附带的受支持软件和特定版本的完整列表,请参阅框架支持矩阵。
有关 PaddlePaddle 的更多信息,包括教程、文档和示例,请参阅: