大规模AI计算时代的存储:挑战与优化

科技   2024-11-27 18:33   北京  

大会预告

12月5-6日,2024中国生成式AI大会(上海站)将举办,40+位嘉宾已确认参会演讲。其中,上海交大副教授、无问芯穹联合创始人兼首席科学家戴国浩,GMI Cloud 亚太区总裁King.Cui,英飞流创始人张颖峰,Jina AI联合创始人兼首席技术官王楠,中昊芯英芯片软件栈负责人朱国梁将在AI Infra峰会带来分享,欢迎报名~


01 核心问题


AI对存储的需求几乎涵盖所有方面:高性价比的容量、高可用性、高可靠性、高IOPS、高吞吐量和安全性。更具挑战的是,AI流水线的不同阶段对存储性能也提出各异且动态变化的要求。简而言之,在满足上述需求的同时,最大化GPU利用率和最小化数据移动带来的延迟是存储面临的核心挑战。
具体而言,大规模AI计算面临五大关键存储挑战:首先是PB级数据规模下的随机访问导致的I/O瓶颈,特别是在NIC超额订阅时表现明显;其次是TB级检查点操作带来的同步写入开销,这直接影响GPU利用率;第三是推理场景要求的微秒级随机读取延迟,这对存储IOPS和QoS提出了极高要求;第四是新兴的RAG/VectorDB应用对实时数据注入和ANN搜索提出了新的技术挑战;最后是目前存储架构难以同时满足训练和推理的差异化需求,特别是在多租户环境下的性能隔离方面存在明显短板。这些问题本质上源于传统存储架构与AI工作负载特征的不匹配,需要从硬件接口到软件栈进行系统性重构。

02 大模型AI计算时代存储的挑战与应对策略


数据摄取和预处理
挑战
  • 数据规模庞大:需要处理来自多种来源(文本、图像、视频等)的PB级数据。
  • 数据格式多样:原始数据通常以不同格式存在,需进行转换和标准化处理,以便用于训练。
  • 数据稀疏性:数据常具有稀疏性,大部分数据为零值,导致存储和计算开销大。
  • 预处理复杂:数据预处理包括清洗、特征提取、增强等多个步骤,耗费大量计算资源和时间。
  • 资源瓶颈:数据摄取和预处理过程中,存储、网络、计算资源可能成为瓶颈,影响GPU等计算单元的利用率。


应对策略
  • 优化数据流水线:优化数据存储与检索机制,减少数据移动和复制,提高数据处理效率。
  • 计算型存储:将部分数据预处理任务卸载到存储设备上(如数据过滤和转换),减少计算节点的负担,提高处理效率。
  • 数据去重与压缩:使用去重技术减少冗余数据,减少存储需求,并通过数据压缩降低传输与存储成本。


AI 训练
挑战
  • 模型规模巨大:AI模型的参数量急剧增加,如LLaMA 3 405B模型拥有4050亿个参数,加载和存储这些模型是巨大的挑战。
  • 数据量庞大:1TB参数的AI模型,通常需要约800TB的训练数据。这对存储系统提出了高吞吐量和高IOPS的要求。
  • 高内存需求:模型参数、激活值和训练数据常需要存储在内存中。对于LLaMA 3 45B模型,单纯存储模型和激活值可能需要数十TB的内存。
  • GPU利用率低:由于数据加载、同步等问题,GPU常处于空闲状态,无法充分发挥计算能力。比如,使用16K个GPU训练LLaMA 3 45B模型时,模型FLOPs的利用率仅为41%。
  • 网络瓶颈:GPU与存储服务器之间需要频繁的数据交换,增加了网络负担,可能导致训练效率下降。
应对策略
  • 优化数据加载:采用并行I/O、预取技术、零拷贝等策略,减少数据加载时间,提高GPU利用率。
  • 近存储计算:在存储层进行计算(如数据格式转换、过滤等),减少数据移动并降低网络负载。
  • 高性能网络:使用低延迟、高带宽的网络技术,如RDMA、NVMe-oF、100Gb以太网等,缓解网络瓶颈,提高数据传输效率。
  • 内存优化:采用内存池、内存复用等技术,优化内存使用,减少内存占用,提高内存带宽。


检查点机制
挑战
  • 高存储开销:训练过程中需要频繁保存模型参数、优化器状态、梯度等信息,随着模型和数据规模的增大,检查点存储需求呈指数级增长。例如,LLaMA 3的每个GPU检查点大小在1MB到4GB之间。
  • 高频率:为了提高容错性,必须频繁保存检查点,特别是在大规模集群环境中,故障间隔时间(MTBF)较短,需要频繁进行检查点操作,增加存储负担。
  • 同步操作:传统的检查点机制是同步的,所有GPU必须等待最慢的GPU完成检查点操作才能继续训练,降低训练效率。
  • 网络拥塞:检查点保存操作产生的网络流量会导致网络瓶颈,影响训练性能。


应对策略
  • 异步检查点:采用异步检查点机制,使GPU能够在其他GPU保存检查点时继续训练,提高GPU利用率和训练效率。
  • 优化检查点数据存储:使用数据压缩、去重等技术减少检查点数据大小,降低存储需求。
  • 分布式检查点:将检查点数据分布到多个存储节点上,减少单点故障风险,提高存储系统的吞吐能力。
  • 优化网络传输:采用高效的网络传输协议(如RDMA、NVMe-oF等)减少网络延迟,提高检查点数据的传输效率。


AI 推理
挑战
  • 低延迟要求:AI推理对响应时间要求极高,如语音识别、图像分类等应用要求系统在毫秒级响应,因此存储系统必须提供低延迟的数据访问。
  • 高并发需求:AI推理通常需要处理大量并发请求,尤其在在线服务、推荐系统等应用中,这要求存储系统具有高吞吐量和可扩展性。
  • 模型更新:AI模型需要频繁更新,存储系统必须支持快速部署新模型,保证服务的高可用性和无缝切换。


应对策略
  • 高性能存储:采用NVMe SSD、NVMe-oF等高速存储系统,提供低延迟、高吞吐量的存储服务。
  • 分布式存储:采用分布式存储架构,将模型和数据分布在多个存储节点上,提高可扩展性和容错性。
  • 缓存机制:通过内存缓存常用数据和模型,减少存储访问延迟,提高推理响应速度。


新兴AI应用 (RAG & VectorDB)
挑战
  • 数据规模:RAG和VectorDB需要处理海量的多模态数据(文本、图像、视频等),对存储系统的容量和性能提出严峻挑战。
  • 实时处理:这些系统要求进行实时的数据摄取、索引和检索,这要求存储系统具备高吞吐量和低延迟。
  • 高维数据:VectorDB处理高维向量数据,增加了存储和检索的难度。


应对策略
  • 高性能存储:利用NVMe SSD、NVMe-oF等高速存储系统满足大规模数据存储和快速访问需求。
  • 近数据处理:将部分计算任务卸载到存储设备上,如在存储层进行向量相似性搜索,减少数据传输并提高处理效率。
  • 专用硬件:使用GPU、FPGA等专用硬件加速RAG和VectorDB的计算任务,提高吞吐量。
  • 分布式架构:采用分布式存储架构,增强系统的扩展性和容错能力。


总体策略
  • 统一存储平台:构建统一的存储平台,满足AI流水线不同阶段的需求,支持多种存储协议和接口(如NVMe-oF、S3等),确保与计算和网络设备的兼容性。
  • 端到端GPU优化:对基础设施进行GPU端到端优化,涵盖计算、存储、网络等方面,确保GPU的高效利用。优化GPU与存储系统之间的数据传输路径,如RDMA、NVMe-oF等,最大化GPU利用率。
  • 领域特定设计:根据具体AI应用的特点,设计并优化存储系统。例如,针对特定计算任务使用专用硬件,采用分层存储架构,以满足不同数据类型的存储需求。
  • 降低数据熵:减少不必要的数据移动和复制,优化存储和访问策略,降低“数据熵税”。通过去重、压缩等技术,减少数据传输和存储开销。


参考资料:
  • 1. Gartner (February 14, 2024): Top Storage Recommendations to Support Generative AI. Available at: (https://www.gartner.com/en/documents/5196363)  

  • 2. Engineering at Meta (March 12, 2024): Building Meta's GenAI Infrastructure. Available at: (https://engineering.fb.com/2024/03/12/data-center-engineering/building-metas-genai-infrastructure/)  

  • 3. Zhao, Mark, et al. (2022): Understanding Data Storage and Ingestion for Large-Scale Deep Recommendation Model Training. Proceedings of the 49th Annual International Symposium on Computer Architecture. Available at: (https://arxiv.org/abs/2108.09373)  

  • 4. Zhao, Mark, et al. (2023): RecD: Deduplication for End-to-End Deep Learning Recommendation Model Training Infrastructure. Proceedings of Machine Learning and Systems 5: 754–767. Available at: (https://arxiv.org/abs/2211.05239)  

  • 5. Dubey, Abhimanyu, et al. (2024): The Llama 3 Herd of Models. arXiv preprint. Available at: (https://arxiv.org/abs/2407.21783)  

  • 6. Qian, Kun, et al. (2024): Alibaba HPN: A Data Center Network for Large Language Model Training. Proceedings of the ACM SIGCOMM 2024 Conference. Available at: (https://ennanzhai.github.io/pub/sigcomm24-hpn.pdf)  
==========
今天我们将探讨大规模计算基础设施中的存储挑战。正如我们所知,存储已不仅仅是存储本身的问题。存储问题同时也是计算问题。这正是我今天演讲的核心。
我们首先讨论问题本质,然后分析AI中的数据流向,包括数据存储位置、计算挑战,以及贯穿AI各个阶段的网络挑战,这些阶段包括数据摄取(Data Ingestion)、预处理(Preprocessing)、训练(Training)和推理(Inference)。我将重点关注训练环节。
AI带来的挑战不仅限于计算、网络和存储,还涉及如何处理复杂的图结构。
数据增长已达到空前规模。系统需要同时处理来自不同来源和数据中心的PB级文本、音频、视频和传感器数据,这些数据以极高的速度被摄取,需要高精度计算才能提取其中的价值。AI正朝着多模态(Multi-modal)方向发展,同时处理多种形式的数据以创造商业价值。
数据变得更加稀疏(Sparse),这增加了计算难度。仅存储模型状态(Model States)和激活值(Activations)就需要庞大的内存空间,更不用说数据处理本身。例如,LLaMA 3 45B模型仅用于存储这些状态和激活值就需要数十TB的内存。随着模型规模和数据量的持续增长,基于FP16精度的训练将面临更大挑战。
关键在于,模型和数据量已超出单一系统的容纳能力。尽管分布式技术不断进步,内存容量始终无法满足数据需求。这正是存储挑战的根本所在。
当内存受限时,构建更大规模系统会面临什么问题?答案是数据移动(Data Movement)。
为了将所有数据(甚至仅仅是模型和激活值)装入内存,必须构建更大规模的分布式系统。这类系统不仅需要向上扩展(Scale-up),还要向外扩展(Scale-out)。以密集型GPU AI服务器为例,GPU、NIC和CPU通过计算Fabric相连,这种结构会产生大量东西向流量。
业界已将重点放在优化服务器内部和分布式系统间的数据移动。随着并行化复杂度提升,如张量并行(Tensor Parallelism)和数据并行(Data Parallelism),高效的数据移动和计算变得愈发重要。量化技术(Quantization)和集合操作(Collective Operations)已成为降低存储占用、提升效率的关键手段。
一个经常被忽视的方面是数据的存储位置:存储服务器。无论是存储在SSD还是HDD上的远程数据,都必须高效地传输到GPU,并达到所需速度。实时重建经过纠删码或副本的数据并传输到GPU是一个技术难题。GPU的空闲会降低业务产出并增加成本。
关键结论是:虽然存储在AI讨论中至关重要,但往往被忽视。这种情况需要改变。
让我们从更高的视角来审视AI中数据的完整生命周期。我将AI数据流水线分为三个阶段:数据摄取、价值创造和业务成果。
1. 数据摄取(Data Ingestion)
   首要挑战是从各种来源(数据中心、云端等)摄取PB级规模的海量数据。数据存储只是第一步,还需要通过ETL流水线将数据转换为适合GPU训练的张量(Tensor)格式。数据的索引、标注和过滤需要大量预处理工作。计算型存储(Computational Storage)等技术在这一过程中发挥重要作用。
2. 训练(Training)
   训练过程中,需要将拥有万亿参数的模型和数据批次从存储加载到GPU。这涉及高效的权重和参数更新,以及AI检查点(Checkpoint)管理。训练的迭代特性要求具备能处理PB级数据的强大存储基础设施。
3. 推理与归档(Inference and Archival)
   训练完成后,推理阶段使用训练好的模型处理实时查询。新兴的AI应用,如向量数据库(VectorDB)和检索增强生成(RAG),需要处理海量数据语料库,进行实时处理、索引和查询。最后,将输出结果、训练模型及相关数据以PB级规模归档,这对未来的数据摄取流水线至关重要。
基础设施的主要目标是最大化GPU利用率,同时最小化存储引起的延迟。这是我们必须解决的核心问题。
让我们深入探讨AI流水线的第一个阶段:数据摄取和预处理。
为什么这个阶段如此重要?如何才能有效完成这项工作?
这张图显示了某超大规模云计算平台的分析结果,展示了在超大规模环境中三种最常见AI工作负载的电力消耗情况。令人惊讶的是,数据摄取和预处理阶段消耗的电力竟超过训练阶段。这个阶段包括从各种来源获取数据,并通过多个ETL流水线将数据结构化为训练所需格式。尽管人们普遍关注训练过程的能耗,但数据摄取和预处理的能耗常被忽视。让我们分析这一阶段为何构成如此大的挑战。
首先,数据通过多个流式流水线进入系统,如日志聚合流水线或Kafka流,且格式各异。这些数据可能依赖于RocksDB或其他键值存储系统,导致数据携带大量元数据(Metadata)且通常呈现稀疏性。稀疏数据不仅占用更多存储空间,还需要更长的计算时间,且会占用更多内存,给网络带来压力,容易造成拥塞。
从存储角度看,这一阶段处理的是PB级数据,涉及多阶段流水线,且具有高并发写入和深度队列特征。此外,基于用户需求,确保数据加密和安全性至关重要。预处理进一步增加了挑战,它需要将原始数据转换为训练所需的张量格式,要求低延迟和高吞吐量。这个过程需要处理多种数据格式和转换函数,以支持跨数据中心的各类训练任务。
这种工作负载以顺序写入为主,需要复杂的压缩和解压缩来进行格式转换。数据高度依赖元数据,需要大量索引操作,这给RocksDB等键值存储系统带来了巨大压力。
在实践中这意味着什么?原始数据需要转换为训练样本,而这些数据通常地理分布广泛且本质上比较稀疏。
简言之,这些操作具有较高的压缩比,意味着大量数据在进入计算阶段前就被过滤掉了。这个过滤过程需要通过网络将大量数据从存储服务器传输到计算节点,但最终大部分数据都未被使用——这构成了严重的效率瓶颈。
斯坦福大学、Meta公司和某超大规模云计算平台的研究揭示了一个重要发现:即使是在高密度GPU集群中,由于存储服务器无法及时供给数据,预处理工作负载也经常导致GPU处于空闲状态。此外,NIC超额订阅和CPU处理能力不足也会造成网络瓶颈。网卡经常以线速运行,进一步加剧了这个问题。这促使我们开发了专门面向AI工作负载需求的独立数据摄取和预处理流水线。
业界必须优先构建高效的数据流水线,优化存储和检索机制,解决高效过滤等关键问题,以降低资源争用并提升系统吞吐量。
AI训练(AI Training)。训练是一个极其计算密集且存储密集型的工作负载。
这其实只是一个简化的视图,是对训练过程中GPU端和存储端的简化描述。整个系统分为两大部分:一是配备GPU、CPU、HBM、DRAM等的高密度AI GPU服务器,通过后端网络(Backend fabric)互连;二是用于存储各类数据的存储服务器。
这里我想补充一些背景信息。图中显示的是单个GPU,但实际上是通过计算网络互连的GPU集群,以及通过专用网络连接的存储集群,两个集群之间也有互连。我们将GPU到存储的流量称为"南北向"流量,而GPU服务器之间的流量称为"东西向"流量。
在训练过程中究竟发生了什么?首先,需要将所有模型加载到内存中,采用不同的并行化策略,如张量并行(Tensor Parallelism)、3D和4D并行等。在这种架构下,模型参数被分布到不同的GPU集群中。加载模型后,就开始执行图表右侧显示的1至10个步骤。首先,CPU从存储服务器将训练模型和样本加载到GPU服务器。目前只考虑模型本身,其规模约为TB级。随后,模型被加载到GPU的HBM中。
接着需要加载数据。数据规模可能从TB级扩展到PB级。数据以批次方式加载,批次大小取决于GPU的处理能力和CPU到GPU的数据传输速率。数据需要从存储服务器先加载到CPU,再传输到GPU中,GPU随后执行前向传播(Forward Propagation)操作。这包括通过复杂的神经网络计算损失值或误差。
计算完成后进入反向传播(Backward Propagation)阶段,需要根据学习结果更新参数。现在到了关键环节:完成反向传播后,由于模型是分布式的,必须在所有GPU间进行通信,这个过程称为"GPU Rank集合"(All-Reduce)。然后使用优化器(如Adam优化器)存储更新后的参数和优化器状态。最后,所有这些数据都需要保存回存储服务器,这个过程称为"检查点"(Checkpointing)。主要是出于可靠性考虑,这些数据必须存储在可靠的存储设备中,通常规模在TB级别。
为什么这会成为问题?以LLaMA 3 45B模型为例,使用16K个GPU进行训练,在执行步骤1到10及其多次迭代过程中,模型利用率仅为41%。换言之,约59%的时间GPU实际上处于非计算状态。这是业界面临的重大挑战。分析表明,整个过程都具有极高的内存占用,无论是检查点、训练还是模型状态维护。由于涉及GPU之间以及GPU与存储服务器之间的通信,NIC实际上处于严重超额订阅状态,且以线速运行。因此,NIC技术必须能够满足这种流量需求,包括并行计算产生的东西向流量和数据加载与存储产生的南北向流量。
让我们深入探讨存储面临的两个主要挑战:模型与数据加载,以及检查点问题。我将重点讨论检查点问题。
训练过程中的第一个存储挑战是模型和数据加载。图表右侧展示了前面提到的1到10个步骤。这只是一次迭代,但由于需要读取完整的训练数据集,实际上会有多次迭代。一次迭代包含多个训练周期(Epoch),需要多个周期的训练才能根据目标函数达到理想的精度。
图中使用两种颜色编码:蓝色表示加载模型和数据所需时间,红色表示执行训练计算(包括检查点等)所需时间。这是一个高度迭代的工作负载,其中模型加载是重要组成部分。深入分析可知,模型加载虽然规模达到TB级,但每个训练周期只需加载一次。
主要挑战在于如何将训练样本加载到训练节点。这是一个随机访问过程,本质上是随机I/O问题。粗略估算,对于一个具有1万亿参数的模型,至少需要800TB的数据才能进行高质量训练。这要求极高的读取吞吐量,同时还面临大量小文件读取的问题。众所周知,处理大量小文件会带来特殊挑战。从Lustre等文件系统的经验来看,这不仅是I/O问题,更是元数据(Metadata)处理问题。这种工作负载对元数据访问依赖度极高。
数据准备是下一个关键环节。由于数据量大且要求传输速度快,数据加载会带来巨大的数据中心开销,主机资源和网络都处于严重超额订阅状态。然而,当通过深度学习推荐模型(DLRM)数据集进行采样时,发现存在较高的数据重复率。那么存储行业是否可以通过先进的去重技术来减少数据中心开销,特别是降低从存储服务器向高密度GPU集群传输数据的I/O开销?
预处理环节涉及多种函数操作,主要是过滤和解压缩。作为存储领域的专家,我们比其他人更了解压缩、解压缩和过滤的重要性。为什么这会构成挑战?因为这类工作负载对延迟极其敏感。
那么,我们能否通过近存储计算(Near-Storage Computing)来减少GPU在模型和数据加载过程中的停顿时间?这是我们面临的重要挑战之一。
下一个挑战是AI训练中的检查点问题。最近几天业界一直在讨论检查点,因此我认为有必要深入探讨这个问题。接下来我将用约10分钟时间详细解释检查点机制及其带来的挑战。
首先,什么是检查点?这类训练任务通常不是几小时内就能完成的,而是需要运行数周或数月。早期可能需要运行数年,现在一般缩短到数周或数月。检查点是一种在高性能计算(HPC)领域使用已久的机制。它通过保存内存快照或所有关键信息,使系统在发生故障时能够从上次检查点恢复,而无需重新执行已完成的计算。让我们看一个检查点示例。
图A展示了没有检查点机制时的训练步骤。如果发生故障,就需要恢复丢失的进度并从头开始。这种代价极其高昂——我将通过具体数字说明其成本,不仅包括金钱成本,还包括时间、电力以及资源分配/释放等方面的开销。检查点机制定期将所有关键信息保存到可靠存储中,这样在发生故障时可以从最近的检查点恢复。这就是其基本概念。
然而,即使按照超大规模客户的频繁程度——每小时执行一次检查点,成本依然很高。例如,对于一个相对较小的3K GPU集群,每小时一次的检查点可能会让客户花费约3万美元。设想一下,在训练一个万亿参数模型时,如果部署了30万到40万个GPU,即使是定期执行检查点,损失也会达到数百万美元。
随着集群规模扩大,平均故障间隔时间(MTBF)越来越短,我们必须假设故障必然发生。这意味着检查点频率必须提高,其存储开销将增长四倍。这对整个行业来说都是巨大的挑战。
检查点不仅仅是可靠性问题。它还用于硬件更新。所有GPU都运行在虚拟机(VM)上,当需要重新平衡资源、进行调优或因错误终止进程时,都会使用检查点。这有助于确保训练模型达到尽可能理想的状态。
现在,让我们深入探讨为什么这是一个存储问题。我们了解数据方面的问题,但为什么它也是计算问题?事实上,这不仅仅是计算问题,但确实会对计算产生连锁反应。
检查点(Checkpoint)的本质是一个简单的序列化过程。它通过创建适合GPU或张量(Tensor)的数据结构,进行量化处理,并增强元数据以实现高效重建。
在持久化阶段,这些序列化的张量文件会被写入远程持久性存储,以实现可扩展性和高可用性。具体实现取决于数据中心和训练任务中使用的持久性存储管理(Persistent Storage Management, PSM)类型。这本质上是向存储系统写入一个或多个文件的操作序列。
从整体检查点存储容量来看,目前在0.5或405B规模的模型中,检查点大小约为6-7TB。随着参数量、优化器状态和元数据的增加,这一容量将增长至原来的四倍。
检查点对于确保数据高效加载至指定GPU至关重要。在现代数据中心的分布式环境中,必须根据模型的排名将数据精确加载到对应的GPU上。这些信息都需要嵌入到检查点数据中。因此,随着频率和复杂度的提升,检查点在计算、网络和存储方面的开销将呈指数级增长,持久化和恢复过程也将变得更加复杂。
让我们深入了解检查点的内部机制。训练过程是通过多个训练周期(epoch)完成的。每个训练周期包含多个迭代。图中绿色表示GPU处于活动状态,红色表示GPU正在执行检查点操作。
分析一个迭代的内部流程:如步骤1到10所示,包括前向传播(Forward Propagation)、反向传播(Backward Propagation)和优化(Optimization)(步骤5到8)。每一层都需要进行检查点操作,即写入文件。关键问题在于这是一个同步操作。尽管业界已提出异步检查点方案,但仍有许多技术难题待解决。同步检查点的局限在于,GPU 2必须等待GPU 1完成检查点操作才能开始下一轮迭代,因为训练无法在同步完成前继续。
简而言之,系统的效率受限于最慢的训练节点到存储路径。这种同步数据处理方式效率低下,造成了数据密集型资源的浪费。这不仅延长了训练时间,还增加了数据中心的资源负担。当训练暂停时,GPU集群中的各个处理单元都需要等待数据持久化完成,这种等待时间亟需降低。这是整个行业面临的重要挑战。
从基础设施影响角度来看,首先是总存储容量问题。如前文图表所示,检查点需要大量存储空间,且每次迭代都会产生多个文件版本。
随着模型规模扩大,对单个GPU的影响也在增加。以超大规模客户为例,每个GPU约需30GB存储空间。考虑一个8-GPU的配置,总计需要240GB。这会导致服务器端的NIC严重超载。在Llama 3训练中,根据不同范式,数据大小从1MB到4GB不等。随着时间推移,由于不同类型持久性存储管理系统之间的复杂交互,持久化和恢复过程变得愈发困难。即使将模型分布到多个GPU上,存储开销也不一定减少,因为需要为存储服务器和网络存储更多元数据。
实际上,系统需要并发处理数千个检查点,这些检查点来自多个同时运行的模型。这给NIC和DPU带来巨大压力,导致设备严重超载。由于存储架构饱和,可能会因数据包丢失而违反服务水平协议(SLA)。即使是Llama 3 45B的训练也面临这个问题。因此,数据和控制路径的优化变得至关重要。
为应对这些挑战,我们需要讨论如何使用高效的速率限制调度器来降低失败概率,以及实施有效的拥塞控制方法。存储生态系统的目标,无论是计算、网络还是存储子系统,都是最大化GPU带宽利用率,并最小化检查点的加载和存储时间。
现在讨论价值部分。如前所述的5V框架中,这里着重探讨新兴AI推理的价值和挑战。推理对延迟极其敏感,从存储角度看,需要可靠且快速地部署模型,并将模型加载时间降至最低。
推理工作负载的特点是小规模读取I/O操作,且由于需要同时处理成千上万的查询,对性能要求较高。这要求存储系统具备高度可扩展性、高可用性和高性能。核心目标是提供高性能、低延迟且具备高读取带宽的存储系统,确保所有推理节点的GPU都能在数据饱和状态下运行。
这个领域有一个关键应用场景:检索增强生成(Retrieval-Augmented Generation, RAG)和向量数据库(VectorDB)。大型语言模型(LLM)在特定时间点训练完成后,信息可能会随时间推移而过时。RAG技术通过增强外部信息和用户查询来检索最相关数据,这种方法被称为"top_k检索"。该技术有助于生成最相关且准确的回答。
这一过程的存储需求相当大,主要有两个原因:其一,系统正向多模态方向发展,需要处理图像、文本和视频;其二,通过Kafka流水线进行持续的数据注入,且需要实时建立大量索引。数据量已超出内存容量,也无法完全适配GPU的内存层次结构。
关键在于数据摄取过程。这是一个高度顺序的工作负载,严重依赖NIC。需要将存储在后端的模型嵌入并移动到前端计算节点。虽然这是一次性操作,但要求高读取带宽和低延迟以实现快速部署。
该过程需要持续索引以创建嵌入和向量。在使用向量数据库时的主要挑战是,如何为已到达的查询找到最相关的数据块或文档?这需要针对特定查询进行定制,并在向量数据库上使用UAlink。这些数据库执行持续的数据摄取、索引和上下文感知检索,即用于向量相似性匹配的搜索和过滤操作。
确定哪些数据块最适合给定查询的过程称为top-k检索,随后这些数据被输入大型语言模型以生成准确答案。简言之,需要在存储服务器和密集型GPU集群之间传输大量文件。同时需要执行向量相似性匹配,这是一种协同搜索算法,GPU和CPU在嵌入空间中搜索最适当的上下文。
这要求非常高的存储到CPU带宽、CPU到GPU带宽和GPU到GPU带宽,用于数据复制和降维操作。为实现更快的实时响应,需要提升主机存储带宽。
我们已经讨论了这些应用的不同阶段。运行单个生成式AI流水线在经济上是否可行?显然不可行。在云环境或数据科学领域,必然会有多个用户和多个AI流水线同时运行。
从端到端存储角度看,将会出现混合I/O特性。因此,需要为客户提供性能隔离(Performance Isolation)。性能隔离易说难行,这是业界公认的难题。如何为每个客户提供服务?作为一个行业,我们如何共同解决拥塞问题,特别是基于优先级的拥塞问题?如何在生成式AI流水线的每个阶段实现这一目标?同时还需要处理大量文件操作。
为最大化GPU利用率,下一代流水线需要提供性能隔离和SLA保证。这将导致显著的I/O混合效应(IO Blender)。
从整个演示可以看出,系统需求是全方位的。右侧列出的关键需求包括:可用性和每美元存储容量的优化;支持文件、对象和块存储的直接寻址能力;低延迟、高吞吐量和高IOPS性能指标;同时还需要解决散热问题、降低碳足迹和减少主机资源消耗。
这些计算密集型集群需要处理大量数据,且要求数据传输速度尽可能快。考虑到故障随时可能发生,我们需要一个统一的存储平台,将生成式AI流水线的各个方面整合其中,满足不同阶段的差异化需求。
我们需要重新构思和设计面向AI的端到端GPU优化基础设施。这里的GPU优化不仅包括GPU本身,还包括DPU、NIC和CPU的优化,目标是提高所有计算环节的效率。业界对基于UAlink的GPU内部和GPU之间的交互进行了广泛讨论和研究。如何优化GPU间通信?
超以太网(Ultra Ethernet)是否能提供高效的传输机制?如何优化GPU与存储系统间的交互?如何在大规模环境下实现类似RDMA的服务或微服务?在存储方面,如何让这些加速器接口对各类存储系统实现透明化?
同时,还需要考虑领域特定的可编程硬件/软件设计需求。我提出了"随时随地计算"(Compute Anywhere Anytime)的理念。如何实现CPU卸载?如何将CPU卸载与近存储计算(Near-Storage Computing)相结合,充分利用存储服务器中的DPU和CPU进行网络内计算?
最后,如何设计合适的存储拓扑结构?是选择汇聚式还是非汇聚式架构?我们今天讨论了存储前端处理,但占总流量7%或更多的背景流量(如数据重建和再平衡)该如何处理?如何平衡前端和背景处理?如何定义适当的传输方式?NVMe Fabric是否是最佳方案?我们需要重新设计什么样的网络架构?
我们需要降低数据中心的熵税(Entropy Tax),最大化计算、网络和存储资源的利用率。这个问题不仅关系到当前,更将随着时间推移而变得更加突出。
尽管存储在AI领域扮演着关键角色,但往往被忽视且较少被讨论。作为一个行业,我们需要改变这种状况,跳出传统思维模式,共同探索解决方案。
----------

参考资料:

Mishra, P. (2024, November 18). Storage in the era of large-scale AI computing [Video]. YouTube. https://www.youtube.com/watch?v=ucDsyFKOdYI

—END—


点击下方名片


即刻关注我们


算力猩
隶属于智猩猩,关注计算芯片创新,解读中国算力突破。
 最新文章