关于人工智能:加速-AI-训练如何在云上实现灵活的弹性吞吐

40次阅读

共计 5013 个字符,预计需要花费 13 分钟才能阅读完成。

AI 曾经成为各行各业软件研发的根底,带来了前所未有的效率和翻新。明天,咱们将分享苏锐在 AWS 量化投研行业流动的演讲实录,为大家介绍 JuiceFS 在 AI 量化投研畛域的利用教训,也心愿为其余正在云上构建机器学习平台,面临热点数据吞吐有余的企业提供一些启发。

1. 背景

JuiceFS 最后是为了解决互联网行业在云上存储大量数据时遇到的问题。随着 AI 技术的倒退,一些应用 AI 进行研发的企业开始关注到 JuiceFS,其中包含量化私募机构,有新兴的量化机构,他们从一开始就在云上构建本人的投研平台,也有一些头部老牌基金,他们正从机房开始向云延长。

量化投研是一种利用数学模型对大量市场数据进行剖析和开掘,以获取市场行情的法则和趋势,并进行投资决策的投研办法。随着人工智能技术的疾速倒退,机器学习和深度学习等算法已广泛应用于量化投研,成为金融行业中率先利用人工智能的畛域之一。上面这张图显示了量化机构每天的工作数量。黄线代表工作数量的变动状况。咱们能够看到工作数量在上班时间内显著增多,而下班时间则显著缩小。

目前,大部分量化私募应用的 IT 资源都是在机房内,CPU 核数、内存和存储等都是固定的。在这种状况下,当面临稳定的工作负载时,可能会呈现以下问题:

  • 机房提供的是固定算力,在低峰期会有过剩的资源,而在高峰期研究员则须要排队期待,这会导致资源的节约和效率的升高。研究员心愿他们的想法可能尽快失去解决,公司也心愿最大限度地利用资源。
  • 忽然呈现的工作负载减少可能会导致计算资源有余。例如,当研究员有灵感时或者在验证新的论文时,须要进行大规模的验证。此外,当招募新员工或高峰期到来时,计算资源有余也会成为一个问题。
  • 因为机房的扩容周期通常为三个月,而硬件缺货时甚至须要期待六个月,供应链的周期很难满足业务需要。

弹性计算是解决上述这些问题的最简略办法。

2. 弹性计算的劣势

在过来的两年中,曾经留神到越来越多的量化私募从机房开始转向云端。对于间接在云端构建钻研平台的机构,能够间接在 AWS 这样的私有云上进行部署。这样,所有的资源都能够轻松地应用,只需简略地点击鼠标即可启动或敞开,从而大大缩短 time to market 的工夫。不再须要期待硬件选型和购买的工夫,而且所有的计算资源都能够依据须要进行弹性应用,无论须要多少算力都能够灵便调配。

然而,对于那些曾经有肯定历史的量化私募机构而言,它们曾经建设了大量的 IDC 设施,因而不可能将这些全副放弃,而后转向私有云。因而,它们须要先充分利用这些 IDC 设施,并将其与云计算联合起来。

混合云可能是更多机构要抉择的计划

机房内现有的资产能够作为一个固定算力,满足均匀或低峰期的算力需要。增量局部能够在云上进行扩大,应用的资源按秒计费。通过这种形式,机房内已有的资产也可能失去更好地利用。

弹性算力还有一个重要益处,就是能够更快地应用最新的硬件设施。相比之下,如果本人购买硬件,可能须要期待 3 年或 5 年的折旧期限,这使得咱们难以跟上硬件的更新换代。弹性算力的益处也在于能够帮忙咱们更快地跟上技术的倒退。

3. 弹性环境中,存储的痛点

计算只是简略的处理过程,而数据则须要进行长久化,因而存储通常比计算更难弹性化 。在弹性计算过程中,须要思考如何保留曾经解决的数据,以便后续应用。同时,在扩大算力时,须要确保存储可能反对相应的需要,并具备高可用性和可扩展性。否则,可能会面临数据失落或性能降落等问题。

痛点一:性能、老本和效率如何取舍?

在进行存储选型时,企业通常会思考三个因素:性能、老本和效率。这些因素在存储系统的设计中相互影响。在存储选型时须要综合思考不同计划的优缺点,以找到最适宜企业需要的计划。

在模型训练阶段,用户通常会谋求高性能的存储计划。例如,机房里提供全闪存的文件存储,AWS 上提供 FSx for Lustre 等产品都会抉择更高级的硬件,这些计划都能提供杰出的吞吐性能。然而,存储老本也较高,因而须要寻找低成本的全量数据归档存储计划。在机房里,一些高密度存储计划也能够降低成本,在云上会抉择应用 Amazon S3 等对象存储服务。

为了谋求老本和性能,用户在机房和云上都会构建出两套异构的存储。一套低成本的存储系统用于全量归档,另一套高性能的存储则用于模型训练。 这种多套存储的环境也带来了治理数据迁徙、数据冷热等问题,尤其是在多个区域、多个云环境下,这种状况会变得更加简单

因而,咱们须要无效的解决方案,既能疾速、省钱,同时又能高效地治理存储。

痛点二:存储系统扩容慢

运维过存储系统的人深知存储系统扩容的迟缓。存储系统实质上是一组硬盘,用于存储数据。当须要减少存储容量时,通常的想法减少硬盘。然而,在分布式存储系统中,扩容并不是这么简略的过程,须要对所有数据进行从新均衡,以便更无效地治理存储系统中的所有数据。此外,存储硬件的性能是无限的,如果一部分性能用于数据迁徙,就会影响线上业务的服务能力。

举一个简略的例子,咱们将一个微小的存储集群放大为仅三台机器,每台机器装备两个硬盘,存储一些数据,如下方这个图示。在分布式系统中,为了确保数据的平安,咱们通常会将数据复制多份,通常存储三份。下图,圆圈、三角形和菱形各代表一个文件,在分布式架构中,每个图形都有 3 份。

当存储容量有余时,须要退出新的机器,以扩大存储空间。然而, 新的数据并不会只存储在新的机器上,而是必须对现有数据进行重均衡以更无效地治理所有数据 。在这种状况下,数据会应用一套算法从旧地位挪动到新地位。同时,硬盘提供的能力是无限的,如果咱们将一部分固定能力用于数据迁徙,则无奈为线上业务提供服务。

运维工程师们深知存储集群扩容的挑战,抉择何时迁徙和股票投资中择时一样让人难以预测。 如何安稳地搬家,以及如何在不影响线上业务的状况下防止事变,都是一项简单的工作 。仅仅靠主动机制很难实现好,因为业务负载的状况是难以预知的,通常要老司机手动挡干涉。除了扩容,当集群中呈现了硬盘损坏的状况,就要将其中的数据转移至新的硬盘中,同样要确保每份数据存储了三份。因而,即使不进行扩容,大规模的存储集群依然须要每天都进行数据搬迁。

在这种艰难的存储系统扩容条件下,当新的算法、研究员和灵感呈现时,存储通常会成为连累。

痛点三:可用容量很多,性能有余了,为什么?

之前提到的是容量有余导致须要扩容,然而在量化私募这个畛域中, 咱们发现大部分的客户须要扩容的起因并不是容量有余,而是因为吞吐性能有余

硬盘提供的性能是无限的,当现有硬盘的性能跑到极限时,就必须购买新的硬盘来满足性能需求。许多量化客户,尽管他们的存储容量还有很大的充裕,但为了满足新的性能需求,他们仍须要扩容。

举个例子,假如当初须要读取的数据存储在下图圆圈所示范畴,要求性能十分高,那么圆圈所在硬盘的性能曾经达到了极限;接着另一个研究员须要读取同样存储在这块硬盘上的三角形,但这块硬盘的性能也曾经到了极限,因而读取三角形数据的速度肯定会很慢。

为了实现减少性能,须要将三角的数据迁徙到新的硬盘上,就是图上没有标红的硬盘。

为什么这个问题在量化私募行业特地显著呢?因为咱们的行业最原始的数据可能来自于市场数据。以 A 股的数据为例,过来 10 年的数据加在一起才 240G,而明天硬盘容量都好几 TB 一块,这就意味着咱们要解决的原始数据实际上是无限的,可能最多也只有几十 TB 的规模。但这几十 TB 的原始数据可能被数十到数百名研究员共享,他们须要同时读取同一份数据,这导致了性能瓶颈的呈现。这是量化行业应用数据的一个特点,即因为数据的共享和读取需要,容量短缺但性能有余的状况很常见。这也是最开始有量化基金找到 JuiceFS 这个产品去帮他们解决的一个问题。

因而,对于这类会产生热点数据的场景,即对计算的弹性要求更加极致时,匹配性能可伸缩的存储,能够更好地实现整体的性能和老本失去的均衡。

4.JuiceFS 如何实现性能扩大 & 性价比

在 2017 年,当咱们开始研发 JuiceFS 时就决定要为云环境设计。咱们留神到过后市场上的所有文件存储产品都是在 2005 年前后或更早设计的,甚至还有一些是在 90 年代设计的。这些产品依然宽泛地用于量化私募行业中。因为咱们的基础设施的根底资源环境曾经产生了变动,因而在开发新产品时,必须跟上咱们当初所应用的环境的发展趋势。

在这张图中,三个虚线框代表了文件系统的三个外围组件,元数据引擎、数据引擎和客户端,它们一起实现了文件系统的要害性能。

文件系统能够简略地了解为一种用于组织、治理和拜访文件和目录的技术。比方咱们电脑上应用的硬盘,文件系统提供了一种与它的交互方式,即通过文件和目录(文件夹)的模式来拜访和治理存储在硬盘物理介质上的数据。

例如,在 Linux 中一块硬件格式化文件系统后,挂载到一个目录上,看到的是一个目录树,其中蕴含目录、文件夹和文件。每个文件都能够设定权限,并具备工夫戳,记录了创立工夫、上次批改工夫等,称为元数据。它们寄存在上图左下角的虚线框内所示的 Juicedata 自研元数据引擎中,这个引擎很大水平上决定了文件系统的性能。

右下角虚线框代表文件内容的存储。这部分是 20 年前存储系统最重要的性能之一,须要治理大量机器和其中的硬盘。例如,在 HDFS 中的 DataNode,Ceph 中的 RADOS,Lustre 中也有 ChunkServer,这些服务须要实现例如数据分块、存储、正本治理、迁徙等,很简单。在云环境中,S3 曾经将这个问题解决得十分杰出。 因而,当咱们决定在云上从新构建一个文件存储系统时,咱们不再须要治理大量硬盘。相同,咱们能够站在 S3 的根底之上,为其减少更多的性能 。在 JuiceFS 的设计中,用户存储在 JuiceFS 文件系统中的所有文件内容间接存储在用户本人的 S3 Bucket 中。

图片上方展现的是一个客户端拜访零碎,JuiceFS 提供了最规范的 POSIX 接口,并反对像 HDFS 等不同的 API 互通。这让开发者在编写程序时更加便当,能够依据本人的需要抉择最适宜的接口。此外,咱们还提供了性能扩大性能,以满足更高的性能需求。

因为 S3 提供的性能和语义不足以满足高性能的模型训练或投研剖析的需要,所以咱们须要一种两头解决方案来补救这些有余。例如,PyTorch 须要的是一个 POSIX 文件系统,但 S3 只提供 HTTP API。JuiceFS 就是这样一种解决方案,它能够将数据存储在 S3 中,同时提供 POSIX 和其余 API,以满足不同利用的需要,并通过外部优化来提供最佳的性能

要解决上文提到量化机构面临热点数据吞吐有余的问题,须要介绍 JuiceFS 的缓存性能。当用户的 GPU 计算节点须要读取数据时,所有数据的拜访都会首先从 S3 中拉取一次,而后存储在 JuiceFS 缓存中。在当前的拜访中,所有数据都能够在缓存中被命中,从而取得与全闪存文件存储相当的性能。JuiceFS 的缓存层可动静伸缩,为用户提供可弹性扩大的吞吐性能。此外 JuiceFS 的缓存层能够与计算节点上的高性能存储造成一个分层的多级缓存,进一步提高性能。

总结一下,应用 JuiceFS,数据都能够保留在低成本的 S3 中,升高了存储老本;同时,通过一个动静的缓存层为 S3 提供了减速,还实现了吞吐性能的弹性扩大

如果热点数据依然存储在无限数量的 NVMe 盘中,扩充整个缓存层的规模实际上并没有太大的意义。为了解决数据热点问题,能够应用 cache 分组的形式,让热点数据在每个组中都失去存储。用户只须要依据需要建设多个缓存组,通过简略的配置调整即可在短时间内实现,十分无效地解决了数据热点问题。

用户能够设置本人的 cache group,或者为每个团队设置本人的 cache group,这样能够扩大热点数据的性能,并且整个零碎的性能也能够基本上线性扩大。此外,如果用户在上班后敞开了这些 cache group,就能够防止额定的老本。

对于那些依然领有机房资产的量化私募机构,能够应用混合云部署计划,数据依然存储在 S3 中,但能够预热到机房中的 cache group 进行计算减速。

JuiceFS 能够在云环境和机房环境中应用两个 JuiceFS 实例进行数据复制,而这个过程对用户来说是通明的,无需进行额定的操作。JuiceFS 主动将热数据存储在高性能的 cache 层中,这意味着不管用户在机房还是云上执行工作,都能够快速访问热数据,从而解决了现有资产和云上弹性部署的混合应用问题。

相干浏览: 乾象投资基于 JuiceFS 构建云上量化投研平台

正文完
 0