一文说清楚如何如何利用NVIDIA工具包和生成式AI改变视觉AI应用

2023-11-06 16:10:50 浏览数 (2)

本文来自NVIDIA讲座《Transform Your Vision AI Applications With Gen AI 》

在过去的十二个月里,生成式AI已经改变了文本和语言处理,不久后我们将达到一个临界点,同样的技术将应用于计算机视觉和多模态应用,将基于文本的计算机视觉和音频结合在一起。2023年将改变AI领域的发展轨迹。我们看到新的模型迅速涌现,我们想向您展示如何在您的应用中充分利用这些技术。

让我们来谈谈在各种行业中我们所见到的一些生成式AI的用例。

其中一个具有很大潜力的应用是视频搜索代理。想象一下,在一个仓库中,您希望检测叉车,为此我们需要创建一个神经网络来检测叉车。但如果您还想检测仓库中的其他物体,比如人、滑板车、汽车,那么您需要不断地重新训练您的模型,但是如果使用基于生成式AI的模型,因为它具有可泛化的能力,不需要不断重新训练模型,因此可以减少开发时间,加快上市速度,同时我们也看到这些模型的准确性更高。

在实时资产跟踪方面,当您的空间中有数百台机器人和数百名员工时,您可以更好地了解在特定时刻发生了什么,您的资产是如何处理的。有了这些生成式AI的模型,由于它们具有泛化能力并提供更高的准确性,您可以更好地了解正在您的空间中发生的情况。

我们还在自动驾驶领域看到了这些应用。使用成式AI的模型,您可以更快、更容易地教导机器人,相较于传统的神经网络。例如,在缺陷检测方面,我们也看到更高的准确性。要了解所有的缺陷,您需要一个合适的数据集来训练您的模型,但由于很难拥有所有的缺陷数据集,这些成式AI的模型也提供更高的准确性。

最后,人机互动基本上是在自然语言中与机器人互动。我们看到了许多应用,您可以与机器人对话并获得所需的输出。

让我们谈谈工作流程。令人惊讶的是,生成式人工智能真的是一种超能力。它提供了一整套新的能力,已经从头到尾开始改变整个视觉AI开发的工作流程。这也是我们今天在一起的时间至少会花在这个会话上的内容,以及我们如何组织这个会话,如何创建和训练模型,如何利用现有模型,进行调整和微调。有哪些工具可用于使这些庞大的模型运行快速且具有互动性,然后将它们整合在一起。所有这些令人惊叹的方法,我们可以将操作能力整合到我们的业务应用所以让我们从使用生成式人工智能来创建合成数据开始,以及我们如何看待它的演变。

首先我们谈论的是Create阶段

让我们从使用生成式人工智能来创建合成数据开始,以及我们如何看待它的演变。如果我们在进行合成数据生成,工作流程当然是基于模拟的,建立在模拟和使用新的合成数据来创建和增强数据集的基础上。生成式人工智能作为这个工作流程中一个强大的新成员,以几种有趣的方式参与其中。首先,我们开始创建种子图像,结构化的合成场景,使用像USD这样的工具。在USD格式中,我们使用Omniverse Replicator渲染RGB和分割掩模。然后,我们设置所有这些掩模的参数,以帮助下游处理,然后我们使用Stable Diffusion生成图像。在这个示例中,我们使用RGB图像和分割掩模进行Stable Diffusion深度到图像的生成,从而得到一个新的数据集,以微调模型并将所有这些工作流程结合在一起。这个组合工作流程更强大,更快速,用来创建那些有时需要改善模型的极其庞大和复杂的数据集。

作为一个示例,让我们看看在迭代过程中,这个工作流程是如何被使用的。我们展示了如何选择各种方面的掩模和层,然后将它们更改为具体的内容。我们选择了背景的掩模,并将其更改为工厂场景。我们可以将调色板的掩模更改得更像天然木材,然后将一堆盒子更改为塑料包装或其他内容,我们只需使用简单的词汇进行迭代和更改,而不需要复杂的渲染方法。这显然非常强大,极为迅速,这都归功于我们为合成数据生成工作流程添加的这位新成员,也就是生成式人工智能。也许不太直观,但我们现在将其视为合成数据生成中的一个非常强大的力量。

接下来我们看一下adapt阶段

今天我要谈一下如何可以拿一些这些模型,对其进行微调以适应您的用例,然后进行优化。这些基础模型实际上是人工智能的新范式,可以释放惊人的潜力,我们已经开始看到这些大型基础模型在LLM领域、ChatGPT和世界各地的LLM等方面的广泛应用,我们开始看到它在视觉领域的使用,这些模型之所以如此惊人,是因为它们具有通用性的特点,但也可以针对大量的用例进行微调。这些模型庞大,已经在大量数据上进行了训练,想象一下,数亿到数十亿的图像和文本数据。好消息是,这些数据是未标记的,即从网络上获取的数据。因此,您拥有大量的图像和文本数据,然后将它们馈送到这些基础模型中,进行自监督学习。因此,它学会了对象的特征。这正是使其如此通用的原因,这使您能够进行零样本推理。您可以向模型提供图像和提示,模型可以自动检测到对象,因为它在训练过程中可能已经见过它。它可能知道猫可能是什么样子,而无需您去创建一个检测猫的模型。这个模型的真正好处在于,它们非常适用于零样本,但对于您的用例,您真正想要的是高准确性。这些模型可以进行微调,以获得更高的准确性,使用更多的内部数据集。我们已经看到,这些模型对于一些用例可以提供高达10-20%的更高准确性。微调和迁移学习非常容易和高效,因为这些是大型模型。您只需训练最后几层。超过99%的模型完全冻结。因此,您可以非常快速地启动一个模型,对大量数据集进行微调,而且这些模型也非常适用于跨领域数据。

让我谈一下自定义。我提到这些模型非常出色,但它们确实缺乏特定领域的知识或用例特定的知识,可能需要在通用数据集上进行训练,可能不具备您领域所需的特定专业知识。这限制了提供更高准确性的能力,尤其是在您需要高准确性或特定上下文的情况下。这就是自定义的用武之地,因为这些模型是在大量数据上进行训练的,所以您可以迅速开始,使用更少的模型数据。我们在一些内部实验中看到,您可以进行少量样本的培训,只需提供少至十个样本,就能够以合理的准确性对模型进行微调,从而获得一个不错的起点准确性。如果您没有大量的数据集,这将非常有力。如果您想快速进行概念验证,看看您手头的数据集是否反映了您要构建的模型,这也会非常有用。这个基础模型可以生成出色的特征提取,它可以生成文本和嵌入,以及图像嵌入,可以用于许多下游任务,如分类、检测、分割、视频理解等等。有一点需要注意的是,这些模型很大,这意味着需要大量的计算资源。因此,您可能无法在边缘设备上运行大量这些大型模型,这就是模型蒸馏的用武之地。您可以采用这个模型,将它压缩成一个较小的模型,使用“师生模型”的方法,将大模型作为您的老师,教导一个较小的学生模型,这个模型专门为您的特定用例设计,将比这个大模型快上一个数量级。您可以在任何设备上部署它,可以部署在边缘设备上或实时用例以及其他场景中。

如何进行自定义您的视觉基础模型或其他模型?通过我们最新的NVIDIA TAO更新,我们支持对这些基础模型进行微调。我们还发布了一个基础模型,您可以锁定它,比如DINO V2,您也可以使用其他基础模型,比如OpenAI的CLIP模型或Evoc Clip模型,因此您可以选择顶级模型,对其进行微调,通过CL工具进行低代码AI能力的微调,还可以使用我们的REST API进行微调和优化。您还可以使用AutoML功能,可以选择基础模型或其他模型,然后应用AutoML功能,让计算找出最适合您数据集的最佳模型。TAO还具有其他出色的功能,比如辅助标注,它可以帮助您生成数据的预标签,这对于分割等任务非常重要,因为数据的创建非常昂贵。创建分割掩模的标签数据可能非常耗时,而借助辅助标注,您可以提供一幅带有边界框的图像,并生成一个分割掩模,输出以标准ONNX格式呈现,可以部署到各种用例中。

我想谈谈一个特定的模型,即ODISE,它基本上是一个用于进行全场景分割的开放词汇模型。这意味着它可以提供零样本能力、零样本光学分割能力。这个模型的工作方式是,您有一幅图像,您有一些提示,假设您想在这个图像中分割出猫,或者您想分割出一只狗或背景。它通过这些基础模型进行处理,这些模型已经在大量的图像文本数据上进行了训练,它具有图像嵌入生成功能。因此,它通过图像编码器以及文本编码器,并输出,您会得到一幅图像的特征映射和文本嵌入。接下来,它会通过这种母模型进行光学分割。右上角的方框完成了封闭词汇分割生成,这个模型可以在任意数量的数据集上进行训练。因此,我们有一个在COCO数据集上进行训练的模型,因此它可以在COCO数据集上进行封闭词汇分割。然后,从这个模型获得的像素嵌入进入底部的管道,完成了开放词汇的分割生成。在这里,您将从基础模型生成的图像嵌入和文本嵌入与像素嵌入一起经过质心池化层,现在您就有了开放词汇的掩模,然后将这两者结合起来生成开放词汇和光学分割模型。嗯,这项工作最初由NVIDIA研究部门发布。它使用了大型稳定扩散模型,这是一个具有15亿参数的极其庞大的模型,但我们最近对它进行了一些改进。我们已更新了基础模型,将其大小缩小了大约五分之一。我们看到这个模型的性能比原始模型快了7倍,对于零样本分割来说效果还不错。但现在让我们来谈谈如何对这个模型进行微调,以适应任意数量的任务。

所以有各种微调方法可供使用。首先,您可以使用基础模型,也可以使用您自己的基础模型。或者您可以使用Nvidia Nemo创建一个新的基础模型。此外,微调主要发生在后面的部分,主要是在主要的形成部分,在这里您可以使用Nvidia TAO进行微调。这是我们即将在本月底发布的功能,将支持这种模型在TAO上的微调能力。再次强调的一点是,这是一个庞大的模型,拥有2.5亿个参数,但可训练的部分实际上是主要形成部分,大约有2千万个参数。所以,模型中不到10%是可训练的,其余部分可以看作是冻结的,这可以帮助您尽快进行微调。通过仅对模型的最后部分进行微调,您仍然可以获得非常好的准确性。

因此,在这里,我们以一个简单的用例为例,比如仓库用例。假设您想要能够检测和分割货盘。您可能会有叉车,也可能会有一个移动的机器人,您希望能够捡起货盘或叉车上的货盘,或者避开工厂车间上可能存在的货盘。我们从基础模型开始。我们应用了一些提示词,比如“palettes”,但不幸的是,由于它是在大量的互联网数据上进行训练的,它没有特定训练用于货盘。因此,其准确性很低,然后我们将其与其他类似的术语组合在一起。因此,我们可能将“palettes”与“floor”和“wall”结合在一起,现在它能够识别货盘,因为它有一些上下文。它可能在工厂车间中看到过货盘,所以它知道:“好的,我有一个地板,所以很可能这个物体是货盘”,但对于我们的用例来说仍然不够好。然后我们对这个模型进行微调,大约使用了4000张图像,现在我们能够轻松地识别货盘,您可以看到货盘的分割掩码几乎完美,这反映在整体准确性上。平均精度得分显著提高,零-shot情况下。再次强调,这是一种通用领域的数据,我们的通用模型可能没有见过。它的性能相当差,只有20%到30%,但只需对小规模数据集进行微调,现在您可以从20%提高到80%以上。这使您能够使用少量数据或更高准确性对这个基础模型进行微调,以适应许多下游任务。

现在让我切换话题,谈谈大型语言模型(LLMs)。我们都听说过LLMs,也见过这些基础模型,但使用这些基础模型仍然存在挑战,我是说它们是在大量的数据上进行训练的,这些数据是一般性的数据集,因此它们缺乏特定领域的知识,它们可能无法生成符合您追求的用例的内容,而且它们有产生虚构信息的倾向,您可能提出一个问题,它可能会产生完全错误的内容,还存在偏见的风险。这就是定制化的帮助所在,您可以通过监督微调来消除领域差距,在这里,您可以使用领域特定数据来微调模型,以融合您数据集的知识,您可以增强模型的理解和生成能力,针对特定领域,还可以通过提示学习逐步增加知识,通过逐渐训练模型来获取额外的知识,通过基于提示的学习,这将扩展模型对新概念和信息的理解。随着时间的推移,还可以通过人类反馈进行改进,通过强化学习来不断提高模型,从而提高模型的准确性。最后一点是,您需要准确的信息检索,能够在运行时获取信息是非常重要的,您可以实施信息检索技术来获取实时的知识,还可以动态检索以获取最新的信息。这种定制化技术使用户能够将这个大型语言模型适应特定需求,提高准确性、相关性和可靠性。

我们如何做到这一点呢?嗯,您可以使用Nvidia Nemo进行LM微调,Nemo是云原生的解决方案,用于构建、定制和部署生成式AI模型。随着企业提高Gen AI的变革能力,我们需要一种非常强大、非常健壮的工具,而Nemo可以在各种方面帮助您。它可以帮助您进行数据筛选,简化复杂的数据筛选过程,从大量非结构化数据中提取、去重、筛选信息,为您的训练过程提供高质量的数据。Nemo还针对训练进行了优化,您可以分布式训练任务,有效地将训练任务分配到大量GPU节点上,以有效利用GPU资源和内存,这可以扩展到数以万计的节点。通过将模型分割,您可以最大程度地提高吞吐量,显著减少训练时间。我们在之前的部分讨论了所有的定制化内容,您可以使用Nemo来执行所有这些操作,比如微调、监督微调、强化学习、反馈循环等等。所有这些都可以在Nemo上实现。最后,Nemo还可以帮助您实现大规模部署。它与Nvidia Triton集成,加速推理过程,提供高吞吐量和低延迟。最后,您还可以使用 guardrails 来确保与安全和安全性要求保持一致。总之,它提供了丰富的功能,以定制您的大型语言模型。

所以我谈到了Tao,我谈到了Nemo,您可以在这些服务中进行训练,可以微调这些模型,但现在让我们谈谈可以帮助您实现这一目标的基础设施。所以,Nvidia DGX Cloud是一种全新的服务,专为满足这种工作负载的独特需求而优化。它的架构针对多GPU和多节点的训练进行了优化,容量可扩展。在DGX Cloud上,您可以获得所有这些。DGX Cloud由Nvidia软件提供支持,这使您能够统一管理所有资源,并在一个视图中进行工作。而且所有容器都经过了优化,因此您可以在DGX Cloud上运行您的Tao容器,也可以在DGX Cloud上运行Nemo,还可以学习其他深度学习框架,DGX Cloud还提供了直接联系专家的通道,所有这些都包括在整个服务的单一价格下,这可以提高您的生产力,实现更快的自动化,实际上减少成本并提高效率。

接下来我们谈OPTIMIZE阶段

NVIDIA TensorRT是我们的高性能深度学习推理工具包,它包括优化器和运行时,提供低延迟和高吞吐量。它构建在Nvidia CUDA之上,通过技术如量化、层融合、核心调优等实现了推断优化。最近,我们宣布了TensorRT-LLM,这是一个用于在GPU上加速大型语言模型的开源库,LLM可以在自然语言处理领域释放无限的潜力,但这些模型非常庞大,即使是最小的模型也包含数十亿的参数,而且这些模型的延迟非常高,元素也非常多样化,它们可以解决问题包括问题回答、代码生成、文本摘要等等。但这种多样性意味着输出的大小各不相同,这使得批处理请求、高效执行以及负载管理变得困难。TensorRT-LLM包括一种优化调度技术,称为"in-flight batching",它充分利用了文本生成的多次迭代。现在让我们看一下TensorRT-LLM的性能。

由于TensorRT-LLM提供了这种软件优化,您可以有效地对LLM模型进行优化,就像我们在Llama 2上所做的那样,我们在H100上运行它,并通过TensorRT-LLM进行优化,性能可以提高两倍。而且随着时间的推移,随着这一领域的不断发展,性能只会变得更好。TensorRT-LLM通过开源的模块化Python API改善了易用性和可扩展性。您可以使用Python API来定义、优化和执行新的体系结构和增强功能。再次强调,这是一个不断发展的领域,因此当有新的模型出现时,这使得将其扩展到新的体系结构和新的模型变得更加容易。在之前的幻灯片中,我提到了"in-flight batching",这种方案允许同一GPU在处理大型计算密集型请求时,动态处理多个较小的查询,从而提高GPU的处理性能。这最大程度地提高了GPU的利用率,总之,TensorRT是一种非常强大且易于使用的库,可优化大型语言模型的性能

现在进入OPERATE,也就是最后一部分,关于生成式人工智能如何彻底改变我们与这些应用程序的交互方式

如果我们回顾一下我们从哪里开始,从方法和工作流的角度来看,我们过去受到相当刚性的规则限制,这些应用程序和模型是如何构建的。现在我们正在迈向一个全新的模型。在以前,我们能够感知的程度实际上是被构建进去的,硬编码到应用程序中,硬编码到我们如何为AI模型工作进行了编制,例如在工厂中找到一个托盘并在其周围绘制一个边界框并跟踪它。这实际上是一个相当低级别的操作,然后我们需要解释相当低级别的元数据。有了生成式人工智能和我们即将进入的新世界,我们可以真正用人类语言与应用程序互动,当然,正如前面所提到的,这些模型经过了在非常庞大的数据集上的训练,以实现Zero-shot互动、Zero-shot学习,将我们带到我们实际上需要做的事情,即发生了什么,然后提供见解,引导我们知道接下来可能会发生什么,这我认为是我们所有人都在努力实现的目标,我们都需要实现。这不仅仅是自然语言问答,还有前面描述的某些魔法,多模式的能力,不仅仅是与文本交互,还可以要求显示并告诉我这是如何发生的,告诉我现在正在发生什么,应用程序可以向您展示

例如,我将与您分享一个示例,我们如何使用视觉人工智能来简化分销中心的运营。您知道,在一个流水线上装卸卡车,管理人员想要评估和跟踪班次的工作情况,了解班次的进展,了解正在发生的情况,也许会提出关于防护装备的问题。比如,我们在谈论衬衫的颜色,当要求显示时,应用程序应该为您提供可视化。它可以找到瞬间并突出显示您想要看到的内容,例如穿白衬衫的人,文本和视频互动等等。这确实是我们将要实现的多模态模型,这是完全不可思议的,它改变了我们可以为客户提供的服务。

这个应用程序的架构是由五个高级模块构建而成的。顶部行显示视频流输入,无论是来自摄像头的RTSP流,还是摄录的视频素材,都会被摄入、解码,然后传送到一个大型的多模型模型和LLM模型中,同时伴随着文本查询,比如有没有人穿白衬衫,例如答案是有,有一个人。当要求显示时,这一时刻的时间戳会传递到右上角的根据阶段,选择了相应的帧。正如之前描述的那样,利用ODISE分割模块识别了所有实例并对其进行分割。然后传递给过滤工具箱,以过滤分割和标签,以获得更多关注的内容,比如计数、关联、颜色、行为和单一图像。然后,结果被传递到可视化输出,作为可视化结果发送回来,这就是"show me",展示发生了什么,。这个模块是一个示例,它展示了我们即将迈向的未来,我们将在文本和视频方面都有如此高度的互动性,这将彻底改变我们如何提供关于发生了什么、正在发生什么以及接下来可能会发生什么的信息,这可以说是我们都面临的一项重大挑战之一。

示例

我们展示了生成式人工智能如何改变视觉AI工作流程,包括创建、调整、优化和操作。我们还有时间进行问答,所以不要担心,我们有很多合同问答,但我们希望通过几个更有趣的示例来结束,这两个示例来自Jetson Generative AI Playground,。

第一个示例是一个实时项目,它实际上是Zeo-shot文本条件的对象检测,可以检测和分类各种对象, 它已经经过优化,可以在Jetson AGX Orin上实时运行,您可以看到可以进行非常精细的检测,可以通过嵌套、提示细化检测,一切都是实时的,仅仅通过文本提示,令人惊叹的是它可以在Nvidia Jetson上实时运行,并且再次使用了我们描述的许多东西,包括TensorRT。

下一个示例是一个出色的多模态示例,展示了如何使用自然语言搜索大量的视觉数据,例如在这种情况下,275,000张图像,例如,底层的是一个经过CUDA优化的多模态向量数据库,它使用CLIP的嵌入来进行图像和图像的相似性搜索,因此存在一个共享的嵌入空间,该空间存在于文本、图像之间,这些嵌入根植于深刻的上下文理解,因此可以使用关键词来搜索空间,例如城市交通、绿灯、交通繁忙、空旷、摩托车、骑马等,缩小搜索结果,将上下文上下文接近的图像放入搜索中,也是实时的,搜索结果会发生变化,这真的很不可思议,并且都可以在Jetson Generative AI Playground上实时使用,我强烈建议您查看一下。

总结:

在这里,这是我们第一次有机会站在您面前,与您分享Nvidia 技术堆栈是如何结合在一起的,因此我们非常感激这个机会。顺便说一下,这只是我们即将在未来几个月内进行的众多活动之一,涵盖了生成式人工智能的多个领域,所以请继续关注更多的信息。

0 人点赞