PyTorch的torch.export API可以生成深度学习模型的标准化表示,适用于无Python环境的部署。随着模型复杂性的增加,开发者需要验证大型模型是否能成功导出为GPU程序。为此,PyTorch提供了使用假张量构建假模型的方法,以验证导出兼容性。通过在FakeTensorMode中创建模型,开发者可以在不同设备上测试模型导出,确保无实际数据分配。
PyTorch 2引入torch.export功能,允许将模型导出为静态图以优化推理性能。自定义操作可通过无状态的torch.ops或有状态的torch.classes定义。导出时需避免数据依赖形状和控制流,以确保模型可静态表示。导出的模型可在Python中保存和加载,但在C++中需使用AOTInductor或Executorch进行优化和编译,确保模型无图断裂是推理的关键。
torch.compile()和torch.export()是基于PyTorch 2.6的工具。前者为JIT编译器,灵活处理不可追踪部分;后者为AOT编译器,捕获完整图形,适合部署。两者在图形捕获、处理不可追踪代码和输出方面存在差异。
torch.export()用于提前编译Python可调用对象,生成功能图。它利用TorchDynamo进行字节码追踪,AOT Autograd功能化图形,并通过torch.fx.graph提供图形表示。ExportedProgram包含GraphModule和图签名,支持动态形状和序列化。使用export_for_training()可处理非功能操作,但存在无法追踪的代码和缺失的假内核等限制。
完成下面两步后,将自动完成登录并继续当前操作。