测试多机效率 多机训练multi-node

测试多机效率 多机训练multi-node

一、测试gpu 拓扑

nvidia-smi topo -m

nvidia-smi topo -m
        GPU0    GPU1    GPU2    GPU3    GPU4    GPU5    GPU6    GPU7    NIC0    NIC1    NIC2    NIC3       NIC4    NIC5    NIC6    CPU Affinity    NUMA Affinity   GPU NUMA ID
GPU0     X      NV18    NV18    NV18    NV18    NV18    NV18    NV18    PIX     NODE    SYS     SYSSYS     SYS     NODE    0-55,112-167    0               N/A
GPU1    NV18     X      NV18    NV18    NV18    NV18    NV18    NV18    NODE    NODE    SYS     SYSSYS     SYS     NODE    0-55,112-167    0               N/A
GPU2    NV18    NV18     X      NV18    NV18    NV18    NV18    NV18    NODE    PIX     SYS     SYSSYS     SYS     NODE    0-55,112-167    0               N/A
GPU3    NV18    NV18    NV18     X      NV18    NV18    NV18    NV18    NODE    NODE    SYS     SYSSYS     SYS     NODE    0-55,112-167    0               N/A
GPU4    NV18    NV18    NV18    NV18     X      NV18    NV18    NV18    SYS     SYS     PIX     NODE       NODE    NODE    SYS     56-111,168-223  1       N/A
GPU5    NV18    NV18    NV18    NV18    NV18     X      NV18    NV18    SYS     SYS     NODE    NODE       NODE    NODE    SYS     56-111,168-223  1       N/A
GPU6    NV18    NV18    NV18    NV18    NV18    NV18     X      NV18    SYS     SYS     NODE    NODE       NODE    PIX     SYS     56-111,168-223  1       N/A
GPU7    NV18    NV18    NV18    NV18    NV18    NV18    NV18     X      SYS     SYS     NODE    NODE       NODE    NODE    SYS     56-111,168-223  1       N/A
NIC0    PIX     NODE    NODE    NODE    SYS     SYS     SYS     SYS      X      NODE    SYS     SYSSYS     SYS     NODE
NIC1    NODE    NODE    PIX     NODE    SYS     SYS     SYS     SYS     NODE     X      SYS     SYSSYS     SYS     NODE
NIC2    SYS     SYS     SYS     SYS     PIX     NODE    NODE    NODE    SYS     SYS      X      NODE       NODE    NODE    SYS
NIC3    SYS     SYS     SYS     SYS     NODE    NODE    NODE    NODE    SYS     SYS     NODE     X PIX     NODE    SYS
NIC4    SYS     SYS     SYS     SYS     NODE    NODE    NODE    NODE    SYS     SYS     NODE    PIX X      NODE    SYS
NIC5    SYS     SYS     SYS     SYS     NODE    NODE    PIX     NODE    SYS     SYS     NODE    NODE       NODE     X      SYS
NIC6    NODE    NODE    NODE    NODE    SYS     SYS     SYS     SYS     NODE    NODE    SYS     SYSSYS     SYS      X 

Legend:

  X    = Self
  SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
  NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
  PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
  PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
  PIX  = Connection traversing at most a single PCIe bridge
  NV#  = Connection traversing a bonded set of # NVLinks

NIC Legend:

  NIC0: mlx5_0
  NIC1: mlx5_3
  NIC2: mlx5_4
  NIC3: mlx5_5
  NIC4: mlx5_6
  NIC5: mlx5_7
  NIC6: mlx5_bond_0

非常感谢您提供这些详细的 GPU 拓扑信息。让我为您详细解释这个 GPU 拓扑结构:

GPU 数量和互联:

  • 系统中有 8 个 GPU(GPU0 到 GPU7)。
  • 所有 GPU 之间都通过 NVLink 互联,具体是 NV18,表示每两个 GPU 之间有 18 个 NVLink 连接。
  • 这是一个全连接的 GPU 拓扑,每个 GPU 都与其他所有 GPU 直接相连。

GPU NUMA 亲和性:

  • GPU0 到 GPU3 与 NUMA 节点 0 相关联(CPU Affinity: 0-55,112-167)
  • GPU4 到 GPU7 与 NUMA 节点 1 相关联(CPU Affinity: 56-111,168-223)

NVLink 连接:

  • NV18 表示每对 GPU 之间有 18 个 NVLink 连接。这是一个非常高带宽的互连,远超过 PCIe 的带宽。
  • 所有 GPU 对之间都是 NV18 连接,表明这是一个均匀的全连接拓扑。

网络接口卡(NIC)连接:

  • NIC0 (mlx5_0) 和 NIC1 (mlx5_3) 与 NUMA 节点 0 的 GPU 更紧密相连。
  • NIC2 (mlx5_4) 到 NIC5 (mlx5_7) 与 NUMA 节点 1 的 GPU 更紧密相连。
  • NIC6 (mlx5_bond_0) 可能是一个绑定接口,与两个 NUMA 节点都有连接。

PCIe 连接:

  • GPU 与不同 NUMA 节点上的设备之间的连接通常是 SYS,表示需要跨越 NUMA 节点。
  • 同一 NUMA 节点内的连接通常是 NODE 或 PIX,表示更快的连接。

GPU 分组:

  • GPU0-3 形成一组,与 NUMA 节点 0 相关。
  • GPU4-7 形成另一组,与 NUMA 节点 1 相关。

总结:

  • 这是一个高度对称和优化的 GPU 配置,共有 8 个 GPU。
  • 所有 GPU 通过高带宽的 NVLink (NV18) 全连接,形成了一个网格拓扑。
  • GPU 分为两组,每组 4 个,对应不同的 NUMA 节点,这有利于平衡计算负载和内存访问。
  • NIC 的分布也与 GPU 和 NUMA 节点的分组相对应,有助于优化网络通信。

这种配置非常适合大规模并行计算和深度学习任务,特别是那些需要频繁 GPU 间通信的应用。在编程和任务调度时,考虑这种拓扑结构可以显著提高性能,尤其是在需要跨 GPU 通信的场景中。

二、ib_write_bw

节点0

ib_write_bw

ib_write_bw 172.31.0.xxx
---------------------------------------------------------------------------------------
                    RDMA_Write BW Test
 Dual-port       : OFF          Device         : mlx5_0
 Number of qps   : 1            Transport type : IB
 Connection type : RC           Using SRQ      : OFF
 PCIe relax order: ON
 ibv_wr* API     : ON
 TX depth        : 128
 CQ Moderation   : 1
 Mtu             : 4096[B]
 Link type       : IB
 Max inline data : 0[B]
 rdma_cm QPs     : OFF
 Data ex. method : Ethernet
---------------------------------------------------------------------------------------
 local address: LID 0x1be QPN 0x0a21 PSN 0x9ee41 RKey 0x11e900 VAddr 0x007faf7f316000
 remote address: LID 0x1bd QPN 0x0cd2 PSN 0x70c04d RKey 0x20bc00 VAddr 0x007f9fe3494000
---------------------------------------------------------------------------------------
 #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]
Conflicting CPU frequency values detected: 2000.000000 != 3799.997000. CPU Frequency is not max.
 65536      5000             43890.45            41959.16                  0.671346
---------------------------------------------------------------------------------------

这个输出提供了关于您的InfiniBand网络性能测试的详细信息。让我为您解析这些结果:

配置信息:

  • 设备:mlx5_0(Mellanox ConnectX-5或更高版本的网卡)
  • 传输类型:IB(InfiniBand)
  • 连接类型:RC(Reliable Connection)
  • MTU:4096字节
  • TX深度:128(发送队列深度)

性能结果:

  • 测试数据包大小:65536字节(64KB)
  • 迭代次数:5000
  • 峰值带宽:43890.45 MB/sec(约42.86 GB/s)
  • 平均带宽:41959.16 MB/sec(约41.00 GB/s)
  • 消息率:0.671346 Mpps(每秒百万包)

性能分析:

  • 带宽性能相当不错。41-43 GB/s的带宽表明您可能使用的是EDR(100Gbps)或HDR(200Gbps)InfiniBand网络。
  • 平均带宽略低于峰值带宽,这是正常的,表明性能相当稳定。

注意事项:

  • 系统检测到CPU频率冲突:"Conflicting CPU frequency values detected: 2000.000000 != 3799.997000. CPU Frequency is not max."
    这表明CPU可能没有运行在最大频率,可能会影响性能测试结果。

潜在优化:

  • 确保CPU运行在最大频率,可能需要检查电源管理设置。
  • 考虑增加TX深度(如果硬件支持)可能会略微提高性能。
  • 测试不同的MTU大小,看是否能进一步提升性能。

对多机训练的影响:

  • 这个带宽足以支持大多数分布式训练工作负载。
  • 如果您的训练作业没有达到预期的速度,网络带宽可能不是主要瓶颈。

下一步:

  • 监控实际训练过程中的网络使用情况。
  • 检查GPU利用率,确保GPU得到充分利用。
  • 分析数据加载和预处理过程,确保它们不会成为瓶颈。

总的来说,您的InfiniBand网络性能看起来很好。如果多机训练性能不佳,可能需要查看其他因素,如数据加载、模型结构、或者工作负载分配等。

需要更多信息或有其他问题吗?

numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
node 0 size: 1031675 MB
node 0 free: 236088 MB
node 1 cpus: 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
node 1 size: 1032151 MB
node 1 free: 377292 MB
node distances:
node   0   1 
  0:  10  21 
  1:  21  10 

非常好,让我详细解释这个 numactl --hardware 命令及其输出:

命令解释:
numactl --hardware 是一个用于显示系统 NUMA (Non-Uniform Memory Access) 硬件配置的命令。它提供了有关 NUMA 节点、CPU 分配、内存大小和节点间距离的详细信息。

输出解析:

a. NUMA 节点数量:

复制

available: 2 nodes (0-1)
  • 系统有 2 个 NUMA 节点,编号为 0 和 1。

b. 节点 0 的 CPU 分配:

复制

node 0 cpus: 0 1 2 3 ... 164 165 166 167
  • NUMA 节点 0 拥有 112 个逻辑 CPU 核心。
  • 包括 CPU 0-55 和 CPU 112-167。

c. 节点 0 的内存信息:

复制

node 0 size: 1031675 MB
node 0 free: 236088 MB
  • 节点 0 总内存约 1TB (1031675 MB)。
  • 当前有 236088 MB(约 230 GB)空闲内存。

d. 节点 1 的 CPU 分配:

复制

node 1 cpus: 56 57 58 59 ... 220 221 222 223
  • NUMA 节点 1 也拥有 112 个逻辑 CPU 核心。
  • 包括 CPU 56-111 和 CPU 168-223。

e. 节点 1 的内存信息:

复制

node 1 size: 1032151 MB
node 1 free: 377292 MB
  • 节点 1 总内存略多于节点 0,约 1TB (1032151 MB)。
  • 当前有 377292 MB(约 368 GB)空闲内存。

f. 节点距离矩阵:

复制

node distances:
node   0   1 
  0:  10  21 
  1:  21  10 
  • 这个矩阵显示了 NUMA 节点之间的相对访问延迟。
  • 对角线上的 10 表示节点内访问的基准延迟。
  • 21 表示跨节点访问的延迟大约是本地访问的 2.1 倍。

重要观察:

  • CPU 分布:系统总共有 224 个逻辑 CPU 核心,均匀分布在两个 NUMA 节点上。
  • 内存分布:两个节点的内存容量几乎相同,每个节点约 1TB。
  • 内存使用:节点 1 比节点 0 有更多的空闲内存。
  • NUMA 效应:跨节点访问的延迟是本地访问的 2.1 倍,这对性能有显著影响。

性能影响:

  • 本地访问优先:应用程序应尽可能使用同一 NUMA 节点的 CPU 和内存,以减少跨节点访问。
  • 内存分配策略:大型应用程序应考虑在两个节点间平衡内存使用。
  • CPU 亲和性:任务调度时应考虑 NUMA 拓扑,尽量将相关任务绑定到同一节点。

优化建议:

  • 使用 numactl 命令运行应用程序,指定 CPU 和内存绑定。
  • 在多线程应用中,考虑 NUMA 感知的线程分配。
  • 监控跨 NUMA 节点的内存访问,尽量减少这种情况。

这些信息对于优化大规模计算任务、数据库操作和高性能计算应用程序非常重要。正确利用 NUMA 架构可以显著提高系统性能和效率。

Read more

60个“特征工程”计算函数(Python代码)

60个“特征工程”计算函数(Python代码)

转自:coggle数据科学 近期一些朋友询问我关于如何做特征工程的问题,有没有什么适合初学者的有效操作。 特征工程的问题往往需要具体问题具体分析,当然也有一些暴力的策略,可以在竞赛初赛前期可以带来较大提升,而很多竞赛往往依赖这些信息就可以拿到非常好的效果,剩余的则需要结合业务逻辑以及很多其他的技巧,此处我们将平时用得最多的聚合操作罗列在下方。 最近刚好看到一篇文章汇总了非常多的聚合函数,就摘录在下方,供许多初入竞赛的朋友参考。 聚合特征汇总 pandas自带的聚合函数 * 其它重要聚合函数 其它重要聚合函数&分类分别如下。 def median(x):     return np.median(x) def variation_coefficient(x):     mean = np.mean(x)     if mean != 0:         return np.std(x) / mean     else:         return np.nan def variance(x):     return

By Ne0inhk
90w,确实可以封神了!

90w,确实可以封神了!

要说24年一定最热的技术,还得是AIGC! 前段时间阿里旗下的开源项目,登上GitHub热榜! AI大热,如今ChatGPT的优异表现,必然会出现各种细分场景应用的工具软件,和大量岗位项目! 山雨欲来风满楼,强人工智能的出现,所有科技公司已经开始巨量扩招此领域的人才。算法的岗位,近三个月已经增长68%!这件事在HR届也是相当震撼的。 目前各行各业都不景气的市场,人工智能岗位却一直保持常青!甚至同属AI边缘岗都比其他岗薪资高40%! 与此同时,AI算法岗上岸也不简单,竞争激烈,好公司核心岗位不用说,谁都想去。 所以事实就是,想要上岸,门槛也逐渐变高,项目经历、实习经历都很重要,越早明白这个道理就越能提前建立起自己的优势。 但我在b站逛知识区的时候,经常看到有些同学,因为一些客观原因导致无法参加实习,这种情况下,如果你想提升背景,增加项目经历的话,可以试试这个《CV/NLP 算法工程师培养计划》。 目前已经有上千位同学通过该计划拿到offer了,最新一期学员就业薪资最高能拿到78K!年薪94w! 优势就是有BAT大厂讲师带领,手把手带做AI真实企业项目(包含CV、NLP等

By Ne0inhk
再见nohup!试试这个神器,Python Supervisor!

再见nohup!试试这个神器,Python Supervisor!

👇我的小册 45章教程:() ,原价299,限时特价2杯咖啡,满100人涨10元。 作者丨Ais137 https://juejin.cn/post/7354406980784373798 1. 概述 Supervisor 是一个 C/S 架构的进程监控与管理工具,本文主要介绍其基本用法和部分高级特性,用于解决部署持久化进程的稳定性问题。 2. 问题场景 在实际的工作中,往往会有部署持久化进程的需求,比如接口服务进程,又或者是消费者进程等。这类进程通常是作为后台进程持久化运行的。 一般的部署方法是通过 nohup cmd & 命令来部署。但是这种方式有个弊端是在某些情况下无法保证目标进程的稳定性运行,有的时候 nohup 运行的后台任务会因为未知原因中断,从而导致服务或者消费中断,进而影响项目的正常运行。 为了解决上述问题,通过引入 Supervisor 来部署持久化进程,提高系统运行的稳定性。 3. Supervisor 简介 Supervisor is a client/

By Ne0inhk
第一本给程序员看的AI Agent图书上市了!

第一本给程序员看的AI Agent图书上市了!

AI Agent火爆到什么程度? OpenAI创始人奥特曼预测,未来各行各业,每一个人都可以拥有一个AI Agent;比尔·盖茨在2023年层预言:AI Agent将彻底改变人机交互方式,并颠覆整个软件行业;吴恩达教授在AI Ascent 2024演讲中高赞:AI Agent是一个令人兴奋的趋势,所有从事AI开发的人都应该关注。而国内的各科技巨头也纷纷布局AI Agent平台,如:钉钉的AI PaaS、百度智能云千帆大模型平台等等。 Agent 是未来最重要的智能化工具。对于程序员来说,是时候将目光转向大模型的应用开发了,率先抢占AI的下一个风口AI Agent。 小异带来一本新书《大模型应用开发 动手做 AI Agent》,这本书由《GPT图解》的作者黄佳老师创作,从0到1手把手教你做AI Agent。现在下单享受5折特惠! ▼点击下方,即可5折起购书 有这样一本秘籍在手,程序员们这下放心了吧,让我们先来揭开 Agent 的神秘面纱。 AI Agent 面面观

By Ne0inhk