授课课件:华为昇腾智算中心测试方案与标准
本方案是企业内训课程《华为昇腾智算中心深度技术研修》的一部分授课课件的样例。方案内容中详细阐述了华为昇腾环境下智算中心的测试方案和标准,以确保硬件和软件系统在实际部署和运行中的高效性和稳定性。主要内容包括集群硬件清单、节点拓扑配置以及环境配置。硬件部分涵盖了CPU、GPU、内存、存储和网络等组件的具体型号、规格、性能指标和测试目标,如CPU的单核/多核性能、GPU的AI加速能力、内存的读写带宽、存储的IOPS等。
测试方案针对各组件及其组合进行了全面的基线测试和功能测试,涉及单节点及多节点的多种性能指标,包括计算能力、网络通信效率、存储系统性能等。同时,提供了测试工具的使用方法和流程,如sysbench、fio、iperf等,帮助用户准确评估系统性能,识别潜在瓶颈和优化空间。
此外,文件还详细介绍了如何通过配置集群管理工具(如Slurm和Kubernetes)来实现任务调度和负载均衡,确保系统资源的高效利用。整体方案全面覆盖了从基础设施搭建到性能优化的各个环节,提供了系统性的测试框架和参考标准,为构建高效、安全的智算中心提供了重要依据。
第一部分:智算集群整体测试方案
a.硬件测试的基本流程
硬件清单和测试目标内容
-
集群硬件清单:主要记录集群中的各类硬件组件,如CPU、GPU、内存、存储、网络设备等。这张表着重于每个硬件的规格、性能基线和测试目标。
-
集群节点拓扑与配置清单:记录集群的整体架构,包括节点的数量、类型、硬件配置,以及它们的角色和网络拓扑结构。这张表主要用于分析和测试集群中各节点的布局、连接方式以及它们在分布式系统中的协同工作效率。
表1:集群硬件清单
用于列出每个硬件的具体型号、测试目标以及厂商提供的性能基线。适用于单个节点或组件的详细测试。
硬件组件 |
型号/规格 |
测试目标 |
厂商提供的基线 |
其他重要指标 |
备注 |
CPU |
华为鲲鹏920 |
- 测试单核/多核性能 |
- 单核性能:1,200 SPECint |
- 指令集执行效率 |
厂商提供的SPEC CPU测试结果为参考 |
GPU |
华为昇腾910 |
- 测试AI模型加速性能 |
- AI加速:150 TFLOPS |
- GPU温度与散热能力 |
基于MindSpore或TensorFlow框架的AI基线测试 |
内存 |
512GB DDR4 2933MHz |
- 测试内存读写速度、带宽 |
- 带宽:45 GB/s |
- 内存利用率 |
使用STREAM测试带宽,延迟基于厂商数据 |
网络 |
华为100Gbps 高速以太网卡 |
- 测试跨节点网络带宽 |
- 带宽:98 Gbps |
- 数据包丢失率 |
使用iperf/netperf测试网络带宽与延迟 |
存储 |
华为OceanStor存储系统 |
- 测试存储读写性能 |
- IOPS:350,000 |
- 读写延迟 |
使用fio测试存储系统IOPS和吞吐量 |
GPU加速卡 |
华为Atlas 300 (昇腾310) |
- 测试推理性能 |
- 推理速度:64 TOPS |
- GPU通信带宽 |
推理加速基线基于NVIDIA NCCL等通信库测试 |
存储(SSD) |
2TB NVMe SSD |
- 测试读写速度 |
- 顺序读写:3.5 GB/s |
- SSD耐久性(TBW) |
使用fio测试读写性能 |
表2:集群节点拓扑与配置清单( 参考数据,以实际环境为准)
用于记录集群中每个节点的角色、硬件配置和网络拓扑。适用于评估集群的整体布局和节点间的协同工作。
节点类型 |
节点数量 |
节点硬件配置 |
角色 |
网络拓扑结构 |
其他重要信息 |
计算节点 |
10 |
CPU: 华为鲲鹏920 |
- 主要用于计算任务,运行AI模型 |
星形结构,通过高速网络交换机连接 |
- 各节点通信带宽 |
存储节点 |
3 |
存储: 华为OceanStor |
- 主要用于存储数据集 |
与所有计算节点连接 |
- 存储IOPS |
管理节点 |
2 |
CPU: 华为鲲鹏920 |
- 管理整个集群任务调度 |
环形结构,管理所有计算节点 |
- 集群资源调度效率 |
网络节点 |
1 |
Mellanox 100Gbps 高速网络设备 |
- 负责跨节点通信与负载均衡 |
树形结构 |
- 网络延迟 |
环境配置说明:
智算中心环境配置表格(实际环境搭建后修改配置清单)
配置项 |
配置内容 |
版本/规格 |
配置工具/方法 |
备注 |
操作系统 |
Linux 发行版(如Ubuntu, CentOS, EulerOS) |
Ubuntu 20.04 / CentOS 8 / EulerOS |
操作系统安装光盘或网络安装包 |
确保与硬件、驱动、AI框架兼容 |
CPU驱动 |
安装和配置CPU相关驱动 |
针对华为鲲鹏920的最新驱动 |
系统自带工具或厂商提供的驱动程序 |
确保多核CPU性能正常,支持多线程并行 |
GPU驱动 |
安装GPU的驱动程序 |
昇腾910/310 GPU驱动 |
Ascend Driver Installation (CANN) |
支持深度学习和GPU加速的驱动程序,确保GPU正常工作 |
AI框架 |
安装AI框架(如TensorFlow, PyTorch, MindSpore) |
TensorFlow 2.6 / PyTorch 1.9 / MindSpore 1.3 |
通过pip或conda安装 |
确保AI框架与GPU和计算资源兼容 |
集群管理工具 |
集群调度和管理工具 |
Slurm / Kubernetes |
通过apt、yum等包管理工具安装 |
确保任务调度与负载均衡功能正常 |
网络配置 |
配置节点间的网络连接,优化网络带宽和延迟 |
Mellanox 100Gbps 网络接口卡 |
使用网络配置工具,如ifconfig, iperf |
确保节点间网络带宽最大化,延迟最小化 |
存储系统 |
配置分布式存储系统,确保高IOPS和低延迟 |
华为OceanStor / Ceph |
Ceph部署工具,或厂商提供的配置工具 |
确保存储系统支持并发读写和大数据存储 |
硬盘分区与挂载 |
配置NVMe SSD和分布式存储的分区与挂载点 |
NVMe 2TB SSD 分区 |
使用fdisk、mkfs等工具进行分区挂载 |
确保存储系统被正确挂载,支持大数据访问 |
文件系统 |
文件系统的格式化与优化配置 |
Ext4 / XFS / CephFS |
mkfs工具进行文件系统格式化 |
根据需求选择最优的文件系统,支持高效读写 |
安全配置 |
安装和配置防火墙、权限控制等安全机制 |
Firewalld / iptables / SELinux |
通过操作系统或独立安全工具配置 |
确保智算中心在进行测试时有安全的网络和访问控制 |
软件依赖环境 |
安装各种开发包、编译工具及测试所需依赖的库 |
gcc, g++, OpenMPI, CUDA等 |
通过apt、yum、pip等安装 |
确保所有依赖包和编译环境正确安装和配置 |
监控工具 |
安装监控工具,实时监控硬件资源和任务运行状态 |
Grafana / Prometheus / NVIDIA-SMI |
通过包管理工具安装和配置 |
确保系统在运行时,能够监控CPU、GPU、内存等状态 |
系统时钟同步 |
确保集群中所有节点时钟同步 |
NTP / Chrony |
通过系统时钟同步工具进行配置 |
保证分布式任务中各节点的时钟同步 |
配置项说明:
-
操作系统:智算中心通常基于Linux操作系统(如Ubuntu、CentOS或EulerOS)。选择的操作系统版本需要和硬件兼容,尤其是CPU、GPU和存储系统。
-
CPU驱动:确保多核CPU的性能发挥正常,安装和配置合适的CPU驱动程序,特别是对于华为鲲鹏等高性能CPU。
-
GPU驱动:确保安装最新的GPU驱动程序(如华为昇腾910/310),支持深度学习模型的加速训练。常用工具如Ascend Driver或CANN(Compute Architecture for Neural Networks)。
-
AI框架:安装AI框架(TensorFlow、PyTorch或MindSpore),用于模型训练和推理。确保框架版本和硬件、操作系统兼容,安装时可以通过pip、conda等包管理工具。
-
集群管理工具:用于任务调度、负载均衡和集群管理。常用工具如Slurm和Kubernetes,确保所有节点任务调度和资源分配有效。
-
网络配置:配置智算中心的网络,使节点之间的通信效率最大化,确保数据传输带宽和延迟优化。测试工具如iperf等用于网络优化测试。
-
存储系统:配置分布式存储系统(如Ceph或华为OceanStor),确保高并发访问、大数据存储以及读写性能。
-
硬盘分区与挂载:配置NVMe SSD的分区与挂载点,确保存储系统能够快速访问和写入数据,特别是在高IOPS需求下。
-
文件系统:根据系统需求配置合适的文件系统(如Ext4、XFS、CephFS),确保支持高效的大数据读写操作。
-
安全配置:设置操作系统的安全防护(如防火墙、防病毒、SELinux等),确保测试环境的网络和数据安全。
-
软件依赖环境:安装各种依赖包和开发工具(如编译器、OpenMPI、CUDA等),确保智算中心在测试时拥有所需的软件支持。
-
监控工具:通过安装Grafana、Prometheus等监控工具,实时监控系统硬件资源(CPU、GPU、内存等)和任务运行状态,确保在测试时能够及时发现问题。
-
系统时钟同步:使用NTP或Chrony确保集群中各个节点的时钟同步,避免分布式任务由于时间不同步而出现问题。
基础功能测试清单表格
测试项目 |
测试目的 |
测试内容 |
测试工具 |
预期结果 |
操作系统健康检查 |
检查操作系统是否正常运行 |
- 操作系统版本检查 |
uname, top, free |
操作系统正常运行,资源使用无异常 |
CPU基本功能测试 |
确保CPU能够正常运行,且多核、多线程功能有效 |
- 检查CPU核数、线程 |
lscpu, sysbench |
CPU正常检测,所有核心和线程都能工作,多核性能正常 |
GPU基本功能测试 |
检查GPU的硬件状态并确保GPU驱动安装成功 |
- 确认GPU驱动是否正确安装 |
nvidia-smi, Ascend Toolkit (CANN) |
GPU驱动正确安装,硬件状态良好,GPU可被识别和正常使用 |
内存基本功能测试 |
确保内存读写功能正常,避免内存硬件故障 |
- 内存检测与读写测试 |
memtest86, free, vmstat |
内存读写无错误,内存分配和使用情况正常 |
存储设备检测 |
确认存储设备能够正确连接并识别,文件系统工作正常 |
- 检查存储设备挂载状态 |
fdisk, lsblk, dd, fio |
存储设备被正确识别并正常挂载,读写操作无错误 |
网络连接测试 |
确保集群内节点之间的网络连接正常,且带宽和延迟在合理范围内 |
- 测试节点间的网络连通性 |
ping, iperf |
节点间网络连通性正常,带宽和延迟符合预期 |
文件系统功能测试 |
检查文件系统是否正常工作并支持大文件的读写 |
- 检查文件系统状态 |
df, du, dd |
文件系统正常挂载,支持大数据读写,读写性能无异常 |
硬盘分区和挂载 |
确认所有存储硬盘正确分区并挂载,文件系统格式化正常 |
- 检查分区状态 |
fdisk, mkfs, dd |
所有硬盘分区正确,挂载状态良好,基础读写无问题 |
存储IO功能测试 |
确保存储设备在并发访问时性能稳定,支持大数据量的读写 |
- 检查IO性能 |
fio, dd |
IO性能稳定,支持并发读写操作,无明显性能下降 |
集群节点健康检查 |
确保所有节点均能正常启动和运行,硬件状态良好 |
- 检查所有节点的健康状态 |
ping, top, free |
所有节点状态正常,硬件资源(CPU、内存)使用无异常 |
集群管理工具功能 |
确保集群管理工具(如Slurm、Kubernetes)能够正常运行,任务分配正常 |
- 检查管理工具的状态 |
Slurm, Kubernetes, squeue, kubectl |
管理工具运行正常,任务分配无误,调度系统工作正常 |
时钟同步功能测试 |
确保集群中各节点的系统时钟同步,避免分布式任务时钟不一致 |
- 检查节点的时钟同步状态 |
ntpstat, chrony |
所有节点时钟同步,时间偏差在可接受范围内 |
安全与防火墙检查 |
检查安全配置,确保防火墙、SELinux等安全机制正确运行 |
- 检查防火墙状态 |
firewall-cmd, sestatus |
防火墙和SELinux运行正常,安全配置合理,无不必要的开放端口 |
测试项目说明:
-
操作系统健康检查:验证操作系统是否正常运行,包括系统资源(CPU、内存等)使用情况是否异常,确保系统稳定。
-
CPU基本功能测试:通过查看CPU的核心数和线程情况,确保CPU的多核、多线程功能有效,并通过基础的计算任务验证其运行正常。
-
GPU基本功能测试:检查GPU是否正确安装和可用,验证GPU的基本状态和利用率是否正常,确保GPU能够支持深度学习和计算加速任务。
-
内存基本功能测试:使用memtest86等工具检查内存硬件是否有问题,确保内存的读写能力正常,避免内存模块损坏或安装不当导致的错误。
-
存储设备检测:验证所有存储设备是否能够正确识别并挂载,确保磁盘读写操作无误。可以通过查看分区和挂载状态确认设备连接是否正常。
-
网络连接测试:通过测试节点间的连通性(如使用ping)和带宽、延迟等网络性能(如使用iperf),确保集群内节点之间的网络连接正常。
-
文件系统功能测试:检查文件系统是否正常工作,支持大文件的读写,确保在后续的大数据存储和处理任务中,文件系统能够提供足够的性能。
-
硬盘分区和挂载:验证所有硬盘是否已正确分区和挂载,检查文件系统是否被正确格式化,并通过基础读写测试确认其正常工作。
-
存储IO功能测试:使用fio等工具对存储设备进行IO性能测试,验证存储系统在并发访问时的读写性能是否稳定,确保数据密集型任务能够顺利进行。
-
集群节点健康检查:确保所有集群节点能够正常启动、工作,硬件资源状态良好,所有节点的CPU、内存等资源使用无异常。
-
集群管理工具功能:检查集群管理工具(如Slurm、Kubernetes)是否运行正常,提交简单任务测试集群的任务调度和负载均衡功能。
-
时钟同步功能测试:确保集群中所有节点的系统时钟同步,避免在分布式任务中因为时钟不同步导致的问题。通过NTP或Chrony工具进行检查。
-
安全与防火墙检查:检查集群的安全配置,包括防火墙、SELinux、用户权限等,确保系统安全配置合理,无不必要的端口暴露。
基线测试(重点核心)
基线测试的目的是为集群硬件和系统设定一个性能参考标准,以便在后续的性能测试中有一个对比基准。通过基线测试,确保硬件和软件在正常情况下能够达到预期的性能标准,并为压力测试、扩展性测试等提供参考。基线测试不仅关注单个组件的性能,还可以涉及整个集群的综合性能,确保系统在不同负载下的正常表现。
基线测试清单表格
测试项目 |
测试目的 |
测试内容 |
测试工具 |
基线预期值 |
备注 |
CPU基线测试 |
测试CPU的单核和多核性能,确定计算能力基线 |
- 单核与多核性能测试 |
SPEC CPU, sysbench |
- 单核:1,200 SPECint |
基于厂商提供的基准数据 |
GPU基线测试 |
确定GPU的浮点运算能力和AI模型训练加速能力 |
- 测试GPU计算能力(FLOPS) |
TensorFlow Benchmark, PyTorch |
- AI加速:150 TFLOPS |
使用标准模型和数据集进行测试 |
内存基线测试 |
确保内存的读写带宽和延迟在预期范围内 |
- 测试内存带宽和延迟 |
STREAM, memtest86 |
- 带宽:45 GB/s |
基于硬件规格和预期性能 |
存储基线测试 |
确定存储系统的IOPS、吞吐量和读写延迟,确保数据存取性能 |
- 测试存储IOPS |
fio, IOzone |
- IOPS:350,000 |
存储系统在单节点与多节点下的表现对比 |
网络基线测试 |
确定节点间网络带宽和延迟,确保通信效率和稳定性 |
- 测试节点间带宽 |
iperf, netperf, PingPlotter |
- 带宽:98 Gbps |
针对多节点的跨节点通信进行基线测试 |
存储并发访问测试 |
确保存储在多节点并发访问下的稳定性,确定并发处理能力 |
- 并发读写性能测试 |
fio, Ceph Benchmarks |
- 并发IOPS:300,000 |
确保存储在高并发下性能稳定 |
分布式训练基线测试 |
测试多节点的分布式训练性能,确保分布式计算的加速比和通信效率 |
- 测试分布式训练的通信延迟 |
NCCL, Horovod |
- 加速比接近线性增长 |
基于多GPU节点的模型训练进行测试 |
任务调度基线测试 |
确保集群任务调度系统(如Slurm)的任务分配效率和负载均衡效果 |
- 测试任务分配效率 |
Slurm, Kubernetes, squeue, kubectl |
- 任务延迟在可接受范围内 |
多任务并发情况下的调度表现 |
系统扩展性基线测试 |
测试增加节点后的性能扩展性,确保系统扩展性能线性增长 |
- 增加节点后的性能提升 |
Linpack, MPI Benchmarks |
- 性能扩展比接近线性 |
验证系统在增加节点时的性能扩展效果 |
系统能效基线测试 |
确保系统在不同负载下的能效比,优化功耗与计算能力的平衡 |
- 不同负载下的功耗与性能测试 |
lm-sensors, PowerTOP |
- 在高负载下能效比优化 |
根据负载优化能效表现,确保功耗合理 |
测试项目说明:
-
CPU基线测试:通过SPEC CPU或sysbench测试CPU的单核与多核性能,确保系统的计算能力达到预期。基线数据可以参考厂商提供的CPU性能规格,或通过历史测试结果设定。
-
GPU基线测试:针对深度学习或计算密集型任务,测试GPU的浮点运算性能(FLOPS)和AI任务加速能力。使用TensorFlow Benchmark或PyTorch进行标准模型的训练测试,确保GPU的利用率和加速效果符合预期。
-
内存基线测试:通过STREAM或memtest86测试内存的读写带宽和延迟,确保内存模块的读写性能符合硬件预期,特别是在多任务并发的情况下,确保延迟不会增加。
-
存储基线测试:使用fio或IOzone工具测试存储设备的顺序和随机读写性能,确保IOPS、吞吐量和延迟符合预期。存储系统在高IOPS需求下,必须保持稳定的性能。
-
网络基线测试:通过iperf等工具测试节点间的网络带宽、延迟、抖动和丢包率,确保多节点集群在分布式任务中的通信效率达到要求。带宽和延迟的基线设定通常基于网络硬件的规格。
-
存储并发访问测试:评估在多节点并发访问时,存储系统的IO性能是否能够稳定提供高吞吐量,测试并发下的IOPS和延迟,确保存储系统在高负载下能够保持性能。
-
分布式训练基线测试:针对深度学习任务的分布式训练,测试多节点、多GPU的分布式训练性能,确保加速比接近线性增长,通信延迟最小化。
-
任务调度基线测试:通过Slurm或Kubernetes测试任务调度和负载均衡的效率,确保集群中的任务能够均衡分配,避免资源浪费或单一节点过载。
-
系统扩展性基线测试:测试系统的扩展性能,通过增加节点,验证集群是否能够线性扩展计算能力,并且确保负载均衡在扩展后保持稳定。
-
系统能效基线测试:通过测试不同负载下的系统功耗与性能,确保系统在高负载下仍能保持合理的能效比,优化计算能力与功耗的平衡。
测试工具的使用和流程
免费开源的基线测试工具清单(附下载链接)
昇腾环境优化的基线测试工具清单
测试项目 |
测试目的 |
测试内容 |
测试工具 |
工具说明 |
下载链接 |
CPU基线测试 |
测试鲲鹏CPU的单核和多核性能 |
- 单核与多核性能测试 |
1. sysbench |
- sysbench:适用于鲲鹏CPU的基线测试工具 |
sysbench GitHub |
GPU基线测试 |
测试昇腾AI处理器的性能和AI训练加速能力 |
- 测试GPU(昇腾)计算能力 |
1. CANN Profiler |
- CANN Profiler:华为昇腾专用性能分析工具 |
CANN下载 |
内存基线测试 |
测试系统内存的带宽和延迟 |
- 内存带宽和延迟测试 |
1. STREAM |
- STREAM:内存带宽测试工具,适配鲲鹏CPU |
STREAM |
存储基线测试 |
测试存储系统的IOPS、吞吐量和延迟 |
- 测试存储IOPS |
1. fio |
- fio:适用于存储设备的基准测试工具 |
fio |
网络基线测试 |
测试集群节点间网络的带宽和延迟 |
- 测试节点间网络带宽 |
1. iperf |
- iperf:测试网络带宽和延迟的标准工具 |
iperf下载 |
存储并发访问测试 |
测试存储系统在多节点并发访问下的稳定性和性能 |
- 并发读写性能测试 |
1. fio |
- fio:适用于并发IO测试的开源工具 |
fio |
分布式训练基线测试 |
测试昇腾AI处理器在多节点下的分布式训练性能 |
- 测试分布式训练的通信延迟 |
1. CANN Profiler |
- CANN Profiler:分析昇腾AI处理器的多节点分布式训练性能 |
CANN下载 |
任务调度基线测试 |
测试集群任务调度系统(如Slurm)的任务分配效率和负载均衡 |
- 测试任务分配效率 |
1. Slurm |
- Slurm:适用于集群管理的开源任务调度工具 |
Slurm下载 |
系统扩展性基线测试 |
测试增加节点后的系统扩展性能,确保系统扩展性良好 |
- 测试系统扩展性 |
1. Linpack |
- Linpack:高性能计算基准测试工具,适合扩展性测试 |
Linpack |
系统能效基线测试 |
确保系统在不同负载下的能效比,优化功耗与计算能力的平衡 |
- 不同负载下的功耗与性能测试 |
1. lm-sensors |
- lm-sensors:监控硬件温度与功耗 |
lm-sensors |
工具说明与适配性
-
sysbench:适合用于鲲鹏CPU的基线测试,包括单核、多核性能的测试。但不适合直接测试昇腾AI处理器,建议使用CANN工具链来分析昇腾硬件。
-
KML(Kunpeng Math Library):华为鲲鹏的数学库,适合数值计算任务的优化与性能分析。推荐在鲲鹏CPU环境下使用。
-
CANN Profiler:这是华为昇腾AI芯片的专用性能分析工具,强烈推荐在任何与昇腾AI加速相关的基线测试中使用,包括模型训练、推理和多节点分布式任务。
-
MindSpore:华为的AI框架,完全适配昇腾AI硬件,并支持多节点分布式训练。适用于代替TensorFlow或PyTorch在昇腾环境中的使用。
-
STREAM:适用于鲲鹏CPU的内存带宽测试工具,可以帮助检测内存性能瓶颈,建议与CANN结合,分析AI训练任务中的显存和内存带宽。
-
fio:适用于测试存储系统的IOPS和吞吐量,适配SATA、NVMe等存储设备。可以与华为OceanStor存储系统结合使用。
-
iperf:标准的网络带宽和延迟测试工具,适合用于集群中节点间的网络测试,与华为CloudEngine交换机管理工具结合使用效果更好。
-
Slurm:用于集群管理和任务调度,但针对昇腾AI任务,建议结合华为AI集群管理工具,以优化AI加速任务的调度。
-
Linpack 和 MPI Benchmarks:适用于高性能计算中的扩展性测试,能够检测多节点的负载分布和通信效率。
免费开源基线测试工具的核心指标、参数页面和测试方法
1. sysbench
核心指标:
-
单核/多核性能:每秒处理的事件数(events per second)以及CPU的响应时间。
-
线程并发性能:多线程任务的并行执行能力。
-
内存性能:内存的读写速度和延迟。
关键参数页面:
-
--threads=N:设置并发线程数,N为指定的线程数(如--threads=8用于测试多核性能)。
-
--cpu-max-prime=N:设置用于计算的最大素数,N越大,计算量越大,适用于CPU的浮点运算测试。
-
--test=cpu/memory:选择测试项,cpu用于CPU测试,memory用于内存测试。
测试方法:
-
单核/多核性能测试:
-
sysbench --test=cpu --cpu-max-prime=20000 --threads=1 run # 单核
-
sysbench --test=cpu --cpu-max-prime=20000 --threads=8 run # 多核
-
查看每秒处理事件数(events/sec)和执行时间,评估CPU性能。
-
内存性能测试:
-
sysbench --test=memory --memory-block-size=4K --memory-total-size=1G run
-
查看内存读写性能,包括吞吐量和延迟。
2. KML(Kunpeng Math Library)
核心指标:
-
数值计算性能:评估鲲鹏CPU的数值计算效率。
-
矩阵计算性能:测试大规模矩阵运算中的加速比和性能瓶颈。
-
多线程性能:在多核场景下的并发计算能力。
关键参数页面:
-
-i [number]:设置计算的迭代次数。
-
-t [threads]:指定线程数量,测试多线程并发性能。
-
-m:指定数学运算类型(如矩阵乘法)。
测试方法:
-
矩阵运算性能测试:
-
kml-test -i 1000 -t 8 -m matrix_mul
-
使用8个线程测试矩阵乘法运算的性能,分析鲲鹏CPU在高并发场景下的性能表现。
3. CANN Profiler
核心指标:
-
AI核利用率:AI处理器的利用率,关键性能指标为AI Core Utilization。
-
显存利用率:分析显存的使用情况,避免显存瓶颈。
-
训练吞吐量:每秒处理的样本数(samples/sec)是衡量模型训练速度的重要指标。
-
通信延迟:在多卡或多节点训练中,通信延迟会影响训练的整体性能。
关键参数页面:
-
--batch_size:指定批处理大小,通常用于测试模型训练吞吐量。
-
--num_cards:指定使用的GPU或昇腾AI卡数量,测试单卡和多卡加速效果。
-
--model:指定模型类型(如resnet50、bert等)。
测试方法:
-
模型训练性能测试:
-
profiler start --model=resnet50 --batch_size=32 --num_cards=4
-
启动CANN Profiler分析训练性能,查看AI核的利用率、显存使用情况和通信延迟,评估多卡训练效果。
4. MindSpore Benchmark
核心指标:
-
每秒处理样本数(Samples/Second):用于衡量模型训练或推理的效率。
-
推理延迟:模型推理所需时间,通常以毫秒(ms)为单位。
-
加速比:在多节点或多GPU/多AI卡的场景下,分析加速效果。
关键参数页面:
-
--arch:选择模型架构(如resnet50、bert)。
-
--batch_size:设置批次大小,影响训练速度和显存占用。
-
--device_num:设置使用的设备数量,测试分布式训练时的性能。
测试方法:
-
单设备模型训练性能测试:
-
python mindspore_benchmark.py --arch=resnet50 --batch_size=32 --epochs=1
-
测试模型在单卡上的训练性能,查看每秒处理的样本数和模型训练时间。
-
多设备分布式训练测试:
-
mpirun -n 4 python mindspore_benchmark.py --arch=resnet50 --batch_size=64 --epochs=1 --device_num=4
-
测试模型在多卡或多节点上的分布式训练性能,查看加速比。
5. STREAM
核心指标:
-
内存带宽:以GB/s为单位,测量内存的读写带宽。
-
内存延迟:测试内存的访问延迟,通常以纳秒(ns)为单位。
关键参数页面:
-
STREAM_ARRAY_SIZE:设置测试的数组大小,越大越能反映系统的内存性能。
-
NTIMES:设置测试的重复次数,通常设置为10次。
测试方法:
-
内存带宽测试:
编译并运行STREAM: -
gcc -O2 stream.c -o stream && ./stream
-
查看读写带宽是否符合硬件规格(通常为几十GB/s),并评估内存延迟。
6. fio
核心指标:
-
IOPS:每秒输入输出操作次数,用于衡量存储系统的读写能力。
-
吞吐量:存储设备的顺序或随机读写性能,单位为MB/s。
-
延迟:存储设备的响应延迟,以毫秒(ms)为单位。
关键参数页面:
-
--rw=read/write/randread/randwrite:设置读写模式(顺序或随机)。
-
--bs=[block size]:设置块大小,常用4K、8K等。
-
--iodepth=N:指定并发深度,用于测试并发IO性能。
测试方法:
-
随机读写测试:
-
fio --name=test --size=4G --rw=randread --bs=4k --iodepth=64
-
测试存储系统的随机读写性能,查看IOPS和延迟情况。
-
顺序写入测试:
-
fio --name=test --size=4G --rw=write --bs=1M
-
测试顺序写入的吞吐量,查看存储系统的最大写入速度。
7. iperf
核心指标:
-
网络带宽:两个节点之间的最大带宽,以Gbps为单位。
-
网络延迟:数据包的往返延迟,通常以毫秒(ms)表示。
-
数据包丢失率:测试网络通信的可靠性。
关键参数页面:
-
-c:指定客户端的IP地址。
-
-P:设置并发连接数,模拟高并发网络环境。
-
-t:测试时长,以秒为单位。
测试方法:
-
网络带宽测试:
在服务器节点运行iperf -s,在客户端运行: -
iperf -c <server_ip> -P 4 -t 30
-
查看带宽是否达到预期,并通过多线程模拟高负载网络环境。
8. Slurm
核心指标:
-
任务等待时间:任务从提交到执行的延迟时间。
-
资源利用率:集群中各节点CPU、GPU等资源的利用率。
-
负载均衡:集群中任务的分配均匀性,评估各节点的负载。
关键参数页面:
-
sbatch:用于提交批量任务。
-
squeue:查看任务队列和执行状态。
-
sinfo:监控集群节点的状态和资源利用情况。
测试方法:
-
批量任务提交测试:
提交批量任务,监控任务调度情况:
sbatch my
重点问题:
在进行软件基线测试时,我们需要重点注意的事项:
1. sysbench
重点发现的问题:
-
多核性能不均衡:
-
观察点:检查各核心的负载是否均衡,是否存在某些核心负载过重或过轻的情况。
-
注意事项:在进行多核测试时,监控CPU核心利用率,避免其他后台任务影响测试结果。
-
-
内存带宽瓶颈:
-
观察点:监测内存读写性能,特别是在高并发情况下是否出现带宽瓶颈。
-
注意事项:注意内存带宽的上下限,避免因内存带宽限制导致测试结果偏低。
-
2. KML(Kunpeng Math Library)
重点发现的问题:
-
优化库兼容性:
-
观察点:检查KML库是否与其他数学库或应用程序兼容,是否出现计算错误或性能下降。
-
注意事项:在测试前确认KML库的版本,并确保其与系统和其他软件兼容。
-
-
测试覆盖范围不足:
-
观察点:测试是否覆盖了多种计算任务,包括复杂的数学运算。
-
注意事项:扩展测试用例,确保测试结果能够反映实际应用中的复杂计算需求。
-
3. CANN Profiler
重点发现的问题:
-
性能瓶颈定位困难:
-
观察点:在多节点或多卡训练时,注意性能瓶颈的定位是否困难,是否有明显的性能下降点。
-
注意事项:综合分析AI核利用率、显存使用情况等多个指标,查看性能瓶颈的表现。
-
-
数据采集与分析延迟:
-
观察点:监控数据采集和分析是否导致额外的开销,是否影响测试的准确性。
-
注意事项:注意测试过程中数据采集的频率和延迟对整体测试结果的影响。
-
4. MindSpore Benchmark
重点发现的问题:
-
分布式训练性能不稳定:
-
观察点:观察分布式训练过程中的性能波动,特别是在不同节点和不同卡上训练时的稳定性。
-
注意事项:监控训练过程中各节点的负载情况,注意性能的不稳定现象。
-
-
环境配置影响:
-
观察点:测试环境中的硬件和软件配置是否影响训练性能,特别是在不同配置下的测试结果。
-
注意事项:记录和比较不同配置下的测试数据,评估环境对性能的影响。
-
5. STREAM
重点发现的问题:
-
测试数据量不足:
-
观察点:检查数据集大小是否足够,是否能够充分测试内存带宽。
-
注意事项:使用大规模数据集进行测试,以确保带宽测试结果的准确性。
-
-
系统干扰:
-
观察点:监控系统中是否有其他任务干扰内存带宽测试。
-
注意事项:确保测试期间系统负载最低,避免其他任务影响测试结果。
-
6. fio
重点发现的问题:
-
存储设备性能不稳定:
-
观察点:在高负载条件下,监测存储设备性能的波动情况。
-
注意事项:记录存储设备在不同负载下的表现,特别是在高并发读写操作中的稳定性。
-
-
配置参数影响:
-
观察点:检查不同fio配置参数对测试结果的影响,如块大小和IO深度。
-
注意事项:根据实际应用场景选择合适的参数,观察测试结果的变化。
-
7. iperf
重点发现的问题:
-
网络带宽测试不准确:
-
观察点:监测网络带宽测试中的实际带宽和理论带宽是否一致。
-
注意事项:注意网络环境的稳定性,确保测试结果能够准确反映网络性能。
-
-
丢包和延迟影响:
-
观察点:在测试过程中观察数据包丢失率和延迟情况。
-
注意事项:记录网络丢包率和延迟,综合分析网络性能的真实表现。
-
8. Slurm
重点发现的问题:
-
任务调度延迟:
-
观察点:监测任务调度的延迟时间,是否存在较长的等待时间。
-
注意事项:记录调度延迟的时间,分析是否影响集群资源的有效利用。
-
-
资源利用不均:
-
观察点:观察集群中资源的分配和使用情况,是否存在资源利用不均的问题。
-
注意事项:监控节点的负载情况,查看是否有资源闲置或过载现象。
-
