分布式
文章平均质量分 84
canmoumou
CS咸鱼,IT手残,AI专业打杂,游戏遗老
展开
-
【乱写的】收集一些和GPU以及NCCL相关的定义(持续更新)
SHArP 论文,其实没必要细看。简单来说,SHArP是一个软硬结合的通信协议,实现在了NVIDIA Quantum HDR Switch的ASIC里。它可以把从各个node收到的数据进行求和,并发送回去。再说的通俗一点,通过使用SHArP,我们把求和(聚合/Reduce,随便怎么叫)的操作交由交换机完成了。这种做法,业界叫做In-network Computing(在网计算)。用术语展开来讲,就是将计算卸载到网络中进行。更多相关的知识可以看这个英伟达的汇报。原创 2024-01-09 18:46:03 · 1087 阅读 · 0 评论 -
【深度笔记】LRU Cache
因为经常使用LRU(Least Recently Used,最近最少使用)或其他缓存替换策略来管理存储在KV Cache中的数据,保证高效的数据访问。在Transformer等深度学习模型中,KV Cache被广泛应用于存储Self-Attention机制中的中间计算结果,如注意力权重和值。实现了一个简单的LRU缓存,使用了一个双向链表 lruList 来维护访问顺序,以及一个 unordered_map cacheMap 用来存储键值对和对应的链表迭代器。原创 2024-07-01 16:01:16 · 188 阅读 · 0 评论 -
【分布式通信】NPKit,NCCL的Profiling工具
以NCCL为例,如何使用?原创 2024-04-25 14:58:30 · 741 阅读 · 0 评论 -
【分布式通信论文阅读】xCCL: A Survey of Industry-Led Collective Communication Libraries for Deep Learning-2
由于深度神经网络训练的规模变得太大,无法在单个计算节点上执行,一些最先进的深度学习框架,如TensorFlow[62]、Caffe[69]、PyTorch[57]、CNTK[70]和MXNet[71],已经通过使用NCCL实现了在多个节点上的分布式训练。通过在不同的CUDA流中调度NCCL操作,可以在等待网络通信完成的同时,让GPU执行其他操作。类似于NVIDIA的CUDA,NCCL提供了一个C语言的API,因此程序员可以在现有的C项目中使用NCCL,或者甚至在像Python这样的高级语言中使用C绑定。原创 2024-04-24 15:10:27 · 1196 阅读 · 0 评论 -
【分布式通信论文阅读】xCCL: A Survey of Industry-Led Collective Communication Libraries for Deep Learning-1
但,有时用户预定义的一些预定操作里,可能改变数据类型,来执行复杂Reduce-Scatter操作,所以All-reduce操作中,该算法适用于所有大小的数据。Reduce集合指的是一个过程,在这个过程中,单个节点从系统中的每个节点接收数据,并对这些数据应用一些操作,从而产生单个输出。这个操作在特定场合下,相较于broadcast有更好的优势,因为有些时候不同进程需要分发不同的任务,这样更能节省带宽。Reduce-Scatter集合操作,可以被描述为Reduce操作和Scatter操作按给定顺序的组合。原创 2024-04-18 20:13:08 · 874 阅读 · 1 评论 -
MPIRUN 31280 segmentation fault (core dumped)
mpich和openmpi的文件可能不太一样,stackoverflow上面给出的内容有时候和nccl无关。用mpirun运行多节点nccl时有时候出现hang死,而且是指定了mpi_host的情况。nccl正常,各节点通信正常,但是一跑mpirun就卡死,core dump。不再指定mpi_host.原创 2024-03-20 19:32:56 · 221 阅读 · 0 评论 -
【分布式】NCCL Split Tree kernel内实现情况 - 06
先掠过Tree算法在拓扑方面以及树的生成方面是如何实现的,本期主要讲kernel内部的情况。先放上2.11.4部分的tree,后续增添2.18版本中nccl的改动,以及rccl的处理。如果你看过其他的一些文档,应该知道double binary tree的一些构造。即我们可以将tree分为三类,朴素的tree、double binary tree和split tree、balanced tree。原创 2024-03-07 19:56:58 · 1398 阅读 · 3 评论 -
【分布式】小白看Ring算法 - 03
NCCL(NVIDIA Collective Communications Library)是由NVIDIA开发的一种用于多GPU间通信的库。NCCL的RING算法是NCCL库中的一种通信算法,用于在多个GPU之间进行环形通信。RING算法的基本思想是将多个GPU连接成一个环形结构,每个GPU与相邻的两个GPU进行通信。数据沿着环形结构传递,直到到达发送方的位置。这样的环形结构可以有效地利用GPU之间的带宽,提高通信的效率。RING算法的步骤如下:fill:#333;color:#333;原创 2023-11-23 20:46:20 · 2511 阅读 · 1 评论 -
【分布式】大模型分布式训练入门与实践 - 04
数据并行DDP\模型并行\Pipeline并行可以看到,G-pipe将1个mini-batch切分成多个micro-batch(上图是8),前向时每个micro-batch从device1流向device4,DDP就是这么做的。原创 2023-10-23 14:30:47 · 1910 阅读 · 0 评论 -
【分布式】入门级NCCL多机并行实践 - 02
大模型和分布式训练对数据的吞吐量以及并行度都有很高的要求,NCCL就是在这个背景下诞生的。如果你是一个只会写写Python,调用PyTorch和Horovod的算法萌新,可能对于分布式底层的东西不太了解,在下岗热潮中被主管逼着转变成算子或者通讯库的搬砖工,就会像我一样两眼蒙蔽。因此本文只对自己踩到的坑做一个整理,如果有说错的地方,那就是我说错了。以PyTorch为例,其中spmd接口下的相关定义是用于处理分布式的。但主要是处理单机多CPU情况,因此我们今天只考虑多机(多节点)情况。其中用于实现多节点分布式的原创 2023-10-20 17:53:03 · 4822 阅读 · 2 评论 -
【分布式】NCCL部署与测试 - 01
NCCL简述,NCCL编译测试,代码结构讲解原创 2023-10-07 16:44:43 · 5139 阅读 · 1 评论 -
分布式学习 - MPICH编译与实践
MPICH是MPI (消息传递接口规范)的实践方法之一, 本文包含编译和如何解决遇到的一些问题原创 2022-12-05 12:05:02 · 953 阅读 · 2 评论