首页
行业动态
网络学院
TCP/IP
RDMA
IGP & BGP
技术博客
AI & 大模型
云 & 计算
交换机
SDN
流量控制
拥塞控制
网络拓扑
接口 & 协议
存储
RDMA
网络仿真
运维&管理
顶级会议
SIGCOMM
NSDI
APNet
ICNP
其他论文
关于我们
当前位置:
首页
>
云 & 计算
> 正文
【微软】MSCCL Github仓库介绍
云 & 计算
2023-02-20
15405
更新:2023-03-25 21:43:13
## **MSCCL** Microsoft Collective Communication Library (MSCCL) 是一个为 Microsoft Azure 支持的多个加速器执行自定义集合通信算法的平台。 ## **介绍** [MSCCL 是一个建立在NCCL](https://link.zhihu.com/?target=https%3A//github.com/nvidia/nccl)之上的加速器间通信框架,并使用其构建块来执行自定义编写的集合通信算法。MSCCL 的愿景是提供一个统一、高效和可扩展的框架,用于跨多个加速器执行集合通信算法。为实现这一目标,MSCCL 具有多种功能:
◼
可编程性:加速器之间的互连具有不同的延迟和带宽。因此,通用的集合通信算法不一定适用于所有拓扑和缓冲区大小。MSCCL 允许用户为给定的拓扑结构和缓冲区大小编写超优化的集合通信算法。这可以通过两个主要组件实现:[MSCCL toolkit](https://link.zhihu.com/?target=https%3A//github.com/microsoft/msccl-tools)和[MSCCL runtime](https://link.zhihu.com/?target=https%3A//github.com/microsoft/msccl)(此 repo)。MSCCL toolkit包含一个高级 DSL (MSCCLang) 和一个为 MSCCL 运行时(此 repo)生成 IR 以在后端运行的编译器。MSCCL 将始终在没有自定义算法的情况下,MSCCL 将自动回退到 NCCL 的通用算法。[例子](https://link.zhihu.com/?target=https%3A//github.com/microsoft/msccl%23Example)提供了有关 MSCCL toolkit与运行时如何工作的一些实例。有关更多信息,请参阅[MSCCL toolkit](https://link.zhihu.com/?target=https%3A//github.com/microsoft/msccl-tools).
◼
Profiling/分析:MSCCL 有一个分析工具[NPKit](https://link.zhihu.com/?target=https%3A//github.com/microsoft/npkit),它为每个原始发送和接收操作提供详细的时间线,以了解给定集合通信算法中的瓶颈。 MSCCL 是微软研究院许多优秀研究人员和实习生的成果。以下是我们的出版物列表:
◼
[GC3:用于 GPU 集合通信的优化编译器](https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2201.11840)-- ASPLOS'23
◼
[综合最优集合算法](https://link.zhihu.com/?target=https%3A//dl.acm.org/doi/10.1145/3437801.3441620)——PPoPP'21(最佳论文奖)
◼
[打破分布式机器学习工作负载中的计算和通信抽象障碍](https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2105.05720)——ASPLOS'22
◼
[TACCL:使用通信草图指导集合算法综合](https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2111.04867)-- NSDI'23 如果您在研究中使用 MSCCL,请考虑引用我们的工作。此外,如果您有任何疑问或需要针对特定拓扑优化的集合通信算法,请联系我们。 ## **例子** 为了使用 MSCCL 自定义算法,您可以按照以下步骤在具有 8xA100 GPU 的 Azure NDv4 上为 AllReduce 使用两种不同的 MSCCL 算法: 安装 MSCCL 的步骤: ```text $ git clone https://github.com/microsoft/msccl.git $ cd msccl/ $ make -j src.build $ cd ../ ``` 然后,按照以下步骤安装[nccl-tests](https://link.zhihu.com/?target=https%3A//github.com/nvidia/nccl-tests)进行性能评估: ```text $ git clone https://github.com/nvidia/nccl-tests.git $ cd nccl-tests/ $ make MPI=1 NCCL_HOME=../msccl/build/ -j $ cd ../ ``` 接下来安装[MSCCL toolkit](https://link.zhihu.com/?target=https%3A//github.com/microsoft/msccl-tools)来编译一些自定义算法: ```text $ git clone https://github.com/microsoft/msccl-tools.git $ cd msccl-tools/ $ pip install . $ cd ../ $ python msccl-tools/examples/mscclang/allreduce_a100_allpairs.py --protocol=LL 8 2 > test.xml $ cd ../ ``` 编译器生成的代码是一个 XML 文件 ( `test.xml`),它被提供给 MSCCL 运行时。要评估其性能,请在 Azure NDv4 节点或任何 8xA100 系统上执行以下命令行: ```text $ mpirun -np 8 -x LD_LIBRARY_PATH=msccl/build/lib/:$LD_LIBRARY_PATH -x NCCL_DEBUG=INFO -x NCCL_DEBUG_SUBSYS=INIT,ENV -x MSCCL_XML_FILES=test.xml -x NCCL_ALGO=MSCCL,RING,TREE nccl-tests/build/all_reduce_perf -b 128 -e 32MB -f 2 -g 1 -c 1 -n 100 -w 100 -G 100 -z 0 ``` 如果一切安装正确,您应该在日志中看到以下输出: ```text [0] NCCL INFO Connected 1 MSCCL algorithms ``` `test.xml``MSCCL_XML_FILES`在命令行中传递给运行时。`test.xml`您可以通过比较in-place(新算法)与out-of-place(默认环算法)来评估性能,在 8xA100 NVLink 互连 GPU 上它应该快 2-3 倍。[MSCCL toolkit](https://link.zhihu.com/?target=https%3A//github.com/microsoft/msccl-tools)具有一组丰富的算法,适用于不同的 Azure SKU 和集合操作,与普通 NCCL 相比具有显着的加速。 ## **Build** 要构建库: ```text $ cd msccl $ make -j src.build ``` 如果 CUDA 未安装在默认的 /usr/local/cuda 路径中,您可以使用以下命令定义 CUDA 路径: ```text $ make src.build CUDA_HOME=
``` `build/`除非`BUILDDIR`设置,否则MSCCL 将被编译和安装。 默认情况下,为所有支持的体系结构编译 MSCCL。为了加速编译并减少二进制文件的大小,可以考虑重新定义`NVCC_GENCODE`(defined in `makefiles/common.mk`)以仅包含目标平台的架构: ```text $ make -j src.build NVCC_GENCODE="-gencode=arch=compute_80,code=sm_80" ``` ## **安装** 要在系统上安装 MSCCL,请创建一个包,然后以 root 身份安装它。 Debian/Ubuntu: ```text $ # 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/ ``` RedHat/CentOS: ```text $ # Install tools to create rpm packages $ sudo yum install rpm-build rpmdevtools $ # Build NCCL rpm package $ make pkg.redhat.build $ ls build/pkg/rpm/ ``` 与操作系统无关的压缩包: ```text $ make pkg.txz.build $ ls build/pkg/txz/ ``` ## **PyTorch 集成** 要与 PyTorch 集成,请遵循此存储库中的 dockerfile。它有一个如何用 MSCCL 替换默认 NCCL 的示例。 ## **NPKit 集成** MSCCL 集成了[NPKit](https://link.zhihu.com/?target=https%3A//github.com/microsoft/npkit),这是一个分析器框架,可以在 MSCCL 组件中收集细粒度的跟踪事件,从而识别传输瓶颈。 要启用 NPKit,只需添加`NPKIT=1`您的 make 命令。在执行期间,环境变量`NPKIT_DUMP_DIR`将用于生成所有输出(每个等级一个输出文件)。默认情况下,`/tmp/`将被使用。 要分析 NPKit 输出,请运行 python 脚本`tools/npkit_trace_generator.py`以获取最终`.json`文件,该文件可以通过 Microsoft Edge`edge://tracing`或 Google Chrome等跟踪查看器查看`chrome://tracing`。 参考资料:[https://github.com/microsoft/msccl](https://link.zhihu.com/?target=https%3A//github.com/microsoft/msccl) >
声明:本文素材来源于网络,仅供学习使用,如有侵权请联系网站删除(ngdcn_admin@163.com)。
集合通信库
2
赞
本文由 @NGDCN 于2023-02-20发布在 未来网络技术网,如有疑问,请联系我们(ngdcn_admin@163.com)。
上一篇:
【英伟达】NCCL Github仓库介绍
下一篇:
Alibaba高性能通信库ACCL介绍
相关文章
Alibaba高性能通信库ACCL介绍
【英伟达】NCCL Github仓库介绍
有话要说...
取消回复
云 & 计算
回复
2
赞
最近发表
【Sigcomm 2023】 Achelous:超大规模云网络中如何实现网络的可编程性、弹性和可靠性
【ICNP 2021】基于弱监督学习的ISP自助BGP异常检测
【ICNP 2021】怒赞!上海交大团队先于谷歌提出光电混合数据中心慢切换方案
【中科院】为什么chiplet需要标准?
一文读懂Dragonfly拓扑
Alibaba高性能通信库ACCL介绍
【微软】MSCCL Github仓库介绍
【英伟达】NCCL Github仓库介绍
【MPI】MPI组和通讯器介绍
【MPI】MPI Reduce和Allreduce函数
热门文章
【Infiniband手册】第9章:传输层
2022-10-27
【推荐】计算机网络顶级会议:快速检索目录
2022-11-07
一文读懂Dragonfly拓扑
2023-02-24
【Sigcomm 2023】 Achelous:超大规模云网络中如何实现网络的可编程性、弹性和可靠性
2023-10-06
Alibaba高性能通信库ACCL介绍
2023-02-21
【ICNP 2021】怒赞!上海交大团队先于谷歌提出光电混合数据中心慢切换方案
2023-05-10
【ICNP 2021】基于弱监督学习的ISP自助BGP异常检测
2023-05-10
【微软】MSCCL Github仓库介绍
2023-02-20
标签列表
PFC
(3)
流量控制
(6)
拥塞控制
(20)
网络拓扑
(8)
RDMA
(42)
TCP/IP
(21)
CXL
(5)
思科
(5)
交换机芯片
(5)
数据中心网络
(11)
英伟达
(5)
Infiniband手册
(8)
NSDI
(12)
SIGCOMM
(22)
华为
(5)
HPCC
(5)
交换机
(8)
数据中心
(4)
RoCE
(7)
存储
(11)
Memory Fabric
(4)
NS3
(8)
超算
(5)
MPI
(10)
集合通信库
(4)
有话要说...