怎么把PyTorchLightning模型部署到生产中

这篇文章主要讲解了“怎么把PyTorch Lightning模型部署到生产中”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么把PyTorch Lightning模型部署到生产中”吧!

企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,创新互联公司面向各种领域:成都门帘成都网站设计公司营销型网站解决方案、网站设计等建站排名服务。


部署PyTorch Lightning模型进行推理的每种方法

有三种方法可以导出PyTorch Lightning模型进行投放:

  • 将模型另存为PyTorch检查点

  • 将模型转换为ONNX

  • 将模型导出到Torchscript

我们可以通过Cortex为这三个服务。

1.直接打包和部署PyTorch Lightning模块

从最简单的方法开始,让我们部署一个没有任何转换步骤的PyTorch Lightning模型。

PyTorch Lightning Trainer是一个抽象样板训练代码(思考训练和验证步骤)的类,它具有内置的save_checkpoint()函数,该函数会将您的模型另存为.ckpt文件。要将模型保存为检查点,只需将以下代码添加到训练脚本中:

怎么把PyTorch Lightning模型部署到生产中

现在,在我们开始为该检查点提供服务之前,需要注意的是,虽然我一直说“ PyTorch Lightning模型”,但PyTorch Lightning是PyTorch的包装器-项目的README字面意思是“ PyTorch Lightning只是有组织的PyTorch。” 因此,导出的模型是普通的PyTorch模型,可以相应地使用。

有了保存的检查点,我们可以在Cortex中轻松地为模型提供服务。如果您不熟悉Cortex,可以 在这里快速熟悉一下,但是Cortex部署过程的简单概述是:

  • 我们使用Python为我们的模型编写了一个预测API

  • 我们在YAML中定义我们的API基础结构和行为

  • 我们使用CLI中的命令部署API

我们的预测API将使用Cortex的Python Predictor类定义一个init()函数来初始化我们的API并加载模型,并使用一个define()函数在查询时提供预测:

怎么把PyTorch Lightning模型部署到生产中

很简单 我们从训练代码中重新调整了一些代码的用途,添加了一些推理逻辑,仅此而已。需要注意的一件事是,如果将模型上传到S3(推荐),则需要添加一些逻辑来访问它。

接下来,我们在YAML中配置基础架构:

怎么把PyTorch Lightning模型部署到生产中

再次,简单。我们给我们的API起个名字,告诉Cortex我们的预测API在哪里,并分配一些CPU。

接下来,我们部署它:

怎么把PyTorch Lightning模型部署到生产中

请注意,我们还可以部署到集群,由Cortex加速和管理:

怎么把PyTorch Lightning模型部署到生产中

在所有部署中,Cortex都会容器化我们的API并将其公开为Web服务。通过云部署,Cortex可以配置负载平衡,自动扩展,监视,更新和许多其他基础架构功能。

就是这样!现在,我们有一个实时Web API,可根据要求提供模型预测。

2.导出到ONNX并通过ONNX运行时进行投放

现在,我们已经部署了一个普通的PyTorch检查点,让事情复杂一些。

PyTorch Lightning最近添加了一个方便的抽象,用于将模型导出到ONNX(以前,您可以使用PyTorch的内置转换功能,尽管它们需要更多样板)。要将模型导出到ONNX,只需将以下代码添加到您的训练脚本中:

怎么把PyTorch Lightning模型部署到生产中

请注意,您的输入样本应模仿实际模型输入的形状。

导出ONNX模型后,就可以使用Cortex的ONNX Predictor为其提供服务。代码基本上看起来是相同的,并且过程是相同的。例如,这是一个ONNX预测API:

怎么把PyTorch Lightning模型部署到生产中

基本上一样。唯一的区别是,我们不是通过直接初始化模型,而是通过onnx_client访问该数据,这是Cortex为服务于我们的模型而启动的ONNX运行时容器。

我们的YAML看起来也很相似:

怎么把PyTorch Lightning模型部署到生产中

我在此处添加了一个监视标志,目的只是为了显示配置的简便程度,并且有一些ONNX特定字段,但其他方面都是相同的YAML。

最后,我们使用与之前相同的$ cortex deploy命令进行部署,并且我们的ONNX API已启用。

3.使用Torchscript的JIT编译器进行序列化

对于最终部署,我们将把PyTorch Lightning模型导出到Torchscript并使用PyTorch的JIT编译器提供服务。要导出模型,只需将其添加到您的训练脚本中:

怎么把PyTorch Lightning模型部署到生产中

用于此目的的Python API与原始PyTorch示例几乎相同:

怎么把PyTorch Lightning模型部署到生产中

YAML保持与以前相同,并且CLI命令当然是一致的。如果需要的话,我们实际上可以更新我们以前的PyTorch API来使用新模型,只需将新的旧的dictor.py脚本替换为新的脚本,然后再次运行$ cortex部署:

怎么把PyTorch Lightning模型部署到生产中

Cortex在此处自动执行滚动更新,在该更新中,新的API会被启动,然后与旧的API交换,从而避免了模型更新之间的任何停机时间。

这就是全部。现在,您已经具有用于实时推理的完全可操作的预测API,可根据Torchscript模型提供预测。

感谢各位的阅读,以上就是“怎么把PyTorch Lightning模型部署到生产中”的内容了,经过本文的学习后,相信大家对怎么把PyTorch Lightning模型部署到生产中这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


网站栏目:怎么把PyTorchLightning模型部署到生产中
当前链接:http://scyanting.com/article/pdjdip.html