你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

创建自动驾驶汽车运营 (AVOps) 解决方案

Azure 机器学习
Azure 数据工厂
Azure Data Share
Azure Batch
GitHub

解决方案构想

本文介绍了一种解决方案构想。 云架构师可以通过本指南来帮助可视化此体系结构的典型实现的主要组件。 以本文为起点,设计一个符合工作负荷特定要求的架构合理的解决方案。

此体系结构提供有关开发自动驾驶解决方案的指导和建议。

体系结构

显示 AVOps 体系结构的示意图。

下载包含本文中的体系结构示意图的 Visio 文件

数据流

  1. 测量数据来自摄像头、雷达、超声波、lidar(光探测与测距)和汽车遥测等传感器的数据流。 汽车中的数据记录器将测量数据存储在记录器存储设备上。 记录器存储数据随后会上传到登陆数据湖。 Azure Data BoxAzure Stack Edge 等服务或者 Azure ExpressRoute 等专用连接将数据引入 Azure。

    测量数据也可以是来自模拟或其他源的合成数据。 (MDF4、TDMS 和 rosbag 是测量数据的常用格式。)在 DataOps 阶段,将处理引入的测量数据。 执行验证和数据质量检查(例如校验和)以删除低质量数据。 在此阶段,将提取试驾员在试驾期间记录的原始信息元数据。 此数据存储在集中式元数据目录中。 此信息可帮助下游过程识别特定的场景和序列。

  2. 数据由 Azure 数据工厂提取、转换和加载 (ETL) 管道处理。 输出作为原始数据和二进制数据存储在 Azure Data Lake 中。 元数据存储在 Azure Cosmos DB 中。 根据具体的方案,元数据可能被发送到 Azure 数据资源管理器Azure 认知搜索

  3. 在数据中添加其他信息、见解和上下文以提高其准确性和可靠性。

  4. 提取的测量数据通过 Azure Data Share 提供给标记合作伙伴(人在回路)。 第三方合作伙伴通过单独的 Data Lake 帐户自动标记、存储和访问数据。

  5. 标记的数据集流向下游 MLOps 过程,主要用于创建感知和传感器融合模型。 这些模型执行由自动驾驶汽车用来检测场景(即车道变换、阻塞道路、行人、交通灯和交通标志)的功能。

  6. ValOps 阶段,通过开环和闭环测试验证已训练的模型。

  7. Azure Kubernetes 服务Azure 容器实例上运行的 Foxglove 等工具能够可视化引入和处理的数据。

数据收集

数据收集是自动驾驶汽车运营 (AVOps) 的主要挑战之一。 下图中的示例演示了如何收集脱机和联机汽车数据并将其存储在数据湖中。

显示脱机和联机数据收集的示意图。

DataOps

数据运营 (DataOps) 是用于提高数据操作的质量、速度和可靠性的一套实践、过程和工具。 自动驾驶 (AD) 的 DataOps 流旨在确保用于控制汽车的数据保持高质量、准确且可靠。 使用一致的 DataOps 流可以提高数据操作的速度和准确性,并做出更好的决策来控制自动驾驶汽车。

DataOps 组件

  • Data Box 用于通过区域运营商将收集的汽车数据传输到 Azure。
  • ExpressRoute 通过专用连接将本地网络扩展到 Microsoft 云。
  • Azure Data Lake Storage 根据阶段存储数据,例如原始数据或提取的数据。
  • Azure 数据工厂通过批处理计算执行 ETL,并创建数据驱动的工作流来协调数据移动和转换数据。
  • Azure Batch 运行大规模应用程序来执行数据整理、数据筛选和准备以及提取元数据等任务。
  • Azure Cosmos DB 存储元数据结果,例如存储的测量数据。
  • Data Share 用于以增强的安全性与合作伙伴组织(例如标记公司)共享数据。
  • Azure Databricks 提供一套工具用于大规模维护企业级数据解决方案。 它需要对大量汽车数据长时间运行操作。 数据工程师使用 Azure Databricks 作为分析工作台。
  • Azure Synapse Analytics 缩短了跨数据仓库和大数据系统获取见解的时间。
  • Azure 认知搜索提供数据目录搜索服务。

MLOps

机器学习运营 (MLOps) 包括:

  • 特征提取模型(例如 CLIP 和 YOLO),用于在执行 DataOps 管道期间对场景进行分类(例如,场景中是否有行人)。
  • 自动标记模型,用于标记引入的图像以及 lidar 和雷达数据。
  • 感知和计算机视觉模型,用于检测物体和场景。
  • 传感器融合模型,用于组合传感器流。

感知模型是此体系结构的重要组件。 此 Azure 机器学习模型使用检测和提取的场景生成物体检测模型。

在 MLOps 管道中将容器化机器学习模型转换为可由系统级芯片 (SoC) 硬件和验证/模拟软件读取的格式。 此步骤需要 SoC 制造商的支持。

MLOps 组件

  • Azure 机器学习用于开发机器学习算法,例如特征提取、自动标记、物体检测和分类,以及传感器融合。
  • Azure DevOps 为 CI/CD、测试和自动化等 DevOps 任务提供支持。
  • 面向企业的 GitHub 是 DevOps 任务(例如 CI/CD、测试和自动化)的替代选择。
  • Azure 容器注册表让你可以在专用注册表中生成、存储和管理容器映像与项目。

ValOps

验证运营 (ValOps) 是在执行高开销的现实环境测试之前,通过托管方案在模拟环境中测试开发模型的过程。 ValOps 测试有助于确保模型符合所需的性能标准、准确度标准和安全要求。 云中验证过程的目的是在你将自动驾驶汽车部署到实际环境之前,识别并解决任何潜在问题。 ValOps 包括:

  • 模拟验证。 使用基于云的模拟(开环闭环测试)环境可对自动驾驶汽车模型进行虚拟测试。 这种测试可大规模运行,并且比现实测试成本更低。
  • 性能验证。 基于云的基础结构可以运行大规模测试来评估自动驾驶汽车模型的性能。 性能验证包括压力测试、负载测试和基准测试。

使用 ValOps 进行验证可帮助你利用基于云的基础结构的可伸缩性、灵活性和成本效益,并缩短自动驾驶汽车模型的面市时间。

开环测试

重新模拟或传感器处理是用于实现自动驾驶功能的开环测试和验证系统。 这是一个复杂的过程,可能需要在安全性、数据隐私性、数据版本控制和审核方面满足监管要求。 重新模拟通过云中的图处理从各种汽车传感器记录的原始数据。 重新模拟验证数据处理算法或检测回归。 OEM 将传感器组合在代表现实汽车的有向无环图中。

重新模拟是一个大规模的并行计算作业。 它使用数万个核心来处理数十甚至数百 PB 的数据。 它所需的 I/O 吞吐量超过 30 GB/秒。 来自多个传感器的数据将组合成数据集,代表汽车在现实世界中行驶时车载计算机视觉系统记录的视图。 开环测试使用重播和评分根据真实情况验证算法的性能。 输出随后将在算法训练工作流中使用。

  • 数据集源自收集原始传感器数据(例如摄像头、lidar、雷达和超声波数据)的测试车队。
  • 数据量取决于摄像头分辨率和汽车上的传感器数量。
  • 根据设备的不同软件版本重新处理原始数据。
  • 原始传感器数据将发送到传感器软件的传感器输入接口。
  • 将输出与以前软件版本的输出进行比较,并检查它是否与发布 bug 修复或新功能(例如检测新对象类型)后的情况相符。
  • 在更新模型和软件后对作业执行第二次重新注入。
  • 真实数据用于验证结果。
  • 结果将写入存储并卸载到 Azure 数据资源管理器进行可视化。

闭环测试和模拟

自动驾驶汽车的闭环测试是在考虑环境的实时反馈的同时测试汽车功能的过程。 汽车操作基于其预先设定的行为和遇到的动态条件,其操作会相应地调整。 闭环测试在较复杂的真实环境中运行。 它用于评估汽车应对现实场景的能力,包括如何对意外情况做出反应。 闭环测试的目的是验证汽车在各种条件下能否安全有效地工作,并根据需要细化其控制算法和决策过程。

ValOps 管道集成了闭环测试、第三方模拟和 ISV 应用程序。

方案管理

在 ValOps 阶段,将使用真实场景目录来验证自动驾驶解决方案模拟自动驾驶汽车行为的能力。 目标是通过从可公开访问的、可免费获得的数字地图中自动读取作为场景一部分的路线网络来加速场景目录的创建。 使用第三方工具进行场景管理,或使用轻型开源模拟器,例如支持 OpenDRIVE (xodr) 格式的 CARLA。 有关详细信息,请参阅 CARLA 的 ScenarioRunner

ValOps 组件

  • Azure Kubernetes 服务在 Resin 框架中运行大规模批量推理以进行开环验证。 建议使用 BlobFuse2 访问测量文件。 也可以使用 NFS,但需要评估用例的性能。
  • Azure Batch 在 Resin 框架中运行大规模批量推理以进行开环验证。
  • Azure 数据资源管理器为测量和 KPI(即重新模拟和作业运行)提供分析服务。

集中式 AVOps 功能

AVOps 体系结构非常复杂,涉及各种第三方、角色和开发阶段,因此实现良好的治理模型非常重要。

我们建议组建一个集中式团队来处理基础结构预配、成本管理、元数据和数据目录、世系以及整体业务流程和事件处理等功能。 集中化这些服务是高效的做法,并可以简化操作。

建议由一个集中式团队处理这些职责:

  • 提供 ARM/Bicep 模板,包括用于标准服务(例如 AVOps 体系结构的每个区域和子区域使用的存储和计算)的模板
  • 实现中心 Azure 服务总线/Azure 事件中心实例以便对 AVOps 数据循环进行事件驱动的协调
  • 元数据目录的所有权
  • 跨所有 AVOps 组件的端到端世系和可追溯性功能

显示集中式 AVOps 功能的示意图。

方案详细信息

可以使用此体系结构在 Azure 上构建自动驾驶解决方案。

可能的用例

开发自动驾驶解决方案的汽车 OEM、一级供应商和 ISV。

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改进工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

安全性

安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述

请务必了解汽车 OEM 与云提供商之间的责任划分。 在汽车中,OEM 拥有整个堆栈,但随着数据迁移到云,某些责任会转移到云提供商。 Azure 平台即服务 (PaaS) 在物理堆栈(包括操作系统)上提供内置的改进安全性。 除了基础结构安全组件之外,还可应用以下改进。 这些改进使零信任方法成为可能。

成本优化

成本优化就是减少不必要的费用和提高运营效率。 有关详细信息,请参阅成本优化支柱概述

可以使用这些策略来降低与开发自动驾驶解决方案相关的成本:

  • 优化云基础结构。 精心规划和管理云基础结构有助于降低成本。 例如,使用经济高效的实例类型和缩放基础结构来满足不断变化的工作负载需求。 遵循 Azure 云采用框架中的指导。
  • 使用现成虚拟机。 你可以确定 AVOps 部署中的哪些工作负载不需要在特定时间范围内进行处理,并为这些工作负载使用现成虚拟机。 现成虚拟机允许你利用未使用的 Azure 容量来大幅节省成本。 如果 Azure 需要回收容量,Azure 基础结构将逐出现成虚拟机。
  • 使用自动缩放。 使用自动缩放可以根据需求自动调整云基础结构,从而减少人工干预并帮助降低成本。 有关详细信息,请参阅缩放设计
  • 考虑将热层、冷层和存档层用于存储。 在自动驾驶解决方案中,存储可能是一笔高昂的成本,因此你需要选择经济高效的存储选项,例如冷存储或不经常访问的存储。 有关详细信息,请参阅数据生命周期管理
  • 使用成本管理和优化工具。 借助 Microsoft 成本管理提供的工具,可以确定能够在哪些方面降低成本(例如未使用或未充分利用的资源)并为此采取措施。
  • 考虑使用 Azure 服务。 例如,可以使用 Azure 机器学习来构建和训练自动驾驶模型。 使用这些服务可能比构建并维护内部基础结构更具成本效益。
  • 使用共享资源。 如果可能,你可以使用共享资源(例如共享数据库或共享计算资源)来降低与自动驾驶开发相关的成本。 例如,此体系结构中的集中式功能实现中心总线、事件中心和元数据目录。 Azure Data Share 等服务也可以帮助实现此目标。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

其他参与者:

要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤

有关为自动驾驶系统开发 DataOps 的更多信息,请参阅:

也有可能对下列相关文章感兴趣: