大模型行研:AI 时代适用的大容量存储特点
一、AI 大模型的存储系统,突出在需要同时适应 GPU、CPU、NPU等多种芯片算力
特点描述 | 具体要求 |
---|---|
高吞吐数据访问 | 在AI场景中,存储系统需要能够提供高吞吐的数据访问能力,以充分发挥GPU的计算性能例如,在智能制造生产线上通过高精度相机给物品拍照,用缺陷识别模型自动找出质量问题,这类模型的训练集可能达到10TB,训练过程中如果存储系统吞吐不足,会成为GPU训练的瓶颈 |
海量文件管理 | AI场景中常常需要处理大规模的文件集,例如自动驾驶领域的训练集可能包含数千万张图片,每张图片就是一个文件,总的训练数据可能多达几十亿甚至上百亿文件存储系统需要能够有效管理这些海量小文件 |
热点数据吞吐扩展 | 在量化投资等领域,数据存储的磁盘吞吐可能已经用满,但仍然不能满足应用端的需求存储系统需要为热点数据提供吞吐扩展能力 |
POSIX兼容性 | 在AI/ML领域,POSIX是数据访问最普遍的接口存储系统需要兼容POSIX并保证数据强一致性,这是保证计算正确性的基础 |
数据一致性 | 存储系统有多种不同的一致性实现,比如对象存储通常是最终一致性,文件系统通常是强一致性存储系统选型时需要注意这些一致性实现 |
吞吐线性扩展能力 | 存储系统需要能够根据需求线性扩展吞吐能力,而不是仅仅通过扩容来增加磁盘数量例如,一个500TB容量的集群,如果业务需要60GB/s的吞吐,可以通过增加磁盘或更换为更高吞吐的SSD来实现 |
弹性扩展 | 存储系统需要支持从数千万扩展到数亿甚至数十亿文件的能力,并且在系统扩展过程中数据分布需要均衡 |
数据分布 | 在系统扩展的过程中,很多系统的数据分布设计是基于目录名前缀做哈希分布的,这种规则在真实业务数据中可能会造成分布不均衡 |
Kubernetes并发负载能力 | 随着AI业务转向大规模分布式集群,存储系统需要能够支持Kubernetes集群中上万Pod的并发访问 |
高性能动态混合负载承载 | 在数据导入阶段,大小文件同时写入;在数据预处理阶段,大小文件批量读取处理后生成海量小文件;在模型训练阶段,海量小文件批量随机读取;在生成CheckPoint时,要能满足大高带宽写入;在模型部署阶段,即使大并发读取同一个模型文件,随着部署设备数量的增加,集群聚合吞吐带宽仍然可以线性增长 |
成本效益 | 存储系统在容量和性能上的扩展应方便调整,减少时间成本和运维成本例如,存储系统容量和吞吐要有足够的扩展能力,而且要方便调整 |
存算一体 | 通过在存储器中嵌入计算能力,减少数据搬运产生的延迟和功耗,提高数据的并行和效率存算一体技术可以显著提升AI芯片的计算效率 |
二、常见的存储架构,也需要适应异构算力和任务
在适配GPU、CPU、NPU以及AI芯片的大容量存储系统中,有几种常见的存储架构:DAS(直连存储)、NAS(网络接入存储)和SAN(存储区域网络)
存储类型 | 特点 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|
DAS(直连存储) | - 直接与主机服务器连接 - 简单易用 - 不需专业维护 | - 性能高 - 操作简单 - 成本低 | - 服务器故障时数据不可访问 - 不便于管理 - 存储空间分散,可能造成资源浪费 | 单机系统,成本敏感的应用场景 |
NAS(网络接入存储) | - 通过网络共享数据 - 采用TCP/IP协议和标准文件共享协议(如NFS、CIFS等) | - 灵活扩展 - 易于管理 - 支持文件级共享 | - 网络带宽可能成为瓶颈 - 性能相对DAS和SAN较低 | 文件共享、备份系统,适用于多用户访问场景 |
SAN(存储区域网络) | - 通过光纤交换机实现高性能连接 - 使用SCSI、FC-AL协议 | - 高带宽 - 数据集中管理,便于扩展 - 性能高,适用于高要求的应用场景 | - 成本高 - 维护复杂 | 企业级应用,需高性能和高可靠性的场景,如数据库、大数据处理、虚拟化环境等 |
分布式存储系统 | - 数据分布在多台服务器上 - 高可用和高扩展性 | - 数据冗余,提升可靠性 - 高可扩展性,易于处理大规模数据 | - 实现复杂 - 对网络依赖较大 | 云存储、大规模数据处理,如HDFS、Amazon S3等 |
存算一体芯片存储 | - 计算和存储合二为一 - 数据传输路径优化 | - 提高传输效率 - 功耗低 - 运算能力随存储容量规模提升 | - 技术较新,成本可能较高 - 实现复杂 | 对能耗敏感且需要高效计算的应用场景,如AI推理、边缘计算等 |
三、存算一体 VS 存算分离,是效率与成本之争
特性 | 存算一体(PIM) | 存算分离 |
---|---|---|
减少数据搬运 | 计算直接在存储器内部进行,减少数据在处理器和存储器之间的搬运,降低延迟和功耗 | 数据需要在处理器和存储器之间频繁搬运,增加延迟和功耗 |
提高并行性 | 可以在存储器内部并行处理大量数据,提高计算效率 | 并行处理能力受限于处理器和存储器之间的数据传输速率 |
适应特定算法 | 对于某些特定的算法(如矩阵运算),存算一体可以提供更高的性能 | 传统算法可能无法充分利用存算一体的优势 |
能效比高 | 减少了数据传输的能耗,整体能效比更高 | 数据传输的能耗较高,整体能效比相对较低 |
灵活性高 | 需要特殊的编程模型和工具来支持存算一体的计算 | 可以根据需要灵活配置存储和计算资源 |
易于编程 | 需要特殊的编程模型和工具来支持存算一体的计算 | 传统的编程模型和工具可以直接应用于存算分离的系统,降低了开发难度 |
成本可控 | 目前存算一体技术可能在成本上较高,尤其是在大规模部署时 | 相对于存算一体,存算分离可能在成本上更具优势,尤其是在初期部署时 |
扩展性强 | 可以根据需要轻松扩展存储或计算资源,适应不同的应用需求 | 扩展存储或计算资源可能需要重新设计系统架构 |
编程复杂性 | 需要特殊的编程模型和工具来支持存算一体的计算 | 传统的编程模型和工具可以直接应用于存算分离的系统,降低了开发难度 |
成本 | 目前存算一体技术可能在成本上较高,尤其是在大规模部署时 | 相对于存算一体,存算分离可能在成本上更具优势,尤其是在初期部署时 |
灵活性 | 可能不如存算分离灵活,特别是在处理多样化的任务时 | 可以根据需要灵活配置存储和计算资源 |
数据搬运开销 | 计算直接在存储器内部进行,减少数据搬运开销 | 数据需要在处理器和存储器之间频繁搬运,增加延迟和功耗 |
并行性有限 | 可以在存储器内部并行处理大量数据,提高计算效率 | 并行处理能力受限于处理器和存储器之间的数据传输速率 |
能效比相对较低 | 减少了数据传输的能耗,整体能效比更高 | 数据传输的能耗较高,整体能效比相对较低 |
性能要求极高 | 适用于对性能和能效要求极高的场景,如大规模机器学习训练、深度学习推理等 | 适用于需要灵活性和扩展性的场合,如多任务处理、动态资源分配等 |
能效比关键 | 能效比是关键考虑因素,存算一体可以显著降低数据传输的能耗 | 适用于能效比要求不是特别高的场景 |
灵活性和扩展性需求 | 适用于算法固定且可以充分利用存算一体的并行性的场景 | 适用于需要灵活性和扩展性的场合,如多任务处理、动态资源分配等 |
多任务处理 | 可能不如存算分离灵活,特别是在处理多样化的任务时 | 适用于需要灵活性和扩展性的场合,如多任务处理、动态资源分配等 |
动态资源分配 | 扩展存储或计算资源可能需要重新设计系统架构 | 可以根据需要轻松扩展存储或计算资源,适应不同的应用需求 |
四、常见硬件技术栈,目的是快,但难以避免高能耗
硬件组件 | 用途 | 技术说明 |
---|---|---|
内存技术 | 提供高速缓存和临时存储 | - DRAM: 动态随机存取内存,提供快速访问时间 - HBM (高带宽内存): 增加带宽,降低延迟 |
存储技术 | 数据持久存储和大容量存储 | - SSD (固态硬盘): 提供高速读写速度和较低的访问延迟。 - NVMe (非易失性内存快闪): 提供更高的I/O吞吐量,降低延迟。 |
数据总线接口 | 实现数据传输和通信 | - PCIe (高速外设互连): 提供高带宽数据传输 - CHI协议: 用于片上环形总线连接,实现模块间数据共享和一致性 |
计算单元 | 执行不同类型的计算任务 | - 矩阵计算单元 (Cube Unit): 进行张量运算 - 向量计算单元 (Vector Unit): 进行向量操作 - 标量计算单元 (Scalar Unit): 进行标量运算 |
控制单元 | 协调和控制计算任务执行 | - 系统控制模块: 负责整体运行模式、参数配置和功耗控制 - 指令发射模块: 根据指令类型将指令发送到相应的计算单元进行计算 |
事件同步模块 | 用于调整和维护指令执行顺序 | - 事件同步模块: 通过在软件中插入同步符的方式指定各条流水线的执行时序 |
存储转换单元 | 实现数据格式转换以提高计算效率 | - 存储转换单元 (Memory Transfer Unit): 进行数据格式转换,如卷积操作中的Img2Col函数加速卷积运算 |