腾讯云高性能计算集群 - GPU 型实例安装 TCCL 说明
文档简介:
TCCL简介:
TCCL(Tencent Collective Communication Library)是一款针对腾讯云星脉网络架构的高性能定制加速通信库。主要功能是依托星脉网络硬件架构,为 AI 大模型训练提供更高效的网络通信性能,同时具备网络故障快速感知与自愈的智能运维能力。
TCCL简介
TCCL(Tencent Collective Communication Library)是一款针对腾讯云星脉网络架构的高性能定制加速通信库。主要功能是依托星脉网络硬件架构,为 AI 大模型训练提供更高效的网络通信性能,同时具备网络故障快速感知与自愈的智能运维能力。TCCL 基于开源的 NCCL 代码做了扩展优化,完全兼容 NCCL 的功能与使用方法。TCCL 目前支持主要特性包括:
双网口动态聚合优化,发挥 bonding 设备的性能极限。
全局 Hash 路由(Global Hash Routing),负载均衡,避免拥塞。
拓扑亲和性流量调度,最小化流量绕行。
操作场景
本文介绍如何在腾讯云环境中配置 TCCL 加速通信库,实现您在腾讯云RDMA环境中多机多卡通信的性能提升。在大模型训练场景,对比开源的 NCCL 方案,TCCL 预计约可以提升 50% 带宽利用率。
操作步骤
准备环境
1、创建 GPU 型 HCCPNV4sne 或 GPU 型 HCCPNV4sn 高性能计算集群实例,分别支持 1.6Tbps 和 800Gbps RDMA 网络。
2、为 GPU 型实例安装 GPU 驱动和 nvidia-fabricmanager 服务。
注意:
TCCL 运行软件环境要求 glibc 版本 2.17 以上,CUDA 版本 10.0 以上。
选择安装方式
TCCL目前支持三种使用方式安装,您可以根据需要选择适合业务场景的安装方式使用。
TCCL通信库 + 编译安装pytorch
TCCL通信库 + pytorch通信插件
NCCL插件 + 排序的IP列表
说明:
由于当前大模型训练基本都基于 Pytorch 框架,所以主要以 Pytorch 为例进行说明,
TCCL的三种接入方案对比如下表:
安装方式
|
方法一:编译安装 Pytorch
|
方法二:安装 Pytorch 通信插件
|
方法三:安装NCCL通信插件
|
使用步骤
|
安装 TCCL
重新编译安装 Pytorch
|
安装 Pytorch 通信插件
修改分布式通信后端
|
安装 NCCL 插件
修改启动脚本
|
优点
|
对业务代码无入侵
|
安装方便
|
安装方便
|
缺点
|
需要重新编译安装 Pytorch
对软件环境有要求
|
需要修改业务代码
对软件环境有要求
|
集群节点扩充之后,需要更新排序列表
|
软件环境依赖
|
对应 NCCL 版本 2.12
要求 glibc 版本 2.17 以上
要求 CUDA 版本 10.0 以上
|
当前安装包仅支持 Pytorch 1.12
要求 glibc 版本 2.17 以上
要求 CUDA 版本 10.0 以上
|
安装 NCCL 即可
|
如果您的机器资源和模型训练场景相对比较固定,推荐使用方法3,兼容不同的NCCL版本和CUDA版本,安装使用方便,不需要修改业务代码或者重新编译pytorch。
如果您的资源需要提供给不同的业务团队,或者经常有扩容的需求,推荐使用前两种方法,不需要算法人员或者调度框架刻意去感知机器的网络拓扑信息。
如果您不希望对业务代码做适配,那么可以使用方法1,只需要重新编译pytorch框架。
配置 TCCL 环境并验证
由于社区pytorch默认采用静态方式连接NCCL通信库,所以无法通过替换共享库的方式使用TCCL。
1、安装TCCL
以 Ubuntu 20.04 为例,您可以使用以下命令安装,安装之后TCCL位于 /opt/tencent/tccl 目录。
# 卸载已有tccl版本和nccl插件dpkg -r tccl && dpkg -r nccl-rdma-sharp-plugins# 下载安装tccl v1.5版本wget https://taco-1251783334.cos.ap-shanghai.myqcloud.com/tccl/TCCL_1.5-ubuntu.20.04.5_amd64.
deb && dpkg -i TCCL_1.5-ubuntu.20.04.5_amd64.deb && rm -f TCCL_1.5-ubuntu.20.04.5_amd64.deb
如果您使用 CentOS 或 TencentOS,参考以下步骤安装:
# 卸载已有tccl版本和nccl插件rpm -e tccl && rpm -e nccl-rdma-sharp-plugins-1.0-1.x86_64# 下载tccl v1.5版本wget https://taco-1251783334.cos.ap-shanghai.myqcloud.com/tccl/tccl-1.5-1.tl2.x86_64.rpm &&
rpm -ivh --nodeps --force tccl-1.5-1.tl2.x86_64.rpm && rm -f tccl-1.5-1.tl2.x86_64.rpm
2、 重新编译安装 Pytorch
以下为 Pytorch 源码安装示例,详情参考官网 Pytorch 安装说明。
#!/bin/bash# 卸载当前版本pip uninstall -y torch# 下载pytorch源码git clone --recursive https://github.com/pytorch/pytorchcd pytorch# <!重要> 配置TCCL的安装路径export USE_SYSTEM_NCCL=1export NCCL_INCLUDE_DIR="/opt/tencent/tccl/include"export NCCL_LIB_DIR="/opt/tencent/tccl/lib"# 参考官网添加其他编译选项# 安装开发环境python setup.py develop
3、 配置TCCL环境变量
export NCCL_DEBUG=INFOexport NCCL_SOCKET_IFNAME=eth0export NCCL_IB_GID_INDEX=3export NCCL_IB_DISABLE=0export NCCL_IB_HCA=mlx5_bond_0,mlx5_bond_1,mlx5_bond_2,mlx5_bond_3,mlx5_bond_4,mlx5_bond_5,mlx5_bond_6,mlx5_bond_7export NCCL_NET_GDR_LEVEL=2export NCCL_IB_QPS_PER_CONNECTION=4export NCCL_IB_TC=160export NCCL_IB_TIMEOUT=22export NCCL_PXN_DISABLE=0export TCCL_TOPO_AFFINITY=4
注意:
需要通过TCCL_TOPO_AFFINITY=4开启网络拓扑感知特性。
4、 验证 Pytorch
运行单机多卡或者多机多卡训练过程中有如下打印(export NCCL_DEBUG=INFO):

5、 验证nccl-tests
运行 nccl-tests 之前需要 export 对应的 TCCL路径:
export LD_LIBRARY_PATH=/opt/tencent/tccl/lib:$LD_LIBRARY_PATH
6、 软件版本支持
目前 TCCL 对应 NCCL 版本 2.12 ,要求 glibc 版本 2.17 以上,CUDA 版本 10.0 以上。其他 CUDA 版本支持请联系您的售前经理获取支持。