一直以来,Uber 都没有公开谈过自家的自动驾驶平台架构。不久前,Uber 终于透过一篇部落格文章详细讲述 ATG 部门在测试、验证和部署 AI 模型时用到的黑科技。
透过这篇文章,不但能进一步认识到自动驾驶汽车研发的複杂性,还能对 Uber 的自动驾驶标準有更深的了解,毕竟后者是少数经历过自动驾驶伤亡事故、并进行长时间深刻反思的公司。
据 Uber 介绍,ATG 部门工作流中最重要的部分是 VerCD,这是一套专为 Uber 旗下自动驾驶原型车研发的工具与微服务。它能追蹤研发过程中不同代码库、数据集和 AI 模型的相关性,保证工作流从数据提取阶段开始,随后逐步过渡到数据验证、模型训练评估与服务阶段。
「VerCD 已经成了 Uber ATG 部门自动驾驶感测器训练数据的可靠来源。」Uber 在文章中写道,「将工作流中的数据集转上 VerCD 后,我们数据集刷新的频率已经提升了十倍有余,效率有了重大进步。对经常使用的数据集进行定期维护,也加速了机器学习工程师产品迭代的速度,因为他们能即时利用数据集做实验,而非花几天时间等待数据集搭建完成。」
「此外,我们还定下了目标探测与路径预测模型的日常训练与每週训练工作,这样密集的训练频率不但缩短了探测时间,还加快了 bug 的修复速度。」
VerCD 管理的数据集来自 ATG 自动驾驶汽车採集的日誌
Uber 指出,VerCD 背后的大部分工程都花在添加公司专属的整合工作上,这是为了使现有系统能够与 ATG 的完整端到端机器学习工作流程进行互动。为此,最新版 VerCD 的 Orchestrator 服务可以调用各种数据原语来构建自动驾驶汽车的运行时间以进行测试,或者在使用深度学习库创建图像,并在资料中心之间来回複製数据集时与代码储存库进行互动。
VerCD 管理的数据集们来自于 ATG 自动驾驶汽车採集的日誌。这里所说的日誌数据包括镜头拍到的图像、LiDAR 生成的点云、雷达採集到的资讯、车辆状态(位置、速度、加速和指向),以及地图数据(比如车辆路线和行驶车道)。在工作中,日誌数据还会被分为训练数据、测试数据和验证数据,其中 75% 的数据会用于训练、15% 用于测试,而剩下的 10% 会用在验证上。为了更好的对日誌数据进行分类,Uber 还专门开发了基于地理位置的专属工具 GeoSplit。
一般来说,VerCD 用户可提供任何数据集,模型或度量标準构建的相关性,而数据库后端是 VerCD 管理此类资讯的「据点」。新数据集注册完成后,VerCD 数据集服务会将相关元数据储存在补充数据库中。数据集会透过名称和版本号以及 VerCD 追蹤的相关项进行唯一标识,进而準确地从自动驾驶汽车中複製感测器日誌 ID、描述数据集生命週期的元数据等。机器学习模型也会打上唯一标识,支援诸如版本化数据集和 AI 模型训练配置文件路径的複製。
在机器学习训练上,Uber ATG 用到「双线作战」的混合方式,训练工作不但会在资料中心执行,还会在云端开展。在这里,Uber 的开源统一资源调度程式 Peloton 也非常有用。
一旦机器学习工程师在 VerCD 的模型服务 API 中定义好实验模型,ATG 的系统就会开始对其进行训练。在验证中,VerCD 还允许实验与生产模型间的平滑过渡,Uber 认为这对複验性和可追溯性至关重要。
基于训练中的表现,VerCD 会为各种模型标上「失误」、「故障」和「成功」等描述。如果一个模型确实故障或必须被抛弃,机器学习工程师可以选择用新的参数对模型进行重构。此外,VerCD 还能主导模型的验证,即基于训练过的特殊模型对训练管道进行检查。Uber 指出,只有在构建和验证上同时取得成功,一个模型才会被升级为生产模型。
在外界看来,这篇文章也是 Uber 提高透明度的尝试。坦白来讲,Uber 在自动驾驶汽车研发上的纪录好坏参半。
2018 年 12 月,他们重启在匹兹堡的自动驾驶测试测试,之前因为亚利桑那的一场致命事故,Uber 的自动驾驶车队禁足了 8 个月。国家运输安全委员会(NTSB)的调查结果显示,Uber 禁用了车祸中沃尔沃 XC90 的自动煞车系统(该公司在内部文件中表示,这样做是为了「减少车辆不规律行为的可能性」)。
在 2018 年 6 月发布的一篇部落格文章中,Uber ATG 负责人 Eric Meyhofer 详细介绍了公司新实施的保障措施,例如针对安全手动驾驶和监控系统的培训计画。如果驾驶员将视线移开道路,远程监控人员会收到警报。在向国家公路交通安全管理局(NHTSA)提交的安全评估中,Uber 表示,凭藉其新成立的系统工程测试团队,Uber 现在「可以对许多可能的结果进行推理,最终做出安全回应」。