详情页标题前

腾讯云计算加速套件TACO Kit在裸金属服务器上部署 TensorFlow 分布式训练集群

详情页1

操作场景

本文介绍如何基于裸金属服务器搭建 Tensorflow+Taco Train 分布式训练集群。

操作步骤

购买实例

购买实例,其中实例、存储及镜像请参考以下信息选择,其余配置请参考 通过购买页创建实例 按需选择。实例:选择 GPU 型 HCCG5v、GPU 型 HCCG5vm 或 GPU 型 HCCPNV4h。系统盘:配置容量不小于50GB的云硬盘。您也可在创建实例后使用文件存储,详情参见 在 Linux 客户端上使用 CFS 文件系统。镜像:建议选择公共镜像,公共镜像当中已安装 RDMA 网卡驱动,且支持自动安装 GPU 驱动。若您选择自定义镜像,则需要自行安装 RDMA 网卡驱动和 GPU 驱动,请通过 联系我们 获取腾讯云售后支持。操作系统请使用 CentOS 7.6。若您选择公共镜像,则请勾选“后台自动安装GPU驱动”,实例将在系统启动后预装对应版本驱动。如下图所示:

腾讯云计算加速套件TACO Kit在裸金属服务器上部署 TensorFlow 分布式训练集群



安装 nv_peer_mem(可选)

多机通信的过程中,GPU 显存中的数据需要首先拷贝到内存中,然后通过网卡发出。通过 GPU Direct RDMA 协议,可利用 GPU 和网卡直接通过 PCIe 进行 Peer2Peer 的数据交换这条更快速的路径,无需借助内存来进行数据的传递。如需使用 GDR 进行数据传输,请在实例中执行以下命令,安装如下驱动。

git clone https://github.com/Mellanox/nv_peer_memory.gitcd ./nv_peer_memory/ && git checkout 1.0-9make && insmod ./nv_peer_mem.ko// 如果服务器发生了重启,nv_peer_mem驱动需要重新insmod

安装 docker 和 nvidia docker

1. 参见 使用标准登录方式登录 Linux 实例,登录实例。2. 执行以下命令,安装 docker。

curl -s -L http://mirrors.tencent.com/install/GPU/taco/get-docker.sh | sudo bash

若您无法通过该命令安装,请尝试多次执行命令,或参考 Docker 官方文档 Install Docker Engine 进行安装。
本文以 CentOS 为例,安装成功后,返回结果如下图所示:

腾讯云计算加速套件TACO Kit在裸金属服务器上部署 TensorFlow 分布式训练集群


3. 执行以下命令,安装 nvidia-docker2。

curl -s -L http://mirrors.tencent.com/install/GPU/taco/get-nvidia-docker2.sh | sudo bash

若您无法通过该命令安装,请尝试多次执行命令,或参考 NVIDIA 官方文档 Installation Guide & mdash 进行安装。
本文以 CentOS 为例,安装成功后,返回结果如下图所示:

腾讯云计算加速套件TACO Kit在裸金属服务器上部署 TensorFlow 分布式训练集群



下载 docker 镜像

执行以下命令,下载 docker 镜像。

docker pull ccr.ccs.tencentyun.com/qcloud/taco-train:ttf115-cu112-bm-0.4.2

该镜像包含的软件版本信息如下:OS:18.04.5ofed: MLNX_OFED_LINUX-5.1-2.5.8.0python:3.6.9cuda toolkits:V11.2.152cudnn library:8.1.1nccl library:2.8.4tencent-lightcc :3.1.1ttensorflow:1.15.5其中:LightCC 是腾讯云提供的基于 Horovod 深度定制优化的通信组件,完全兼容 Horovod API,不需要任何业务适配。ttensorflow 是腾讯云基于开源 tensorflow 1.15.5添加了 CUDA 11的支持,同时集成了 TFRA,用来支持动态 embedding 的特性。如需了解更多信息,请参见 产品概述。

启动 docker 镜像

执行以下命令,启动 docker 镜像。

docker run -itd --rm --gpus all --shm-size=32g --ulimit memlock=-1 --ulimit stack=67108864 --net=host --privileged ccr.ccs.tencentyun.com/qcloud/taco-train:ttf115-cu112-bm-0.4.2

注意--privileged 选项使容器能够访问主机上的 RDMA 设备。

分布式训练 benchmark 测试

说明docker 镜像中的文件 /mnt/tensorflow_synthetic_benchmark.py 来自 horovod example。展开全部单卡执行以下命令,进行测试。

/usr/local/openmpi/bin/mpirun -np 1 --allow-run-as-root -bind-to none -map-by slot -x NCCL_DEBUG=INFO -x NCCL_IB_DISABLE=0 -x NCCL_SOCKET_IFNAME=bond0 -x NCCL_IB_GID_INDEX=3 -x NCCL_NET_GDR_LEVEL=0 -x LD_LIBRARY_PATH -x PATH -mca pml ob1 -mca btl_tcp_if_include bond0 -mca btl ^openib python3 /mnt/tensorflow_synthetic_benchmark.py --model=ResNet50 --batch-size=256

下图为 HCCPNV4h/A100的单卡 benchmark 结果:

腾讯云计算加速套件TACO Kit在裸金属服务器上部署 TensorFlow 分布式训练集群


单机多卡执行以下命令,进行测试。

/usr/local/openmpi/bin/mpirun -np 8 --allow-run-as-root -bind-to none -map-by slot -x NCCL_DEBUG=INFO -x NCCL_IB_DISABLE=0 -x NCCL_SOCKET_IFNAME=bond0 -x NCCL_IB_GID_INDEX=3 -x NCCL_NET_GDR_LEVEL=0 -x LD_LIBRARY_PATH -x PATH -mca pml ob1 -mca btl_tcp_if_include bond0 -mca btl ^openib python3 /mnt/tensorflow_synthetic_benchmark.py --model=ResNet50 --batch-size=256

下图为 HCCPNV4h/A100的8卡 benchmark 结果:

腾讯云计算加速套件TACO Kit在裸金属服务器上部署 TensorFlow 分布式训练集群


多机多卡1. 参考 购买实例 – 启动 docker 镜像 步骤,购买和配置多台训练机器。2. 配置多台服务器 docker 间相互免密访问,详情请参见 配置容器 SSH 免密访问。3. 执行以下命令,使用 TACO Train 进行多机训练加速。

/usr/local/openmpi/bin/mpirun -np 16 -H gpu1:8,gpu2:8 --allow-run-as-root -bind-to none -map-by slot -x NCCL_DEBUG=INFO -x NCCL_IB_DISABLE=0 -x NCCL_SOCKET_IFNAME=bond0 -x NCCL_IB_GID_INDEX=3 -x NCCL_NET_GDR_LEVEL=0 -x HOROVOD_FUSION_THRESHOLD=0  -x HOROVOD_CYCLE_TIME=0 -x LIGHT_INTRA_SIZE=8 -x LIGHT_2D_ALLREDUCE=1 -x LIGHT_TOPK_ALLREDUCE=1 -x LIGHT_TOPK_THRESHOLD=2097152 -x LD_LIBRARY_PATH -x PATH -mca pml ob1 -mca btl_tcp_if_include bond0 -mca btl ^openib python3 /mnt/tensorflow_synthetic_benchmark.py --model=ResNet50 --batch-size=256

下图为 HCCPNV4h/A100 2机16卡 benchmark 结果:

腾讯云计算加速套件TACO Kit在裸金属服务器上部署 TensorFlow 分布式训练集群


LightCC 的环境变量说明如下表:

环境变量 默认值 说明
LIGHT_2D_ALLREDUCE 0 是否使用2D-Allreduce 算法
LIGHT_INTRA_SIZE 8 2D-Allreduce 组内 GPU 数
LIGHT_HIERARCHICAL_THRESHOLD 1073741824 2D-Allreduce 的阈值,单位是字节,小于等于该阈值的数据才使用2D-Allreduce
LIGHT_TOPK_ALLREDUCE 0 是否使用 TOPK 压缩通信
LIGHT_TOPK_RATIO 0.01 使用 TOPK 压缩的比例
LIGHT_TOPK_THRESHOLD 1048576 TOPK 压缩的阈值,单位是字节,大于等于该阈值的数据才使用 TOPK 压缩通信
LIGHT_TOPK_FP16 0 压缩通信的 value 是否转成 FP16

4. 执行以下命令,关闭 TACO LightCC 加速进行测试。

# 去掉LIGHT_xx的环境变量,即可使用Horovod进行多机Allreduce/usr/local/openmpi/bin/mpirun -np 16 -H gpu1:8,gpu2:8 --allow-run-as-root -bind-to none -map-by slot -x NCCL_DEBUG=INFO -x NCCL_IB_DISABLE=0 -x NCCL_SOCKET_IFNAME=bond0 -x NCCL_IB_GID_INDEX=3 -x NCCL_NET_GDR_LEVEL=0 -x LD_LIBRARY_PATH -x PATH -mca pml ob1 -mca btl_tcp_if_include bond0 -mca btl ^openib python3 /mnt/tensorflow_synthetic_benchmark.py --model=ResNet50 --batch-size=256

下图为 HCCPNV4h/A100 2机16卡,关闭 LightCC 之后的 benchmark 结果:

腾讯云计算加速套件TACO Kit在裸金属服务器上部署 TensorFlow 分布式训练集群


多机多卡 GDR执行以下命令,使用 GDR 进行测试。注意:使用 GDR 需安装 nv_peer_mem,详情请参见 安装 nv_peer_mem。

/usr/local/openmpi/bin/mpirun -np 16 -H gpu1:8,gpu2:8 --allow-run-as-root -bind-to none -map-by slot -x NCCL_DEBUG=INFO -x NCCL_IB_DISABLE=0 -x NCCL_SOCKET_IFNAME=bond0 -x NCCL_IB_GID_INDEX=3 -x NCCL_NET_GDR_LEVEL=2 -x HOROVOD_FUSION_THRESHOLD=0  -x HOROVOD_CYCLE_TIME=0 -x LIGHT_INTRA_SIZE=8 -x LIGHT_2D_ALLREDUCE=1 -x LIGHT_TOPK_ALLREDUCE=1 -x LIGHT_TOPK_THRESHOLD=2097152 -x LD_LIBRARY_PATH -x PATH -mca pml ob1 -mca btl_tcp_if_include bond0 -mca btl ^openib python3 /mnt/tensorflow_synthetic_benchmark.py --model=ResNet50 --batch-size=256

GDR 通常在大模型或者集群规模较大时有显著的加速效果,测试结果如下图所示:

腾讯云计算加速套件TACO Kit在裸金属服务器上部署 TensorFlow 分布式训练集群



总结

本文使用环境及测试数据如下:

机器:HCCPNV4h(A100 * 8)+ 100G RDMA + 25G VPC 容器:ccr.ccs.tencentyun.com/qcloud/taco-train:ttf115-cu112-bm-0.4.2网络模型:ResNet50Batch:256数据:synthetic data
机型 #GPUs Horovod+RDMA LightCC+RDMA
性能(img/sec) 线性加速比 性能(img/sec) 线性加速比
HCCPNV4h A100 1 778 778
8 6104 98.07% 6104 98.07%
16 10790 86.68% 11779 94.63%

说明如下:对于 HCCPNV4h/A100,相比开源方案,2机16卡通过 LightCC 可以将线性加速比从86.68%提升到94.63%。上述 benchmark 也支持除 ResNet50之外的其他模型,ModelName 请参考 Keras Applications。上述 docker 镜像仅用于 demo,若您需使用自己的 docker 开发环境,请参考 容器安装用户态 RDMA 驱动 安装网卡驱动。如需特定 OS/python/CUDA/tensorflow 版本的 LightCC 加速组件,请通过 联系我们 联系腾讯云售后获取。
官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:http://www.yunxiaoer.com/146378.html

(0)
上一篇 2023年12月9日 上午11:45
下一篇 2023年12月9日 上午11:45
详情页2

相关推荐

  • 阿里云人工智能平台PAI5分钟使用EAS一键部署Stable Diffusion AIGC绘画-云淘科技

    AIGC中的Stable Diffusion文生图模型是开源流行的跨模态生成模型,用于生成与给定文本对应的图像。通过EAS,您可以一键部署AIGC Stable Diffusion SDWebUI绘画的AI-Web应用,以便在该应用中进行模型推理验证,实现自动生成图像等功能。 背景信息 本文主要按照以下操作流程,介绍如何在EAS中使用镜像部署AI-Web应用…

    2023年12月10日
  • 阿里云日志服务SLSKubernetes中的通用数据库审计部署方案-云淘科技

    通用数据库审计是日志服务提供的一种轻量级、低成本数据库安全方案,支持通过抓包方式上报数据库的操作行为流量到日志服务。当您将数据库部署在Kubernetes集群中时,可在容器中部署抓包程序。本文介绍如何在容器中部署抓包程序。 前提条件 已创建通用数据库审计任务。具体操作,请参见配置通用数据库审计。 说明 只需完成配置向导中的任务配置步骤,其余步骤可直接跳过,直…

    阿里云日志服务SLS 2023年12月10日
  • 腾讯云云直播云端直播特效

    云端直播特效服务基于云直播 和 应用云渲染。传统直播间礼物特效方式使用本地渲染,效果单一。使用云端直播特效,可将酷炫的礼物/直播特效在云端渲染,实时直播混流。提升直播间礼物效果和趣味性。您可以在 全真技术体验馆-云端直播特效 中,体验直播间云端特效玩法。  使用场景 场景名称 描述 秀场直播 观众赠送礼物时,赠送酷炫的 3D 礼物效果 主播 PK 主…

    2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云云函数(SCF)云函数免费额度调整说明-云淘科技

    腾讯云云函数免费额度和计费方式将于2022年6月1日0:00(北京时间)起正式调整。届时新用户前三个月将获得更多用量的免费额度,第四个月开始不再享受免费额度,同时从第四个月开始,系统每月会自动发放基础套餐额度(调用次数50万次、资源使用量10万GBs、外网出流量2GB)并扣除基础套餐费用12.8元。详情可参见 免费额度。具体调整内容如下:1. 开通使用云函数…

    腾讯云 2023年12月9日
  • 腾讯云CVM服务器实例自助检测

    概述 实例自助检测可检测云服务器实例的性能、费用、网络、磁盘等状态,并可帮助您了解实例的运行状态。您可通过该功能及时发现并解决实例的相关问题。 使用场景 以下两种场景推荐使用实例自助检测:故障处理:如在实例操作过程中遇到故障或问题,可使用实例自助检测进行问题排查及定位,并根据相应建议对异常情况进行处理。实例全面检测:日常运维过程中,可使用实例自助检测了解实例…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。