这些年来,Uber 的增长速度是指数级的,如今我们公司每天支持 1400 万次出行,我们的工程师也证明了他们可以实现大规模扩展。这种价值还延伸到了其他领域,其中就包括 Uber ATG(先进技术小组)和他们开发自动驾驶汽车的努力。
这项工作中的一个关键环节,就是创建机器学习(ML)模型来处理诸如传感器输入、对象识别以及预测这些对象可能去向这样的任务。解决这一问题所需的诸多模型,以及致力于解决这些问题的庞大工程师团队本身,催生了管理和版本控制问题。
为了解决这个问题,我们一开始定义了一个五步骤生命周期,以在我们的自动驾驶汽车中训练和部署 ML 模型。这个生命周期从数据摄取开始,一直发展到模型服务,接下来还要确保模型运行良好。这个流程使我们能够有效加快自动驾驶汽车组件的迭代,从而不断改善其表现以实现最高标准。
我们还能进一步自动化这一流程以更好地管理开发涉及的诸多模型。由于自动驾驶领域中 ML 模型的深度依赖性和开发的复杂性,我们开发了 VerCD,这是一套支持 ML 工作流的工具和微服务集合。VerCD 使我们可以使用自动化持续交付(CD)来追踪和管理 ML 工件的依赖项版本。
开发大规模模型的 ML 团队可能会发现,这里提到的 Uber ATG 为自动驾驶技术开发的五步模型生命周期,与 VerCD 的实践和工具可应用于多种用例,从而帮助他们迭代自己的基础设施。
自动驾驶汽车组件
我们的自动驾驶汽车组件有很多都使用 ML 模型,从而使车辆能够安全、准确地行驶。一个组件会包含一个或多个 ML 模型,所有组件在一起构成我们的自动驾驶汽车软件:
感知:该组件使用来自车辆的传感器信息,通过 ML 模型检测给定场景中的角色(actor)。它会标识每种对象类型(车辆、行人、自行车等)的概率及其 3D 坐标。通过检测,无人驾驶车辆可以看到环境中的不同物体,并解析它们的类型和位置。
预测:该组件基于感知组件的输出(场景中所有角色的类型和 3D 坐标)以及高清地图,使用 ML 模型来预测给定场景中 n 秒内各个角色的未来轨迹。预测组件使自动驾驶汽车可以预测各个角色在未来最有可能位于何处。
运动计划:该组件使用自动驾驶汽车的目的地、场景中所有角色的预测轨迹、高清地图和其他机制来规划汽车的行驶路径。
控制:该组件操纵自动驾驶汽车的车轮,并操作其制动器和加速器,以遵循运动计划组件创建的路径行驶。
每个组件都建立在前一个组件生成的输出的基础上,以将我们的自动驾驶汽车正确地引导到目的地。包含这些组件的 ML 模型都会经过我们的五步迭代流程处理,以确保它们能有最佳的操作。