基于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 的更多信息,包括教程、文档和示例,请参阅:
基于NVIDIA NGC容器安装使用PaddlePaddle的更多相关文章
- 利用NVIDIA NGC的TensorRT容器优化和加速人工智能推理
利用NVIDIA NGC的TensorRT容器优化和加速人工智能推理 Optimizing and Accelerating AI Inference with the TensorRT Contai ...
- LINUX下基于NVIDIA HPC SDK 的 VASP6.3.x编译安装报错整理
关于gcc 用旧版本安装NVIDIA HPC SDK再编译会报错: "/opt/rh/devtoolset-8/root/usr/include/c++/8/bits/move.h" ...
- [笔记] 基于nvidia/cuda的深度学习基础镜像构建流程
基于NVidia开源的nvidia/cuda image,构建适用于DeepLearning的基础image. 思路就是先把常用的东西都塞进去,再装某个框架就省事儿了. 为了体验重装系统的乐趣,所以采 ...
- [笔记] 基于nvidia/cuda的深度学习基础镜像构建流程 V0.2
之前的[笔记] 基于nvidia/cuda的深度学习基础镜像构建流程已经Out了,以这篇为准. 基于NVidia官方的nvidia/cuda image,构建适用于Deep Learning的基础im ...
- Amazon SageMaker和NVIDIA NGC加速AI和ML工作流
Amazon SageMaker和NVIDIA NGC加速AI和ML工作流 从自动驾驶汽车到药物发现,人工智能正成为主流,并迅速渗透到每个行业.但是,开发和部署AI应用程序是一项具有挑战性的工作.该过 ...
- 基于NVIDIA GPUs的深度学习训练新优化
基于NVIDIA GPUs的深度学习训练新优化 New Optimizations To Accelerate Deep Learning Training on NVIDIA GPUs 不同行业采用 ...
- IBM基于Kubernetes的容器云全解析
基于Kubernetes的容器云 容器云最主要的功能是以应用为中心,帮助用户把所有的应用以容器的形式在分布式里面跑起来,最后把应用以服务的形式呈现给用户.容器云里有两个关键点,一是容器编排,二是资源调 ...
- Docker容器安装配置SQLServer服务(Linux)
一:前言 随着不断的对Docker容器的实践和学习,越来越觉得容器的强大,把 SQL Server 数据库服务放在docker容器中,比你自己在宿主服务器上面安装配置一个SQL Server服务器是要 ...
- ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建
ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...
- ubuntu16.04 NVIDIA显卡驱动安装
安装环境:Ubuntu16.04 1.打开终端,先删除旧的驱动: sudo apt-get purge nvidia* 2禁用自带的 nouveau nvidia驱动 (important!) 创建一 ...
随机推荐
- npoi2.3+泛型+反射 根据配置统一解析excel数据到实体的基础方法
解析方法: /// <summary> /// excel数据解析到实体 /// </summary> /// <typeparam name="T" ...
- Rest-Assured 学习笔记
Rest-Assured 学习笔记 body { font-family: Arial, sans-serif } .container { } h1, h2, h3 { color: rgba(51 ...
- AI年代,谁还用难用的Keil?快快换CLion!!! 破解+环境替换 [下]
keil环境的替代 1.首先 我这里大体框架引入大佬稚晖君的博客: https://www.bilibili.com/read/cv6308000/ 如果有需要配置标准库的可以参考这里: https: ...
- Shell之根据关键字符串替换文件中的行
KEY="所要搜索的关键字符串"FullPath=所要搜索的文件的路径str="要替换行的字符串" 根据关键字符串定位行号:line=`sed -n ' ...
- 研发LLM模型,如何用数值表示人类自然语言?
上一篇:<人工智能--自然语言处理简介> 序言:人工智能大语言模型(LLM)如何理解人类的自然语言?这个过程的核心在于将文本转化为计算机能处理的数值形式,经过计算,最终达到对语言的理解.起 ...
- 基于Java+SpringBoot心理测评心理测试系统功能实现三
一.前言介绍: 1.1 项目摘要 心理测评和心理测试系统在当代社会中扮演着越来越重要的角色.随着心理健康问题日益受到重视,心理测评和心理测试系统作为评估个体心理状态.诊断心理问题.制定心理治疗方案的工 ...
- []JSR 133 (Java Memory Model) FAQ
JSR 133 (Java Memory Model) FAQ Jeremy Manson and Brian Goetz, February 2004 内容列表 究竟什么是内存模型? 其它语言,像C ...
- Java 日志缓存机制的实现
本文介绍了 Java 日志机制,并通过扩展日志功能,实现日志缓存.同时,可以动态控制日志信息打印到日志文件的级别,从而提高了日志的灵活性,给产品质量带来更大的帮助.文章主要围绕 MemoryHandl ...
- highcharts中的环形图
环形图如下效果: 代码: that.options = { chart: { type: 'pie', backgroundColor: 'transparent', color: '#fff', / ...
- pikachu文件上传_2024-11-26
什么是文件上传漏洞 文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像.上传附件等等.当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型.后缀名.大小等等,然后 ...