什么是NVIDIA TLT迁移学习工具?

195 0 2020-09-19

Transfer Learning Toolkit(TLT)是一个基于python的AI工具包,用于获取专门构建的预先训练的AI模型并使用您自己的数据进行自定义。迁移学习将学习到的特征从现有的神经网络提取到新的神经网络。当创建大型训练数据集不可行时,经常使用迁移学习。开发智能视觉AI应用程序和服务的开发人员,研究人员和软件合作伙伴可以将自己的数据用于微调经过预先训练的模型,而无需从头开始进行训练。

NVIDIA将这个工具包定义为:



NVIDIA Transfer Learning Toolkit(TLT)是一种简单易用的训练工具包,只需最少的编码或零编码即可使用用户自己的数据创建视觉AI模型。使用TLT,用户可以将学习从NVIDIA预训练模型迁移到您自己的模型。用户可以将新类添加到现有的预先训练的模型中,也可以重新训练模型以适应其用例。用户可以使用模型修剪功能来减小模型的整体大小。

TLT入门非常容易。使用TLT训练AI模型不需要AI或深度学习方面的专业知识。具有深度学习基础知识的用户可以开始使用简单的spec文件和预先训练的模型来构建自己的定制模型。



迁移学习工具包是一种简化的工具包,用户可以从我们的预训练模型和自己的自定义数据集入手。迁移学习工具包位于docker容器中,可以从NGC下载容器带有训练所需的所有依赖项。

预训练的模型也可以从NGC下载。该工具包包含一个命令行界面(CLI),可以从Jupyter笔记本运行,这些笔记本包装在Docker容器中。TLT由一些简单的命令组成,例如数据增强,训练,修剪和模型导出。TLT的输出是经过训练的模型,可以使用DeepStreamTensorRT在NVIDIA边缘设备上进行部署以进行推理

TLT建立在CUDA-X堆栈之上,该堆栈包含所有较低级别的NVIDIA库。这些是用于从容器内部进行GPU加速的NVIDIA容器RT,用于许多DL操作的CUDA和cuDNN,以及用于生成与TensorRT兼容的模型进行部署的TensorRT。TensorRT是NVIDIA的推理运行时,可根据目标硬件优化运行时模型。使用TensorRT完全加速了TLT生成的模型,因此用户可以期望最大的推理性能而无需任何额外的努力。

TLT旨在在具有NVIDIA GPU的x86系统上运行,例如基于GPU的工作站或DGX系统,或者可以在具有NVIDIA GPU的任何云中运行。为了进行推理,可以将模型部署在任何边缘设备(例如嵌入式Jetson平台)或数据中心GPU(例如T4)中。

模型修剪是TLT的主要区别之一。修剪意味着删除神经网络中对模型的整体准确性影响较小的节点。通过修剪,用户可以显着减小模型的整体大小,从而大大减少内存占用量并提高推理吞吐量,这对于边缘部署非常重要。下图显示了从NVIDIA T4的未修剪模型到修剪模型的性能提升。NGC提供了3种自定义的预训练模型,即TrafficCamNet,DashCamNet和PeopleNet。 

预训练模型

用户可以从两种类型的预训练模型开始。一种是特制的预训练模型。这些是高度精确的模型,可针对特定任务在数百万个对象上进行训练。其他类型的模型是元体系结构视觉模型。这些模型的预训练权重仅作为构建更复杂模型的起点。这些预训练的权重在开放图像数据集上进行训练,与从头开始或从随机权重开始相比,它们提供了更好的训练起点。使用后一种选择,用户可以从80多种模型架构和骨干排列中进行选择。请参见下图。

TLT工作流程


TLT的目标是使用用户自己的数据集来训练和微调模型。在下面显示的工作流程图中,用户通常从NGC的预训练模型开始;要么是高度精确的专用模型,要么只是他们选择的架构的预训练权重。另一个输入是用户自己的数据集。数据集被馈送到数据转换器,该数据转换器可以在训练向数据集引入变异的同时扩充数据。这在训练中非常重要,因为数据变化可提高模型的整体质量并防止过拟合。用户还可以使用TLT进行离线扩充,在训练之前对数据集进行扩充。


一旦准备好数据集并进行扩充,训练过程的下一步就是开始训练。训练超参数通过spec文件选择。要了解用户可以调节的所有旋钮,请参阅创建实验规范文件在第一个训练阶段之后,用户将根据测试集评估模型,以查看模型如何处理从未见过的数据。一旦认为模型正确,下一步就是模型修剪。如果准确性不如预期,则用户可能必须调整一些超参数并重新训练。培训是一个非常反复的过程,因此您可能需要尝试几次,然后才能找到正确的模型。

在模型修剪中,TLT将在算法上从神经网络中删除神经元,这不会对总体准确性产生重大影响。模型修剪步骤会无意中降低模型的准确性。因此,修剪后,下一步是在同一数据集上重新训练模型以恢复丢失的准确性。重新训练后,用户将在同一测试集上评估模型。如果精度恢复到修剪前的水平,则用户可以转到模型导出步骤。在这一点上,用户对模型的准确性以及推理性能充满信心。可以使用DeepStream和TensorRT在任何NVIDIA GPU上直接部署“ etlt”格式。在导出步骤中,用户可以选择生成INT8校准缓存,该缓存将浮点权重量化为整数。以INT8精度运行推理可以提供比FP16或FP32精度高2倍的性能,而不会牺牲模型的精度。要了解有关模型导出和部署的更多信息,请参阅 以INT8精度运行推理可以提供比FP16或FP32精度高2倍的性能,而不会牺牲模型的精度。

要了解有关模型导出和部署的更多信息,请参阅 以INT8精度运行推理可以提供比FP16或FP32精度高2倍的性能,而不会牺牲模型的精度。要了解有关模型导出和部署的更多信息,请参阅导出模型 并部署到DeepStream


使用迁移学习工具包执行以下任务:

下载模型 -下载预训练的模型。

准备数据集 -评估模型以进行目标预测。

训练模型 -训练或重新训练数据以创建和完善模型。

评估模型 -评估模型以进行目标预测。

修剪模型 -修剪模型以减小尺寸。

导出模型 -导出模型以进行TensorRT推断。