1. 磐创AI-开放猫官方网站首页
  2. Medium

在NatML上部署PyTorch模型


NatML是正式的开源软件!关于如何发布机器学习运行时(MLRT),我们有几个选择;但是为了与我们将ML大众化用于交互式媒体的愿景保持一致,我们决定将MLRT开源,并将我们的重点转移到NatML Hub。shift our focus to NatML Hub

Hub提供的服务提升了我们可以通过运行时提供的价值。Hub做到这一点的众多方法之一是简化为您自己的ML模型编写预测器的过程。在本文中,我们将探索这样做的过程,将来自TorchVision的MobileNetv3分类器架构部署到我们的Unity应用程序中。MobileNetv3 classifier TorchVision

那么预测因素到底是什么呢?

来自机器学习背景的开发人员熟悉一个其他人可能没有意识到的有趣事实:机器学习模型很少产生易于使用的输出。相反,它们需要额外的算法将原始输出数据转换为更有用的形式。因此,您在野外可能遇到的每个模型通常都附带有Python代码或实现功能预处理和后处理的Jupyter笔记本。

这个过程很痛苦,所以NatML被设计成通过引入一个新概念来完全抽象它:预测器。预测器是使用一个或多个ML模型进行预测的轻量级原语。因此,它们执行所有必需的预处理和后处理,因此开发人员只需处理熟悉的输出类型:

在NatML上运行的每个模型-无论它做什么-都是标准化的,以便与预测器一起使用。通过这种方式,开发人员可以非常快速地编写相同的三行代码开始运行:

正如您可能已经注意到的,我们正在有效地将编写这些预测器的责任转移到ML模型的作者身上。大多数用户可以简单地从Hub下载现成的预测器,但如果您有自定义模型,则需要为其编写预测器。虽然我们已经有了编写预测器的指导方针,但NatML Hub进一步简化了这一过程。让我们来演示一个例子。Most users can simply download ready-made predictors from Hub guidelines on writing predictors

从PyTorch导出模型

NatML对所有计算图都使用ONNX格式,因为它在ML部署中越来越流行。Torch有一个简单的API可以将nn.Module导出为这种格式。让我们在Google Colab中使用它:ONNX format Torch has a simple API Let’s use it in Google Colab

一旦我们导出了模型,我们就可以为它创建一个NatML预测器。为此,我们将切换到NatML Hub。NatML Hub

创建预测器

只需登录Hub,在用户菜单中单击您的用户名,然后单击“创建”即可。首先,让我们填写模型信息并上传刚刚导出的模型。login to Hub

现在,让我们转到“Feature”选项卡,添加有关我们模型的有用信息。这里,我们将添加图像归一化系数,并上传分类标签:image normalization coefficients classification labels

Hub将此信息提供给我们的代码,因此我们不必这样做!接下来,让我们用C#实现预测器。多亏了Hub,我们不必从头开始。“API”选项卡允许我们指定预测器代码将是什么样子,然后为我们生成一个模板预测器包。该模板包括预测器、样例场景、样例脚本以及自述文件和许可的存根。Hub provides this information to our code

实施预测器

在Unity Engine中打开一个空项目,导入NatML,然后从Hub下载并导入模板:import NatML

让我们来看看我们的MobileNetv3Predictor类。首先,我们应该将预测器的返回类型更改为与对象分类相关的类型。使用分类模型的开发人员通常希望获得分类标签以及分数:

此外,我们需要将模型的输出分数转换为字符串标签,因此让我们为构造函数提供类标签:

如果您想知道我们从哪里获得标签,当我们获取模型数据时,Hub会提供给我们。现在剩下的就是实现预测方法了:

带着我们的预言家去兜风

现在我们准备好测试我们的预测器了。让我们将测试代码添加到模板中包含的MobileNetv3Sample.cs脚本中:

请注意Hub为我们处理的繁重任务:首先,Hub为我们提供专为我们运行的设备优化的ML模型版本。其次,Hub提供我们通过model Data.labels字段上传的分类标签。最后,Hub向我们提供分类器需要的图像归一化系数,以便在model Data.Normalization字段中进行预测。optimized specifically for the device

现在,让我们在预测器模板中打开示例场景。创建一个空游戏对象,然后添加示例脚本。将上面的图像下载到Unity项目中,在导入设置中启用启用读/写选项,然后将图像分配给脚本中的图像字段:

打开控制台,按Play,瞧!

这是为不同ML模型实现预测器的一般过程。主要区别在于预测方法,特别是如何将模型中的原始输出数据转换为开发人员友好的数据类型。一定要仔细阅读文档,了解所有要牢记的事情的全貌。最后,如果您想让我们或任何感兴趣的人为特定模型创建预测器,只需向不和谐伸出援手!look through the documentation reach out on Discord

-兰雷·奥洛科巴(Lanre Olokoba)。

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/14/%e5%9c%a8natml%e4%b8%8a%e9%83%a8%e7%bd%b2pytorch%e6%a8%a1%e5%9e%8b/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息