详情页标题前

腾讯云计算加速套件TACO Kit在 CVM 上部署 TensorFlow 分布式训练集群

详情页1

操作场景

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

操作步骤

购买实例

购买实例,其中实例、存储及镜像请参考以下信息选择,其余配置请参考 通过购买页创建实例 按需选择。实例:选择 计算型 GN10Xp 或 GT4。系统盘:配置容量不小于50GB的云硬盘。您也可在创建实例后使用文件存储,详情参见 在 Linux 客户端上使用 CFS 文件系统。镜像:建议选择公共镜像,您也可选择自定义镜像。操作系统请使用 CentOS 8.0/CentOS 7.8/Ubuntu 20.04/Ubuntu 18.04/TecentOS 3.1/TencentOS 2.4。若您选择公共镜像,则请勾选“后台自动安装GPU驱动”,实例将在系统启动后预装对应版本驱动。如下图所示:

腾讯云计算加速套件TACO Kit在 CVM 上部署 TensorFlow 分布式训练集群

说明选择公共镜像并自动安装 GPU 驱动的实例,创建成功后,请登录实例等待约20分钟后重启实例,使配置生效。

配置实例环境

验证 GPU 驱动

1. 参考 使用标准登录方式登录 Linux 实例,登录实例。2. 执行以下命令,验证 GPU 驱动是否安装成功。

nvidia-smi

查看输出结果是否为 GPU 状态:是,代表 GPU 驱动安装成功。否,请参考 NVIDIA Driver Installation Quickstart Guide 进行安装。

配置 HARP 分布式训练环境

1. 参考 配置 HARP 分布式训练环境,配置所需环境。2. 配置完成后,执行以下命令进行验证,若配置文件存在,则表示已配置成功。

ls /usr/local/tfabric/tools/config/ztcp*.conf

安装 docker 和 nvidia docker

1. 执行以下命令,安装 docker。

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

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

腾讯云计算加速套件TACO Kit在 CVM 上部署 TensorFlow 分布式训练集群


2. 执行以下命令,安装 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在 CVM 上部署 TensorFlow 分布式训练集群



下载 docker 镜像

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

docker pull ccr.ccs.tencentyun.com/qcloud/taco-train:ttf115-cu112-cvm-0.4.1

该镜像包含的软件版本信息如下:OS:18.04.5python:3.6.9cuda toolkits:V11.2.152cudnn library:8.1.1nccl library:2.8.4tencent-lightcc :3.1.1HARP library:v1.3ttensorflow:1.15.5其中:LightCC 是腾讯云提供的基于 Horovod 深度定制优化的通信组件,完全兼容 Horovod API,不需要任何业务适配。HARP 是腾讯云提供的用户态协议栈,致力于提高 VPC 网络下的分布式训练的通信效率。以动态库的形式提供,官方 NCCL 初始化过程中会自动加载,不需要任何业务适配。ttensorflow 是腾讯云基于开源 tensorflow 1.15.5添加了 CUDA 11的支持,同时集成了 TFRA,用来支持动态 embedding 的特性。如需了解更多信息,请参见 TTensorflow 使用说明。

启动 docker 镜像

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

docker run -it --rm --gpus all --privileged --net=host -v /sys:/sys -v /dev/hugepages:/dev/hugepages -v /usr/local/tfabric/tools:/usr/local/tfabric/tools ccr.ccs.tencentyun.com/qcloud/taco-train:ttf115-cu112-cvm-0.4.1

注意/dev/hugepages/usr/local/tfabric/tools 包含了 HARP 运行所需要的大页内存和配置文件。

分布式训练 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 LD_LIBRARY_PATH -x PATH -mca btl_tcp_if_include eth0 python3 /mnt/tensorflow_synthetic_benchmark.py --model=ResNet50 --batch-size=256

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

腾讯云计算加速套件TACO Kit在 CVM 上部署 TensorFlow 分布式训练集群


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

/usr/local/openmpi/bin/mpirun -np 8 --allow-run-as-root -bind-to none -map-by slot -x NCCL_DEBUG=INFO -x LD_LIBRARY_PATH -x PATH -mca btl_tcp_if_include eth0 python3 /mnt/tensorflow_synthetic_benchmark.py --model=ResNet50 --batch-size=256

下图为 GT4/A100的单机8卡 benchmark 结果:

腾讯云计算加速套件TACO Kit在 CVM 上部署 TensorFlow 分布式训练集群


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

/usr/local/openmpi/bin/mpirun -np 8 --allow-run-as-root -bind-to none -map-by slot -x NCCL_DEBUG=INFO -x LD_LIBRARY_PATH -x PATH -mca btl_tcp_if_include eth0 python3 /mnt/tensorflow_synthetic_benchmark.py --model=ResNet50 --batch-size=256

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

腾讯云计算加速套件TACO Kit在 CVM 上部署 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 加速进行测试。

# 修改环境变量,使用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_ALGO=RING -x NCCL_DEBUG=INFO -x LD_LIBRARY_PATH -x PATH -mca btl_tcp_if_include eth0 python3 /mnt/tensorflow_synthetic_benchmark.py --model=ResNet50 --batch-size=256

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

腾讯云计算加速套件TACO Kit在 CVM 上部署 TensorFlow 分布式训练集群


5. 执行以下命令,同时关闭 LightCC 和 HARP 加速进行测试。

# 将HARP加速库rename为bak.libnccl-net.so即可关闭HARP加速。/usr/local/openmpi/bin/mpirun -np 2 -H gpu1:1,gpu2:1 --allow-run-as-root -bind-to none -map-by slot mv /usr/lib/x86_64-linux-gnu/libnccl-net.so /usr/lib/x86_64-linux-gnu/bak.libnccl-net.so
# 修改环境变量,使用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_ALGO=RING -x NCCL_DEBUG=INFO -x LD_LIBRARY_PATH -x PATH -mca btl_tcp_if_include eth0 python3 /mnt/tensorflow_synthetic_benchmark.py --model=ResNet50 --batch-size=256

下图为 GT4/A100的2机16卡,同时关闭 LightCC 和 HARP 之后的 benchmark 结果:

腾讯云计算加速套件TACO Kit在 CVM 上部署 TensorFlow 分布式训练集群


注意:测试完如需恢复 HARP 加速能力,只需要把所有机器上的 bak.libnccl-net.so 重新命名为 libncc-net.so 即可。

总结

本文测试数据如下:

机器:GT4(A100 * 8)+ 50G VPC容器:ccr.ccs.tencentyun.com/qcloud/taco-train:ttf115-cu112-cvm-0.4.1网络模型:ResNet50Batch:256数据:synthetic data
机型 #GPUs Horovod+TCP Horovod+HARP LightCC+HARP
性能(img/sec) 线性加速比 性能(img/sec) 线性加速比 性能(img/sec) 线性加速比
GT4/A100 1 777 777 777
8 6105 98.21% 6105 98.21% 6105 98.21%
16 5504 44.27% 7857 63.20% 11173 89.87%

说明如下:对于 GT4,相比开源方案,使用 TACO 分布式训练加速组件之后,16卡A100的线性加速比从44.27%提升到89.87%,效果非常显著。LightCC 和 HARP 只在多机分布式训练当中才有加速效果,单机8卡场景由于 NVLink 的高速带宽存在,一般不需要额外的加速就能达到比较高的线性加速比。上述 benchmark 脚本也支持除 ResNet50之外的其他模型,ModelName 请参考 Keras Applications。上述 docker 镜像仅用于 demo,若您具备开发或者部署环境,请提供 OS/python/CUDA/tensorflow 版本信息,并联系腾讯云售后提供特定版本的 TACO 加速组件。
官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

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

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

相关推荐

  • 阿里云负载均衡查看用量明细-云淘科技

    当您想获取负载均衡的用量明细时,可以在阿里云费用中心导出查看。 操作步骤 登录用户中心的账单详情页面。 在账单详情页面,单击用量明细页签,选择产品为负载均衡,配置需要查看的负载均衡用量的计量规格、使用时间和计量粒度,输入验证码,然后单击导出CSV。 计量规格支持选择负载均衡子产品。 选择负载均衡:表示导出CLB的用量明细。 选择应用型负载均衡ALB:表示导出…

    阿里云负载均衡 2023年12月10日
  • 腾讯云TDSQL-C MySQL版数据库内核版本更新动态

    本文为您介绍 TDSQL-C MySQL 版内核版本更新动态。说明如需升级,请参见 升级内核小版本,如需了解各个内核版本的发布时间,请参见 内核版本发布时间。TDSQL-C MySQL 版 8.0 内核更新说明TDSQL-C MySQL 版 5.7 内核更新说明 小版本 说明 3.1.10 功能更新只读实例支持订阅 binlog。支持黑洞引擎。并行查询功能更…

    腾讯云 2023年12月9日
  • 阿里云负载均衡功能特性-云淘科技

    本文为您介绍网络型负载均衡NLB的主要功能以及NLB与传统型负载均衡CLB在四层负载均衡能力上的对比。 下表展示了NLB主要功能及NLB与CLB的功能差异。 说明 “-”代表不支持;“✔”代表支持。 功能分类 功能 传统型负载均衡CLB 网络型负载均衡NLB 监听 TCP监听 ✔ ✔ UDP监听 ✔ ✔ TCPSSL监听 – ✔ 调度算法 轮询 …

    阿里云负载均衡 2023年12月10日
  • 阿里云RDS数据库【活动/调价】本地盘实例备份下载功能商业化-云淘科技

    云数据库RDS备份下载功能即将升级。自2021年11月25日0点起,本地盘实例使用该功能后,超出免费备份额度的部分将收取外网流量费用。 商业化时间及地域 2021年11月25日0点开始对部分地域先行生效,2021年12月2日0点开始对剩余所有地域生效。 计费时间 涉及实例 地域 2021年11月25日0点 RDS MySQL(本地盘) RDS SQL Ser…

    阿里云数据库 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • DataWorks发现一个节点,我打开看他是有cycletype的,这个正常吗?-云小二-阿里云

    DataWorks发现一个节点,我打开看他是有cycletype的,但是通过API获取出来是空的,这个正常吗? 以下为热心网友提供的参考意见 不太符合预期 您其他任务返回正常吗 我试了一下 上海地域的调用可以正常返回 ,此回答整理自钉群“DataWorks交流群(答疑@机器人)” 以下为热心网友提供的参考意见 DataWorks中节点的cycletype属性…

    2023年12月17日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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