高性能计算集群的效率取决于其数据访问能力。如果最先进的 GPU 持续等待存储系统提供下一批数据,它们就会一直处于闲置状态。这种被称为 I/O 瓶颈的情况,会抵消原本强大服务器的性能优势,延长训练时间并浪费昂贵的资源。因此,配置一个与计算组件吞吐量匹配的存储系统,是设计有效本地 AI 基础设施的一个主要组成部分。NVMe 固态硬盘的普及多年来,串行 ATA (SATA) 固态硬盘 (SSD) 相较于传统机械硬盘 (HDD) 是一个显著的提升。然而,对于现代 AI 工作负载,即使是 SATA SSD 也可能成为瓶颈。SATA 接口最初是为机械硬盘设计的,其理论最大带宽限制在大约 600 MB/s。在这里,NVMe (非易失性内存高速) 成为高性能系统的标准。与 SATA 硬盘不同,NVMe 固态硬盘直接连接到主板的 PCIe (Peripheral Component Interconnect Express) 总线,这是 GPU 使用的相同高速接口。这种直接路径大幅降低了延迟,并开辟了一条更宽的数据通道。单个 PCIe 4.0 NVMe 硬盘可以提供超过 7,000 MB/s 的顺序读取速度,是 SATA 固态硬盘的十倍以上。当在大数据集上训练模型时,这种数据访问速度的差异是显著的。了解存储性能指标在选择硬盘时,有两个指标尤其重要:带宽和 IOPS。带宽(或吞吐量): 以兆字节或千兆字节每秒 (MB/s, GB/s) 为单位衡量,带宽表明大块连续数据读写速度的快慢。高带宽对于加载大型模型检查点或传输大型视频或医学影像文件等任务很重要。IOPS(每秒输入/输出操作数): 它衡量硬盘每秒能处理多少次独立的读写操作,而不考虑数据大小。在处理由数百万个小文件组成的数据集(例如单个图像集合)时,高 IOPS 是必不可少的。存储系统必须能够快速定位和检索这些文件。下表展现了不同存储技术之间的显著差异。存储指标HDD (7200 转/分)SATA 固态硬盘NVMe 固态硬盘 (第四代)顺序读取~150 MB/s~550 MB/s~7,000 MB/s顺序写入~120 MB/s~520 MB/s~5,000 MB/s随机读取 IOPS~100~95,000~1,000,000延迟5-10 ms70-100 µs< 20 µs如您所见,NVMe 硬盘在每个性能类别中都提供数量级的提升,使它们成为任何专业 AI 服务器的主要存储设备的默认选择。用于性能和冗余的 RAID 配置使用单个硬盘,即使是高速硬盘,也很少是最佳选择。通过将多个硬盘组合成 RAID (独立磁盘冗余阵列) 阵列,可以提升性能、增加数据保护,或者两者兼顾。对于 AI 工作负载,您的“热”数据层最常见有两种配置。RAID 0 (条带化) 用于极限性能在 RAID 0 配置中,数据被“条带化”到多个硬盘上。当写入文件时,它被分成块,每个块同时写入不同的硬盘。这会将有效读写速度乘以阵列中的硬盘数量(带有一些开销)。例如,一个包含四个每个能达到 7,000 MB/s 速度的 NVMe 硬盘的 RAID 0 阵列,理论上可以接近 28,000 MB/s 的读取速度。主要的权衡是缺乏冗余。如果 RAID 0 阵列中的任何一个硬盘发生故障,整个阵列上的所有数据都会丢失。因此,RAID 0 最适合用作“临时”空间,您可以在其中存储临时数据,例如在其他地方有备份的训练数据集,或可以重新生成的中间模型成果。digraph RAID0 { rankdir=TB; graph [fontname="sans-serif", bgcolor="transparent"]; node [shape=box, style="rounded,filled", fontname="sans-serif", color="#495057"]; edge [color="#868e96", fontname="sans-serif", fontsize=10]; data [label="数据块", shape=record, style=rounded, fillcolor="#e9ecef", label="A | B | C | D"]; controller [label="RAID 控制器", shape=ellipse, fillcolor="#ffec99"]; drive1 [label="NVMe 硬盘 1\n[A, C]", fillcolor="#a5d8ff", shape=cylinder, height=1.2]; drive2 [label="NVMe 硬盘 2\n[B, D]", fillcolor="#a5d8ff", shape=cylinder, height=1.2]; data -> controller; controller -> drive1; controller -> drive2; }在 RAID 0 中,数据块被分割并写入阵列中的所有硬盘,从而最大化吞吐量。RAID 10 (镜像条带) 用于性能和冗余RAID 10 提供了性能与保护的平衡。它至少需要四个硬盘,工作方式是创建镜像对 (RAID 1),然后将数据条带化到这些镜像对上 (RAID 0)。结果是系统具有 RAID 0 阵列的读取性能,并提供完整的数据冗余。如果镜像对中的一个硬盘发生故障,系统可以在不丢失数据的情况下继续运行。缺点是成本和容量利用率。您只能使用总原始存储容量的 50%。例如,四个 2TB 硬盘在 RAID 10 配置下,可用容量为 4TB。然而,对于存储珍贵模型或独特数据集,在性能和安全性都很重要的情况下,RAID 10 是一个极好的选择。digraph RAID10 { rankdir=TB; graph [fontname="sans-serif", bgcolor="transparent"]; node [shape=box, style="rounded,filled", fontname="sans-serif", color="#495057"]; edge [color="#868e96", fontname="sans-serif"]; data [label="数据 (A, B, C, D)", shape=plaintext, fontcolor="#343a40"]; controller [label="RAID 控制器", shape=ellipse, fillcolor="#ffec99"]; data -> controller; subgraph cluster_mirror1 { label = "镜像集 1"; bgcolor="#f1f3f5"; color="#ced4da"; node [fillcolor="#96f2d7"]; drive1 [label="硬盘 1\n[A, C]"]; drive2 [label="硬盘 2\n[A, C]"]; drive1 -> drive2 [dir=both, style=dashed, color="#fa5252", arrowhead=none, arrowtail=none, label=" 镜像"]; } subgraph cluster_mirror2 { label = "镜像集 2"; bgcolor="#f1f3f5"; color="#ced4da"; node [fillcolor="#96f2d7"]; drive3 [label="硬盘 3\n[B, D]"]; drive4 [label="硬盘 4\n[B, D]"]; drive3 -> drive4 [dir=both, style=dashed, color="#fa5252", arrowhead=none, arrowtail=none, label=" 镜像"]; } controller -> drive1; controller -> drive3; {rank=same; cluster_mirror1; cluster_mirror2;} }RAID 10 将 RAID 0 的条带化与 RAID 1 的冗余相结合,兼具速度和数据保护。本地存储的分层策略一种实用的本地 AI 存储方法是根据性能需求和成本创建分层。操作系统和系统硬盘: 单个小型 NVMe 固态硬盘或一对镜像(RAID 1)SATA 固态硬盘足以满足操作系统和核心软件的需求。这里的优先级是可靠性而非纯粹的速度。高性能“热”层: 这一层用于您的活跃数据集和训练临时空间。由四个或更多高耐用性 NVMe 固态硬盘组成的 RAID 0 阵列是最大化 I/O 性能以持续为 GPU 提供数据的理想选择。这里的数据应被视为临时性或已在其他地方备份。温/冷归档层: 并非所有数据都需要存储在最快的存储设备上。一个独立的、大容量网络附加存储 (NAS) 系统,可能使用 RAID 5 或 RAID 6 配置的 HDD,可以用作非活跃项目、原始数据和备份的归档。数据可以根据训练需要从该归档移动到热层。通过设计存储配置以消除 I/O 瓶颈,您可以确保计算资源得到有效利用,直接支持减少总训练时间和最大化硬件投资回报的目标。