两种模式:
PyTorch 支持两种执行模式:eager mode 和 graph mode。
E 模式,侧重于易用性与灵活性,适合科研人员,用于验证想法,魔改模型;
G模式: 侧重于性能方面,适合生产,实际工程部署中应用。
1. PyTorch 生态系统
PyTorch 支持 2 种独立的模式来处理研究和生产环境。
1.1 torch eager 模式
1.2 torch.fx
2.
2.1
2.2
2.3
3.
3.1
3.2
3.3
1.2 Torch Script mode
本节将讨论 TorchScript 相对于 PyTorch(或 Lightning)的优势,并展示如何完成转换
TorchScript 是 PyTorch 中的一项功能,允许您序列化 PyTorch 模型并在各种环境中运行它们。它提供了一种保存经过训练的 PyTorch 模型并将其加载到无 Python 环境甚至不同硬件(例如 GPU、FPGA 或移动设备)上的方法。
与 PyTorch 相比,这有几个优点:
-
可移植性:借助 TorchScript,您可以在任何支持 TorchScript 运行时的环境中运行 PyTorch 模型,无论平台或语言如何。
-
性能:TorchScript 可以通过融合操作和消除未使用的操作来优化 PyTorch 模型,以加快执行速度。这可以显着提高速度,尤其是在移动电话等资源有限的设备上。
-
安全性:通过部署 TorchScript 模型,您可以保护您的 PyTorch 代码和模型免遭逆向工程或篡改。
-
易于部署:使用 TorchScript,您可以轻松地将 PyTorch 模型部署到生产环境,而无需 Python 环境。
要更全面地了解 TorchScript,我建议您阅读本教程。
您可以通过调用 to_torchscript 方法轻松将 Lightning 模块转换为 TorchScript。
script = model.to_torchscript()
torch.jit.save(script, "torchscript_model.pt")
经过一些测试,我发现使用 TorchScript 在 GPU 上的推理时间比 PyTorch Lightning 的推理时间低 2 倍。然而,这只发生在小批量(根据我的测试,为 1 或 2)
PyTorch 旨在通过 TorchScript 创建一个从研究到生产的统一框架。 TorchScript 会将您的 PyTorch 模块作为输入,并将其转换为适合生产的格式。
它将更快地运行您的模型并且独立于 Python 运行时。