基于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 加速的软件:

此容器中的软件堆栈已经过兼容性验证,不需要最终用户进行任何额外安装或编译。该容器可以帮助您从头到尾加速深度学习工作流程。

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 的更多信息,包括教程、文档和示例,请参阅:

基于NVIDIA NGC容器安装使用PaddlePaddle的更多相关文章

  1. 利用NVIDIA NGC的TensorRT容器优化和加速人工智能推理

    利用NVIDIA NGC的TensorRT容器优化和加速人工智能推理 Optimizing and Accelerating AI Inference with the TensorRT Contai ...

  2. LINUX下基于NVIDIA HPC SDK 的 VASP6.3.x编译安装报错整理

    关于gcc 用旧版本安装NVIDIA HPC SDK再编译会报错: "/opt/rh/devtoolset-8/root/usr/include/c++/8/bits/move.h" ...

  3. [笔记] 基于nvidia/cuda的深度学习基础镜像构建流程

    基于NVidia开源的nvidia/cuda image,构建适用于DeepLearning的基础image. 思路就是先把常用的东西都塞进去,再装某个框架就省事儿了. 为了体验重装系统的乐趣,所以采 ...

  4. [笔记] 基于nvidia/cuda的深度学习基础镜像构建流程 V0.2

    之前的[笔记] 基于nvidia/cuda的深度学习基础镜像构建流程已经Out了,以这篇为准. 基于NVidia官方的nvidia/cuda image,构建适用于Deep Learning的基础im ...

  5. Amazon SageMaker和NVIDIA NGC加速AI和ML工作流

    Amazon SageMaker和NVIDIA NGC加速AI和ML工作流 从自动驾驶汽车到药物发现,人工智能正成为主流,并迅速渗透到每个行业.但是,开发和部署AI应用程序是一项具有挑战性的工作.该过 ...

  6. 基于NVIDIA GPUs的深度学习训练新优化

    基于NVIDIA GPUs的深度学习训练新优化 New Optimizations To Accelerate Deep Learning Training on NVIDIA GPUs 不同行业采用 ...

  7. IBM基于Kubernetes的容器云全解析

    基于Kubernetes的容器云 容器云最主要的功能是以应用为中心,帮助用户把所有的应用以容器的形式在分布式里面跑起来,最后把应用以服务的形式呈现给用户.容器云里有两个关键点,一是容器编排,二是资源调 ...

  8. Docker容器安装配置SQLServer服务(Linux)

    一:前言 随着不断的对Docker容器的实践和学习,越来越觉得容器的强大,把 SQL Server 数据库服务放在docker容器中,比你自己在宿主服务器上面安装配置一个SQL Server服务器是要 ...

  9. ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建

    ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...

  10. ubuntu16.04 NVIDIA显卡驱动安装

    安装环境:Ubuntu16.04 1.打开终端,先删除旧的驱动: sudo apt-get purge nvidia* 2禁用自带的 nouveau nvidia驱动 (important!) 创建一 ...

随机推荐

  1. vue中的prop组件封装

    学习vue有一段时间了,也写了一些东西.今天看文档突然看到了一个好玩的东西,那就是prop.prop的作用是父组件中引用了子组件并给子组件加了一个属性,这个属性可以是静态的,可以是动态的,可以是数字, ...

  2. vue 下载文件并且重命名

    <el-button type="primary" @click="xz(scope.row)" size="small">下载 ...

  3. PostgreSQL系统表或视图中pg_node_tree类型值解析

    PostgreSQL系统表或视图中pg_node_tree类型值解析 pg_node_tree类型说明 pg_node_tree是一种openGauss/PostgreSQL内部数据类型,用于表示树形 ...

  4. 780E开发板之errDump错误日志上报,操作方法解析

    ​ 一.errDump功能 LuatOS-Air错误日志上报功能模块名叫:errDump,errDump对"量产投放市场的设备,远程调试初步定位问题"至关重要,强烈建议客户一定要使 ...

  5. 3大策略+1款工具,在K8s上搞定应用零宕机

    原文链接: https://jaadds.medium.com/building-resilient-applications-on-kubernetes-9e9e4edb4d33 翻译:cloudp ...

  6. 玩转AI工作流:一步步搭建灵活的自动化流程

    我们之前搭建了许多不同类型的智能体,其中最受欢迎的就是在智能体中搭建各种工作流--这也是我最喜欢探索和玩的领域.那么,究竟什么是工作流?如何在后端实现一个工作流呢?今天我们就先简单了解下. 什么是工作 ...

  7. golang之性能分析工具pprof

    PProf 是一个 Go 程序性能分析工具,可以分析 CPU.内存等性能.Go 在语言层面上集成了 profile 采样工具,只需在代码中简单地引入 runtime/ppro 或者 net/http/ ...

  8. Lambda【1】-- List相关Lambda表达式使用(上篇)

    Lambda在jdk1.8里面已经很好用了,在这里不讲底层的实现,只有简单的用法,会继续补全. 首先一个list我们要使用lambda的话,需要使用它的stream()方法,获取流,才能使用后续的方法 ...

  9. 使用联邦学习法训练强化学习算法以实现对抗攻击性:读论文——小型微型计算机系统(中文CCF B)《面向深度强化学习的鲁棒性增强方法》

    论文地址: http://xwxt.sict.ac.cn/CN/Y2024/V45/I7/1552 PS: 这个学习率有些奇怪,用数据量占一次优化的总数据量的大小作为学习率,这或许也是真的有独创性的操 ...

  10. Content-Type 的小知识

    起因 在某次开发中,前端发起了get请求,但是后端报错未设置Content-Type为"application-json":看到这条报错之后就直接在请求中设置了: export c ...