对话:AI/ML工作负载的存储设计策略
Source: Antony Adshead, Sizing data storage for AI/ML workloads, 24 Jul 2023
Antony Adshead:在AI和ML方面,存储面临哪些挑战?
Curtis Anderson:让我们先设定一些背景。首要明确的是,作为客户,您希望实现某个目标,无论是在X光影像中识别癌细胞,还是基于客户的购买历史为他们推荐可能感兴趣的产品。
您的数据科学家会接收到这一要求,并随即启动模型的构建。接下来,这个模型将与一个位于其下方的软件层框架相融合。目前,PyTorch和TensorFlow是应用最为广泛的两个框架。实际上,正是这个框架决定了训练数据在存储子系统上的存储方式。
例如,对于PyTorch,如果您正在处理图像,它将每个文件存储为一个jpg文件,因此可能会有数百万个jpg文件组成一个目录树。另一方面,TensorFlow会将1000张或几千张图像放入一个更大的针对TensorFlow特定的文件格式中,文件数量较少但文件较大。
实际上,正是这个框架决定了数据在存储介质上的存储方式,因此对存储性能产生了重大影响。大量的小文件与从少量文件中高速输出的高带宽,对存储的影响方式是不同的。
因此,这就是将AI应用于存储时首要面临的挑战。
Adshead:我们如何为不同的AI/ML工作负载规划存储容量?
Anderson:因此,事情变得非常有趣。再次强调,我需要为您创造一些背景,然后我们可以深入探讨问题的更为直接的答案。
在您进行神经网络模型的训练时,框架会从存储中提取数据,将其批量加载到内存中,并将整个批次传递给GPU进行计算。
在GPU处理当前数据批次的同时,框架将继续读取更多数据以构建下一个批次。一旦第一个批次完成,下一个批次将被传送到GPU中,而框架会继续读取更多数据。
然而,复杂性体现在,为了保证神经网络的正常运行和有效训练,数据必须经过随机处理。这不是对数据进行更改,而是每次训练时,您会随机选择一张图像,然后下次会随机选择另一张图像作为下一个批次的一部分。在随后的批次中,您将继续随机选择一组不同的图像,然后进行训练。因此,随机性成为训练的必要要素。
当GPU在处理当前批次数据时,而框架正试图组装下一个批次数据,如果存储无法迅速响应,GPU就会完成当前计算并进入空闲状态,等待下一个批次在内存中完成构建。
然而,GPU是一种昂贵的资源,不应该被闲置。因此,存储的速度必须足够快,以确保持续构建批次并保持GPU的计算供给。
再次增加了一些复杂性。对图像的计算量要远远大于用于推荐系统的计算量。对于基于购买历史的推荐系统,需要处理的数据要比大型X光影像少得多。
例如,当GPU处理一批X光影像时,存储会有更多的时间来提取数据并构建批次。然而,在推荐系统中,每个数据字节的计算量相对较小,存储的速度就必须更快。
许多人并不知道他们将要解决哪些问题,因此他们可能会选择这样说:“没问题,我们可以投资购买全闪存存储解决方案,这样就可以应对各种情况。” 这种策略完全可行,是一个很好的选择。
如果您在云环境中进行测试,只需在此处进行点击,您就可以获得一个全闪存存储子系统。
如果您需要处理200TB或300TB的数据,这在当今已经是许多项目的规模,那么全闪存存储是一个经济实惠的解决方案。然而,如果您的数据规模达到2PB到3PB,那么您需要更加深入地考虑是否有足够的资金,并且需要仔细权衡投资是否划算,这时涉及更多的复杂性。
如果您听说过MLCommons或MLPerf,那是一个业界联盟,一个支持AI从业者的非营利组织。他们正在开发一个评估支持AI环境的存储系统性能的基准,并且已经发布了来自不同供应商的结果。因此,在对比存储产品时,这是一个获取数据的可靠来源。
Adshead:您如何总结适用于AI/ML工作负载的存储需求呢?
Anderson:假如您所处理的问题规模较为有限,那么在本地环境下,您只需考虑购买全闪存存储解决方案。大多数AI项目通常从云端启动,因为您可以按需租用所需的GPU。然而,需要注意的是,云计算并非廉价之选。一般而言,在本地购置设备并拥有它们会更具经济性,但前提是您必须拥有一个经过验证的项目,确保它的有效性。只有在该项目进入生产阶段之前,才能够使投资变得合理和切实可行。
简而言之,最为简单直接的建议是购买全闪存存储产品,这将使您能够紧跟工作负载的需求。然而,当问题规模逐渐扩大时,您需要更多详细的信息,进行更加深入的分析,以免浪费资金。这正是MLPerf发挥作用的地方。
总之,为了迅速启动,建议您从一个全闪存产品开始着手。