当前位置:网站首页>安装NCCL\mpirun\horovod\nvidia-tensorflow(3090Ti)
安装NCCL\mpirun\horovod\nvidia-tensorflow(3090Ti)
2022-07-26 05:01:00 【zoetu】
环境说明
显卡:Nvidia 3090Ti
CUDA 11.1
Cudnn 8.0
OS:Ubuntu 20.x
Tensorflow:nvidia-tensorflow(后面有安装过程)
tensorflow1.x版本不提供对A100/3090等新版显卡的支持,因此使用nvidia-tensorflow(如果不安装此版本tf,就算检测到显卡也不会调用)。另外,nvidia-tensorflow 只支持ubuntu20.04。
horovod介绍
horovod是Uber 团队开发的分布式训练框架,他可以满足让你尽量少的修改代码即可将在单卡训练的脚本横行扩展为多卡并行训练,同时又兼顾训练的加速。目前支持tensorflow/keras/pytorch/mxnet.底层通信主要依赖NCCL/Gloo(测试后NCCL是最快的),支持MPI(CPU 训练更快)。由于其训练加速效果比tensorflow 原生的distributedStrategy 快很多,所以在分布式训练时,推荐使用。
下面主要针对tensorflow1.x 下做分布式训练进行说明。
环境主要依赖tensorflow1.x/horovod/nccl/mpi ,有两种方式搭环境:local/docker,本文采用local本地安装。
NCLL
https://github.com/NVIDIA/nccl
安装NCCL,注意版本,为了兼顾A100,推荐使用v2.8.3-1 这个版本。
# 编译nccl
git clone https://github.com/NVIDIA/nccl.git
cd nccl && git checkout v2.8.3-1
make -j src.build
# 如果第一次安装,需要安装一下依赖
# Install tools to create debian packages
sudo apt install build-essential devscripts debhelper fakeroot
# Build NCCL deb package
make pkg.debian.build
ls build/pkg/deb/
# install
sudo make install
安装这里有一步很耗时间,等着就行了
验证安装
# 确认horovod链接的nccl版本路径正确
ldd /usr/local/lib/python3.8/dist-packages/horovod/tensorflow/mpi_lib.cpython-38-x86_64-linux-gnu.so
mpirun
https://www.open-mpi.org/
# 安装依赖
apt-get install libnuma-dev
# 下载安装包
wget https://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.0.tar.gz
# 解压
tar zxf openmpi-4.0.0.tar.gz
# 安装
cd openmpi-4.0.0
./configure --enable-orterun-prefix-by-default
make -j $(nproc) all
sudo make install #需要root权限
sudo ldconfig #需要root权限
查看版本
mpirun --version
nvidia-tensorflow
pip或者conda安装
pip install nvidia-pyindex
pip install nvidia-tensorflow
这里如果下载失败,多换几个网络吧。。

3090欢乐时刻——支持gpu
输入命令检测是否可以使用gpu
import tensorflow as tf
print(tf.test.is_gpu_available())

horovod
horovod 在安装时,需要安装支持NCCL ,同时建议安装最新版本。
如果安装报错,请安装指定版本,如下命令。
卸载之前的horovod版本
pip show horovod && pip uninstall horovod

安装命令
HOROVOD_WITH_MPI=1 HOROVOD_WITHOUT_GLOO=1 HOROVOD_GPU_OPERATIONS=NCCL HOROVOD_WITH_TENSORFLOW=1 HOROVOD_NCCL_LINK=SHARED pip3 install horovod==0.24.3 --no-cache-dir

验证一下horovod
horovodrun --check-build
前面勾选则代表支持

参考资料:
https://www.jianshu.com/p/975f5cca88e4
https://xv44586.github.io/2022/05/25/horovod/index.html#huan-jing-zhong-cai-guo-de-keng
边栏推荐
- Google Emoji guessing game helps parents guide their children to surf the Internet safely
- 分布式ID的常用解决方案-一把拿下
- 时代潮流-云原生数据库的崛起
- 提高shuffle操作中的reduce并行度
- clock_ gettime
- Character function and string function (I)
- 2022 Henan Mengxin League game (3): Henan University B - reverse pair count
- 有ggjj看看这个问题没,是否缓存导致跨域问题?
- JVM第六讲:线上环境 FGC 频繁,如何解决?
- JVM第二讲:类加载机制
猜你喜欢

创建MySQL数据库的两种方式

面试之请详细说下synchronized的实现原理以及相关的锁

图像非局部均值滤波的原理

C语言——字符串函数,内存函数集锦以及模拟实现

Switch and router technology: dynamic routing protocol, rip routing protocol and OSPF routing protocol

Customer service relationship management based on SQL net enterprise messenger enterprise communications

AQS唤醒线程的时候为什么从后向前遍历,我懂了

基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习

Nacos 介绍和部署
![[cloud native | 17] four network modes of container](/img/06/01204436c27b69a5ae6fcb04642c2a.jpg)
[cloud native | 17] four network modes of container
随机推荐
Kubernetes advanced training camp scheduler
SQL encryption and decryption injection details
STM32 development | ad7606 parallel multi-channel data acquisition
未来大气污染变化模拟
异步时父子线程间的ThreadLocal传递问题
SWAT模型在水文水资源、面源污染模拟中的实践技术
Can serial port can 232 can 485 serial port to CANbus bus gateway module can232/485mb converter cancom
分布式ID的常用解决方案-一把拿下
Several maturity levels of using MES management system
C语言——字符串函数,内存函数集锦以及模拟实现
AXI协议(4):AXI通道上的信号
注解@Autowired如何自动装配
Use field parameters for report translation
公交站间的距离 : 简单模拟题
"Game engine light in light out" 4. shader
Textfield and password input box that are more flexible and easy to use in compose
Excel VBA:按日期汇总计算输出结果(sumif)
Redis expiration deletion strategy and memory obsolescence strategy
Niuke-top101-bm32
IEC61131 数据类型与 C#数据类型的对应