关于人工智能:聊聊-AI-平台存储方案和选型

8次阅读

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

最近火爆全网的 ChatGPT 再次带来一股 AI 热潮。过来的五年,AI 疾速倒退并利用到很多畛域中。作为一家存储企业,咱们也感触到了 AI 行业的生机,和咱们交换团队中,AI 企业越来越多,有主动驾驶、蛋白质构造预测、量化投资等不同行业。

AI 场景给数据存储带来新挑战,原有的存储计划并不能完整地满足。明天借这篇文章抛砖引玉,和大家分享咱们看到的 AI 场景的特点和趋势,以及现有的解决方案有哪些,他们的优劣势别离是什么。在文末,咱们比拟了 12 款共享文件系统,欢送一起探讨交换。

01- AI 数据工程的存储挑战

高吞吐的数据拜访挑战。在 AI 场景中,随着企业应用 GPU 越来越多,底层存储的 IO 曾经跟不上计算能力。企业心愿存储系统能提供高吞吐的数据拜访能力,充分发挥 GPU 的计算性能。举个例子,在智能制作生产线上通过高精度相机给物品拍照,用缺点辨认模型主动找出品质问题。这类模型的训练集只有 1~2 万张图片,但每张都是 GB 大小的高精度照片,总容量有 10TB 了。训练过程中,如果存储系统吞吐有余,会成为 GPU 训练的瓶颈。

AI 场景对于 10 亿以上文件规模的存储管理和高性能拜访的需要越来越强。在主动驾驶畛域,用于模型训练的是百 KB 的小图片,一个训练集由数千万张百 KB 图片组成,一张图片就是一个文件,总的训练数据多达几十亿、甚至一百亿文件。海量小文件治理始终是文件存储畛域的难题。

为热点数据提供吞吐扩大能力。在量化投资畛域,用于模型训练的金融市场数据量相比 CV 畛域小了很多,然而须要被多个钻研团队共享,这会带来数据热点问题,就是数据存储的磁盘吞吐曾经用满,然而依然不能满足利用端的需要。

除了由 AI 场景带来了新的数据模式,根底的计算环境也产生了微小的变动。

现在在资源建设中,上云简直曾经是默认选项。尽管很多团队会建设本人的 IDC,但也会做公有云的设计。同时,Kubernetes,曾经成为了云原生架构的事实标准。咱们看到在 AI 业务中,整个 Data Pipeline 都构建在 Kubernetes 上,算法工程师在平台上申请资源,应用 Notebook 编写代码实现算法调试,应用 Argo、Airflow 等工作流引擎编排数据处理工作流,应用 Fluid 治理数据集,应用 BentoML 部署模型到利用中。云原生技术栈也是企业在建设存储平台时,广泛会考量的一个因素。随着云计算的成熟,AI 业务更多转向大规模分布式集群实现 。集群中的节点数大幅度减少, 存储系统如何面对 Kubernetes 集群中上万 Pod 的并发拜访是新的挑战

基础架构的 IT 人员面临来自业务场景、计算环境的巨变,反观现有的存储计划,软硬一体机普遍存在这样的痛点:1)不弹性;2)没有分布式高可用;3)集群规模受限,曾经越来越少被应用;而分布式文件系统,比方 GlusterFS,CephFS,还有面向 HPC 设计的 Lustre,BeeGFS 和 GPFS。它们都是面向物理机、裸磁盘设计的存储系统,尽管能够部署大容量的集群,然而在云环境中同样不能提供弹性容量,更无奈提供弹性的吞吐能力,在上百亿文件的存储需要上也曾经力不从心。

联合上文提到的这些挑战,咱们列举了对 AI 场景至关重要的存储能力,不便企业在抉择存储产品时进行比拟。

02- AI 数据存储须要的要害能力

第一:POSIX 兼容性和数据一致性

在 AI/ML 畛域,POSIX 是数据拜访最广泛的接口。上一代分布式文件系统,除了 HDFS,也都兼容 POSIX,然而近几年云上的产品在 POSIX 反对上的做法并不统一,有几点须要大家特点留神。

  1. 兼容度。用户不能只是通过「产品兼容 POSIX」这样的形容判断,能够应用 pjdfstest 和 LTP 框架进行测试,咱们做过一次云文件系统的 POSIX 兼容性测试供大家参考。
  2. 数据强一致性保障,这是保障计算正确性的根底。存储系统有多种不同的一致性实现,比方对象存储通常是最终一致性(Eventually Consistency),文件系统通常是强一致性(Strong Consistency),咱们做存储系统选型时须要留神。
  3. 用户态还是内核态的抉择。晚期开发者抉择内核态,因为这种形式 I/O 门路有可能做到最极致的优化。然而这几年,咱们遇到了越来越多「逃离内核态」的开发者,起因有这样几个:第一,应用内核态须要文件系统客户端与内核版本绑定,而后 GPU 和高性能网卡的驱动往往也须要适配特定的内核版本,几样货色排列组合对内核版本的抉择和运维是很大的累赘。第二,内核态客户端的异样会宕住宿主机操作系统,这一点对于 Kubernetes 平台是十分不敌对的。第三,用户态的 FUSE 库也在继续迭代,性能有了很大晋升,在 JuiceFS 的客户中曾经很好的反对了主动驾驶感知模型训练、量化投资策略训练等业务需要,可见在 AI 场景中曾经不是性能瓶颈。

第二:吞吐的线性扩大能力

不同的文件系统,在扩大吞吐能力时的原理是截然不同的。上一代分布式存储系统的设计中,比方 GlusterFS,CephFS,还有面向 HPC 畛域的 Lustre,BeeGFS 和 GPFS,大多采纳全闪计划构建。这类存储系统的吞吐峰值等于集群中的磁盘总性能,用户须要进步集群的吞吐能力,只能为集群扩容,减少更多的磁盘

然而,当有些用户对容量的需要和对吞吐的需要并不均衡,如对大量热点数据有十分高的吞吐需要。这些传统的文件系统,此时也只能为整个集群扩容,造成容量的节约

举个例子,一个 500TB 容量的集群,如何应用 8TB 一块的 HDD(磁盘),2 正本须要 126 块盘,每块盘的吞吐是 150MB/s,集群的实践最大吞吐是 126×150 = 18GB/s。如果业务须要 60GB/s 的吞吐,有两个计划:

1)换 2TB 一块的 HDD 盘(吞吐也是 150MB/s),总共须要 504 块盘;
2)换 8TB 一块的 SATA SSD(吞吐是 500MB/s),还是 126 块盘。
第一个计划因为多出 4 倍磁盘数量,集群的节点数要相应减少。第二个计划由 HDD 换成 SSD,老本也会大幅回升。

可见,在容量、性能和老本三角上很难去均衡,基于这三个角度的容量布局也就成为了一个难题。因为当时布局,咱们无奈预测真正业务的倒退、变动和其中的细节。因而,如果能将存储容量与性能的扩大解耦,对企业来说将是一件事倍功半的办法,这也是 JuiceFS 在设计时就思考到的需要

同时,热点数据也是 AI 场景中的一个常见问题,JuiceFS 缓存分组机制,就能够把热数据主动调配到不同的缓存组中,相当于在计算过程中能够主动将热点数据复制多份,来取得更高的磁盘吞吐,计算实现后又能够主动回收这些缓存空间。

第三:海量文件

治理 100 亿文件,对存储系统有三方面要求:

  1. 弹性扩大。JuiceFS 用户的实在场景就是从数千万扩大到数亿,再到数十亿,这个过程靠给几台机器加配置是不行的,肯定是存储集群减少节点实现横向扩大,能力最好的反对用户业务成长。
  2. 横向扩大时的数据分布。在零碎扩大的过程中,很多零碎的数据分布设计是基于目录名前缀做哈希散布的,这种规定在实在业务数据中可能会造成散布不平衡。
  3. 扩缩容复杂度。随着文件数的减少,零碎扩容是否简略,运维是否简略稳固并且有足够的工具来掌控存储集群,是海量文件存储系统始终的挑战。有些零碎在文件数量增长到几十亿之后会越来越「软弱」。容易运维,稳定性高肯定是业务增长须要的。

第四:在 Kubernetes 环境中的并发负载能力与性能撑持

当咱们查看存储系统的规格,有一部分存储系统会明确告知并发拜访下限,用户须要联合业务去做理论的压测。同时,客户端多了,也须要进行 QoS 治理,包含每个客户端的流量管制,对读写进行长期封禁策略等,这样能力保障整个平台的治理可行性。

在 Kubernetes 中还要留神 CSI 的设计和反对的性能。比方挂载过程的部署形式,是否反对 ReadWriteMany,Subpath 挂载,Quota 配额,热更新等等。

第五:老本

老本是一个十分综合的概念,软硬件的洽购老本是容易计算的,人们容易疏忽的是运行和保护老本。
AI 业务规模从小到大,数据量的增长逾越了两个、甚至三个数量级。存储系统容量和吞吐要有足够的扩大能力,而且要不便调整。

在过来机房中建设 Ceph、Lustre、BeeGFS 等零碎时,因为集群扩容不不便,个别都按年度布局用量,而后洽购机器,期待到位上架,再实现软件配置的变更,整个工夫周期个别须要 2-3 个月,单单服务器筹备好,实现软件上的扩容配置,也须要 1 周左右。这里的工夫老本往往是企业中最低廉的老本,而且往往不容易被关注。如果存储系统在容量和性能上能够弹性配置,容易扩大,意味着业务也能更快推向市场

再看第二个容易被忽视的效率老本。从 AI 业务流程看,它是一个十分长的 Data Pipeline,每个环节都须要和存储系统打交道,包含数据的采集、清晰转换,标注、特征提取、训练、回测,到上生产环境。在 Data Pipeline 中,存储系统会影响到每一个环节的效率。而企业在一个业务阶段内应用的数据往往不超过全副数据的 20%,对于这部分热数据有很高的性能需求,其余温冷的数据偶然拜访或不拜访。对热数据的需要是高性能,对温冷数据的需要是低成本。在 Ceph、Lustre、BeeGFS 等零碎中很难同时满足这两点

所以咱们能够看到很多团队会构建多套存储系统应答不同的需要,常见的计划是用一套对象存储做全副数据的归档,做到大容量低成本,但性能不高,在 Data Pipeline 上承当数据摄取和预处理、荡涤环节。在对象存储实现数据的预处理并不是最高效的形式,但因为数据量太大,出于老本起因往往是不得已的抉择。而后工程师又须要期待大量工夫把数据复制到训练用的文件存储中,实现模型训练环节。

所以,除了存储系统的软硬件老本,集群运维(包含洽购供应链)投入的工夫老本,业务在多个存储系统之间治理数据所投入的工夫老本都应该计算在总成本中

03- 存储系统选型比拟

最初局部,咱们把前文提到的存储产品做个比拟,不便大家选型时参考。

在过来 10 年里,云计算疾速倒退。上一代在机房中设计的存储系统并不能集成云带来的劣势,比方弹性伸缩。这期间,对象存储从无到有,为咱们带来了极致的扩展性、可用性和低成本,然而它在 AI 场景中也有显著的短板。

文件存储在 AI 和其余计算场景中有着不可代替的便利性和劣势,如何利用好云和云上基础设施,设计新一代文件存储是新课题,这也是 JuiceFS 过来 5 年所做的。

如有帮忙的话欢送关注咱们我的项目 Juicedata/JuiceFS 哟!(0ᴗ0✿)

正文完
 0