矩池云|GPU 分布式使用教程之 TensorFlow
GPU 分布式使用教程之 TensorFlow
TensorFlow 提供了6种策略实现分布式计算,各个策略详情请参考官方文档。本文档使用 MirroredStrategy 实现单机多卡分布式,MultiWorkerMirroredStrategy 实现多机多卡分布式计算。
选择机器
单机多卡分布式:租用同个计算节点的多张卡即可。
多机多卡分布式:需要先申请开通 分布式集群 功能,点击这里申请开通,在租用时,请选择带有如图所示图标的机器。没有这个图标的机器不支持加入分布式网络。

单机多卡
1)租用机器: 为实现TensorFlow的单机多卡分布式,首先,您需要按正常流程租用GPU,如单节点 4 卡 A2000,选择TensorFlow镜像,如TensorFlow2.8镜像。
租用的时候 GPU 数设置成 4,即表示 4 卡,对应显存、内存等配置也会翻倍。

2)适配代码: 单机多卡分布式使用 MirroredStrategy 需对脚本进行相应修改,点击下载测试代码(将下面代码写入机器中的一个 .py 文件即可,如:tf-demo.py ):
3)运行代码: 进入运行脚本所在目录,输入命令行,如:
# 进入脚本目录
cd /mnt/test/multi-card/tf
# 解压数据集到当前目录
unzip /public/tensorflow_datasets/cats_vs_dogs/kagglecatsanddogs_3367a.zip -d ./cats_vs_dogs
# 安装缺的依赖包
pip install tensorflow_datasets
# 运行程序
python tf-demo.py
4)查看GPU使用情况: 租用界面点击详情按钮即可查看 GPU、CPU使用情况。从截图中可以看到 4 个显卡都有使用到。

多机多卡
多机多卡使用需要先申请开通 分布式集群 功能,点击这里申请开通
1)租用机器: 首先,您需要按正常流程租用 GPU,除了上文提到的通过图标直接选择支持分布式集群的机器外,还可以在主机市场筛选栏选择 支持分布式集群 筛选,然后选择自己需要的机器租用即可。

如两个计算节点,租用两台 A2000 4,共计 8 卡。选择相同的 TensorFlow 镜像,如 TensorFlow2.8 镜像。

注意: 单机多卡中每个节点的 GPU 卡数应该一样,才能都使用上,机器类型也最好一样。
2)创建集群: 进入 【个人中心】 — 【我的租用】 — 【分布式集群】。
分布式集群需要先进行申请,申请通过后,点击【添加集群】- 【添加机器】—【确定】。
3)添加机器: 点击集群页面添加机器按钮,勾选要加入集群的机器,点击确定,即可将租用机器添加到集群。

添加机器成功后,系统会给每个节点分配集群 IP,当状态为已连接时,代表机器间可相互通信。

4)添加机器: 登录任一节点。因密钥由您掌握,故需由您按以下步骤完成节点间的ssh连通:
ssh-keygen -t rsa # 一路默认,生成公私钥
ssh-copy-id root@其他节点IP #分发给其他节点,输入对应密钥。IP可在我的集群页面查看,如192.168.1.1
5)适配代码: 注意和单机多卡不同,多机多卡使用了 MultiWorkerMirroredStrategy,并配置了'TF_CONFIG'网络设置:
os.environ['TF_CONFIG'] = json.dumps({
'cluster': {
'worker': ["192.168.1.7:20005", "192.168.1.8:20006"]
},
'task': {'type': 'worker', 'index':0}
})
其中 cluster 包含了全部节点的IP和端口信息,所有节点此部分相同;task包含当前节点的角色,例如节点一为worker 0,节点二为worker 1。
点击下载测试代码(将下面代码写入机器中的一个 .py 文件即可,如:tf-demo2.py ):
6)运行程序: 登录主节点,进入运行脚本所在目录,输入命令行,如:
# 进入脚本目录
cd /mnt/test/multi-card/tf
# 解压数据集到当前目录
unzip /public/tensorflow_datasets/cats_vs_dogs/kagglecatsanddogs_3367a.zip -d ./cats_vs_dogs
# 安装缺的依赖包
pip install tensorflow_datasets
# 运行程序
python tf-demo2.py --num_workers 2 --worker_no 0
测试代码中,--num_workers 指定节点数(总共2个节点),用于设定batch_size, --worker_no 指定节点顺序(主节点故为0号)。
登录剩余节点,运行:
cd /mnt/test/multi-card/tf
python tf-demo2.py --num_workers 2 --worker_no 1
其中,--worker_no 指定节点顺序(第二个节点故为1号),如有更多节点,需做相应修改,其他参数不用修改。运行后,系统会自动连接并运行训练任务。
7)查看GPU使用情况: 租用界面点击详情按钮即可查看 GPU、CPU使用情况。


矩池云|GPU 分布式使用教程之 TensorFlow的更多相关文章
- 使用 MobaXterm 连接矩池云 GPU服务器
Host Name(主机名):hz.matpool.com 或 hz-t2.matpool.com,请以您 SSH 中给定的域名为准. Port(端口号):矩池云租用记录里 SSH 链接里冒号后的几位 ...
- 解决矩池云GPU显存未释放问题
很多用户反馈说终止程序之后,显存依然被占用,这里我们提供了两种解决方案,帮助用户解决这个问题. nvidia-smi查看 我们可以先用如下命令 nvidia-smi 查看一下当前GPU进程情况. _ ...
- 使用 Xshell 连接矩池云 GPU服务器
下单租用 租用成功 打开软件 完成 错误用法不能这样使用
- 矩池云 | 高性价比的GPU租用深度学习平台
矩池云是一个专业的国内深度学习云平台,拥有着良好的深度学习云端训练体验.在性价比上,我们以 2080Ti 单卡为例,36 小时折扣后的价格才 55 元,每小时单价仅 1.52 元,属于全网最低价.用户 ...
- 矩池云升级JupyterLab版本教程
先使用 Xshell 连接矩池云 GPU服务器,可以查看教程. 要在base环境下执行,用下面命令 conda deactivate ps -aux | grep jupyter 我这个进程是616 ...
- 如何使用 PuTTY 远程连接矩池云主机
PuTTY 是一款开源的连接软件,用来远程连接服务器,支持 SSH.Telnet.Serial 等协议. 矩池云的主机支持 SSH 登录,以下为使用 PuTTY 连接矩池云 GPU 的使用教程. 如您 ...
- 矩池云 | 新冠肺炎防控:肺炎CT检测
连日来,新型冠状病毒感染的肺炎疫情,牵动的不仅仅是全武汉.全湖北,更是全国人民的心,大家纷纷以自己独特的方式为武汉加油!我们相信坚持下去,终会春暖花开. 今天让我们以简单实用的神经网络模型,来检测肺炎 ...
- 矩池云 | 教你如何使用GAN为口袋妖怪上色
在之前的Demo中,我们使用了条件GAN来生成了手写数字图像.那么除了生成数字图像以外我们还能用神经网络来干些什么呢? 在本案例中,我们用神经网络来给口袋妖怪的线框图上色. 第一步: 导入使用库 fr ...
- 矩池云上使用nvidia-smi命令教程
简介 nvidia-smi全称是NVIDIA System Management Interface ,它是一个基于NVIDIA Management Library(NVML)构建的命令行实用工具, ...
- 矩池云里查看cuda版本
可以用下面的命令查看 cat /usr/local/cuda/version.txt 如果想用nvcc来查看可以用下面的命令 nvcc -V 如果环境内没有nvcc可以安装一下,教程是矩池云上如何安装 ...
随机推荐
- [转帖]总结:nginx502:Tomcat调优之acceptCount
问题背景:UI页面点击会偶尔返回error,检查调用日志,发现nginx报502报错,因此本文即排查502报错原因. 如下红框可知,访问本机个备机的服务502了,用时3秒左右(可见并不是超时) 先给出 ...
- Docker 运行 MongoDB的简单办法
Docker 运行 MongoDB的简单办法 第一步拉取镜像 docker pull mongo 第二步创建自己的目录 地址 10.24.22.240 创建目录 mkdir /mongodb 第三步 ...
- CentOS8 安装 SQLSERVER2019的简单过程
1. 获取rpm包直接从微软官方网站即可 -rw-r--r-- 1 root root 820984 Apr 5 22:23 msodbcsql17-17.5.2.1-1.x86_64.rpm -rw ...
- AI-WEB-1.0靶机
AI-WEB-1.0靶机 情报收集 扫描靶机,打开网站提示 Not even Google search my contents! dirb http://192.168.218.139 扫描网站 进 ...
- ant-design-vue 表单验证详解
表单验证详解 <template> <!-- 第一个坑 :model="formState.youForm" 一定要写成这样 不要写成:model="f ...
- 往返回来的数据数组Array中添加一个字段的最优写法
在工作中我们经常会对后端返回来的数据进行添加一个字段: 最优的写法是 直接在 res.data[i].xx=aa 这样的方式去添加: 添加好了之后美酒 可以去赋值了: 让表格去渲染数据 this.$a ...
- NSSCTF Round#17 Basic CRYPTO
Level_1 题目 Level_1.py(我把参数整理了一下,看着舒服) #真签到题 from Crypto.Util.number import bytes_to_long, getPrime f ...
- TienChin 活动管理-修改活动
后端 ChannelController.java @PreAuthorize("hasPermission('tienchin:channel:edit')") @GetMapp ...
- 小白学k8s(4)使用k8s发布go应用
k8s发布go应用 前言 部署 镜像打包 编写yaml文件 使用ingress 什么是ingress呢 ingress与ingress-controller ingress 部署ingress 配置i ...
- 【1】windows下安装OpenCV(4.3)+VS2017安装+opencv_contrib4.3.0配置
相关文章: [1]windows下安装OpenCV(4.3)+VS2017安装+opencv_contrib4.3.0配置 [2]Visual Studio 2017同时配置OpenCV2.4 以及O ...