接上篇文章:如何打造自动驾驶的数据闭环?(上)
3训练数据标注工具其实AWS的机器学习平台本身也提供了数据标注工具AmazonSageMakerGroundTruth。
如图是微软开源标注工具VOTT(VideoObjectTaggingTool):
标注工具可以是全自动、半自动和手工等3类。
比如人工标注工具:摄像头图像LabelMe和激光雷达点云PCAT
还有半自动标注工具:摄像头CVAT、VATIC,激光雷达3DBAT、SAnE,图像点云融合Latte
自动标注工具:基本没有开源(商用也没有吧)的工具可用。
这里有一些自动标注方面的论文:
“BeattheMTurkers:AutomaticImageLabelingfromWeak3DSupervision“
“Auto-Annotationof3DObjectsviaImageNet“
“Offboard3DObjectDetectionfromPointCloudSequences“
这里是Nvidia在会议报告中给出的端到端标注流水线:它需要人工介入
在这里顺便提一下“数据可视化”的问题,各种传感器数据除了标注,还需要一个重放、观察和调试的平台。如图是Uber提供的开源可视化工具AutonomousVisualizationSystem(AVS):
其中”XVIZ“是提出的自动驾驶数据实时传输和可视化协议:
另外,“streetscape.gl“是一个可视化工具包,在XVIZ协议编码自动驾驶和机器人数据。它提供了一组可组合的React组件,对XVIZ数据进行可视化和交互。
4大型模型训练平台模型训练平台,主要是机器学习(深度学习)而言,前面亚马逊AWS提供了自己的ML平台SageMaker。我们知道最早有开源的软件Caffe,目前最流行的是Tensorflow和Pytorch(Caffe2并入)。
TensorflowPytorch在云平台部署深度学习模型训练,一般采用分布式。按照并行方式,分布式训练一般分为数据并行和模型并行两种。当然,也可采用数据并行和模型并行的混合。
模型并行:不同GPU负责网络模型的不同部分。例如,不同网络层被分配到不同的GPU,或者同一层不同参数被分配到不同GPU。
数据并行:不同GPU有模型的多个副本,每个GPU分配不同的数据,将所有GPU计算结果按照某种方式合并。
模型并行不常用,而数据并行涉及各个GPU之间如何同步模型参数,分为同步更新和异步更新。同步更新等所有GPU的梯度计算完成,再计算新权值,同步新值后,再进行下一轮计算。异步更新是每个GPU梯度计算完无需等待,立即更新权值,然后同步新值进行下一轮计算。
分布式训练系统包括两种架构:ParameterServerArchitecture(PS,参数服务器)和Ring-AllReduceArchitecture(环-全归约)。
如下图是PS结构图:
这个图是RingAllReduce的架构图:
Pytorch现在和多个云平台建立合作关系,可以安装使用。比如AWS,在AWSDeepLearningAMIs、AWSDeepLearningContainers和AmazonSageMaker,都可以训练Pytorch模型,最后采用TorchServe进行部署。
Pytorch提供两种方法在多GPU平台切分模型和数据:
DataParalleldistributedataparallelDataParallel更易于使用。不过,通信是瓶颈,GPU利用率通常很低,而且不支持分布式。DistributedDataParallel支持模型并行和多进程,单机/多机都可以,是分布训练。
PyTorch自身提供几种加速分布数据并行的训练优化技术,如bucketinggradients、overlapping