学完本篇文章,您将学习到
- Torchscript的概念与相关知识
- 如何将Pytorch转化为torchscript
- 使用torchscript部署模型: https://cugtyt.github.io/blog/effective-pytorch/20190912.html
Torchscript简介
TorchScript 是 PyTorch 模型(nn.Module
的子类)的中间表示形式,可以在高性能环境(例如 C ++)中运行。
TorchScript是一种从PyTorch代码创建可序列化和可优化模型的方法。任何TorchScript程序都可以从Python进程中保存并在没有Python依赖项的进程中加载。
TorchScript主要在torch.jit中,有两个核心模块:tracing和scripting,torch.jit.trace接受一个module或一个函数,以及一个样例输入,它就会调用这个模块或者函数,跟踪计算步骤,输出函数或者module的静态图。Tracing 可以很好的用于直接跟踪不依赖于数据的计算流程。
但是如果函数依赖于数据,含有控制流,那么就会出现有的控制流不能被捕捉到,对于这种情况,需要使用scripting。他接受一个module或一个函数,但是不需要输入样例,它会把包括控制流的内容也转成TorchScript。需要注意的是scripting 只支持Python的子集,所以有时候可能需要重写代码来支持TorchScript。
PyTorch 模型创作的基础
首先定义一个简单的Module
。 Module
是 PyTorch 中组成的基本单位。 它包含了:
- 构造函数,为调用准备模块
- 一组
Parameters
和子Modules
。 这些由构造函数初始化,并且可以在调用期间由模块使用。 forward
功