随着深度学习和人工智能畛域获得突破性停顿,以及无人配送车、无人出租车、无人巴士等智驾场景逐渐落地深刻,主动驾驶行业近年来获得了越来越多的关注和提高。然而,想要真正实现在路线上行驶,还须要解决泛滥技术问题。
感知零碎作为车辆门路布局的根据之一,须要通过“数据训练”夯实根底,以监督学习的形式,将数十 PB 的训练数据提供给算法,通过其生成具备普适感知能力的模型,帮忙主动驾驶车辆领有更好地感知理论路线、车辆地位、障碍物信息等方面的能力,达到实时感知在途危险,作出具体行为决策的目标。
随着越来越多的雷达、摄像头等传感器被部署在车辆里,各个环节的工作量一劳永逸,尤其是高性能主动驾驶汽车对数据的存储需要更是微小,一天生成的数据量可达到 3-8 TB 左右。因而,如何高效、稳固地保障主动驾驶过程中收集到的大量数据,并疾速造成主动驾驶的计算模型,成为了各大主动驾驶企业关注的首要问题。
本篇文章,焱融科技将基于国内某专一于研发和利用 L4级主动驾驶技术,聚焦主动驾驶出行和主动驾驶同城货运两大场景的主动驾驶公司理论案例,分享 YRCloudFile 在主动驾驶训练场景下针对 IO 模型、容器化部署、性能晋升、智能分层方面的实践经验和启发,心愿能给相干从业者解决相似问题时提供一些参考和帮忙。
海量数据,毫厘必争
此前,国内某 L4 级主动驾驶公司次要采取的是开源的存储解决方案,将 GPU 计算和存储以交融的模式进行部署,然而随着文件数量的回升,性能呈现显著降落,原有的存储形式也逐步开始影响训练的效率。因而,他们开始思考降级现有的存储解决方案。在降级过程中,该公司重点关注并解决以下问题:
- 在日益剧增的海量数据场景下,如何晋升设施性能,放慢训练进度;
- 开源计划尽管具备解决海量文件的能力,然而随着数据量的增多,如何保障产品稳定性,防止难以保护的问题;
- 如何解决存算交融架构下,无奈依据需要独自扩容的问题;
- 在数据经验收集、荡涤、训练后,如何解决过程中所产生的冷数据的问题。
YRCloudFile 如何应答?
在理解该公司驾驶训练场景当前,焱融科技针对其主动驾驶训练数据集进行了一系列剖析,并总结出其训练数据具备以下特色:
- 浩瀚数据文件,训练数据集的文件数量在几亿至几十亿甚至上百亿的规模;
- 小文件难治理,大部分文件的大小在几 KB 到几 MB 之间,一些特色文件的大小更是只有几十到几百 Byte;
- 读多写少,在数据写入存储后,依据训练要求会进行屡次读取。
针对上述特色,焱融科技从元数据处理能力、目录热点、多级智能缓存、针对性调优再到智能分层,提供了一系列高性能、高可用、高扩大的存储计划。
焱融 YRCloudFile 主动驾驶利用场景下的工作流程
01 元数据处理能力,解决海量数据文件的基石
在面临海量文件时,因为 MDS 不能及时地响应读写申请,所以极易呈现应有性能无奈施展的状况。如果想要冲破存储的瓶颈,次要解决方案是晋升元数据的解决能力。为此,焱融科技抉择通过可程度扩大设计的 MDS 架构,实现 MDS 集群化。这次要思考到以下三方面:
- 第一,MDS 集群化有利于缓解 CPU,升高内存压力;
- 第二,多个 MDS 有利于企业存储更多元的数据信息;
- 第三,在实现元数据处理能力程度扩大的同时,晋升海量文件并发拜访的性能。
目前,焱融 YRCloudFile 次要采纳动态子树 + 目录 Hash 两者联合的形式搭建可程度扩大设计的 MDS 架构,其次要蕴含三大因素:
- 将根目录固定在 MDS 节点;
- 每一级目录会依据 Entry name 进行 hash,再次抉择 MDS,以此保障横向扩大的能力;
- 在目录下文件的元数据进行寄存过程中,不再进行 hash,而是跟父目录在同一个节点,以此保障肯定水平的元数据本地性。
这种架构形式有两种益处,首先是实现了元数据的散布存储,通过扩大元数据节点,即可反对百亿级别的文件数量;其次是在肯定水平上,保障了元数据的检索性能,缩小在多个节点上进行元数据检索和操作。
02 目录热点,解决热点引发问题的要害
因为大数据集群的目录以及文件数据不可胜数,所以在主动驾驶车辆训练过程中,如果遇到多个计算节点须要同时读取这批文件时,其所在的 MDS 节点就会变成一个热点。整体构造如下图所示:
为了进一步晋升小文件筛选与治理流程,焱融科技采纳了减少虚构子目录的形式,尽管这种形式减少了一层目录查问的操作,然而其具备灵活性强的特点,能够将热点摊派到集群中所有元数据节点。同时,这种解决办法还能够解决另一个问题——单目录的文件数量问题,使单目录实现撑持 20 亿左右的文件数量,并且能够依据虚构子目录的数量灵便调整。整体构造如下图所示:
咱们能够尝试通过拜访 /dir1/dir2/file1,来查看虚构子目录是如何实现的。在这里,咱们假如,dir2 是开启了 dirStripe 性能。次要拜访流程如下:
- 在 MDS1 上拿到根目录的 inode 信息,查看没有开启 dirStripe
- 在 MDS1 上获取 dir1 的 dentry 信息,找到所属 owner(mds2)
- 在 MDS2 上拿到 dir1 的 inode 信息,查看没有开启 dirStripe
- 在 MDS2 上获取 dir2 的 dentry 信息,找到所属 owner(mds3)
- 在 MDS3 上拿到 dir2 的 inode 信息,查看开启了 dirStripe
- 依据 file1 的 filename,hash 到虚拟目录 2 上
- 在 MDS3 上获取虚拟目录 2 的 dentry 信息,找到所属 owner (mds4)
- 在 MDS4 上拿到 file1 的 inode 信息,返回给客户端
在整个模仿测试过程中,咱们模仿了多个客户端,并发拜访同一个目录的场景。在实现当前,咱们通过比照发现,目录拆分后有 10 倍以上的性能晋升。
03 多级智能缓存,晋升整体性能的最佳实际
因为主动驾驶训练数据有很多类型,不同数据信息存储数据量不可预计,所以一般文件缓存容易呈现只提供内存缓存,导致容量无限,通常一台 GPU 服务器可用的内存缓存仅数十 GB;同时,也容易呈现内存缓存 LRU 置换算法,epoch 缓存在每个 epoch 的命中率低的问题。为了应答上述问题,焱融 YRCloudFile 客户端采纳能晋升整体性能的多级智能缓存特点:
- 在客户端缓存过程中,由内存缓存 + GPU 服务器本地 SSD 缓存组成;
- 能够指定缓存大小和地位;
- 训练程序先从客户端内存缓存中加载,未命中则从客户端服务器 SSD 加载,不命中最初从文件系统集群中加载;
- 对训练框架、应用程序齐全通明。
YRCloudFile 客户端多级智能缓存工作图
通过焱融 YRCloudFile 所提供的计划,可实现在整个训练中,数据集加载速度晋升 5 倍的成果。
04 针对性调优,晋升存储性能的最优解
大多数存储厂商在产品布局、产品稳定性、技术服务等方面更为业余。在现场进行 POC 测试的过程中,焱融 YRCloudFile 进行了包含但不限于性能、性能、可靠性等方面的测试。从中咱们发现,集群的性能曾经超过原有存储系统,然而没有达到预期的数值。因而,咱们能够通过对现场环境的剖析,提出以下几点优化措施:
- 增大节点上的 socks 数量,已取得更大的连接数;
- 调整线程数 workers,以匹配拜访的数量;
- 调整 listeners 侦听线程数;
- 调整轮询策略,均衡响应速度和 CPU 资源。
经测试,通过针对性的调整后,YRCloudFile 能够将以上存储参数的调整性能晋升了 20%-30%。
05 智能分层,数据流动最佳决策
理解数据存储的敌人都晓得,拜访频繁的数据为热数据,拜访较少的数据为冷数据。然而,一旦冷数据过多,不仅会占用大量的存储空间,而且存储老本也随之减少。为此,焱融 YRCloudFile 专门提供了文件存储系统目录级的智能分层性能,通过高性能文件存储 + 低成本对象存储的组合,咱们将无效实现热数据仍然为人工智能等新兴业务提供高性能拜访的个性,而冷数据能够在用户现有低成本的对象存储中无效保留。目前,焱融 YRCloudFile 智能分层技术支持以下个性:
- 依据不同目录,能够定义不同的冷热数据和数据流动策略;
- 冷数据主动流动至低成本的对象存储;
- 提供规范的 POSIX 接口,数据在冷热数据层之间流动对业务齐全通明。
通过冷、热数据智能分层的形式,能够满足相对大多数企业在主动驾驶训练过程中,对于存储高性能和数据长期保留的需要。
主动驾驶场景 YRCloudFile 无缝对接容器存储
以后,为了晋升主动驾驶训练测试效率,大多数厂商以及 AI 利用会抉择在容器为利用运行载体的 Kubernetes 平台上,运行 AI 训练和推理工作。Kubernetes 在 AI 训练方面次要有两个劣势:
- 首先,Kubernetes 反对 GPU 调度,能够缩小协调 GPU 资源所需的人力。同时,它能够实现 GPU 资源的主动回收,做到资源的无效调配;
- 其次,Kubernetes 反对多种负载的调度形式,适应不同的业务场景,作业与训练任务两者切合度十分高。
在主动驾驶训练过程中,存储系统对接容器场景经常遇到以下问题:
- 采纳 in-tree 类型的存储代码,如 CephFS、GlusterFS、NFS 等,使得 Kubernetes 和存储厂商的代码紧耦合;
- 更改 in-tree 类型的存储代码,用户必须更新 Kubernetes 组件,老本较高;
- in-tree 存储代码中的 BUG 会引发 Kubernetes 组件不稳固;
- in-tree 存储插件享有与 Kubernetes 外围组件等同的特权,存在安全隐患;
- 仅反对局部 AccessModes、PV 治理、故障等方面的个性。
焱融 YRCloudFile 从设计到实现,次要场景就是解决 Kubernetes 环境中,容器化利用对存储的拜访需要。焱融 YRCloudFile 通过反对 CSI、FlexVolume 等插件,实现对 AI 场景容器长久化存储的反对,并且依据客户实际利用,针对容器化场景的性能进行了优化:
- 海量 PV 场景下,疾速定位 PV 热点,反对 RWO、RWX 等多种读写模式;
- 实现 CSI 对 PV 的智能调度;
- 依赖 PV 的 Pod 跨节点疾速重建;
- 出现 Pod、PV、PVC 实时监控与关联关系。
YRCloudFile 穿透主动驾驶存储全链增长
YRCloudFile 高性能分布式文件存储架构图
通过焱融 YRCloudFile,该 L4 级主动驾驶公司冲破了存储性能的瓶颈,完满对接容器服务,实现数据追随服务。另外,通过疾速定位 PV 热点,该公司实现出现 Pod、PV、PVC 实时监控与关联关系等独创性的治理性能,晋升容器的管理效率。
以后,该 L4 级主动驾驶公司在焱融 YRCloudFile 高性能、高可用、易扩大的分布式存储撑持平台的帮忙下,能够轻松应答海量小文件性能、容量的挑战。同时,满足了将来扩容需要。将来,该公司工作人员将极大缩小在存储系统治理、配置和排错的工夫,将更多的精力投入到训练业务中。