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

最近火爆全网的 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,集群的理论最大吞吐是 126x150 = 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✿)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/49890.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解 Redisson 分布式限流的实现原理

本文分享自华为云社区《详解 Redisson 分布式限流的实现原理》,作者: xindoo。 我们目前在工作中遇到一个性能问题,我们有个定时任务需要处理大量的数据,为了提升吞吐量,所以部署了很多台机器,但这个任务在…

AI日报|哈佛“AI教授”即将上线;首个生成式AI技能专业证书来了;电话推销员很烦?AI帮你“制裁”他

今日值得关注的人工智能新动态: 将GPT-4用在课程设计中 哈佛大学“AI教授”即将上线 微软推出首个生成式AI技能专业证书 纽约州议会:伤害或羞辱他人的deepfake是非法的 阿诺德施瓦辛格:《终结者》中的AI已成现实 AI诊断“老年痴呆”&…

甜品网站界面

最开始就是logo部分和导航栏部分 logo部分就是用的div里面写img然后给浮动就可以了 第二个是导航栏部分 用的也是无序标签 代码如下: 轮播图部分 没做出来效果 甜蜜约会品牌简介 红色框框以外的我用的是 div img 和 p标签做的 这些很简单 就不展示代码了 红色边…

教你简单学会用Python画长草颜团子

相信大家都知道可爱的长草颜团子,它应该在很多人的表情包中占有一席之地,那么就今天我们试着用Python的turtle模板来画一个长草颜团子吧! 这么可爱的团子谁不想要试着自己画出来呢哈哈哈 源码如下: #8X_I import turtle as t t.…

鱼香肉丝(集锦)

1: 鱼香肉丝的简单制作 2 :鱼香肉丝的来历与制作 3: 鱼香肉丝制作 4:鱼香肉丝 1 鱼香肉丝的简单制作 作者: 时间: 2006-1-17 10:17:00 摘自:http://www.517sc.com/food/xyz/17_54_51330.html 材…

用 Python 画如此漂亮的插图 ,So easy

人生苦短,快学Python! 今天我们进行一次实战案例分享,以全球预期寿命与人均 GPD数据为例,写一篇 Python 中漂亮散点图的快速指南。除了正常的数据清洗/处理、还会进行简单的统计分析,实现数据处理-统计分析-可视化一条…

做个合格的吃货~Python爬取全国火锅店,并利用地图可视化展示~

导语:天越来越冷啦~ 前段时间又刮起了入冬四件套(烤红薯、热奶茶、糖炒栗子、糖霜山楂)的热风~ 小编也紧跟着潮流下班兴冲冲的跑去买~(附近店面的排队的人实在是太多了~风还大😷😷) 一到手…

美食杰项目(七)菜谱大全

本文目录 前言:1.具体样式2.实现的具体功能和代码思路3.element ui具体样式的网址4.相关代码5.总结: 前言: 本文给大家讲的是美食杰项目中菜谱大全项目的具体样式,代码思路和具体代码,希望能帮助到你 1.具体样式 2.实…

鱼香肉丝里到底有没有鱼?

鱼香肉丝,算是我最爱的一道菜了,无论饭店大小,他都是我首先就要找的菜,可谓痴迷,但是鱼香肉丝里到底有没有鱼?这是个千古之谜,这篇来自三个料理人的文章《千古之谜,鱼香肉丝里到底有…

Python爬虫:简单爬取粤菜菜谱

项目场景: 简单爬取粤菜菜谱。 实现思路: 访问主页,获取每个菜品的菜名、图片、详情页面网址。 访问上一步中获得的所有详情页面,获取工艺、口味、时间、主料、辅料信息。 清洗所获得的数据。 保存至本地文件。 实现过程&a…

文心一言的魔性作图,我头都笑掉了...

这几天看到网友们用文心一言作的图,看了后我都愣住了。。。 AI 作画 -- 三得利乌龙茶 AI 作画 -- 娃娃菜 AI 作画 -- 车水马龙 AI 作画 -- 驴肉2火烧 AI 作画 -- 唐伯虎点秋香 AI 作画 -- 鱼香肉丝 AI 作画 -- 胸有成竹 AI 作画 -- 夫妻肺片 AI 作画 -- 红烧狮子头 …

使用chrome浏览器插件postman模拟post、get请求

使用chrome浏览器插件postman模拟post、get请求 postman为chrome浏览器的一个插件,用来模拟post请求,get请求等。可以在chrome浏览器里安装插件(前提是你得访问了Google应用商店)。 如果不能访问Google,那个下载一个p…

chrome浏览器无法开启同步功能 request cancel

找了很多亲测最新100版本可用!!! 步骤 1、从下面链接提取google插件【Chrome-Sync-Helper】 链接: https://pan.baidu.com/s/1FTxrQ-IRjRmYdW5HcNateA 提取码: htga (如链接失效,请留言反馈!) …

Chrome 添加【微信 / QQ】内置浏览器(解决 “请在微信客户端打开链接” 提示)

前言 有些链接,是需要在微信客户端内才能打开的,那么想在 PC 端的浏览器上打开,怎么办呢? UA 不明白的话先不用管,继续往下看。 【安卓QQ内置浏览器UA】 Mozilla/5.0 (Linux; Android 5.0; SM-N9100 Build/LRX21V…

chrome浏览器控制台发送post请求

谷歌浏览器,点击F12,在控制台中输入下面代码,直接回车即可:(需要修改一下Admin-Token的值即可) 设置访问的Controller路径,“http://127.0.0.1:8090/api/dwStandard/superUploadBigFile” met…

和 if else说再见,SpringBoot 这样做参数校验才足够优雅!

大家好,我是老赵! 一、概述 当我们想提供可靠的 API 接口,对参数的校验,以保证最终数据入库的正确性,是 必不可少 的活。比如下图就是 我们一个项目里 新增一个菜单校验 参数的函数,写了一大堆的 if else 进行校验&…

全球诺贝尔奖得主最多的30所大学

自1901年以来,诺贝尔奖得主全球最多的30所大学,这些大学堪称是真正的世界一流大学。世界一流大学的指标很多,但是有一项重要指标不可缺失,那就是至少有10位以上诺贝尔奖得主。以下是笔者根据维基百科整理的1901年至2018年间&#…

【娜家花园养花小记】

种花的话,看花开花落,经历寒冬酷暑,都是生命的一个体验的过程。月季花很坚强,酷暑来了,寒冬来了,它休眠一下。然后在其他时间呢,它就尽情的拿生命去绽放。种花更多的感受它带给你的快乐。带给你…

一生必看的 100 幅世界名画

智慧与美,是我之最爱。 从早期的叙事性绘画,直至后期更加侧重抒情与抽象的现代派绘画。希望这篇用心的长文,可以成为你开启艺术之们的钥匙。如果有幸有一幅画面,能够触及你内心柔软的角落抑或隐秘的激情,也请你静下心来…

2022-09-11 stonedb-宣讲-第二讲-一条SQL在Tianmu引擎中的运行

摘要: 记录列存储引擎第二讲的绸缪规划。 宣传语: 标题: 一条查询SQL在Tianmu引擎中的代码实现 宣讲语: 你是否只读过数据库理论的书籍, 但是一遇到代码就头疼呢? 你是否只会在理论上和数学公式上推导数据库内核, 但是从没亲自做过数据库内核的实现呢? 你是否对于数据库…