最近火爆全网的 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 场景中现已不是功用瓶颈。

聊聊 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- 存储体系选型比较

最终部分,咱们把前文提到的存储产品做个比较,便利咱们选型时参阅。

聊聊 AI 平台存储方案和选型

在过去 10 年里,云核算快速发展。上一代在机房中规划的存储体系并不能集成云带来的优势,比方弹性弹性。这期间,目标存储从无到有,为咱们带来了极致的扩展性、可用性和低本钱,可是它在 AI 场景中也有明显的短板。

文件存储在 AI 和其他核算场景中有着不行替代的便利性和优势,如何利用好云和云上根底设施,规划新一代文件存储是新课题,这也是 JuiceFS 过去 5 年所做的。

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