WeRide(文远知行)实践经验分享:如何搭建一个服务于机器学习和AI任务的混合云存储网关

在本文中,来自WeRide基础架构和模拟测试部门的执行董事Derek Tan将向我们介绍WeRide的工程师是如何使得应用通过一个混合云存储的数据网关实现对公有云存储(例如:AWS S3)的本地化访问的。这种新的数据访问架构通过在集群中的每个位置提供本地化的缓存,以减少对S3存储的冗余数据传输请求数。除了能够降低人工数据同步带来的复杂性之外,Alluxio为处于相同部门并使用相同数据的工程师们提供直接的数据访问服务,以减少和S3有关的数据传输开销。

WeRide遇到的数据挑战

WeRide是一家致力于研发L4级别自动驾驶算法的智能车企业。和其他所有自动驾驶企业一样,WeRide从真实的道路测试中不断地收集数据,并将这些数据用于模型训练、算法测试以及模拟测试等多个方面。截至目前,WeRide已经积累了200万公里的自动驾驶数据记录,并且,随着越来越多的测试载具投入运行,这个数据的增长速率只会变得越来越快。2020年,WeRide每天将会产生TB级别的数据,并且我们估计这一数字将在明年变为现在的十倍

除了从道路测试中收集到的数据外,诸如模拟测试、软件在环测试(SIL)、模型基准测试等应用每天也同样会产生数TB的数据。在未来,随着我们的技术进步,这些应用将会持续地产生数据,这些数据中将会包含更大的数据集以让我们能够应对更多的边界情况。

WeRide是一家工作地点遍布全球的企业,在美国的圣何塞,中国的广州、北京、上海、安庆等城市都有WeRide的团队。这些团队会并行地产生和消费数据,我们使用AWS S3云存储,以数据湖方式实现跨团队的数据共享。
当需要为我们的自动驾驶车辆设计一个新算法,或是在已有算法中找到问题所在时,我们的工程师需要基于现有的数据对该算法进行测试。我们在上文提到的数据架构造成了诸多瓶颈例如:

1.开发迭代缓慢:在进行开发或调试之前,工程师首先需要将最新的数据从云端下载到工程师所在的本地环境中,因此这个过程常常受限于下载速度和网络带宽。

2.不必要的高昂外网访问开销:每次从S3下载数据都要支付相应的外网访问的流量费用,通常来说为了调试算法中的一个问题,多位工程师将会协同合作。一个工程师下载数据时花在数据传输上的费用最多可达5美元,即使这些工程师正在使用的是同一个数据集,数据传输费用也会随着参与解决问题的工程师的增加而成倍增加。

  1. 易出错的数据同步过程:在WeRide,我们构建了一个自定义的数据上传过程,在该过程中,我们不仅将把数据上传到云存储中,还会将该数据在本地环境的HDFS集群或NAS保留一份本地副本。为了让工程师能够更快地访问数据,这份本地环境的数据副本是必要的,但这个过程会导致数据同步问题。目前,我们通过一个定时任务周期性地清理本地数据来维护本地数据副本与云端数据的一致性
    之前使用的架构如下图所示:
    在这里插入图片描述使用Alluxio搭建的新架构
    在进行了一些调研后,我们意识到我们接下来将要介绍的新架构会为我们带来以下收益:

  2. 始终以S3存储中的数据作为唯一标准数据源,解决跨工作室的数据冲突问题

  3. 以S3为底层存储系统,部署一个本地缓存系统,为各类应用提供数据访问服务,加速各工作室的开发过程。

但是,完全从零开始开发一个供内部使用的缓存系统以满足WeRide的业务需求是高代价且没有必要的,因此我们决定从现有的技术中选择能够满足我们需求的技术,该技术还同时需要满足下列要求:

  1. 它应当是低成本甚至无成本就可以使用的一种成熟技术,应当在大规模数据访问相关问题上“身经百战”
  2. 它应当可以通过简单的集成即可立即投入使用,并且不会引入新的ETL任务
  3. 它应当具备相当的可扩展能力,让我们在预算允许的情况下充分利用更好的硬件设备

按照上述标准,Alluxio成为我们实现数据加速访问的首选。Alluxio不仅与S3云存储系统兼容,它还同时提供POSIX和HTTP两种简易的访问接口。Alluxio作为一个开源技术,我们可以在不增加任何业务开销的情况下将它集成进我们的系统。

我们使用Alluxio搭建的新架构如下图所示:
在这里插入图片描述我们在每一个工作室的小型本地集群上均部署了Alluxio,Alluxio会以S3作为唯一标准的数据源。道路测试产生的数据会被直接上传到本地的Alluxio集群中,这些数据能够被同工作室的其他工程师直接使用。与此同时,Alluxio自动地在后台将这些道路测试数据上传到S3,当位于其他地区的工作室的工程师想要使用该道路测试数据时,该工程师会向他所在环境的Alluxio集群提交请求,如果该数据已被缓存在Alluxio中,这些数据将立即返回,否则会首先从S3进行数据拉取。为了进一步降低从S3拉取数据的延时,我们与Alluxio团队合作实现了一个分布式数据加载命令,该命令能够同时开启多个连接下载数据。该命令已经作为Alluxio 2.1.0版本的新特性之一发布。

有了Alluxio,应用所需的从云上拉取的数据同样会被缓存到本地环境中,这在之前的架构中仅有在该数据是由同工作室其他工程师上传时才会发生。考虑这样的一个常见场景,当一个工程师希望能够审阅同工作室另一个工程师进行的模拟测试结果时,该工程师能够立刻拿到所需的数据。

在使用Alluxio的过程中,我们观察到了以下好处:

  • 通过提供一个单一的数据访问接口,并且将自定义的本地数据缓存过程去除后,降低了由数据同步问题带来的复杂性

  • 提供了一种使得工作室内部共享云端数据缓存的开箱即用解决方案

  • 高效的数据访问显著提升了工程效率

  • 减少因从S3下载冗余数据而造成的外网流量费用

下一步的工作

通过Alluxio进行数据传输已经成为关联云端数据和工作室内部数据副本的关键组成部分。为了更好地改进这套系统,我们正在与Alluxio团队合作,致力于添加与数据传输策略相关的新特性。我们认为,在工作时间限制上传带宽或者是控制特定文件类型的传输优先级能够为我们的工程师提供更多的帮助。

总 结

WeRide的目标是在未来能提出L4级别的自动驾驶技术方案。数据访问是开发智能载具的一个关键部分。以Alluxio作为本地环境的缓存层,我们能够在降低数据同步问题带来的复杂性的同时,减少对S3云存储的冗余数据传输请求,这意味着每次每位工程师需要数据时都能节省5美元的开销。我们十分期待将来能够与Alluxio进行更深入的合作,以更经济的方式实现我们的数据访问目标。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值