如何应对AI数据访问挑战? * 本解决方案版权归属于北京开元维度科技有限公司,未经授权,不得进行任何形式转载和分发。 导言 人工智能(AI)和机器学习(ML)已经成为企业运营和进行数据相关决策的关键。目前,企业正在逐步将AI和ML任务从试点扩展到生产级部署,因此需要能够满足任务快速增长的可扩展架构。然而,许多企业在扩展AI基础设施时忽略了存储和计算之间的鸿沟, 导致出现性能瓶颈、计算资源利用率低下以及企业内部无法充分利用数据的情况。 本白皮书重点介绍了企业要最大程度实现业务收益, 在现有基础设施上扩展AI负载时应考虑的重要因素。同时还讨论了AI 在数据访问方面的挑战,以及像NAS这样的常用解决方案存在的局限性,最后,介绍了Alluxio作为关键的数据访问层如何优化架构并加速工作流。 目录 第一章:背景 1.1 企业AI:从试点到生产1.2 企业AI的早期架构1.3 为何全面而严谨的决策对于生产级AI至关重要?334 第二章:数据访问中的挑战 2.1 数据访问是AI/ML的关键要素2.2 预生产架构中的数据访问挑战2.3 现有解决方案2.4 现有解决方案的问题5566 第三章: Alluxio 提供的解决方案 3.1 部署Alluxio: 高性能数据访问3.2 Alluxio 解决的问题3.3 Alluxio 在架构中的位置3.4 Alluxio 部署在AWS上 - 参考架构和基准测试结果88910 第四章:总结 12 第一章:背景 1.1 企业AI:从试点到生产 人工智能(AI)为各行各业带来了巨大的价值,但企业往往只能做小规模试点,很难将AI解决方案进行规模化应用。随着生成式AI和类似ChatGPT的机器学习模型引发越来越多的关注,企业对AI项目的投资和重视程度也在增加。 Gartner最新调查显示,企业对于采用生成式AI的热情日益高涨。45%的企业报告称自ChatGPT发布以来加大了对AI的投资。此外,68%的高管认为生成式模型的益处大于风险。尽管如此,目前仅有19%的企业正在试点或部署生成式AI。 由此可见,对于AI的热情与实际部署情况之间存在着一定的差距,这也凸显了当前将AI解决方案从试点推向生产环境面临的挑战。Gartner研究显示,数据可访问性以及数据量/复杂性是企业在采用AI方案时面临的普遍难题。要将AI应用从试点转向生产,企业需要优化架构,使其适用于机器学习任务,能解决数据访问方面的挑战。 1.2 企业AI的早期架构 人工智能(AI)为各行各业带来了巨大的价值,但企业往往只能做小规模试点,很难将AI解决方案进行规模化应用。随着生成式AI和类似ChatGPT的机器学习模型引发越来越多的关注,企业对AI项目的投资和重视程度也在增加。 随着数据和模型的增长,这类早期AI架构通常会变得效率低下。企业在云上训练模型,随着项目扩容,预计其数据和云使用量在12个月内也会大幅增加。许多企业最初的数据量都能匹配当前内存大小,但他们也清楚地知道要为处理更大的负载做好准备。 第一章:背景 企业可能选择使用现有技术栈或绿场部署。本文将重点介绍如何使用现有技术栈或购买一些额外的硬件来设计更具扩展性、敏捷性和高性能的技术栈。 1.3 为何全面而严谨的决策对于生产级AI至关重要? “you can pay me now or pay me later(现在不花钱,日后花大钱)”这句话同样适用于构建生产级AI基础设施。企业在急切推动机器学习试点项目上线的过程中,往往会采用能够满足当前工作负载需求的解决方案,但却忽略了长期的可扩展性、成本效率和性能。虽然在早期项目上投资灵活、可扩展的系统似乎没有必要,但随着AI部署的增长,这些前瞻性举措可以使企业免受昂贵、低效的基础设施之苦。 许多企业都是经受痛苦的教训后才意识到这一点。其基础设施的最初搭建和调优都只针对较小的工作负载,但在数据和用户规模扩大后明显受限,无法满足生产级AI所需的吞吐量、延迟和并发需求。存储瓶颈导致工作流缓慢,阻碍用户进行有效的模型开发。对匆忙搭建的基础设施进行扩展或改造不及时会让企业付出昂贵的代价。 如果在一开始就进行全面而严谨的架构设计,决策者可以选择可智能扩展并能适应企业AI不断变化的需求的最佳方案。 第二章:数据访问中的挑战 2.1 数据访问是AI/ML的关键要素 随着 AI/ML 架构的演进,模型训练数据集的规模在继续大幅增长,GPU的算力和规模也在迅速提高。除了计算、存储和网络之外,我们认为数据访问是搭建前瞻型AI平台的另一个关键要素。 数据访问是指数据服务、备用存储(NFS、NAS)和高性能缓存(例如 Alluxio)等有助于计算引擎获取数据用于模型训练和部署的技术。 数据访问的重点在于吞吐量和数据加载效率,这对于GPU资源稀缺的AI/ML架构愈发重要 -优化数据加载可以大大降低 GPU空闲等待时间并提高 GPU利用率。因此,高性能数据访问应该成为架构部署的首要目标。 2.2 预生产架构中的数据访问挑战 随着企业在早期AI架构上扩展模型训练任务,就出现了以下一些常见的数据访问挑战: 模型训练效率低于预期:由于数据访问瓶颈,训练时间比根据算力资源预估的时间要长。低吞吐数据流无法为 GPU 提供充足的数据。数据同步相关的瓶颈:手动将数据从存储拷贝或同步到本地 GPU 服务器时,会在构建要准备的数据队列时产生延迟。 第二章:数据访问中的挑战 并发和元数据问题:当大型作业并行启动时,共享存储会出现争用。后端存储的元数据操作缓慢时会增加延迟。性能缓慢或GPU 利用率低:高性能 GPU 基础设施投资巨大,一旦数据访问低效,就会导致GPU资源闲置和利用不足。 除此以外,数据团队需管理的一系列其他问题也会加剧上述挑战。这些问题包括存储的I/O速度慢,无法满足高性能 GPU 集群的需求。当团队等待数据被输送到 GPU 服务器时,依靠手动进行数据拷贝和同步会增加延迟。混合基础设施或多云环境中的多个数据孤岛带来的架构复杂性也加剧了数据访问这一难题。 这些问题最终导致架构的端到端效率达不到预期。 2.3 现有解决方案 与数据访问相关的挑战通常有两种常见的解决方案: 购买更高速的存储:许多企业尝试通过部署更快的存储选项来解决数据访问速度慢的问题。云厂商提供高性能存储,而专业硬件厂商则售卖 HPC 存储,借此达到提高性能的目的。 在对象存储上添加NAS/NFS:添加集中式 NAS 或 NFS 作为 S3、MinIO 或 Ceph 等对象存储的备用存储是一种常见做法,可帮助团队将数据整合到共享文件系统中,简化用户和工作负载之间的协作和共享。此外,还可利用成熟的NAS厂商提供的数据一致性、可用性、可备份和可扩展性等相关数据管理功能。 但是,以上这两种常见的解决方案可能无法真正解决企业的问题。 2.4 现有解决方案的问题 虽然更快的存储和集中式NFS/NAS能够逐步实现性能提升,但也存在诸多弊端。 第二章:数据访问中的挑战 1.更快的存储意味着数据迁移,即便迁移对用户隐藏 要利用专用存储提供的高性能,数据必须从现有存储迁移到新的高性能存储层。这会导致数据在后台迁移。迁移大量数据集可能会导致传输时间延长以及迁移期间数据损坏或丢失等数据可靠性问题。当团队等待数据同步完成的这段时间内,暂停操作不仅会中断服务,也会减慢项目进度。 2. NFS/NAS: 维护及瓶颈 作为附加的存储层,NFS/NAS 的维护、稳定性和可扩展性方面的挑战仍然存在。将数据从NFS/NAS手动拷贝到本地 GPU 服务器会增加延迟以及重复备份而引起的资源浪费。并行作业引发的读取需求激增可能会使 NFS/NAS 服务器和相互连接的服务集群过载。此外,远端NFS/NAS与GPU 集群的数据同步问题依然存在。 3.如果因业务原因需要更换供应商怎么办? 由于成本优化或合同原因,企业可能会更换供应商。多云环境的灵活性要求能够轻松移植大量数据集,且不被供应商锁定。然而,移动 PB 级数据存储可能会导致模型开发出现严重停机和中断。 简而言之,现有解决方案虽然在短期内有所帮助,但无法提供可扩展且优化的数据访问架构,满足AI/ML指数级增长的数据需求。 第三章:Alluxio 提供的解决方案 第三章:Alluxio 提供的解决方案 3.1 部署Alluxio: 高性能数据访问 Alluxio 可以部署在计算和数据源之间。 Alluxio 提供数据抽象和分布式缓存,提高AI/ML 架构的性能和可扩展性。 3.2 Alluxio解决的问题 企业早期 AI 架构随着数据量增加、模型复杂性增加以及GPU 集群扩容,产生了在可扩展性、性能和数据管理方面的挑战,由此而产生的诸多问题,Alluxio都可以轻松应对: 1.增加容量 Alluxio扩展可超越单个节点限制,能存放集群内存或本地 SSD无法容纳的较大训练数据集。它将不同的存储系统连接起来,提供统一的数据访问层,来挂载PB 级数据湖。 Alluxio 智能地将常用的文件和元数据缓存在靠近计算的内存和 SSD 层中,无需拷贝整个数据集。 第三章:Alluxio 提供的解决方案 2.减少数据管理 Alluxio 通过自动的分布式缓存简化了 GPU 集群之间的数据移动和存放。数据团队无需手动将数据复制或同步到本地暂存文件。 Alluxio 集群可以自动把热文件或者对象抓取到离计算节点近的位置,而不用通过复杂的工作流操作。即使在每个节点有5000万甚至更多对象的情况下,Alluxio也可简化工作流。 3.提升性能 Alluxio 专为加速工作负载而构建,可消除传统存储中限制GPU 吞吐量的 I/O 瓶颈。分布式缓存将数据的访问速度提高了几个数量级。 相较通过网络访问远端存储,Alluxio提供内存和SSD级别的本地数据访问,从而提高 GPU 利用率。 总之,Alluxio 提供了一个高性能且可扩展的数据访问层,可在AI/ML数据扩展的场景下最大限度地利用 GPU 资源。 3.3 Alluxio 在架构中的位置 Alluxio 可以通过三种方式与现有架构集成。 与 NAS 并置:Alluxio 作为透明缓存层与现有 NAS并置部署,增强 I/O 性能。 Alluxio将NAS中的活跃数据缓存在跨GPU节点的本地 SSD 中。作业将读取请求重定向到Alluxio上的SSD缓存,绕过NAS,从而消除NAS瓶颈。写入操作通过 Alluxio 对 SSD 进行低延迟写入,然后异步持久化保存到 NAS中。 第三章:Alluxio 提供的解决方案 独立数据访问层:Alluxio 作为专用的高性能数据访问层,整合来自 S3、HDFS、NFS 或本地数据湖等多个数据源的数据,为GPU节点提供数据访问服务。 Alluxio 将不同的数据孤岛统一在一个命名空间下,并将后端存储挂载为底层存储。经常访问的数据会被缓存在 Alluxio Worker节点的SSD 中,从而加速 GPU对数据的本地访问。跨 GPU 存储的虚拟缓存:Alluxio 充当跨本地 GPU 存储的虚拟缓存。 S3中的数据会被同步到虚拟 Alluxio 存储并在 GPU 节点之间共享,无需在节点之间手动拷贝数据。 3.4 Alluxio 部署在AWS上 - 参考架构和基准测试结果 1. 参考架构 在此参考架构中,训练数据存储在中心化数据存储平台 AWS S3 中,Alluxio可帮助实现模型训练集群对训练数据的无缝访问。 PyTorch、TensorFlow、scikit-learn 和 XGBoost等ML训练框架都在 CPU/GPU/TPU 集群上层执行。这些框架利用训练数据生成机器学习模型,模型生成后被存储在中心化模型库中。 在模型服务阶段,使用专用服务/推理集群,并采用 TorchServe、TensorFlow Serving、Triton 和 KFServing 等框架。这些服务集群利用 All